pax_global_header00006660000000000000000000000064150754645460014532gustar00rootroot0000000000000052 comment=de6e54eeaaab35b7145f5c32c279b5e892146e04 vst3_cmake-3.8.0_build_66/000077500000000000000000000000001507546454600152735ustar00rootroot00000000000000vst3_cmake-3.8.0_build_66/LICENSE.txt000066400000000000000000000023511507546454600171170ustar00rootroot00000000000000//----------------------------------------------------------------------------- MIT License Copyright (c) 2025, Steinberg Media Technologies GmbH Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. //---------------------------------------------------------------------------------vst3_cmake-3.8.0_build_66/README.md000066400000000000000000000044421507546454600165560ustar00rootroot00000000000000# Welcome to VST 3 SDK cmake This repository contains Steinberg's [cmake modules](https://cmake.org/cmake/help/latest/manual/cmake-modules.7.html) and template files which can be used to create **VST 3** plug-ins for platforms like Windows, macOS, iOS and Linux. For more information about cmake visit [cmake.org](https:://www.cmake.org/). ## Dependency map In order to build a plug-in successfully, it only needs to link to ```sdk``` library. [VSTGUI](https://steinbergmedia.github.io/vst3_dev_portal/pages/What+is+the+VST+3+SDK/VSTGUI.html) is optional and can be used by linking to ```vstgui_support```. The following figure shows the dependency map by using AGain, [EditorHost](https://steinbergmedia.github.io/vst3_dev_portal/pages/What+is+the+VST+3+SDK/EditorHost.html) and [VST3Inspector](https://steinbergmedia.github.io/vst3_dev_portal/pages/What+is+the+VST+3+SDK/VST3Inspector.html): ```tree again +-- sdk | +-- sdk_common | +-- base | +-- pluginterfaces | +-- vstgui_support +-- base +-- vstgui_uidescription +-- vstgui ``` ```tree editorhost +-- sdk_hosting +-- sdk_common +-- base +-- pluginterfaces ``` ```tree VST3Inspector +-- vstgui_uidescription | +-- vstgui +-- vstgui_standalone +-- vstgui ``` ## Naming conventions and guidelines Steinberg module, macro, function and variable names have the prefix ```SMTG_``` or ```smtg_``` in order to avoid name clashes. ### File namings Steinberg module names are written in camel case and have the prefix ```SMTG_```. Examples: ```c SMTG_AddVST3Library.cmake SMTG_DetectPlatform.cmake SMTG_ConfigureCmakeGenerator.cmake ``` ### Macro and function namings Steinberg macro and function names are written in lower case and have the prefix ```smtg_``` followed by a verb. Examples: ```c smtg_detect_platform smtg_configure_cmake_generator smtg_setup_symbol_visibility smtg_detect_xcode_version ``` ### Variable namings Steinberg variable names are written in upper case and have the prefix ```SMTG_```. Examples: ```c SMTG_PLUGIN_BINARY_DIR SMTG_PLUGIN_EXTENSION SMTG_PLUGIN_PACKAGE_NAME ``` ## License & Usage guidelines More details can be found at [www.steinberg.net/sdklicenses_vst3](http://www.steinberg.net/sdklicenses_vst3) ---- Return to [VST 3 SDK](https://github.com/steinbergmedia/vst3sdk) vst3_cmake-3.8.0_build_66/modules/000077500000000000000000000000001507546454600167435ustar00rootroot00000000000000vst3_cmake-3.8.0_build_66/modules/SMTG_AAXSupport.cmake000066400000000000000000000036261507546454600226140ustar00rootroot00000000000000 #------------------------------------------------------------------------ function(setupAaxSupport) # AAX SDK Location if(SMTG_MAC OR SMTG_WIN) if("${SMTG_AAX_SDK_PATH}" STREQUAL "") # Check if the AAX SDK is next to the vst3sdk folder: set(AAX_SDK_PATH ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/../../../external.avid.aax) if(NOT EXISTS "${AAX_SDK_PATH}/Interfaces/AAX.h") # Check if the AAX SDK is in the vst3sdk folder: set(AAX_SDK_PATH ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/../../external.avid.aax) if(NOT EXISTS "${AAX_SDK_PATH}/Interfaces/AAX.h") set(AAX_SDK_PATH "") endif() endif() if(NOT "${AAX_SDK_PATH}" STREQUAL "") get_filename_component(AAX_SDK_PATH "${AAX_SDK_PATH}" ABSOLUTE) endif() set(SMTG_AAX_SDK_PATH "${AAX_SDK_PATH}" CACHE PATH "Here you can define where to find the AAX SDK" FORCE) else() set(AAX_SDK_PATH "${SMTG_AAX_SDK_PATH}") if(NOT IS_ABSOLUTE ${AAX_SDK_PATH}) get_filename_component(AAX_SDK_PATH "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/../../${AAX_SDK_PATH}" ABSOLUTE) endif() if(NOT EXISTS "${AAX_SDK_PATH}/Interfaces/AAX.h") message(FATAL_ERROR "[SMTG] SMTG_AAX_SDK_PATH is set but does not point to an expected location!") else() set(SMTG_AAX_SDK_PATH "${AAX_SDK_PATH}" CACHE PATH "Here you can define where to find the AAX SDK" FORCE) endif() endif() if(EXISTS "${SMTG_AAX_SDK_PATH}") message(STATUS "[SMTG] SMTG_AAX_SDK_PATH is set to: " ${SMTG_AAX_SDK_PATH}) else() message(STATUS "[SMTG] SMTG_AAX_SDK_PATH is not set. If you need it, please download the AAX SDK!") endif() endif(SMTG_MAC OR SMTG_WIN) endfunction(setupAaxSupport) vst3_cmake-3.8.0_build_66/modules/SMTG_AddAAXLibrary.cmake000066400000000000000000000053611507546454600231530ustar00rootroot00000000000000 #------------------------------------------------------------------------ # Includes #------------------------------------------------------------------------ include(SMTG_AddSMTGLibrary) #------------------------------------------------------------------------ # Returns the Windows architecture. # # This name will be used as a folder name inside the Plug-in package. # The variable SMTG_WIN_ARCHITECTURE_NAME will be set. # @param target The target to which SMTG_WIN_ARCHITECTURE_NAME will be added. function(smtg_target_set_aax_win_architecture_name target) if(${GENERATOR_PLATFORM} MATCHES "win32") set(WIN_ARCHITECTURE_NAME "win32") else() set(WIN_ARCHITECTURE_NAME "x64") endif() set_target_properties(${target} PROPERTIES SMTG_WIN_ARCHITECTURE_NAME ${WIN_ARCHITECTURE_NAME} ) endfunction(smtg_target_set_aax_win_architecture_name) #------------------------------------------------------------------------ # Adds a AAX target. # # @param target The target to which a AAX Plug-in will be added. # @param pkg_name name of the created package # for example: # smtg_add_aaxplugin_with_pkgname(${target} "A Gain" ${again_sources}) function(smtg_add_aaxplugin_with_pkgname target pkg_name) add_library(${target} MODULE ${ARGN}) smtg_target_set_aax_win_architecture_name(${target}) smtg_target_make_plugin_package(${target} ${pkg_name} aaxplugin) # smtg_dump_plugin_package_variables(${target}) if(SMTG_MAC AND XCODE) # disable automatic signing for AAX set_target_properties(${target} PROPERTIES XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "" ) endif(SMTG_MAC AND XCODE) endfunction(smtg_add_aaxplugin_with_pkgname) #------------------------------------------------------------------------ # Adds a AAX target. # # @param target The target to which a AAX Plug-in will be added. # @param PACKAGE_NAME The name of the package [optional] if not present # @param SOURCES_LIST List of sources to add to target project [mandatory when PACKAGE_NAME is used] # for example: # smtg_add_aaxplugin(${target} PACKAGE_NAME "A Gain" SOURCES_LIST ${again_sources}) # or # smtg_add_aaxplugin(${target} ${again_sources}) function(smtg_add_aaxplugin target) set(oneValueArgs PACKAGE_NAME) set(sourcesArgs SOURCES_LIST) cmake_parse_arguments(PARSE_ARGV 0 PARAMS "${options}" "${oneValueArgs}" "${sourcesArgs}") set(SOURCES "${PARAMS_SOURCES_LIST}") if(SOURCES STREQUAL "") set(SOURCES ${ARGN}) endif() set(pkg_name "${PARAMS_PACKAGE_NAME}") if(pkg_name STREQUAL "") set(pkg_name ${target}) endif() smtg_add_aaxplugin_with_pkgname(${target} ${pkg_name} ${SOURCES}) endfunction(smtg_add_aaxplugin) vst3_cmake-3.8.0_build_66/modules/SMTG_AddCommonOptions.cmake000066400000000000000000000027461507546454600240250ustar00rootroot00000000000000 #------------------------------------------------------------------------ # Includes #------------------------------------------------------------------------ include(SMTG_Platform_Windows) # Use by default SMTG_ as prefix for ASSERT,... option(SMTG_RENAME_ASSERT "Rename ASSERT to SMTG_ASSERT" ON) # Logging option(SMTG_ENABLE_TARGET_VARS_LOG "Enable Target variables Logging" OFF) # Create Bundle on Windows for the Plug-ins if(SMTG_WIN) option(SMTG_CREATE_BUNDLE_FOR_WINDOWS "Create Bundle on Windows for the Plug-ins (New since VST 3.6.10!)" ON) endif(SMTG_WIN) # Specific Windows Stuff # Create Symbolic Link for the Plug-ins if(SMTG_WIN) set(DEF_OPT_LINK ON) # be sure to start visual with admin right or adapt the user Group Policy when enabling this else() set(DEF_OPT_LINK ON) endif(SMTG_WIN) option(SMTG_CREATE_PLUGIN_LINK "Create symbolic link for each Plug-in (you need to have the Administrator right on Windows! or change the Local Group Policy to allow create symbolic links)" ${DEF_OPT_LINK}) # Specific Mac Stuff if(SMTG_MAC) if(DEFINED SMTG_IOS_DEVELOPMENT_TEAM) set(DEF_OPT_BUILD_IOS ON) else() set(DEF_OPT_BUILD_IOS OFF) endif() option(SMTG_ENABLE_IOS_TARGETS "Enable building iOS targets" ${DEF_OPT_BUILD_IOS}) set(SMTG_CODE_SIGN_IDENTITY_MAC "Apple Development" CACHE STRING "macOS Code Sign Identity") set(SMTG_CODE_SIGN_IDENTITY_IOS "Apple Development" CACHE STRING "iOS Code Sign Identity") endif(SMTG_MAC) vst3_cmake-3.8.0_build_66/modules/SMTG_AddSMTGLibrary.cmake000066400000000000000000000674461507546454600233300ustar00rootroot00000000000000 #------------------------------------------------------------------------------- # Includes #------------------------------------------------------------------------------- include(CMakePrintHelpers) include(SMTG_UniversalBinary) include(SMTG_CodeSign) include(SMTG_SetDebugExecutable) include(SMTG_AddCommonOptions) # Customize output location for binaries by setting SMTG_CUSTOM_BINARY_LOCATION via command line # cmd: cmake -GXcode -DSMTG_CUSTOM_BINARY_LOCATION="MyPath" set(SMTG_CUSTOM_BINARY_LOCATION "" CACHE PATH "Customize output location for binaries") # define the C++ standard version to use for plugins set(SMTG_CXX_STANDARD "" CACHE STRING "C++ standard version used for plugins: 14, 17, 20, 23") #------------------------------------------------------------------------ # Returns the windows architecture. # # This name will be used as a folder name inside the Plug-in package. # The variable SMTG_WIN_ARCHITECTURE_NAME will be set. function(smtg_target_set_vst_win_architecture_name target) if(SMTG_WIN) if(DEFINED CMAKE_GENERATOR_PLATFORM AND CMAKE_GENERATOR_PLATFORM) string(TOLOWER ${CMAKE_GENERATOR_PLATFORM} GENERATOR_PLATFORM) elseif(DEFINED CMAKE_MODULE_LINKER_FLAGS AND CMAKE_MODULE_LINKER_FLAGS) string(TOLOWER ${CMAKE_MODULE_LINKER_FLAGS} GENERATOR_PLATFORM) endif() if(${GENERATOR_PLATFORM} MATCHES "arm64ec") set(WIN_ARCHITECTURE_NAME "arm64ec") elseif(${GENERATOR_PLATFORM} MATCHES "arm64") set(WIN_ARCHITECTURE_NAME "arm64") elseif(${GENERATOR_PLATFORM} MATCHES "arm") set(WIN_ARCHITECTURE_NAME "arm") elseif(${GENERATOR_PLATFORM} MATCHES "win32") set(WIN_ARCHITECTURE_NAME "x86") else() set(WIN_ARCHITECTURE_NAME "x86_64") endif() set(WIN_ARCHITECTURE_NAME ${WIN_ARCHITECTURE_NAME}-win) set_target_properties(${target} PROPERTIES SMTG_WIN_ARCHITECTURE_NAME ${WIN_ARCHITECTURE_NAME} ) endif(SMTG_WIN) endfunction(smtg_target_set_vst_win_architecture_name) #------------------------------------------------------------------------ # Prints out all relevant properties of a target for debugging. # # @param target The target whose properties will be printed. function(smtg_target_dump_plugin_package_variables target) cmake_print_properties( TARGETS ${target} PROPERTIES SMTG_PLUGIN_PACKAGE_NAME SMTG_PLUGIN_BINARY_DIR SMTG_PLUGIN_EXTENSION LIBRARY_OUTPUT_DIRECTORY SMTG_PLUGIN_PACKAGE_PATH SMTG_PLUGIN_PACKAGE_CONTENTS SMTG_PLUGIN_PACKAGE_RESOURCES SMTG_PLUGIN_PACKAGE_SNAPSHOTS SMTG_WIN_ARCHITECTURE_NAME ) endfunction(smtg_target_dump_plugin_package_variables) #------------------------------------------------------------------------ # Strips all symbols on linux # # @param target The target whose build symbols will be stripped function(smtg_target_strip_symbols target) add_custom_command( TARGET ${target} POST_BUILD COMMAND ${CMAKE_STRIP} $ENV{CROSS_COMPILE} --strip-debug --strip-unneeded $ ) endfunction(smtg_target_strip_symbols) #------------------------------------------------------------------------ #! smtg_target_strip_symbols_with_dbg : Strips all symbols on and creates debug file on Linux # # @param target The target whose build symbols will be stripped function(smtg_target_strip_symbols_with_dbg target) add_custom_command( TARGET ${target} POST_BUILD # Create a target.so.dbg file with debug information COMMAND ${CMAKE_OBJECT_COPY} $ENV{CROSS_COMPILE}objcopy --only-keep-debug $ $.dbg COMMAND ${CMAKE_STRIP} $ENV{CROSS_COMPILE} --strip-debug --strip-unneeded $ COMMAND ${CMAKE_OBJECT_COPY} $ENV{CROSS_COMPILE}objcopy --add-gnu-debuglink=$.dbg $ ) endfunction(smtg_target_strip_symbols_with_dbg) #------------------------------------------------------------------------ # Creates a symlink to the targets output resp Plug-in. # # A symlink to the output Plug-in will be created as a post build step. # # @param target The target whose output is the symlink's source. function(smtg_target_create_link_to_plugin target destination) if(${destination} STREQUAL "") message(FATAL_ERROR "[SMTG] no destination defined!") endif() get_target_property(PLUGIN_PACKAGE_NAME ${target} SMTG_PLUGIN_PACKAGE_NAME) get_target_property(TARGET_SOURCE ${target} SMTG_PLUGIN_PACKAGE_PATH) set(TARGET_DESTINATION ${destination}) if(SMTG_WIN) get_target_property(PLUGIN_BINARY_DIR ${target} SMTG_PLUGIN_BINARY_DIR) file(TO_CMAKE_PATH "${TARGET_DESTINATION}/${PLUGIN_PACKAGE_NAME}" SRC_NATIVE_PATH) file(TO_CMAKE_PATH "${PLUGIN_BINARY_DIR}/Debug/${PLUGIN_PACKAGE_NAME}" TARGET_DESTINATION_DEBUG) file(TO_CMAKE_PATH "${PLUGIN_BINARY_DIR}/Release/${PLUGIN_PACKAGE_NAME}" TARGET_DESTINATION_RELEASE) add_custom_command( TARGET ${target} POST_BUILD COMMAND ${CMAKE_COMMAND} -E echo [SMTG] Delete previous link... COMMAND ${CMAKE_COMMAND} -E rm -rf "${SRC_NATIVE_PATH}" COMMAND ${CMAKE_COMMAND} -E echo [SMTG] Creation of the new link... COMMAND ${CMAKE_COMMAND} -E create_symlink "$<$:${TARGET_DESTINATION_DEBUG}>" "$<$:${TARGET_DESTINATION_RELEASE}>" "${SRC_NATIVE_PATH}" COMMAND ${CMAKE_COMMAND} -E echo [SMTG] Finished. ) else() set(PLUGIN_TARGET_DESTINATION ${TARGET_DESTINATION}/${PLUGIN_PACKAGE_NAME}) add_custom_command( TARGET ${target} POST_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory "${TARGET_DESTINATION}" COMMAND ${CMAKE_COMMAND} -E echo [SMTG] Delete previous link... COMMAND rm -rf "${PLUGIN_TARGET_DESTINATION}" COMMAND ${CMAKE_COMMAND} -E echo [SMTG] Create new symlink... COMMAND ln -sv "${TARGET_SOURCE}" "${PLUGIN_TARGET_DESTINATION}" COMMAND ${CMAKE_COMMAND} -E echo [SMTG] Finished. ) endif(SMTG_WIN) endfunction(smtg_target_create_link_to_plugin) #------------------------------------------------------------------------ # Customizes folder icon on windows # # Customizes folder icon on windows by copying desktop.ini and PlugIn.ico into the package. # # @param target The target whose folder icon will be customized. function(smtg_target_add_folder_icon target icon) set(DESKTOP_INI_PATH ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/../templates/desktop.ini.in) get_target_property(PLUGIN_PACKAGE_PATH ${target} SMTG_PLUGIN_PACKAGE_PATH) add_custom_command( TARGET ${target} POST_BUILD COMMENT "[SMTG] Copy PlugIn.ico and desktop.ini and change their attributes." COMMAND ${CMAKE_COMMAND} -E copy ${icon} ${PLUGIN_PACKAGE_PATH}/PlugIn.ico COMMAND ${CMAKE_COMMAND} -E copy ${DESKTOP_INI_PATH} ${PLUGIN_PACKAGE_PATH}/desktop.ini COMMAND attrib +s ${PLUGIN_PACKAGE_PATH}/desktop.ini COMMAND attrib +s ${PLUGIN_PACKAGE_PATH}/PlugIn.ico COMMAND attrib +s ${PLUGIN_PACKAGE_PATH} ) endfunction(smtg_target_add_folder_icon) #------------------------------------------------------------------------ # Adds the Plug-in's main entry point. # # The variable public_sdk_SOURCE_DIR needs to be specified. # # @param target The target to which the main entry point will be added. function(smtg_target_add_library_main target) if(public_sdk_SOURCE_DIR) if(SMTG_MAC) target_sources (${target} PRIVATE ${public_sdk_SOURCE_DIR}/source/main/macmain.cpp ) elseif(SMTG_WIN) target_sources (${target} PRIVATE ${public_sdk_SOURCE_DIR}/source/main/dllmain.cpp ) elseif(SMTG_LINUX) target_sources (${target} PRIVATE ${public_sdk_SOURCE_DIR}/source/main/linuxmain.cpp ) endif(SMTG_MAC) endif(public_sdk_SOURCE_DIR) endfunction(smtg_target_add_library_main) #------------------------------------------------------------------------ # Returns the linux architecture name. # # This name will be used as a folder name inside the Plug-in package. # The variable LINUX_ARCHITECTURE_NAME will be set. function(smtg_get_linux_architecture_name) if(ANDROID) set(ARCHITECTURE ${CMAKE_ANDROID_ARCH_ABI}) set(LINUX_ARCHITECTURE_NAME ${ARCHITECTURE}-android PARENT_SCOPE) else() # Check if we are cross-compiling for a different architecture if(NOT $ENV{CROSS_COMPILE} STREQUAL "") string(REGEX MATCH "^[A-Z|a-z|0-9|_]*-" CROSS_COMPILE_PREFIX $ENV{CROSS_COMPILE}) # Strip trailing - from regex result string(LENGTH ${CROSS_COMPILE_PREFIX} CROSS_COMPILE_PREFIX_LEN) math(EXPR CROSS_COMPILE_PREFIX_LEN "${CROSS_COMPILE_PREFIX_LEN} -1") string(SUBSTRING ${CROSS_COMPILE_PREFIX} 0 ${CROSS_COMPILE_PREFIX_LEN} ARCHITECTURE) else() EXECUTE_PROCESS( COMMAND uname -m COMMAND tr -d '\n' OUTPUT_VARIABLE ARCHITECTURE ) endif() set(LINUX_ARCHITECTURE_NAME ${ARCHITECTURE}-linux PARENT_SCOPE) endif(ANDROID) endfunction(smtg_get_linux_architecture_name) #------------------------------------------------------------------------ # Fatal error if PROJECT_VERSION is not defined # function(smtg_target_check_project_version target) if(NOT PROJECT_VERSION) # See: https://cmake.org/cmake/help/latest/variable/PROJECT_VERSION.html message(FATAL_ERROR "[SMTG] PROJECT_VERSION is not defined for target: \"${target}\". " "To fix this, set the VERSION option of the most recent call of " "the cmake project() command e.g. project(myPlugin VERSION 1.0.0)" ) endif() endfunction() #------------------------------------------------------------------------ # Prepare the target to build a Plug-in package. # # @param target The target whose output will be put into a package. # @param extension The package's extension function(smtg_target_make_plugin_package target pkg_name extension) smtg_target_check_project_version("${target}") if(${pkg_name} STREQUAL "") set(pkg_name ${target}) endif() set(pkg_extension ${extension}) if(SMTG_WIN) if(${extension} STREQUAL "bundle") set(extension dll) if(NOT SMTG_CREATE_BUNDLE_FOR_WINDOWS) set(pkg_extension dll) endif(NOT SMTG_CREATE_BUNDLE_FOR_WINDOWS) endif() endif(SMTG_WIN) string(TOUPPER ${extension} PLUGIN_EXTENSION_UPPER) if(SMTG_CUSTOM_BINARY_LOCATION) set(SMTG_PLUGIN_BINARY_LOCATION ${SMTG_CUSTOM_BINARY_LOCATION}) else() set(SMTG_PLUGIN_BINARY_LOCATION ${CMAKE_BINARY_DIR}) endif(SMTG_CUSTOM_BINARY_LOCATION) set_target_properties(${target} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${SMTG_PLUGIN_BINARY_LOCATION}/${PLUGIN_EXTENSION_UPPER} SMTG_PLUGIN_BINARY_DIR ${SMTG_PLUGIN_BINARY_LOCATION}/${PLUGIN_EXTENSION_UPPER} SMTG_PLUGIN_EXTENSION ${extension} SMTG_PLUGIN_PACKAGE_NAME ${pkg_name}.${pkg_extension} OUTPUT_NAME ${pkg_name} SMTG_PLUGIN_PACKAGE_CONTENTS Contents SMTG_PLUGIN_PACKAGE_RESOURCES Contents/Resources SMTG_PLUGIN_PACKAGE_SNAPSHOTS Snapshots ) get_target_property(PLUGIN_BINARY_DIR ${target} SMTG_PLUGIN_BINARY_DIR) get_target_property(PLUGIN_EXTENSION ${target} SMTG_PLUGIN_EXTENSION) get_target_property(PLUGIN_PACKAGE_NAME ${target} SMTG_PLUGIN_PACKAGE_NAME) smtg_target_add_library_main(${target}) if(SMTG_CXX_STANDARD) target_compile_features(${target} PRIVATE cxx_std_${SMTG_CXX_STANDARD} ) endif(SMTG_CXX_STANDARD) if(SMTG_MAC) set_target_properties(${target} PROPERTIES BUNDLE TRUE ) if(XCODE) set_target_properties(${target} PROPERTIES XCODE_ATTRIBUTE_GENERATE_PKGINFO_FILE YES XCODE_ATTRIBUTE_WRAPPER_EXTENSION ${PLUGIN_EXTENSION} XCODE_ATTRIBUTE_GCC_GENERATE_DEBUGGING_SYMBOLS YES XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT $<$:dwarf>$<$:dwarf-with-dsym> XCODE_ATTRIBUTE_DEPLOYMENT_POSTPROCESSING $<$:NO>$<$:YES> ) if(SMTG_CUSTOM_BINARY_LOCATION) set_target_properties(${target} PROPERTIES SMTG_PLUGIN_PACKAGE_PATH ${PLUGIN_BINARY_DIR}/${PLUGIN_PACKAGE_NAME} ) else() set_target_properties(${target} PROPERTIES SMTG_PLUGIN_PACKAGE_PATH ${PLUGIN_BINARY_DIR}/$<$:Debug>$<$:Release>/${PLUGIN_PACKAGE_NAME} ) endif(SMTG_CUSTOM_BINARY_LOCATION) else() set_target_properties(${target} PROPERTIES BUNDLE_EXTENSION ${PLUGIN_EXTENSION} LIBRARY_OUTPUT_DIRECTORY ${PLUGIN_BINARY_DIR}/${CMAKE_BUILD_TYPE} SMTG_PLUGIN_PACKAGE_PATH ${PLUGIN_BINARY_DIR}/${CMAKE_BUILD_TYPE}/${PLUGIN_PACKAGE_NAME} ) endif(XCODE) target_link_libraries(${target} PRIVATE "-framework CoreFoundation" ) smtg_target_setup_universal_binary(${target}) smtg_target_codesign(${target} ${SMTG_IOS_DEVELOPMENT_TEAM} "${SMTG_CODE_SIGN_IDENTITY_MAC}") elseif(SMTG_WIN) if(SMTG_CUSTOM_BINARY_LOCATION) set(PLUGIN_PACKAGE_PATH ${PLUGIN_BINARY_DIR}/${PLUGIN_PACKAGE_NAME}) else() set(PLUGIN_PACKAGE_PATH ${PLUGIN_BINARY_DIR}/$<$:Debug>$<$:Release>/${PLUGIN_PACKAGE_NAME}) endif(SMTG_CUSTOM_BINARY_LOCATION) set_target_properties(${target} PROPERTIES SUFFIX .${PLUGIN_EXTENSION} SMTG_PLUGIN_PACKAGE_PATH ${PLUGIN_PACKAGE_PATH} ) if(MSVC) if(CMAKE_SIZEOF_VOID_P EQUAL 4) set_target_properties(${target} PROPERTIES LINK_FLAGS /EXPORT:GetPluginFactory ) endif() endif(MSVC) if(MINGW) # no "lib" prefix for MinGw set_target_properties(${target} PROPERTIES PREFIX "" ) endif(MINGW) # In order not to have the PDB inside the Plug-in package in release builds, # we specify a different location (only for MSVC). if(MSVC) if(CMAKE_SIZEOF_VOID_P EQUAL 4) set(WIN_PDB WIN_PDB32) else() set(WIN_PDB WIN_PDB64) endif() set_target_properties(${target} PROPERTIES PDB_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${WIN_PDB} ) endif(MSVC) # Create Bundle on Windows if(SMTG_CREATE_BUNDLE_FOR_WINDOWS) get_target_property(WIN_ARCHITECTURE_NAME ${target} SMTG_WIN_ARCHITECTURE_NAME) # When using LIBRARY_OUTPUT_DIRECTORY, cmake adds another /Debug resp. /Release folder at the end of the path. # In order to prevent cmake from doing that we set LIBRARY_OUTPUT_DIRECTORY_DEBUG and LIBRARY_OUTPUT_DIRECTORY_RELEASE # (or LIBRARY_OUTPUT_DIRECTORY_${CONFIG_UPPERCASE}) directly. get_target_property(PLUGIN_PACKAGE_CONTENTS ${target} SMTG_PLUGIN_PACKAGE_CONTENTS) foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES}) string(TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG_UPPER) if(SMTG_CUSTOM_BINARY_LOCATION) set_target_properties(${target} PROPERTIES LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG_UPPER} ${PLUGIN_BINARY_DIR}/${PLUGIN_PACKAGE_NAME}/${PLUGIN_PACKAGE_CONTENTS}/${WIN_ARCHITECTURE_NAME} ) else() set_target_properties(${target} PROPERTIES LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG_UPPER} ${PLUGIN_BINARY_DIR}/${OUTPUTCONFIG}/${PLUGIN_PACKAGE_NAME}/${PLUGIN_PACKAGE_CONTENTS}/${WIN_ARCHITECTURE_NAME} ) endif(SMTG_CUSTOM_BINARY_LOCATION) endforeach() if(EXISTS ${SMTG_PACKAGE_ICON_PATH}) smtg_target_add_folder_icon(${target} ${SMTG_PACKAGE_ICON_PATH}) endif() else() # Do not create a "MyPlugin.vst3/Contents/Resources" folder when SMTG_CREATE_BUNDLE_FOR_WINDOWS is NOT set! set_target_properties(${target} PROPERTIES SMTG_DISABLE_CREATE_RESOURCE_FOLDER 1 ) endif(SMTG_CREATE_BUNDLE_FOR_WINDOWS) # Disable warning LNK4221: "This object file does not define any previously undefined public symbols...". # Enable "Generate Debug Information" in release config by setting "/Zi" and "/DEBUG" flags. if(MSVC) target_compile_options(${target} PRIVATE /wd4221 $<$:/Zi> ) set_property(TARGET ${target} APPEND PROPERTY LINK_FLAGS_RELEASE /DEBUG ) endif(MSVC) elseif(SMTG_LINUX) smtg_get_linux_architecture_name() # Sets var LINUX_ARCHITECTURE_NAME message(STATUS "[SMTG] Linux architecture name is ${LINUX_ARCHITECTURE_NAME}.") get_target_property(PLUGIN_PACKAGE_CONTENTS ${target} SMTG_PLUGIN_PACKAGE_CONTENTS) set_target_properties(${target} PROPERTIES PREFIX "" LIBRARY_OUTPUT_DIRECTORY ${PLUGIN_BINARY_DIR}/${CMAKE_BUILD_TYPE}/${PLUGIN_PACKAGE_NAME}/${PLUGIN_PACKAGE_CONTENTS}/${LINUX_ARCHITECTURE_NAME} SMTG_PLUGIN_PACKAGE_PATH ${PLUGIN_BINARY_DIR}/${CMAKE_BUILD_TYPE}/${PLUGIN_PACKAGE_NAME} ) # Strip symbols in Release config if(${CMAKE_BUILD_TYPE} MATCHES Release) smtg_target_strip_symbols(${target}) elseif(${CMAKE_BUILD_TYPE} MATCHES RelWithDebInfo) smtg_target_strip_symbols_with_dbg(${target}) endif() endif(SMTG_MAC) smtg_target_create_resources_folder(${target}) endfunction(smtg_target_make_plugin_package) #------------------------------------------------------------------------ # Create "Resources" folder for a target # # @param target cmake target function(smtg_target_create_resources_folder target) get_target_property(DISABLE_CREATE_RESOURCE_FOLDER ${target} SMTG_DISABLE_CREATE_RESOURCE_FOLDER) if(DEFINED DISABLE_CREATE_RESOURCE_FOLDER AND DISABLE_CREATE_RESOURCE_FOLDER EQUAL 1) return() endif() get_target_property(PLUGIN_PACKAGE_PATH ${target} SMTG_PLUGIN_PACKAGE_PATH) get_target_property(PLUGIN_PACKAGE_RESOURCES ${target} SMTG_PLUGIN_PACKAGE_RESOURCES) set(resources_folder "${PLUGIN_PACKAGE_PATH}/${PLUGIN_PACKAGE_RESOURCES}") add_custom_command( TARGET ${target} PRE_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory "${resources_folder}" ) endfunction() #------------------------------------------------------------------------ # Adds a resource for a target # # The resource which gets copied into the targets Resource Bundle directory. # # @param target cmake target # @param input_file resource file # @param ARGV2 destination subfolder inside the Resource folder [optional] function(smtg_target_add_plugin_resource target input_file) if(SMTG_LINUX OR (SMTG_WIN AND SMTG_CREATE_BUNDLE_FOR_WINDOWS)) get_target_property(PLUGIN_PACKAGE_PATH ${target} SMTG_PLUGIN_PACKAGE_PATH) get_target_property(PLUGIN_PACKAGE_RESOURCES ${target} SMTG_PLUGIN_PACKAGE_RESOURCES) set(destination_folder "${PLUGIN_PACKAGE_PATH}/${PLUGIN_PACKAGE_RESOURCES}") set(destination_sourcegroup "${PLUGIN_PACKAGE_RESOURCES}") if(ARGC GREATER 2 AND ARGV2) set(destination_folder "${destination_folder}/${ARGV2}") set(destination_sourcegroup "${destination_sourcegroup}/${ARGV2}") endif() # Make the incoming path absolute. get_filename_component(absolute_input_file_path "${input_file}" ABSOLUTE) # Extract the filename and its extension get_filename_component(file_name_with_extension "${input_file}" NAME) # Create absolute output file path set(absolute_output_file_path "${destination_folder}/${file_name_with_extension}") # Add the file as a source to the target inside their corresponding folders source_group("${destination_sourcegroup}" FILES ${input_file}) target_sources(${target} PRIVATE ${input_file} ) # CMAKE_VS_MSBUILD_COMMAND is not defined when using "-G Ninja" generator but resolves to msbuild.exe when using "-G Visual Studio..." if(CMAKE_VS_MSBUILD_COMMAND) # Hacky workaround: replace all SMTG_PLUGIN_PACKAGE_NAME (e.g. again.vst3) # occurences by a MSVS macro $(TargetFileName). Using the cmake only approach does not work. get_target_property(PLUGIN_PACKAGE_NAME ${target} SMTG_PLUGIN_PACKAGE_NAME) string(REPLACE "${PLUGIN_PACKAGE_NAME}" "$(TargetFileName)" absolute_output_file_path ${absolute_output_file_path}) endif() # Create a custom build tool for the specific file add_custom_command( OUTPUT "${absolute_output_file_path}" MAIN_DEPENDENCY "${absolute_input_file_path}" COMMAND ${CMAKE_COMMAND} -E copy_if_different "${absolute_input_file_path}" "${absolute_output_file_path}" COMMAND ${CMAKE_COMMAND} -E echo "[SMTG] Copied ${absolute_input_file_path} to ${absolute_output_file_path}" ) elseif(SMTG_MAC) target_sources(${target} PRIVATE ${input_file} ) set(destination_folder "Resources") if(ARGC GREATER 2 AND ARGV2) set(destination_folder "${destination_folder}/${ARGV2}") endif() set_source_files_properties(${input_file} PROPERTIES MACOSX_PACKAGE_LOCATION "${destination_folder}" ) endif(SMTG_LINUX OR (SMTG_WIN AND SMTG_CREATE_BUNDLE_FOR_WINDOWS)) endfunction(smtg_target_add_plugin_resource) #------------------------------------------------------------------------ # Adds multiple snapshots to target. # # Usage: # smtg_target_add_plugin_snapshots (target # RESOURCES # bitmap0.png # bitmap1.png # ) # This adds both bitmaps to /Resources/Snapshots # # @param target The target to which the resources will be added. function(smtg_target_add_plugin_snapshots target) cmake_parse_arguments( PARSED_ARGS # Prefix of output variables e.g. PARSED_ARGS_RESOURCES "" # List of names for boolean arguments "" # List of names for mono-valued arguments "RESOURCES" # List of names for multi-valued arguments resp. lists ${ARGN} # Arguments of the function to parse ) get_target_property(PLUGIN_PACKAGE_SNAPSHOTS ${target} SMTG_PLUGIN_PACKAGE_SNAPSHOTS) foreach(rsrc ${PARSED_ARGS_RESOURCES}) smtg_target_add_plugin_resource (${target} ${rsrc} ${PLUGIN_PACKAGE_SNAPSHOTS}) endforeach() endfunction(smtg_target_add_plugin_snapshots) #------------------------------------------------------------------------ # Adds multiple resources to target. # # Usage: # smtg_target_add_plugin_resources (target # RESOURCES # bitmap0.png # bitmap1.png # OUTPUT_SUBDIRECTORY # Graphics # ) # This adds both bitmaps to /Resources/Graphics # # @param target The target to which the resources will be added. function(smtg_target_add_plugin_resources target) cmake_parse_arguments( PARSED_ARGS # Prefix of output variables e.g. PARSED_ARGS_RESOURCES "" # List of names for boolean arguments "OUTPUT_SUBDIRECTORY" # List of names for mono-valued arguments "RESOURCES" # List of names for multi-valued arguments resp. lists ${ARGN} # Arguments of the function to parse ) foreach(rsrc ${PARSED_ARGS_RESOURCES}) smtg_target_add_plugin_resource (${target} ${rsrc} ${PARSED_ARGS_OUTPUT_SUBDIRECTORY}) endforeach() endfunction(smtg_target_add_plugin_resources) #------------------------------------------------------------------------ # Deprecated since 3.7.4 ----------------------------- function(smtg_add_folder_icon target icon) message(DEPRECATION "[SMTG] Use smtg_target_add_folder_icon instead of smtg_add_folder_icon") smtg_target_add_folder_icon (${target} ${icon}) endfunction(smtg_add_folder_icon) # Deprecated since 3.7.4 ----------------------------- function(smtg_create_link_to_plugin target) message(DEPRECATION "[SMTG] Use smtg_target_create_link_to_plugin instead of smtg_create_link_to_plugin") smtg_get_default_plugin_path() smtg_target_create_link_to_plugin(${target} ${SMTG_PLUGIN_TARGET_DEFAULT_PATH}) endfunction(smtg_create_link_to_plugin) # Deprecated since 3.7.4 ----------------------------- function(smtg_make_plugin_package target pkg_name extension) message(DEPRECATION "[SMTG] Use smtg_target_make_plugin_package instead of smtg_make_plugin_package") smtg_target_make_plugin_package (${target} ${pkg_name} ${extension}) endfunction(smtg_make_plugin_package) # Deprecated since 3.7.4 ----------------------------- function(smtg_strip_symbols target) message(DEPRECATION "[SMTG] Use smtg_target_strip_symbols instead of smtg_strip_symbols") smtg_target_strip_symbols (${target}) endfunction(smtg_strip_symbols) # Deprecated since 3.7.4 ----------------------------- function(smtg_add_library_main target) message(DEPRECATION "[SMTG] Use smtg_target_add_library_main instead of smtg_add_library_main") smtg_target_add_library_main (${target}) endfunction(smtg_add_library_main) # Deprecated since 3.7.4 ----------------------------- function(smtg_strip_symbols_with_dbg target) message(DEPRECATION "[SMTG] Use smtg_target_strip_symbols_with_dbg instead of smtg_strip_symbols_with_dbg") smtg_target_strip_symbols_with_dbg (${target}) endfunction(smtg_strip_symbols_with_dbg) # Deprecated since 3.7.4 ----------------------------- function(smtg_dump_plugin_package_variables target) message(DEPRECATION "[SMTG] Use smtg_target_dump_plugin_package_variables instead of smtg_dump_plugin_package_variables") smtg_target_dump_plugin_package_variables (${target}) endfunction(smtg_dump_plugin_package_variables) # Deprecated since 3.7.4 ----------------------------- function(smtg_add_plugin_resource target input_file) message(DEPRECATION "[SMTG] Use smtg_target_add_plugin_resource instead of smtg_add_plugin_resource") smtg_target_add_plugin_resource (${target} ${input_file}) endfunction(smtg_add_plugin_resource) # Deprecated since 3.7.4 ----------------------------- function(smtg_add_plugin_snapshot target snapshot) message(DEPRECATION "[SMTG] Use smtg_target_add_plugin_snapshots instead of smtg_add_plugin_snapshot") smtg_target_add_plugin_snapshots (${target} RESOURCES ${snapshot} ) endfunction(smtg_add_plugin_snapshot) vst3_cmake-3.8.0_build_66/modules/SMTG_AddSubDirectories.cmake000066400000000000000000000010701507546454600241340ustar00rootroot00000000000000 #------------------------------------------------------------------------ # add every sub directory of the current source dir if it contains a CMakeLists.txt function(smtg_add_subdirectories) file(GLOB subDirectories RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *) foreach(dir ${subDirectories}) if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${dir}") if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${dir}/CMakeLists.txt") add_subdirectory(${dir}) endif() endif() endforeach(dir) endfunction(smtg_add_subdirectories) vst3_cmake-3.8.0_build_66/modules/SMTG_AddVST3AuV2.cmake000066400000000000000000000145171507546454600224550ustar00rootroot00000000000000 include(SMTG_Bundle) include(SMTG_UniversalBinary) include(SMTG_CodeSign) if(XCODE AND SMTG_ENABLE_AUV2_BUILDS) set(SMTG_AUV2_FOLDER FOLDER "AudioUnit V2") #------------------------------------------------------------------------ # Add an AudioUnit Version 2 target for macOS # @param target target name # @param BUNDLE_NAME name of the bundle # @param BUNDLE_IDENTIFIER bundle identifier # @param INFO_PLIST_TEMPLATE the info.plist file containing the needed AudioUnit keys # @param VST3_PLUGIN_TARGET the vst3 plugin target #------------------------------------------------------------------------ function(smtg_target_add_auv2 target) set(oneValueArgs BUNDLE_NAME BUNDLE_IDENTIFIER INFO_PLIST_TEMPLATE VST3_PLUGIN_TARGET ) cmake_parse_arguments(ARG "" "${oneValueArgs}" "" ${ARGN}) if(ARG_UNPARSED_ARGUMENTS) message(FATAL_ERROR "[SMTG] The following parameters are unrecognized: ${ARG_UNPARSED_ARGUMENTS}") endif(ARG_UNPARSED_ARGUMENTS) if(ARG_KEYWORDS_MISSING_VALUES) message(FATAL_ERROR "[SMTG] The following parameter values are missing: ${ARG_KEYWORDS_MISSING_VALUES}") endif(ARG_KEYWORDS_MISSING_VALUES) foreach(ARG_NAME ${oneValueArgs}) set(tmp ARG_${ARG_NAME}) if(NOT ${tmp}) message(FATAL_ERROR "[SMTG] Missing ${ARG_NAME} argument and value") endif() endforeach() string(TIMESTAMP CocoaIdStamp "%Y%j%H%M%S") string(MAKE_C_IDENTIFIER "SMTG_AUCocoaUIBase_${ARG_BUNDLE_NAME}${CocoaIdStamp}" SMTG_AUCocoaUIBase_CLASS_NAME) add_library(${target} MODULE ${public_sdk_SOURCE_DIR}/source/vst/auwrapper/aucocoaview.mm ${public_sdk_SOURCE_DIR}/source/vst/auwrapper/aucocoaview.h ${public_sdk_SOURCE_DIR}/source/vst/auwrapper/auwrapper.mm ${public_sdk_SOURCE_DIR}/source/vst/auwrapper/auwrapper.h ${public_sdk_SOURCE_DIR}/source/vst/auwrapper/NSDataIBStream.mm ${public_sdk_SOURCE_DIR}/source/vst/auwrapper/NSDataIBStream.h ) smtg_target_setup_universal_binary(${target}) smtg_target_codesign(${target} ${SMTG_IOS_DEVELOPMENT_TEAM} "${SMTG_CODE_SIGN_IDENTITY_MAC}") target_compile_features(${target} PUBLIC cxx_std_17 ) target_compile_definitions(${target} PRIVATE SMTG_AUCocoaUIBase_CLASS_NAME=${SMTG_AUCocoaUIBase_CLASS_NAME} CA_USE_AUDIO_PLUGIN_ONLY=0 # TODO: If true will let instruments fail validation ) target_link_libraries(${target} PRIVATE sdk_hosting "-framework AudioUnit" "-framework CoreMIDI" "-framework AudioToolbox" "-framework CoreFoundation" "-framework Carbon" "-framework Cocoa" "-framework CoreAudio" ) if(NOT ${SMTG_COREAUDIO_SDK_PATH} STREQUAL "") target_sources(${target} PRIVATE "${public_sdk_SOURCE_DIR}/source/vst/auwrapper/ausdk.mm" ) target_include_directories(${target} PRIVATE "${SMTG_COREAUDIO_SDK_PATH}/**" ) elseif(NOT ${SMTG_AUDIOUNIT_SDK_PATH} STREQUAL "") target_compile_definitions(${target} PRIVATE SMTG_AUWRAPPER_USES_AUSDK ) ## Adding the xcodeproj will crash Xcode when closing and reopening the cmake generated project # target_sources(${target} PRIVATE "${SMTG_AUDIOUNIT_SDK_PATH}/AudioUnitSDK.xcodeproj") target_include_directories(${target} PRIVATE "${SMTG_AUDIOUNIT_SDK_PATH}/include/**" ) add_custom_command(TARGET ${target} PRE_BUILD COMMAND "xcodebuild" -project "${SMTG_AUDIOUNIT_SDK_PATH}/AudioUnitSDK.xcodeproj" -target AudioUnitSDK build -configuration Release SYMROOT=${CMAKE_BINARY_DIR}/AudioUnitSDK/ ) target_link_libraries(${target} PRIVATE "${CMAKE_BINARY_DIR}/AudioUnitSDK/Release/libAudioUnitSDK.a" ) endif() smtg_target_set_bundle(${target} INFOPLIST ${ARG_INFO_PLIST_TEMPLATE} EXTENSION component ) set(VST3_OUTPUT_DIR ${CMAKE_BINARY_DIR}/VST3) set(outputdir ${VST3_OUTPUT_DIR}/$) set_target_properties(${target} PROPERTIES XCODE_ATTRIBUTE_GENERATE_PKGINFO_FILE "YES" XCODE_ATTRIBUTE_PRODUCT_NAME "${ARG_BUNDLE_NAME}" XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER ${ARG_BUNDLE_IDENTIFIER} LIBRARY_OUTPUT_DIRECTORY ${VST3_OUTPUT_DIR} ${SMTG_AUV2_FOLDER} ) add_dependencies(${target} ${ARG_VST3_PLUGIN_TARGET}) add_custom_command(TARGET ${target} POST_BUILD COMMAND /bin/mkdir "-p" ${outputdir}/${ARG_BUNDLE_NAME}.component/Contents/Resources COMMAND /bin/rm "-f" "${outputdir}/${ARG_BUNDLE_NAME}.component/Contents/Resources/plugin.vst3" COMMAND /bin/ln "-svfF" "${outputdir}/$.vst3" "${outputdir}/${ARG_BUNDLE_NAME}.component/Contents/Resources/plugin.vst3" COMMAND /bin/rm "-rf" "~/Library/Audio/Plug-Ins/Components/${ARG_BUNDLE_NAME}.component" COMMAND /bin/cp "-rpf" "${outputdir}/${ARG_BUNDLE_NAME}.component" "~/Library/Audio/Plug-Ins/Components/" BYPRODUCTS "~/Library/Audio/Plug-Ins/Components/${ARG_BUNDLE_NAME}.component" ) smtg_target_add_custom_codesign_post_build_step( TARGET "${target}" IDENTITY ${SMTG_CODE_SIGN_IDENTITY_MAC} PATH "~/Library/Audio/Plug-Ins/Components/${ARG_BUNDLE_NAME}.component" FLAGS --timestamp ) endfunction(smtg_target_add_auv2) else() message("[SMTG] * To add an AudioUnit v2 target, you need to use the Xcode generator and set SMTG_COREAUDIO_SDK_PATH to the path of your installation of the CoreAudio SDK!") endif(XCODE AND SMTG_ENABLE_AUV2_BUILDS) vst3_cmake-3.8.0_build_66/modules/SMTG_AddVST3AuV3.cmake000066400000000000000000000270441507546454600224550ustar00rootroot00000000000000 #------------------------------------------------------------------------ # Includes #------------------------------------------------------------------------ include(SMTG_CodeSign) if(SMTG_MAC) if(XCODE) set(SMTG_AUV3_FOLDER FOLDER "AudioUnit V3") set(auv3_wrapper_macos_sources ${public_sdk_SOURCE_DIR}/source/vst/auv3wrapper/AUv3WrappermacOS/main.mm ) set(auv3_wrapper_macosextension_sources ${public_sdk_SOURCE_DIR}/source/vst/auv3wrapper/Shared/AUv3WrapperFactory.mm ) set(auv3_wrapper_ios_sources ) set(auv3_wrapper_iosextension_sources ${public_sdk_SOURCE_DIR}/source/vst/auv3wrapper/Shared/AUv3WrapperFactory.mm ) #------------------------------------------------------------------------ # Add a AudioUnit Version 3 App target for macOS # @param target target name # @param BuildTarget must be either "macOS" or "iOS" # @param OutputName Output App name # @param BundleID Bundle Identifier # @param AudioUnitConfigHeader configuration header # @param EntitlementFile Code sign entitlements file # @param AppSources Application Sources # @param AppUIResources Application UI Resources # @param AppInfoPlist Info.plist for the application # @param ExtensionInfoPlist Info.plist for the app-extension # @param vst3_plugin_target the vst3 plugin target #------------------------------------------------------------------------ function(smtg_add_auv3_app target BuildTarget OutputName BundleID AudioUnitConfigHeader EntitlementFile AppSources AppUIResources AppInfoPlist ExtensionInfoPlist vst3_plugin_target) if(BuildTarget STREQUAL macOS) set(macOS TRUE) elseif(BuildTarget STREQUAL iOS) set(iOS TRUE) else() message(FATAL_ERROR "[SMTG] BuildTarget must be macOS or iOS not ${BuildTarget}") endif() if(macOS) set(link_frameworks "-framework Accelerate" "-framework AppKit" "-framework AudioToolbox" "-framework AVFoundation" "-framework CoreAudioKit" "-framework OpenGL" "-framework QuartzCore" "-framework CoreMIDI" ) set(app-extension-target ${target}_appextension_macos) set(app-target ${target}) set(app-extension-sources ${auv3_wrapper_macosextension_sources}) set(auwrapper-sources ${auv3_wrapper_macos_sources} ${AppSources}) set(auwrapper-lib auv3_wrapper_macos) else() set(link_frameworks "-framework UIKit" "-framework CoreAudioKit" "-framework AudioToolbox" "-framework CoreGraphics" "-framework QuartzCore" "-framework CoreText" "-framework Accelerate" "-framework AVFoundation" "-framework ImageIO" "-framework MobileCoreServices" "-framework MediaPlayer" "-framework CoreMIDI" ) set(app-extension-target ${target}_appextension_ios) set(app-target ${target}) set(app-extension-sources ${auv3_wrapper_iosextension_sources}) set(auwrapper-sources ${AppSources}) set(auwrapper-lib auv3_wrapper_ios) endif(macOS) set(auwrapper-xib-resources ${AppUIResources}) get_filename_component(AudioUnitConfig ${AudioUnitConfigHeader} ABSOLUTE) get_filename_component(AppInfoPlist ${AppInfoPlist} ABSOLUTE) get_filename_component(ExtensionInfoPlist ${ExtensionInfoPlist} ABSOLUTE) get_filename_component(EntitlementFile ${EntitlementFile} ABSOLUTE) # app-extension add_executable(${app-extension-target} ${app-extension-sources}) target_compile_features(${app-extension-target} PUBLIC cxx_std_17 ) target_link_libraries(${app-extension-target} PRIVATE ${auwrapper-lib} ${link_frameworks} ) add_dependencies(${app-extension-target} "${vst3_plugin_target}") set_target_properties(${app-extension-target} PROPERTIES # BUNDLE YES # MACOSX_BUNDLE TRUE XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER ${BundleID}.appex XCODE_ATTRIBUTE_INFOPLIST_PREFIX_HEADER ${AudioUnitConfig} XCODE_ATTRIBUTE_GCC_PREFIX_HEADER ${AudioUnitConfig} XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES XCODE_ATTRIBUTE_WRAPPER_EXTENSION appex XCODE_PRODUCT_TYPE com.apple.product-type.app-extension ${SMTG_AUV3_FOLDER} ) smtg_target_set_bundle(${app-extension-target} INFOPLIST "${ExtensionInfoPlist}" PREPROCESS) # application add_executable(${app-target} ${auwrapper-sources} ${auwrapper-xib-resources}) target_compile_features(${app-target} PUBLIC cxx_std_17 ) target_link_libraries(${app-target} PRIVATE ${auwrapper-lib} ${link_frameworks} ) add_dependencies(${app-target} "${app-extension-target}") set_target_properties(${app-target} PROPERTIES RESOURCE "${auwrapper-xib-resources}" MACOSX_BUNDLE TRUE OUTPUT_NAME "${OutputName}" XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER ${BundleID} XCODE_ATTRIBUTE_INFOPLIST_PREFIX_HEADER ${AudioUnitConfig} XCODE_ATTRIBUTE_GCC_PREFIX_HEADER ${AudioUnitConfig} XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES ${SMTG_AUV3_FOLDER} ) smtg_target_set_bundle(${app-target} INFOPLIST "${AppInfoPlist}" PREPROCESS) get_target_property(PLUGIN_PACKAGE_PATH ${vst3_plugin_target} SMTG_PLUGIN_PACKAGE_PATH) if(macOS) add_custom_command( TARGET ${app-extension-target} POST_BUILD COMMENT "[SMTG] Copy VST3 plugin into App-Extension" COMMAND rm -Rf "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/$/$.appex/Contents/PlugIns/plugin.vst3" COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/$/$.appex/Contents/PlugIns/plugin.vst3" COMMAND /bin/cp -a -v "${PLUGIN_PACKAGE_PATH}/" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/$/$.appex/Contents/PlugIns/plugin.vst3/" ) add_custom_command( TARGET ${app-target} POST_BUILD COMMENT "[SMTG] Copy App-Extension into Application" COMMAND rm -Rf "$/PlugIns/auv3.appex" COMMAND ${CMAKE_COMMAND} -E make_directory "$/PlugIns/auv3.appex" COMMAND /bin/cp -a -v "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/$/$.appex/" "$/PlugIns/auv3.appex/" ) smtg_target_codesign(${app-target} ${SMTG_IOS_DEVELOPMENT_TEAM} "${SMTG_CODE_SIGN_IDENTITY_MAC}") smtg_target_codesign(${app-extension-target} ${SMTG_IOS_DEVELOPMENT_TEAM} "${SMTG_CODE_SIGN_IDENTITY_MAC}") set_target_properties(${app-extension-target} PROPERTIES XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "${EntitlementFile}" ) else() add_custom_command( TARGET ${app-extension-target} POST_BUILD COMMENT "[SMTG] Copy VST3 plugin into App-Extension" COMMAND rm -Rf "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/$/$.appex/PlugIns/plugin.vst3" COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/$/$.appex/PlugIns/plugin.vst3" COMMAND /bin/cp -a -v "${PLUGIN_PACKAGE_PATH}/" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/$/$.appex/PlugIns/plugin.vst3/" ) add_custom_command( TARGET ${app-target} POST_BUILD COMMENT "[SMTG] Copy App-Extension into Application" COMMAND rm -Rf "$/PlugIns/auv3.appex" COMMAND ${CMAKE_COMMAND} -E make_directory "$/PlugIns/auv3.appex" COMMAND /bin/cp -a -v "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/$/$.appex/" "$/PlugIns/auv3.appex/" ) smtg_target_set_platform_ios(${app-target}) smtg_target_set_platform_ios(${app-extension-target}) smtg_target_codesign(${app-target} ${SMTG_IOS_DEVELOPMENT_TEAM} "${SMTG_CODE_SIGN_IDENTITY_IOS}") smtg_target_codesign(${app-extension-target} ${SMTG_IOS_DEVELOPMENT_TEAM} "${SMTG_CODE_SIGN_IDENTITY_IOS}") set_target_properties(${app-target} PROPERTIES XCODE_ATTRIBUTE_ENABLE_BITCODE "NO" ) set_target_properties(${app-extension-target} PROPERTIES XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "${EntitlementFile}" XCODE_ATTRIBUTE_ENABLE_BITCODE "NO" ) endif(macOS) set(AUV3_APP_TARGET ${app-target} PARENT_SCOPE) set(AUV3_EXTENSION_TARGET ${app-extension-target} PARENT_SCOPE) endfunction(smtg_add_auv3_app) # Deprecated since 3.7.4 ----------------------------- function(smtg_add_auv3 target BuildTarget OutputName BundleID AudioUnitConfigHeader EntitlementFile AppSources AppUIResources AppInfoPlist ExtensionInfoPlist vst3_plugin_target) message(DEPRECATION "[SMTG] Use smtg_add_auv3_app instead of smtg_add_auv3") smtg_add_auv3_app (${target} ${BuildTarget} ${OutputName} ${BundleID} ${AudioUnitConfigHeader} ${EntitlementFile} ${AppSources} ${AppUIResources} ${AppInfoPlist} ${ExtensionInfoPlist} ${vst3_plugin_target}) endfunction(smtg_add_auv3) endif(XCODE) endif(SMTG_MAC) vst3_cmake-3.8.0_build_66/modules/SMTG_AddVST3Library.cmake000066400000000000000000000324171507546454600233030ustar00rootroot00000000000000 #------------------------------------------------------------------------ # Includes #------------------------------------------------------------------------ include(SMTG_AddSMTGLibrary) set(SMTG_RUN_VST_VALIDATOR_DEFAULT ON) set(SMTG_CREATE_MODULE_INFO_DEFAULT ON) # Run the Validator after each new compilation of VST3 Plug-ins option(SMTG_RUN_VST_VALIDATOR "Run VST validator on VST3 Plug-ins" ${SMTG_RUN_VST_VALIDATOR_DEFAULT}) # Create the moduleinfo.json file after building option(SMTG_CREATE_MODULE_INFO "Create the moduleinfo.json file" ${SMTG_CREATE_MODULE_INFO_DEFAULT}) #------------------------------------------------------------------------ # Runs the validator on a VST3 target. # # The validator will be run on the target as a post build step. # # @param target The target which the validator will validate. function(smtg_target_run_vst_validator target) if(TARGET validator) message(STATUS "[SMTG] Setup running validator for ${target}") add_dependencies(${target} validator) if(SMTG_WIN AND NOT SMTG_CREATE_BUNDLE_FOR_WINDOWS) set(TARGET_PATH $) add_custom_command( TARGET ${target} POST_BUILD COMMAND ${CMAKE_COMMAND} -E echo [SMTG] Validator started... COMMAND $ "${TARGET_PATH}" WORKING_DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" COMMAND ${CMAKE_COMMAND} -E echo [SMTG] Validator finished. ) else() get_target_property(PLUGIN_PACKAGE_PATH ${target} SMTG_PLUGIN_PACKAGE_PATH) add_custom_command( TARGET ${target} POST_BUILD COMMAND ${CMAKE_COMMAND} -E echo [SMTG] Validator started... COMMAND $ $<$:${PLUGIN_PACKAGE_PATH}> $<$:${PLUGIN_PACKAGE_PATH}> WORKING_DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" COMMAND ${CMAKE_COMMAND} -E echo [SMTG] Validator finished. ) endif() endif(TARGET validator) endfunction(smtg_target_run_vst_validator) #------------------------------------------------------------------------ # Runs the moduleinfotool on a VST3 target. # # The moduleinfotool will be run on the target as a post build step and # generates a moduleinfo.json file inside the VST 3 bundle. # # @param target The target for which the moduleinfotool will create the file. # @param MODULEINFO_COMPATIBILITY The path to the compatibility json file [optional] function(smtg_target_create_module_info_file target) set(oneValueArgs MODULEINFO_COMPATIBILITY) cmake_parse_arguments(PARSE_ARGV 1 PARAMS "" "${oneValueArgs}" "") if(NOT SMTG_CREATE_MODULE_INFO) return() endif() if(SMTG_WIN AND NOT SMTG_CREATE_BUNDLE_FOR_WINDOWS) message(WARNING "[SMTG] No moduleinfo.json file for ${target} generated. Consider to enable SMTG_CREATE_BUNDLE_FOR_WINDOWS.") return() endif() message(STATUS "[SMTG] Setup running moduleinfotool for ${target}") add_dependencies(${target} moduleinfotool) get_target_property(PLUGIN_PACKAGE_PATH ${target} SMTG_PLUGIN_PACKAGE_PATH) set(SMTG_MODULEINFO_PATH_INSIDE_BUNDLE Contents/Resources/moduleinfo.json) if(DEFINED PARAMS_MODULEINFO_COMPATIBILITY) add_custom_command( TARGET ${target} POST_BUILD COMMAND $ -create -version ${PROJECT_VERSION} -path "${PLUGIN_PACKAGE_PATH}" -compat "${CMAKE_CURRENT_SOURCE_DIR}/${PARAMS_MODULEINFO_COMPATIBILITY}" -output "${PLUGIN_PACKAGE_PATH}/${SMTG_MODULEINFO_PATH_INSIDE_BUNDLE}" WORKING_DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" ) else() add_custom_command( TARGET ${target} POST_BUILD COMMAND $ -create -version ${PROJECT_VERSION} -path "${PLUGIN_PACKAGE_PATH}" -output "${PLUGIN_PACKAGE_PATH}/${SMTG_MODULEINFO_PATH_INSIDE_BUNDLE}" WORKING_DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" ) endif() if(SMTG_MAC) add_custom_command( TARGET ${target} POST_BUILD COMMAND codesign -f -s "-" -v "${PLUGIN_PACKAGE_PATH}/${SMTG_MODULEINFO_PATH_INSIDE_BUNDLE}" WORKING_DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" ) endif() endfunction() #------------------------------------------------------------------------ # Set SMTG_PLUGIN_TARGET_PATH to default VST3 Path function(smtg_get_vst3_path) # here you can define the VST3 Plug-ins folder (it will be created), SMTG_PLUGIN_TARGET_DEFAULT_PATH will be set smtg_get_default_vst3_path() set(SMTG_PLUGIN_TARGET_USER_PATH "" CACHE PATH "Here you can redefine the VST3 Plug-ins folder") if(NOT ${SMTG_PLUGIN_TARGET_USER_PATH} STREQUAL "") set(PLUGIN_TARGET_PATH ${SMTG_PLUGIN_TARGET_USER_PATH}) else() set(PLUGIN_TARGET_PATH ${SMTG_PLUGIN_TARGET_DEFAULT_PATH}) endif() if(NOT ${PLUGIN_TARGET_PATH} STREQUAL "" AND SMTG_CREATE_PLUGIN_LINK) if(NOT EXISTS ${PLUGIN_TARGET_PATH}) message(STATUS "[SMTG] Create folder: " ${PLUGIN_TARGET_PATH}) if(SMTG_WIN) smtg_create_directory_as_admin_win(${PLUGIN_TARGET_PATH}) else() file(MAKE_DIRECTORY ${PLUGIN_TARGET_PATH}) endif(SMTG_WIN) endif(NOT EXISTS ${PLUGIN_TARGET_PATH}) endif(NOT ${PLUGIN_TARGET_PATH} STREQUAL "" AND SMTG_CREATE_PLUGIN_LINK) if(EXISTS ${PLUGIN_TARGET_PATH}) message(STATUS "[SMTG] SMTG_PLUGIN_TARGET_PATH is set to: " ${PLUGIN_TARGET_PATH}) else() message(STATUS "[SMTG] SMTG_PLUGIN_TARGET_PATH is not set!") endif(EXISTS ${PLUGIN_TARGET_PATH}) set(SMTG_PLUGIN_TARGET_PATH ${PLUGIN_TARGET_PATH} PARENT_SCOPE) endfunction(smtg_get_vst3_path) #------------------------------------------------------------------------ # Adds a VST3 target. # # @param target The target to which a VST3 Plug-in will be added. # @param pkg_name name of the created package # @param MODULEINFO_COMPATIBILITY The path to the compatibility json file [optional] function(smtg_add_vst3plugin_with_pkgname target pkg_name) #message(STATUS "[SMTG] target is ${target}") #message(STATUS "[SMTG] pkg_name is ${pkg_name}") set(oneValueArgs MODULEINFO_COMPATIBILITY) set(sourcesArgs SOURCES_LIST) cmake_parse_arguments(PARSE_ARGV 2 PARAMS "" "${oneValueArgs}" "${sourcesArgs}") #message(STATUS "[SMTG] PARAMS_UNPARSED_ARGUMENTS is ${PARAMS_UNPARSED_ARGUMENTS}") #message(STATUS "[SMTG] PARAMS_MODULEINFO_COMPATIBILITY is ${PARAMS_MODULEINFO_COMPATIBILITY}") #message(STATUS "[SMTG] PARAMS_SOURCES_LIST is ${PARAMS_SOURCES_LIST}") if(NOT EXISTS ${SMTG_PACKAGE_ICON_PATH}) set(SMTG_PACKAGE_ICON_PATH ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/../templates/VST_Logo_Steinberg.ico) endif() #message(STATUS "[SMTG] SMTG_PACKAGE_ICON_PATH is ${SMTG_PACKAGE_ICON_PATH}") if(DEFINED PARAMS_SOURCES_LIST) set(SOURCES "${PARAMS_SOURCES_LIST}") else() set(SOURCES "${PARAMS_UNPARSED_ARGUMENTS}") endif() add_library(${target} MODULE "${SOURCES}") smtg_target_set_vst_win_architecture_name(${target}) smtg_target_make_plugin_package(${target} ${pkg_name} vst3) #################### # Workaround for Xcode 15 not allowing to add adhoc_codesign linker setting #################### if(SMTG_MAC AND XCODE_VERSION VERSION_GREATER_EQUAL 15) get_target_property(PLUGIN_PACKAGE_PATH ${target} SMTG_PLUGIN_PACKAGE_PATH) add_custom_command( TARGET ${target} POST_BUILD COMMENT "[SMTG] Adhoc codesign workaround for Xcode 15" COMMAND codesign --force --verbose --sign - "${PLUGIN_PACKAGE_PATH}" ) endif() if(SMTG_ENABLE_TARGET_VARS_LOG) smtg_target_dump_plugin_package_variables(${target}) endif(SMTG_ENABLE_TARGET_VARS_LOG) if(DEFINED PARAMS_MODULEINFO_COMPATIBILITY) smtg_target_create_module_info_file(${target} MODULEINFO_COMPATIBILITY "${PARAMS_MODULEINFO_COMPATIBILITY}") else() smtg_target_create_module_info_file(${target}) endif() if(SMTG_RUN_VST_VALIDATOR) smtg_target_run_vst_validator(${target}) endif(SMTG_RUN_VST_VALIDATOR) if(SMTG_CREATE_PLUGIN_LINK) smtg_get_vst3_path() smtg_target_create_link_to_plugin(${target} ${SMTG_PLUGIN_TARGET_PATH}) endif(SMTG_CREATE_PLUGIN_LINK) endfunction(smtg_add_vst3plugin_with_pkgname) #------------------------------------------------------------------------ # Adds a VST3 target. # # @param target The target to which a VST3 Plug-in will be added. # @param PACKAGE_NAME The name of the package [optional] if not present # @param MODULEINFO_COMPATIBILITY The path to the compatibility json file [optional] # @param SOURCES_LIST List of sources to add to target project [mandatory when PACKAGE_NAME is used] # for example: # smtg_add_vst3plugin(${target} PACKAGE_NAME "A Gain" SOURCES_LIST ${again_sources}) # smtg_add_vst3plugin(${target} PACKAGE_NAME "A Gain" MODULEINFO_COMPATIBILITY compat.json SOURCES_LIST ${again_sources}) # or # smtg_add_vst3plugin(${target} ${again_sources}) function(smtg_add_vst3plugin target) set(oneValueArgs PACKAGE_NAME MODULEINFO_COMPATIBILITY) set(sourcesArgs SOURCES_LIST) cmake_parse_arguments(PARSE_ARGV 1 PARAMS "${options}" "${oneValueArgs}" "${sourcesArgs}") #message(STATUS "[SMTG] PARAMS_UNPARSED_ARGUMENTS is ${PARAMS_UNPARSED_ARGUMENTS}") #message(STATUS "[SMTG] PARAMS_PACKAGE_NAME is ${PARAMS_PACKAGE_NAME}") #message(STATUS "[SMTG] PARAMS_SOURCES is ${PARAMS_SOURCES_NAME}") #message(STATUS "[SMTG] PARAMS_MODULEINFO_COMPATIBILITY is ${PARAMS_MODULEINFO_COMPATIBILITY}") set(SOURCES "${PARAMS_SOURCES_LIST}") if(SOURCES STREQUAL "") set(SOURCES ${PARAMS_UNPARSED_ARGUMENTS}) endif() set(pkg_name "${PARAMS_PACKAGE_NAME}") if(pkg_name STREQUAL "") set(pkg_name ${target}) endif() #message(STATUS "[SMTG] target is ${target}.") #message(STATUS "[SMTG] pkg_name is ${pkg_name}.") #message(STATUS "[SMTG] SOURCES is ${SOURCES}.") if(DEFINED PARAMS_MODULEINFO_COMPATIBILITY) set(SMTG_MODULEINFO_COMPATIBILITY "${PARAMS_MODULEINFO_COMPATIBILITY}") smtg_add_vst3plugin_with_pkgname(${target} ${pkg_name} MODULEINFO_COMPATIBILITY "${SMTG_MODULEINFO_COMPATIBILITY}" SOURCES_LIST ${SOURCES}) else() smtg_add_vst3plugin_with_pkgname(${target} ${pkg_name} ${SOURCES}) endif() endfunction(smtg_add_vst3plugin) #------------------------------------------------------------------------ # Adds a VST3 target for iOS # # @param sign_identity which code signing identity to use # @param target The target to which a VST3 Plug-in will be added. function(smtg_add_ios_vst3plugin target sign_identity pkg_name) if(SMTG_MAC AND XCODE AND SMTG_ENABLE_IOS_TARGETS) add_library(${target} MODULE ${ARGN}) set_target_properties(${target} PROPERTIES XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "${SMTG_CODE_SIGN_IDENTITY_IOS}" XCODE_ATTRIBUTE_ENABLE_BITCODE "NO" SMTG_DISABLE_CREATE_RESOURCE_FOLDER 1 ) if(SMTG_IOS_DEVELOPMENT_TEAM) set_target_properties(${target} PROPERTIES XCODE_ATTRIBUTE_DEVELOPMENT_TEAM ${SMTG_IOS_DEVELOPMENT_TEAM} ) endif(SMTG_IOS_DEVELOPMENT_TEAM) smtg_target_make_plugin_package(${target} ${pkg_name} vst3) if(SMTG_ENABLE_TARGET_VARS_LOG) smtg_target_dump_plugin_package_variables(${target}) endif(SMTG_ENABLE_TARGET_VARS_LOG) smtg_target_set_platform_ios(${target}) get_target_property(PLUGIN_PACKAGE_PATH ${target} SMTG_PLUGIN_PACKAGE_PATH) add_custom_command( TARGET ${target} POST_BUILD COMMENT "[SMTG] Codesign" COMMAND codesign --force --verbose --sign "${sign_identity}" "${PLUGIN_PACKAGE_PATH}" ) endif(SMTG_MAC AND XCODE AND SMTG_ENABLE_IOS_TARGETS) endfunction(smtg_add_ios_vst3plugin) #------------------------------------------------------------------------ # Deprecated since 3.7.4 ----------------------------- function(smtg_run_vst_validator target) message(DEPRECATION "[SMTG] Use smtg_target_run_vst_validator instead of smtg_run_vst_validator") smtg_target_run_vst_validator (${target}) endfunction(smtg_run_vst_validator) # Deprecated since 3.7.4 ----------------------------- function(smtg_add_vst3_resource target input_file) message(DEPRECATION "[SMTG] Use smtg_target_add_plugin_resources instead of smtg_add_vst3_resource") smtg_target_add_plugin_resources (${target} RESOURCES ${input_file} ) endfunction(smtg_add_vst3_resource) # Deprecated since 3.7.4 ----------------------------- function(smtg_add_vst3_snapshot target snapshot) message(DEPRECATION "[SMTG] Use smtg_target_add_plugin_snapshots instead of smtg_add_vst3_snapshot") smtg_target_add_plugin_snapshots (${target} RESOURCES ${snapshot} ) endfunction(smtg_add_vst3_snapshot) vst3_cmake-3.8.0_build_66/modules/SMTG_AddVST3Options.cmake000066400000000000000000000003771507546454600233320ustar00rootroot00000000000000 #------------------------------------------------------------------------------- # Includes #------------------------------------------------------------------------------- include(SMTG_SetupVST3LibraryDefaultPath) include(SMTG_AddCommonOptions) vst3_cmake-3.8.0_build_66/modules/SMTG_Bundle.cmake000066400000000000000000000132241507546454600220120ustar00rootroot00000000000000 include(CMakeParseArguments) #[=======================================================================[.md: Configures the macOS bundle The usual usage is: ```cmake smtg_target_set_bundle(yourplugin BUNDLE_IDENTIFIER "com.yourcompany.vst3.yourplugin" COMPANY_NAME "yourplugin" ) ``` #]=======================================================================] function(smtg_target_set_bundle target) if(NOT SMTG_MAC) return() endif(NOT SMTG_MAC) set(options PREPROCESS ) set(oneValueArgs EXTENSION INFOPLIST INFOPLIST_IN BUNDLE_IDENTIFIER COMPANY_NAME ) set(multiValueArgs RESOURCES PREPROCESSOR_FLAGS ) cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) if(ARG_UNPARSED_ARGUMENTS) message(FATAL_ERROR "[SMTG] The following parameters are unrecognized: ${ARG_UNPARSED_ARGUMENTS}") endif(ARG_UNPARSED_ARGUMENTS) # Adding the bundle resources to the target sources creates a warning, see https://cmake.org/Bug/view.php?id=15272 target_sources(${target} PRIVATE ${ARG_RESOURCES} ) get_target_property(type ${target} TYPE) if(type STREQUAL MODULE_LIBRARY) set_target_properties(${target} PROPERTIES BUNDLE TRUE ) elseif(type STREQUAL EXECUTABLE) set_target_properties(${target} PROPERTIES MACOSX_BUNDLE TRUE ) endif() if(ARG_EXTENSION) if(XCODE) set_target_properties(${target} PROPERTIES XCODE_ATTRIBUTE_WRAPPER_EXTENSION ${ARG_EXTENSION} ) else() set_target_properties(${target} PROPERTIES BUNDLE_EXTENSION ${ARG_EXTENSION} ) endif(XCODE) endif(ARG_EXTENSION) if(ARG_RESOURCES) set_source_files_properties(${ARG_RESOURCES} PROPERTIES MACOSX_PACKAGE_LOCATION Resources ) endif(ARG_RESOURCES) if(ARG_INFOPLIST AND XCODE) set_target_properties(${target} PROPERTIES XCODE_ATTRIBUTE_INFOPLIST_FILE "${ARG_INFOPLIST}" ) if(ARG_PREPROCESS) set_target_properties(${target} PROPERTIES XCODE_ATTRIBUTE_INFOPLIST_PREPROCESS "YES" ) endif(ARG_PREPROCESS) if(ARG_PREPROCESSOR_FLAGS) set_target_properties(${target} PROPERTIES XCODE_ATTRIBUTE_INFOPLIST_OTHER_PREPROCESSOR_FLAGS "${ARG_PREPROCESSOR_FLAGS}" ) endif(ARG_PREPROCESSOR_FLAGS) elseif(XCODE) # Build Copyright string: string(TIMESTAMP BUNDLE_INFO_STRING_YEAR "%Y") set(BUNDLE_COPYRIGHT "© ${BUNDLE_INFO_STRING_YEAR} ${ARG_COMPANY_NAME}.") # Check for custom info.plist template: if(ARG_INFOPLIST_IN) # dest Info.plist.in template file in cmake format # see: https://duckduckgo.com/?q=MACOSX_BUNDLE_INFO_PLIST set(SMTG_BUNDLE_INFO_PLIST "${PROJECT_BINARY_DIR}/smtg_mac/Info.plist.in") # Configure SMTG_BUNDLE_INFO_PLIST to cmake MACOSX_BUNDLE_INFO_PLIST template # Use @VAR@ for variables not defined in MACOSX_BUNDLE_INFO_PLIST configure_file("${ARG_INFOPLIST_IN}" "${SMTG_BUNDLE_INFO_PLIST}" @ONLY) set_target_properties(${smtg_target} PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${SMTG_BUNDLE_INFO_PLIST} ) endif() set_target_properties(${target} PROPERTIES MACOSX_BUNDLE_GUI_IDENTIFIER ${ARG_BUNDLE_IDENTIFIER} MACOSX_BUNDLE_COPYRIGHT ${BUNDLE_COPYRIGHT} MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION} MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION} MACOSX_BUNDLE_LONG_VERSION_STRING ${PROJECT_VERSION} MACOSX_BUNDLE_INFO_STRING ${PROJECT_VERSION} ) endif() if(ARG_BUNDLE_IDENTIFIER) if(XCODE) set_target_properties(${target} PROPERTIES XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "${ARG_BUNDLE_IDENTIFIER}" ) endif(XCODE) endif(ARG_BUNDLE_IDENTIFIER) endfunction() #[=======================================================================[.md: Creates the file projectversion.h and adds the directory as an include directory. #]=======================================================================] function(smtg_target_configure_version_file target) set(SMTG_PROJECT_VERSION "") if(NOT "${PROJECT_VERSION_MAJOR}" STREQUAL "") string(APPEND SMTG_PROJECT_VERSION "${PROJECT_VERSION_MAJOR}") endif() if(NOT "${PROJECT_VERSION_MINOR}" STREQUAL "") string(APPEND SMTG_PROJECT_VERSION ".${PROJECT_VERSION_MINOR}") endif() if(NOT "${PROJECT_VERSION_PATCH}" STREQUAL "") string(APPEND SMTG_PROJECT_VERSION ".${PROJECT_VERSION_PATCH}") endif() configure_file(${CMAKE_CURRENT_FUNCTION_LIST_DIR}/../templates/projectversion.h.in projectversion.h) target_include_directories(${target} PUBLIC "${PROJECT_BINARY_DIR}" ) endfunction() #[=======================================================================[.md: Deprecated since 3.7.4 #]=======================================================================] function(smtg_set_bundle target) message(DEPRECATION "[SMTG] Use smtg_target_set_bundle instead of smtg_set_bundle") smtg_target_set_bundle (${target}) endfunction() vst3_cmake-3.8.0_build_66/modules/SMTG_CodeSign.cmake000066400000000000000000000074251507546454600223020ustar00rootroot00000000000000 if(XCODE) option(SMTG_DISABLE_CODE_SIGNING "Disable All Code Signing" OFF) set(SMTG_XCODE_OTHER_CODE_SIGNING_FLAGS "--timestamp" CACHE STRING "Other code signing flags [Xcode]") option(SMTG_XCODE_MANUAL_CODE_SIGN_STYLE "Manual Xcode sign style" OFF) endif() #------------------------------------------------------------------------ function(smtg_target_codesign target) if(XCODE AND (NOT SMTG_DISABLE_CODE_SIGNING)) if(ARGC GREATER 2) set(team "${ARGV1}") set(identity "${ARGV2}") message(STATUS "[SMTG] Codesign ${target} with team '${team}' and identity '${identity}'") set(SMTG_CODESIGN_ATTRIBUTES XCODE_ATTRIBUTE_DEVELOPMENT_TEAM "${team}" XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "${identity}" ) else() message(STATUS "[SMTG] Codesign ${target} for local machine only") set(SMTG_CODESIGN_ATTRIBUTES XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "-" ) endif(ARGC GREATER 2) if(SMTG_XCODE_OTHER_CODE_SIGNING_FLAGS) set(SMTG_CODESIGN_ATTRIBUTES ${SMTG_CODESIGN_ATTRIBUTES} XCODE_ATTRIBUTE_OTHER_CODE_SIGN_FLAGS "${SMTG_XCODE_OTHER_CODE_SIGNING_FLAGS}" ) endif() message(DEBUG "[SMTG] Code Sign Attributes: ${SMTG_CODESIGN_ATTRIBUTES}") set_target_properties(${target} PROPERTIES ${SMTG_CODESIGN_ATTRIBUTES} ) if(SMTG_XCODE_MANUAL_CODE_SIGN_STYLE) set_target_properties(${target} PROPERTIES XCODE_ATTRIBUTE_CODE_SIGN_STYLE "Manual" ) endif(SMTG_XCODE_MANUAL_CODE_SIGN_STYLE) if(SMTG_MAC AND (XCODE_VERSION VERSION_GREATER_EQUAL 12)) # make sure that the executable is signed before cmake post build commands are run as the # Xcode code-sign step is run after the post build commands are run which would prevent # using the target output on system where everything needs to be code-signed. target_link_options(${target} PRIVATE LINKER:-adhoc_codesign ) endif() endif(XCODE AND (NOT SMTG_DISABLE_CODE_SIGNING)) endfunction(smtg_target_codesign) #------------------------------------------------------------------------ function(smtg_target_add_custom_codesign_post_build_step) if(XCODE AND (NOT SMTG_DISABLE_CODE_SIGNING)) set(mono_args PATH TARGET IDENTITY) cmake_parse_arguments(PARSE_ARGV 0 PARSED_ARGS # Prefix of output variables e.g. PARSED_ARGS_RESOURCES "" # List of names for boolean arguments "${mono_args}" # List of names for mono-valued arguments "FLAGS" # List of names for multi-valued arguments resp. lists ) if(NOT PARSED_ARGS_TARGET) message(FATAL_ERROR "Need TARGET argument") endif() if(NOT PARSED_ARGS_PATH) message(FATAL_ERROR "Need PATH argument") endif() if(PARSED_ARGS_IDENTITY) set(identity "${PARSED_ARGS_IDENTITY}") else() set(identity "-") endif() add_custom_command(TARGET ${PARSED_ARGS_TARGET} POST_BUILD COMMAND /usr/bin/codesign -v -s "${identity}" --force ${PARSED_ARGS_FLAGS} "${PARSED_ARGS_PATH}" ) endif() endfunction(smtg_target_add_custom_codesign_post_build_step) #------------------------------------------------------------------------ # Deprecated since 3.7.4 ----------------------------- function(smtg_codesign_target target) message(DEPRECATION "[SMTG] Use smtg_target_codesign instead of smtg_codesign_target") smtg_target_codesign (${target}) endfunction(smtg_codesign_target) vst3_cmake-3.8.0_build_66/modules/SMTG_ConfigureCmakeGenerator.cmake000066400000000000000000000045411507546454600253340ustar00rootroot00000000000000 #------------------------------------------------------------------------ # Specify Output directories # # XCode is creating the "Debug/Release" folder on its own and does not need to be added. macro(smtg_specify_output_directories) if(SMTG_WIN OR (SMTG_MAC AND CMAKE_GENERATOR STREQUAL Xcode)) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib") set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") else () set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib/${CMAKE_BUILD_TYPE}") set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib/${CMAKE_BUILD_TYPE}") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/${CMAKE_BUILD_TYPE}") endif(SMTG_WIN OR (SMTG_MAC AND CMAKE_GENERATOR STREQUAL Xcode)) endmacro(smtg_specify_output_directories) #------------------------------------------------------------------------ # Specify build types # # Specifies what build types (configurations) will be available. macro(smtg_specify_build_types) set(CMAKE_CONFIGURATION_TYPES "Debug;Release") # This variable is only meaningful to single-configuration generators (such as make and Ninja). set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Build type") endmacro(smtg_specify_build_types) #------------------------------------------------------------------------ # Group predefined cmake projects # # Put predefined targets like "ALL_BUILD" and "ZERO_CHECK" into a separate folder within the IDE. macro(smtg_group_predefined_cmake_projects) set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER Predefined) set_property(GLOBAL PROPERTY USE_FOLDERS ON) endmacro(smtg_group_predefined_cmake_projects) #------------------------------------------------------------------------ # Configure CMake generator macro(smtg_configure_cmake_generator) smtg_specify_output_directories() smtg_specify_build_types() smtg_group_predefined_cmake_projects() # Generates a compile_commands.json file containing the exact compiler calls. # (This option is implemented only by Makefile Generators and the Ninja. It # is ignored on other generators.) set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE STRING "Generate compile commands" FORCE) endmacro(smtg_configure_cmake_generator) vst3_cmake-3.8.0_build_66/modules/SMTG_CoreAudioSupport.cmake000066400000000000000000000100731507546454600240470ustar00rootroot00000000000000 #------------------------------------------------------------------------ function(smtg_private_setup_audiounit_sdk) if("${SMTG_AUDIOUNIT_SDK_PATH}" STREQUAL "") # Check if the AudioUnit SDK is next to the vst3sdk folder: set(AUDIOUNIT_SDK_PATH ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/../../../AudioUnitSDK) if(NOT EXISTS "${AUDIOUNIT_SDK_PATH}/AudioUnitSDK.xcodeproj") # Check if the AudioUnit SDK is in the vst3sdk folder: set(AUDIOUNIT_SDK_PATH ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/../../external.apple.audiounitsdk) if(NOT EXISTS "${AUDIOUNIT_SDK_PATH}/AudioUnitSDK.xcodeproj") set(AUDIOUNIT_SDK_PATH "") endif() endif() if(NOT "${AUDIOUNIT_SDK_PATH}" STREQUAL "") get_filename_component(AUDIOUNIT_SDK_PATH "${AUDIOUNIT_SDK_PATH}" ABSOLUTE) endif() set(SMTG_AUDIOUNIT_SDK_PATH "${AUDIOUNIT_SDK_PATH}" CACHE PATH "Path to the AudioUnit SDK" FORCE) elseif(NOT "${SMTG_AUDIOUNIT_SDK_PATH}" STREQUAL "") set(AUDIOUNIT_SDK_PATH "${SMTG_AUDIOUNIT_SDK_PATH}") if(NOT IS_ABSOLUTE ${AUDIOUNIT_SDK_PATH}) get_filename_component(AUDIOUNIT_SDK_PATH "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/../../${AUDIOUNIT_SDK_PATH}" ABSOLUTE) endif() if(NOT EXISTS "${AUDIOUNIT_SDK_PATH}/AudioUnitSDK.xcodeproj") message(FATAL_ERROR "[SMTG] SMTG_AUDIOUNIT_SDK_PATH is set but does not point to an expected location!") else() set(SMTG_AUDIOUNIT_SDK_PATH "${AUDIOUNIT_SDK_PATH}" CACHE PATH "Path to the AudioUnit SDK" FORCE) endif() endif() if(EXISTS "${SMTG_AUDIOUNIT_SDK_PATH}") message(STATUS "[SMTG] SMTG_AUDIOUNIT_SDK_PATH is set to: " ${SMTG_AUDIOUNIT_SDK_PATH}) option(SMTG_ENABLE_AUV2_BUILDS "Enable AUv2 Builds" ON) endif() endfunction(smtg_private_setup_audiounit_sdk) #------------------------------------------------------------------------ function(smtg_private_setup_coreaudio_sdk) if("${SMTG_COREAUDIO_SDK_PATH}" STREQUAL "") # Check if the CoreAudio SDK is next to the vst3sdk folder: set(COREAUDIO_SDK_PATH ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/../../../CoreAudio) if(NOT EXISTS "${COREAUDIO_SDK_PATH}/AudioUnits/AUPublic/AUBase/AUBase.cpp") # Check if the CoreAudio SDK is in the vst3sdk folder: set(COREAUDIO_SDK_PATH ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/../../external.apple.coreaudio) if(NOT EXISTS "${COREAUDIO_SDK_PATH}/AudioUnits/AUPublic/AUBase/AUBase.cpp") set(COREAUDIO_SDK_PATH "") endif() endif() if(NOT "${COREAUDIO_SDK_PATH}" STREQUAL "") get_filename_component(COREAUDIO_SDK_PATH "${COREAUDIO_SDK_PATH}" ABSOLUTE) endif() set(SMTG_COREAUDIO_SDK_PATH "${COREAUDIO_SDK_PATH}" CACHE PATH "Here you can define where to find the COREAUDIO SDK" FORCE) else() set(COREAUDIO_SDK_PATH "${SMTG_COREAUDIO_SDK_PATH}") if(NOT IS_ABSOLUTE ${COREAUDIO_SDK_PATH}) get_filename_component(COREAUDIO_SDK_PATH "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/../../${COREAUDIO_SDK_PATH}" ABSOLUTE) endif() if(NOT EXISTS "${COREAUDIO_SDK_PATH}/AudioUnits/AUPublic/AUBase/AUBase.cpp") message(FATAL_ERROR "[SMTG] SMTG_COREAUDIO_SDK_PATH is set but does not point to an expected location!") else() set(SMTG_COREAUDIO_SDK_PATH "${COREAUDIO_SDK_PATH}" CACHE PATH "Here you can define where to find the COREAUDIO SDK" FORCE) endif() endif() if(EXISTS "${SMTG_COREAUDIO_SDK_PATH}") message(STATUS "[SMTG] SMTG_COREAUDIO_SDK_PATH is set to: " ${SMTG_COREAUDIO_SDK_PATH}) option(SMTG_ENABLE_AUV2_BUILDS "Enable AUv2 Builds" ON) endif() endfunction(smtg_private_setup_coreaudio_sdk) #------------------------------------------------------------------------ function(setupCoreAudioSupport) if(SMTG_MAC AND XCODE) set(SMTG_IOS_DEVELOPMENT_TEAM "" CACHE STRING "Needed for building the InterAppAudio and AUv3 examples for iOS") smtg_private_setup_audiounit_sdk() if(NOT SMTG_ENABLE_AUV2_BUILDS) smtg_private_setup_coreaudio_sdk() endif() if("${SMTG_AUDIOUNIT_SDK_PATH}" STREQUAL "" AND "${SMTG_COREAUDIO_SDK_PATH}" STREQUAL "") message(STATUS "[SMTG] Neither SMTG_AUDIOUNIT_SDK_PATH nor SMTG_COREAUDIO_SDK_PATH is set. This is needed to build AudioUnit Version 2 plug-ins.") endif() endif() endfunction(setupCoreAudioSupport) vst3_cmake-3.8.0_build_66/modules/SMTG_CustomModuleTarget.cmake000066400000000000000000000044161507546454600243730ustar00rootroot00000000000000 # Custom target in order to get all cmake modules into a VST3 project. add_custom_target(cmake_modules SOURCES ${CMAKE_CURRENT_LIST_FILE} ${CMAKE_CURRENT_LIST_DIR}/SMTG_AddCommonOptions.cmake ${CMAKE_CURRENT_LIST_DIR}/SMTG_AddSMTGLibrary.cmake ${CMAKE_CURRENT_LIST_DIR}/SMTG_AddSubDirectories.cmake ${CMAKE_CURRENT_LIST_DIR}/SMTG_Bundle.cmake ${CMAKE_CURRENT_LIST_DIR}/SMTG_CodeSign.cmake ${CMAKE_CURRENT_LIST_DIR}/SMTG_ConfigureCmakeGenerator.cmake ${CMAKE_CURRENT_LIST_DIR}/SMTG_DetectPlatform.cmake ${CMAKE_CURRENT_LIST_DIR}/SMTG_ExportedSymbols.cmake ${CMAKE_CURRENT_LIST_DIR}/SMTG_GenerateSourceGroups.cmake ${CMAKE_CURRENT_LIST_DIR}/SMTG_Global.cmake ${CMAKE_CURRENT_LIST_DIR}/SMTG_PlatformIOS.cmake ${CMAKE_CURRENT_LIST_DIR}/SMTG_PlatformToolset.cmake ${CMAKE_CURRENT_LIST_DIR}/SMTG_Platform_Windows.cmake ${CMAKE_CURRENT_LIST_DIR}/SMTG_PrefixHeader.cmake ${CMAKE_CURRENT_LIST_DIR}/SMTG_SetDebugExecutable.cmake ${CMAKE_CURRENT_LIST_DIR}/SMTG_UniversalBinary.cmake ) if(VST_SDK) add_custom_target(cmake_VST_modules SOURCES ${CMAKE_CURRENT_LIST_DIR}/SMTG_AAXSupport.cmake ${CMAKE_CURRENT_LIST_DIR}/SMTG_AddAAXLibrary.cmake ${CMAKE_CURRENT_LIST_DIR}/SMTG_AddVST3AuV3.cmake ${CMAKE_CURRENT_LIST_DIR}/SMTG_AddVST3Library.cmake ${CMAKE_CURRENT_LIST_DIR}/SMTG_AddVST3Options.cmake ${CMAKE_CURRENT_LIST_DIR}/SMTG_CoreAudioSupport.cmake ${CMAKE_CURRENT_LIST_DIR}/SMTG_ExportedSymbols.cmake ${CMAKE_CURRENT_LIST_DIR}/SMTG_FindJack.cmake ${CMAKE_CURRENT_LIST_DIR}/SMTG_SetupVST3LibraryDefaultPath.cmake ${CMAKE_CURRENT_LIST_DIR}/SMTG_VST3_SDK.cmake ${CMAKE_CURRENT_LIST_DIR}/SMTG_VstGuiSupport.cmake ) endif(VST_SDK) if(SKI_SDK) add_custom_target(cmake_SKI_modules SOURCES ${CMAKE_CURRENT_LIST_DIR}/SMTG_AddComponentLibrary.cmake ${CMAKE_CURRENT_LIST_DIR}/SMTG_AddComponentOptions.cmake ${CMAKE_CURRENT_LIST_DIR}/SMTG_SKI_SDK.cmake ${CMAKE_CURRENT_LIST_DIR}/SMTG_SetupComponentLibraryDefaultPath.cmake ) endif(SKI_SDK) vst3_cmake-3.8.0_build_66/modules/SMTG_DetectPlatform.cmake000066400000000000000000000052711507546454600235210ustar00rootroot00000000000000 # Detect the platform which cmake builds for. # # Needed for check_language(CXX) include(CheckLanguage) # The detected platform var is stored within the internal cache of cmake in order to make it # available globally. set(SMTG_PLATFORM_DETECTION_COMMENT "The platform which was detected by SMTG") #------------------------------------------------------------------------ # Detect the Platform # macro(smtg_detect_platform) if(APPLE) set(SMTG_MAC TRUE CACHE INTERNAL ${SMTG_PLATFORM_DETECTION_COMMENT}) elseif(UNIX OR ANDROID_PLATFORM) set(SMTG_LINUX TRUE CACHE INTERNAL ${SMTG_PLATFORM_DETECTION_COMMENT}) elseif(WIN32) set(SMTG_WIN TRUE CACHE INTERNAL ${SMTG_PLATFORM_DETECTION_COMMENT}) endif(APPLE) endmacro(smtg_detect_platform) #------------------------------------------------------------------------ # Check if c++ compiler is available # Handling cmake issue: https://gitlab.kitware.com/cmake/cmake/-/issues/20890 function(smtg_check_language_cxx) message(STATUS "[SMTG] Check C++ compiler") check_language(CXX) if(NOT CMAKE_CXX_COMPILER) if(SMTG_MAC) execute_process(COMMAND xcode-select -p OUTPUT_VARIABLE _xcode ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) cmake_path(SET _xcode NORMALIZE "${_xcode}/../..") string(FIND "${_xcode}" " " _pos) if(_pos GREATER "-1") message(FATAL_ERROR "[SMTG] Spaces in Xcode path are not supported by cmake: \"${_xcode}\"" ) endif() endif() endif() endfunction() #------------------------------------------------------------------------ # Detect the default Xcode Version # macro(smtg_detect_xcode_version) if(SMTG_MAC) # Check if CXX compiler is available smtg_check_language_cxx() if(NOT DEFINED ENV{XCODE_VERSION}) # find out Xcode version if not set by cmake execute_process(COMMAND xcodebuild -version OUTPUT_VARIABLE XCODE_VERSION ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) string(REGEX MATCH "Xcode [0-9\\.]+" XCODE_VERSION "${XCODE_VERSION}") string(REGEX REPLACE "Xcode ([0-9\\.]+)" "\\1" XCODE_VERSION "${XCODE_VERSION}") endif() if(XCODE_VERSION VERSION_LESS "9") message(FATAL_ERROR "[SMTG] XCode 9 or newer is required") endif() message(STATUS "[SMTG] Building with Xcode version: ${XCODE_VERSION}") if(NOT DEFINED ENV{SDKROOT}) execute_process(COMMAND xcrun --sdk macosx --show-sdk-path OUTPUT_VARIABLE CMAKE_OSX_SYSROOT OUTPUT_STRIP_TRAILING_WHITESPACE) endif() endif(SMTG_MAC) endmacro(smtg_detect_xcode_version) vst3_cmake-3.8.0_build_66/modules/SMTG_ExportedSymbols.cmake000066400000000000000000000030051507546454600237400ustar00rootroot00000000000000 #------------------------------------------------------------------------ # Setup symbol visibility # # Puts symbol visibility to default hidden. macro(smtg_setup_symbol_visibility) set(CMAKE_C_VISIBILITY_PRESET hidden) set(CMAKE_CXX_VISIBILITY_PRESET hidden) set(CMAKE_VISIBILITY_INLINES_HIDDEN 1) endmacro(smtg_setup_symbol_visibility) #------------------------------------------------------------------------ # Set exported symbols # # Specifies the exported symbols by file. function(smtg_target_set_exported_symbols target exported_symbols_file) if(MSVC) set_target_properties(${target} PROPERTIES LINK_FLAGS "/DEF:\"${exported_symbols_file}\"" ) elseif(XCODE) set_target_properties(${target} PROPERTIES XCODE_ATTRIBUTE_EXPORTED_SYMBOLS_FILE "${exported_symbols_file}" ) elseif(NOT MINGW) set_target_properties(${target} PROPERTIES LINK_FLAGS "-exported_symbols_list \"${exported_symbols_file}\"" ) endif(MSVC) endfunction(smtg_target_set_exported_symbols) #------------------------------------------------------------------------ # Deprecated since 3.7.4 ----------------------------- function(smtg_set_exported_symbols target exported_symbols_file) message(DEPRECATION "[SMTG] Use smtg_target_set_exported_symbols instead of smtg_set_exported_symbols") smtg_target_set_exported_symbols (${target} ${exported_symbols_file}) endfunction(smtg_set_exported_symbols) vst3_cmake-3.8.0_build_66/modules/SMTG_FindJack.cmake000066400000000000000000000033731507546454600222560ustar00rootroot00000000000000 # - Try to find Jack Audio Libraries # libjack; libjackserver; # Once done this will define # LIBJACK_FOUND - System has libjack.so # LIBJACK_INCLUDE_DIRS - The jack.h include directories # LIBJACK_LIBRARIES - The libraries needed to use jack # Install jack on Ubuntu: apt-get install libjack-jackd2-dev # Add user to audio group: usermod -a -G audio # Install jack on Windows: winget install Jackaudio.JACK2 # Install jack on macOS: brew install jack #------------------------------------------------------------------------ # Uncomment to see all locations/paths which are searched # set(CMAKE_FIND_DEBUG_MODE TRUE) if(NOT PROJECT_NAME) message(FATAL_ERROR "[SMTG] Only include SMTG_FindJack AFTER the root \"project(...)\" call is done!") endif() find_path(LIBJACK_INCLUDE_DIR NAMES jack/jack.h PATH_SUFFIXES JACK2/include ) find_library(LIBJACK_libjack_LIBRARY NAMES libjack64 libjack jack PATH_SUFFIXES JACK2/lib ) find_library(LIBJACK_libjackserver_LIBRARY NAMES libjackserver64 libjackserver jackserver PATH_SUFFIXES JACK2/lib ) # For debugging # message(STATUS "LIBJACK_libjackserver_LIBRARY ${LIBJACK_libjackserver_LIBRARY}") # message(STATUS "LIBJACK_libjack_LIBRARY ${LIBJACK_libjack_LIBRARY}") # message(STATUS "LIBJACK_INCLUDE_DIR ${LIBJACK_INCLUDE_DIR}") set(LIBJACK_LIBRARIES ${LIBJACK_libjack_LIBRARY} ${LIBJACK_libjackserver_LIBRARY}) set(LIBJACK_LIBRARY ${LIBJACK_LIBRARIES}) include(FindPackageHandleStandardArgs) # handle the QUIETLY and REQUIRED arguments and set LIBJACK_FOUND to TRUE # if all listed variables are TRUE find_package_handle_standard_args(LIBJACK DEFAULT_MSG LIBJACK_LIBRARIES LIBJACK_INCLUDE_DIR) vst3_cmake-3.8.0_build_66/modules/SMTG_GenerateSourceGroups.cmake000066400000000000000000000023461507546454600247170ustar00rootroot00000000000000 #------------------------------------------------------------------------ # Generate Source Groups #------------------------------------------------------------------------ #------------------------------------------------------------------------ function(smtg_generate_source_groups root) foreach(source ${ARGN}) set(path ${source}) string(REGEX REPLACE "${root}/" "" path "${path}") string(REGEX REPLACE "[\\\\/][^\\\\/]*$" "" path "${path}") string(REGEX REPLACE "^[\\\\/]" "" path "${path}") string(REGEX REPLACE "\\.\\.[\\\\/]" "" path "${path}") string(REGEX REPLACE "/" "\\\\\\\\" path "${path}") source_group(${path} FILES ${source}) endforeach() endfunction(smtg_generate_source_groups) #------------------------------------------------------------------------ function(smtg_target_generate_source_groups target) get_target_property(_source_list ${target} SOURCES) foreach(_source IN ITEMS ${_source_list}) get_filename_component(_source_path "${_source}" PATH) string(REPLACE "/" "\\" _source_path_msvc "${_source_path}") source_group("${_source_path_msvc}" FILES "${_source}") endforeach() endfunction(smtg_target_generate_source_groups) vst3_cmake-3.8.0_build_66/modules/SMTG_Global.cmake000066400000000000000000000032361507546454600220030ustar00rootroot00000000000000 #------------------------------------------------------------------------ # Includes #------------------------------------------------------------------------ include(SMTG_DetectPlatform) include(SMTG_ConfigureCmakeGenerator) include(SMTG_ExportedSymbols) # Check for in-source build directory. # # In order not to pollute the source directory, using a separate build directory is mandatory. if(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR OR EXISTS "${CMAKE_BINARY_DIR}/CMakeLists.txt") message(SEND_ERROR "[SMTG] In-source builds are not allowed. Please create a separate build directory and run 'cmake /path/to/folder [options]' there.") message(FATAL_ERROR "[SMTG] You can remove the file \"CMakeCache.txt\" and directory \"CMakeFiles\" in ${CMAKE_SOURCE_DIR}.") endif() #------------------------------------------------------------------------ # Global setup functions/macros # # Call macros/functions which setup the SDK's basics. smtg_detect_platform() smtg_configure_cmake_generator() smtg_detect_xcode_version() #------------------------------------------------------------------------ # Enable VST3 SDK # # This macro should be called from a 3rd party's plug-in CMakeLists.txt file. macro(smtg_enable_vst3_sdk) smtg_configure_cmake_generator() smtg_setup_platform_toolset() smtg_setup_symbol_visibility() # Needs to bet set for 'smtg_add_library_main' function. if(DEFINED vst3sdk_SOURCE_DIR) set(public_sdk_SOURCE_DIR ${vst3sdk_SOURCE_DIR}/public.sdk) else () get_target_property(public_sdk_SOURCE_DIR sdk SOURCE_DIR) set(public_sdk_SOURCE_DIR ${public_sdk_SOURCE_DIR}/public.sdk) endif() endmacro(smtg_enable_vst3_sdk) vst3_cmake-3.8.0_build_66/modules/SMTG_PlatformIOS.cmake000066400000000000000000000031061507546454600227360ustar00rootroot00000000000000 #------------------------------------------------------------------------ # Platform #------------------------------------------------------------------------ #------------------------------------------------------------------------ function(smtg_target_set_platform_ios target) if(NOT SMTG_MAC) message(FATAL_ERROR "[SMTG] smtg_target_set_platform_ios only works on macOS, use it in an if(SMTG_MAC) block") endif(NOT SMTG_MAC) set_target_properties(${target} PROPERTIES XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "12.0" XCODE_ATTRIBUTE_SDKROOT "iphoneos" XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "1,2" XCODE_ATTRIBUTE_SUPPORTS_MACCATALYST "NO" ) endfunction(smtg_target_set_platform_ios) #------------------------------------------------------------------------ # Deprecated since 3.7.4 ----------------------------- function(smtg_set_platform_ios target) message(DEPRECATION "[SMTG] Use smtg_target_set_platform_ios instead of smtg_set_platform_ios") smtg_target_set_platform_ios (${target}) endfunction(smtg_set_platform_ios) #------------------------------------------------------------------------ function(smtg_create_ios_target_from_target target) set(ios_target ${target}_ios) get_target_property(SOURCES_OF_TARGET ${target} SOURCES) add_library(${ios_target} STATIC ${SOURCES_OF_TARGET} ) smtg_target_set_platform_ios(${ios_target}) target_compile_features(${ios_target} PUBLIC cxx_std_17 ) endfunction() vst3_cmake-3.8.0_build_66/modules/SMTG_PlatformToolset.cmake000066400000000000000000000153711507546454600237440ustar00rootroot00000000000000 if(SMTG_WIN) option(SMTG_USE_STATIC_CRT "use static CRuntime on Windows (option /MT)" OFF) endif(SMTG_WIN) #------------------------------------------------------------------------ # setup the platform toolset (compiler options) macro(smtg_setup_platform_toolset) # deprecated if(SMTG_RENAME_ASSERT) add_compile_options(-DSMTG_RENAME_ASSERT=1) endif() # Add colors to clang output when using Ninja # See: https://github.com/ninja-build/ninja/wiki/FAQ if(UNIX AND CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND CMAKE_GENERATOR STREQUAL "Ninja") add_compile_options(-fcolor-diagnostics) endif() #------------ option(SMTG_ENABLE_ADDRESS_SANITIZER "Enable Address Sanitizer" OFF) if(SMTG_LINUX) if(SMTG_ENABLE_ADDRESS_SANITIZER) set(CMAKE_CONFIGURATION_TYPES "${CMAKE_CONFIGURATION_TYPES};ASan") add_compile_options($<$:-DDEVELOPMENT=1>) add_compile_options($<$:-fsanitize=address>) add_compile_options($<$:-DVSTGUI_LIVE_EDITING=1>) add_compile_options($<$:-g>) add_compile_options($<$:-O0>) set(ASAN_LIBRARY asan) link_libraries($<$:${ASAN_LIBRARY}>) endif() set(common_linker_flags "-Wl,--no-undefined") set(CMAKE_MODULE_LINKER_FLAGS "${common_linker_flags}" CACHE STRING "Module Library Linker Flags") set(CMAKE_SHARED_LINKER_FLAGS "${common_linker_flags}" CACHE STRING "Shared Library Linker Flags") endif(SMTG_LINUX) #------------ if(UNIX) if(XCODE) set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++") add_compile_options(-Winconsistent-missing-override) # Suggest override when missing add_compile_options(-Werror=return-type) add_compile_options(-ffast-math -ffp-contract=fast) if(SMTG_ENABLE_ADDRESS_SANITIZER) set(CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER ON) set(CMAKE_XCODE_GENERATE_SCHEME ON) endif(SMTG_ENABLE_ADDRESS_SANITIZER) else() set(CMAKE_POSITION_INDEPENDENT_CODE TRUE) if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") add_compile_options(-Wsuggest-override) # Suggest override when missing endif() if(SMTG_MAC) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++") else() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-multichar") if(ANDROID) set(CMAKE_ANDROID_STL_TYPE c++_static) link_libraries(dl) else() link_libraries(stdc++fs pthread dl) endif(ANDROID) endif(SMTG_MAC) endif(XCODE) #------------ elseif(SMTG_WIN) if(MINGW) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-multichar") set(common_linker_flags "-Wl,--no-undefined") set(CMAKE_MODULE_LINKER_FLAGS "${common_linker_flags}" CACHE STRING "Module Library Linker Flags") set(CMAKE_SHARED_LINKER_FLAGS "${common_linker_flags}" CACHE STRING "Shared Library Linker Flags") else() add_definitions(-D_UNICODE) add_definitions(-D_CRT_SECURE_NO_WARNINGS) # Eliminate deprecation warnings for less secure functions (strcpy...) add_compile_options(/W3) # Baseline reasonable warnings add_compile_options(/Zc:__cplusplus) # __cplusplus should denote the c++ standard add_compile_options(/fp:fast) # Floating Point Model add_compile_options($<$:/Oi>) # Enable Intrinsic Functions (Yes) add_compile_options($<$:/Ot>) # Favor Size Or Speed (Favor fast code) add_compile_options($<$:/GF>) # Enable String Pooling add_compile_options($<$:/EHa>) # Enable C++ Exceptions add_compile_options($<$:/Oy>) # Omit Frame Pointers #add_compile_options($<$:/Ox>) # Optimization (/O2: Maximise Speed /0x: Full Optimization) add_compile_options(/MP) # Multi-processor Compilation add_compile_options(/wd6031) # Return value ignored add_compile_options(/wd6308) # Realloc may return null pointer add_compile_options(/wd6330) # Incorrect type passed as parameter in call to function add_compile_options(/wd6385) # Invalid data add_compile_options(/wd6386) # Buffer overrun add_compile_options(/wd28125) # The function must be called from within a try/except block add_compile_options(/wd28251) # Inconsistent annotation for function #add_definitions("/analyze") # Enable Code Analyze set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /SAFESEH:NO") set(CMAKE_MODULE_LINKER_FLAGS_DEBUG "${CMAKE_MODULE_LINKER_FLAGS_DEBUG} /SAFESEH:NO") if(DEFINED CMAKE_GENERATOR_PLATFORM AND CMAKE_GENERATOR_PLATFORM) string(TOLOWER ${CMAKE_GENERATOR_PLATFORM} GENERATOR_PLATFORM) endif() if(${GENERATOR_PLATFORM} MATCHES "arm*") add_compile_options($<$:/Zi>) # Program Database add_compile_options($<$:/EHsc>) # Enable C++ Exceptions add_compile_options(/wd4103) # Alignment changed after including header else() if(SMTG_ENABLE_ADDRESS_SANITIZER) add_compile_options($<$:/fsanitize=address>) # Enable Address Sanitizer add_link_options($<$:/INCREMENTAL:NO>) # Enable Incremental Linking else() add_compile_options($<$:/ZI>) # Program Database for Edit And Continue endif() endif() if(SMTG_USE_STATIC_CRT) add_compile_options($<$:/MTd>) # Runtime Library: /MTd = MultiThreaded Debug Runtime add_compile_options($<$:/MT>) # Runtime Library: /MT = MultiThreaded Runtime else() add_compile_options($<$:/MDd>) # Runtime Library: /MDd = MultiThreadedDLL Debug Runtime add_compile_options($<$:/MD>) # Runtime Library: /MD = MultiThreadedDLL Runtime endif(SMTG_USE_STATIC_CRT) endif(MINGW) endif(UNIX) endmacro(smtg_setup_platform_toolset) vst3_cmake-3.8.0_build_66/modules/SMTG_Platform_Windows.cmake000066400000000000000000000024551507546454600241030ustar00rootroot00000000000000 #------------------------------------------------------------------------ # Create a given Directory with Admin permission on Windows function(smtg_create_directory_as_admin_win directory_name) if(NOT SMTG_WIN) message(FATAL_ERROR "[SMTG] smtg_create_directory_as_admin only works on Windows, use it in an if(SMTG_WIN) block") endif() if(EXISTS ${directory_name}) return() endif() set(TMPDIR "$ENV{TEMP}") if(NOT EXISTS ${TMPDIR}) set(TMPDIR "$ENV{TMPDIR}") endif() message(STATUS "[SMTG] TMPDIR is set to: " ${TMPDIR}) if(NOT EXISTS ${TMPDIR}) message(FATAL_ERROR "[SMTG] smtg_create_directory_as_admin does find TEMP Folder!") endif() # create the bat creating the Directory set(TMPFILE ${TMPDIR}\\smtg_mkdir_windows_as_admin.bat) file(WRITE ${TMPFILE} "md \"${directory_name}\"") execute_process( COMMAND msg * /time:60 /w VST 3 SDK: In order to create the subDirectory:\n\"${directory_name}\"\nyou will need to provide Administrator permission! ) # execute with powershell the bat file set(RUNAS "-Verb runAs") execute_process( COMMAND powershell.exe Start-Process ${TMPFILE} ${RUNAS} ) endfunction(smtg_create_directory_as_admin_win) vst3_cmake-3.8.0_build_66/modules/SMTG_PrefixHeader.cmake000066400000000000000000000013471507546454600231520ustar00rootroot00000000000000 #------------------------------------------------------------------------ # Prefix Header #------------------------------------------------------------------------ #------------------------------------------------------------------------ function(smtg_target_set_prefix_header target header precompile) if(MSVC) elseif(XCODE) set_target_properties(${target} PROPERTIES XCODE_ATTRIBUTE_GCC_PREFIX_HEADER "${header}" XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER "${precompile}" ) else() target_compile_options(${target} PRIVATE -include "${header}" ) endif(MSVC) endfunction(smtg_target_set_prefix_header) vst3_cmake-3.8.0_build_66/modules/SMTG_SetDebugExecutable.cmake000066400000000000000000000025241507546454600243060ustar00rootroot00000000000000 #------------------------------------------------------------------------ function(smtg_target_set_debug_executable target executable) if(CMAKE_GENERATOR STREQUAL Xcode) set_target_properties(${target} PROPERTIES XCODE_GENERATE_SCHEME YES XCODE_SCHEME_EXECUTABLE "${executable}" ) if(ARGC GREATER 2 AND ARGV2) set_target_properties(${target} PROPERTIES XCODE_SCHEME_ARGUMENTS "${ARGV2}" ) endif() endif() if(MSVC) set_target_properties(${target} PROPERTIES VS_DEBUGGER_COMMAND "${executable}" ) if(ARGC GREATER 2 AND ARGV2) set_target_properties(${target} PROPERTIES VS_DEBUGGER_COMMAND_ARGUMENTS "${ARGV2}" ) endif() endif(MSVC) endfunction(smtg_target_set_debug_executable) #------------------------------------------------------------------------ # Deprecated since 3.7.4 ----------------------------- function(smtg_set_debug_executable target executable) message(DEPRECATION "[SMTG] Use smtg_target_set_debug_executable instead of smtg_set_debug_executable") smtg_target_set_debug_executable (${target} ${executable}) endfunction(smtg_set_debug_executable) vst3_cmake-3.8.0_build_66/modules/SMTG_SetupVST3LibraryDefaultPath.cmake000066400000000000000000000045561507546454600260400ustar00rootroot00000000000000 if(SMTG_WIN) option(SMTG_PLUGIN_TARGET_USER_PROGRAM_FILES_COMMON "use FOLDERID_UserProgramFilesCommon as VST3 target path" ON) endif(SMTG_WIN) #------------------------------------------------------------------------ # VST3 Folder (following the specification) function(smtg_get_default_vst3_path) if(SMTG_WIN) set(win64Found "1") if(NOT ${CMAKE_GENERATOR_PLATFORM} STREQUAL "") string(FIND ${CMAKE_GENERATOR_PLATFORM} x64 win64Found) if(${win64Found} EQUAL -1) string(FIND ${CMAKE_GENERATOR_PLATFORM} ARM64 win64Found) endif() elseif(${CMAKE_GENERATOR} STREQUAL "Visual Studio 15 2017" OR ${CMAKE_GENERATOR} STREQUAL "Visual Studio 14 2015" OR ${CMAKE_GENERATOR} STREQUAL "Visual Studio 12 2013" OR ${CMAKE_GENERATOR} STREQUAL "Visual Studio 11 2012" OR ${CMAKE_GENERATOR} STREQUAL "Visual Studio 10 2010" OR ${CMAKE_GENERATOR} STREQUAL "Visual Studio 9 2008") set(win64Found "-1") else() string(FIND ${CMAKE_GENERATOR} Win32 win32Found) if(NOT ${win32Found} EQUAL -1) set(win64Found "-1") endif() endif() if(${win64Found} EQUAL -1) # for 32bits OS if(EXISTS "$ENV{PROGRAMFILES} (x86)") set(SMTG_PLUGIN_TARGET_DEFAULT_PATH "$ENV{PROGRAMFILES} (x86)\\Common Files\\VST3" PARENT_SCOPE) else() set(SMTG_PLUGIN_TARGET_DEFAULT_PATH "$ENV{PROGRAMFILES}\\Common Files\\VST3" PARENT_SCOPE) endif() else() # for 64bits OS #FOLDERID_UserProgramFilesCommon if(SMTG_PLUGIN_TARGET_USER_PROGRAM_FILES_COMMON) set(SMTG_PLUGIN_TARGET_DEFAULT_PATH "$ENV{LOCALAPPDATA}\\Programs\\Common\\VST3" PARENT_SCOPE) else() set(SMTG_PLUGIN_TARGET_DEFAULT_PATH "$ENV{CommonProgramW6432}\\VST3" PARENT_SCOPE) endif(SMTG_PLUGIN_TARGET_USER_PROGRAM_FILES_COMMON) endif() elseif(SMTG_MAC) set(SMTG_PLUGIN_TARGET_DEFAULT_PATH "$ENV{HOME}/Library/Audio/Plug-Ins/VST3" PARENT_SCOPE) elseif(SMTG_LINUX) set(SMTG_PLUGIN_TARGET_DEFAULT_PATH "$ENV{HOME}/.vst3" PARENT_SCOPE) else() message(FATAL_ERROR "[SMTG] unknown platform") endif(SMTG_WIN) endfunction(smtg_get_default_vst3_path) vst3_cmake-3.8.0_build_66/modules/SMTG_UniversalBinary.cmake000066400000000000000000000037421507546454600237220ustar00rootroot00000000000000 if(SMTG_MAC) if(XCODE_VERSION VERSION_GREATER_EQUAL 12) option(SMTG_BUILD_UNIVERSAL_BINARY "Build universal binary (x86_64 & arm64)" ON) elseif(XCODE_VERSION VERSION_LESS 10) option(SMTG_BUILD_UNIVERSAL_BINARY "Build universal binary (32 & 64 bit)" OFF) else() # Xcode 10 and 11 can only build x86_64 for macOS set(SMTG_BUILD_UNIVERSAL_BINARY 0) endif() endif(SMTG_MAC) #------------------------------------------------------------------------ # smtg_target_setup_universal_binary #------------------------------------------------------------------------ function(smtg_target_setup_universal_binary target) if(SMTG_MAC) if(SMTG_BUILD_UNIVERSAL_BINARY) if(XCODE_VERSION VERSION_GREATER_EQUAL 12) set_target_properties(${target} PROPERTIES XCODE_ATTRIBUTE_OSX_ARCHITECTURES "x86_64;arm64;arm64e" XCODE_ATTRIBUTE_ARCHS "$(ARCHS_STANDARD_64_BIT)" ) else() set_target_properties(${target} PROPERTIES XCODE_ATTRIBUTE_OSX_ARCHITECTURES "x86_64;i386" XCODE_ATTRIBUTE_ARCHS "$(ARCHS_STANDARD_32_64_BIT)" ) endif() set_target_properties(${target} PROPERTIES XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH "$<$:YES>$<$:NO>" ) endif(SMTG_BUILD_UNIVERSAL_BINARY) endif(SMTG_MAC) endfunction(smtg_target_setup_universal_binary) #------------------------------------------------------------------------ # Deprecated since 3.7.4 ----------------------------- function(smtg_setup_universal_binary target) message(DEPRECATION "[SMTG] Use smtg_target_setup_universal_binary instead of smtg_setup_universal_binary") smtg_target_setup_universal_binary (${target}) endfunction(smtg_setup_universal_binary) vst3_cmake-3.8.0_build_66/modules/SMTG_VST3_SDK.cmake000066400000000000000000000403401507546454600220400ustar00rootroot00000000000000 #------------------------------------------------------------------------ # Includes #------------------------------------------------------------------------ include(SMTG_Global) include(SMTG_AddVST3Library) include(SMTG_Bundle) include(SMTG_ExportedSymbols) include(SMTG_PrefixHeader) include(SMTG_PlatformIOS) include(SMTG_PlatformToolset) include(SMTG_CoreAudioSupport) include(SMTG_AAXSupport) include(SMTG_VstGuiSupport) include(SMTG_UniversalBinary) include(SMTG_AddVST3Options) #------------------------------------------------------------------------ function(smtg_create_lib_base_target) add_library(base STATIC ${SDK_ROOT}/base/source/baseiids.cpp ${SDK_ROOT}/base/source/classfactoryhelpers.h ${SDK_ROOT}/base/source/fbuffer.cpp ${SDK_ROOT}/base/source/fbuffer.h ${SDK_ROOT}/base/source/fcleanup.h ${SDK_ROOT}/base/source/fcommandline.h ${SDK_ROOT}/base/source/fdebug.cpp ${SDK_ROOT}/base/source/fdebug.h ${SDK_ROOT}/base/source/fdynlib.cpp ${SDK_ROOT}/base/source/fdynlib.h ${SDK_ROOT}/base/source/fobject.cpp ${SDK_ROOT}/base/source/fobject.h ${SDK_ROOT}/base/source/fstreamer.cpp ${SDK_ROOT}/base/source/fstreamer.h ${SDK_ROOT}/base/source/fstring.cpp ${SDK_ROOT}/base/source/fstring.h ${SDK_ROOT}/base/source/timer.cpp ${SDK_ROOT}/base/source/timer.h ${SDK_ROOT}/base/source/updatehandler.cpp ${SDK_ROOT}/base/source/updatehandler.h ${SDK_ROOT}/base/thread/include/fcondition.h ${SDK_ROOT}/base/thread/include/flock.h ${SDK_ROOT}/base/thread/source/fcondition.cpp ${SDK_ROOT}/base/thread/source/flock.cpp ) target_include_directories(base PUBLIC ${SDK_ROOT} ) # Compiler switches are PUBLIC and will be populated. target_compile_options(base PUBLIC "$<$:-DDEVELOPMENT=1>" "$<$:-DRELEASE=1>" "$<$:-DRELEASE=1>" ) target_compile_features(base PUBLIC cxx_std_17 ) if(MSVC) set(CMAKE_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS} /IGNORE:4221") endif(MSVC) smtg_target_setup_universal_binary(base) # iOS target if(SMTG_MAC AND XCODE AND SMTG_ENABLE_IOS_TARGETS) smtg_create_ios_target_from_target(base) set_target_properties(base_ios PROPERTIES ${SDK_IDE_LIBS_FOLDER} ) # Compiler switches are PUBLIC and will be populated. target_compile_options(base_ios PUBLIC "$<$:-DDEVELOPMENT=1>" "$<$:-DRELEASE=1>" "$<$:-DRELEASE=1>" ) endif(SMTG_MAC AND XCODE AND SMTG_ENABLE_IOS_TARGETS) endfunction() #------------------------------------------------------------------------ function(smtg_create_pluginterfaces_target) add_library(pluginterfaces STATIC ${SDK_ROOT}/pluginterfaces/base/conststringtable.cpp ${SDK_ROOT}/pluginterfaces/base/conststringtable.h ${SDK_ROOT}/pluginterfaces/base/coreiids.cpp ${SDK_ROOT}/pluginterfaces/base/falignpop.h ${SDK_ROOT}/pluginterfaces/base/falignpush.h ${SDK_ROOT}/pluginterfaces/base/fplatform.h ${SDK_ROOT}/pluginterfaces/base/fstrdefs.h ${SDK_ROOT}/pluginterfaces/base/ftypes.h ${SDK_ROOT}/pluginterfaces/base/funknown.cpp ${SDK_ROOT}/pluginterfaces/base/funknown.h ${SDK_ROOT}/pluginterfaces/base/funknownimpl.h ${SDK_ROOT}/pluginterfaces/base/futils.h ${SDK_ROOT}/pluginterfaces/base/fvariant.h ${SDK_ROOT}/pluginterfaces/base/geoconstants.h ${SDK_ROOT}/pluginterfaces/base/ibstream.h ${SDK_ROOT}/pluginterfaces/base/icloneable.h ${SDK_ROOT}/pluginterfaces/base/ierrorcontext.h ${SDK_ROOT}/pluginterfaces/base/ipersistent.h ${SDK_ROOT}/pluginterfaces/base/ipluginbase.h ${SDK_ROOT}/pluginterfaces/base/istringresult.h ${SDK_ROOT}/pluginterfaces/base/iupdatehandler.h ${SDK_ROOT}/pluginterfaces/base/keycodes.h ${SDK_ROOT}/pluginterfaces/base/pluginbasefwd.h ${SDK_ROOT}/pluginterfaces/base/smartpointer.h ${SDK_ROOT}/pluginterfaces/base/typesizecheck.h ${SDK_ROOT}/pluginterfaces/base/ucolorspec.h ${SDK_ROOT}/pluginterfaces/base/ustring.cpp ${SDK_ROOT}/pluginterfaces/base/ustring.h ${SDK_ROOT}/pluginterfaces/gui/iplugview.h ${SDK_ROOT}/pluginterfaces/gui/iplugviewcontentscalesupport.h ${SDK_ROOT}/pluginterfaces/vst/ivstattributes.h ${SDK_ROOT}/pluginterfaces/vst/ivstaudioprocessor.h ${SDK_ROOT}/pluginterfaces/vst/ivstautomationstate.h ${SDK_ROOT}/pluginterfaces/vst/ivstchannelcontextinfo.h ${SDK_ROOT}/pluginterfaces/vst/ivstcomponent.h ${SDK_ROOT}/pluginterfaces/vst/ivstcontextmenu.h ${SDK_ROOT}/pluginterfaces/vst/ivsteditcontroller.h ${SDK_ROOT}/pluginterfaces/vst/ivstevents.h ${SDK_ROOT}/pluginterfaces/vst/ivstdataexchange.h ${SDK_ROOT}/pluginterfaces/vst/ivsthostapplication.h ${SDK_ROOT}/pluginterfaces/vst/ivstinterappaudio.h ${SDK_ROOT}/pluginterfaces/vst/ivstmessage.h ${SDK_ROOT}/pluginterfaces/vst/ivstmidicontrollers.h ${SDK_ROOT}/pluginterfaces/vst/ivstmidilearn.h ${SDK_ROOT}/pluginterfaces/vst/ivstnoteexpression.h ${SDK_ROOT}/pluginterfaces/vst/ivstparameterchanges.h ${SDK_ROOT}/pluginterfaces/vst/ivstparameterfunctionname.h ${SDK_ROOT}/pluginterfaces/vst/ivstphysicalui.h ${SDK_ROOT}/pluginterfaces/vst/ivstpluginterfacesupport.h ${SDK_ROOT}/pluginterfaces/vst/ivstplugview.h ${SDK_ROOT}/pluginterfaces/vst/ivstprefetchablesupport.h ${SDK_ROOT}/pluginterfaces/vst/ivstprocesscontext.h ${SDK_ROOT}/pluginterfaces/vst/ivstremapparamid.h ${SDK_ROOT}/pluginterfaces/vst/ivstrepresentation.h ${SDK_ROOT}/pluginterfaces/vst/ivstunits.h ${SDK_ROOT}/pluginterfaces/vst/vstpresetkeys.h ${SDK_ROOT}/pluginterfaces/vst/vstpshpack4.h ${SDK_ROOT}/pluginterfaces/vst/vstspeaker.h ${SDK_ROOT}/pluginterfaces/vst/vsttypes.h ) # check for C11 atomic header include(CheckSourceCompiles) set(SMTG_CHECK_STDATOMIC_H_SRC "#include int main () { atomic_int_least32_t value = 0; atomic_fetch_add (&value, 1); return 0; }" ) #set(CMAKE_REQUIRED_QUIET 1) check_source_compiles(CXX "${SMTG_CHECK_STDATOMIC_H_SRC}" SMTG_USE_STDATOMIC_H) if(SMTG_USE_STDATOMIC_H) target_compile_definitions(pluginterfaces PRIVATE "SMTG_USE_STDATOMIC_H=${SMTG_USE_STDATOMIC_H}" ) endif(SMTG_USE_STDATOMIC_H) target_include_directories(pluginterfaces PUBLIC ${SDK_ROOT} ) target_compile_features(pluginterfaces PUBLIC cxx_std_17 ) smtg_target_setup_universal_binary(pluginterfaces) # iOS target if(SMTG_MAC AND XCODE AND SMTG_ENABLE_IOS_TARGETS) smtg_create_ios_target_from_target(pluginterfaces) set_target_properties(pluginterfaces_ios PROPERTIES ${SDK_IDE_LIBS_FOLDER} ) endif() endfunction() #------------------------------------------------------------------------ function(smtg_create_public_sdk_common_target) add_library(sdk_common STATIC ${SDK_ROOT}/public.sdk/source/common/commoniids.cpp ${SDK_ROOT}/public.sdk/source/common/commonstringconvert.cpp ${SDK_ROOT}/public.sdk/source/common/commonstringconvert.h ${SDK_ROOT}/public.sdk/source/common/openurl.cpp ${SDK_ROOT}/public.sdk/source/common/openurl.h ${SDK_ROOT}/public.sdk/source/common/systemclipboard.h ${SDK_ROOT}/public.sdk/source/common/systemclipboard_linux.cpp ${SDK_ROOT}/public.sdk/source/common/systemclipboard_win32.cpp ${SDK_ROOT}/public.sdk/source/common/threadchecker.h ${SDK_ROOT}/public.sdk/source/common/threadchecker_linux.cpp ${SDK_ROOT}/public.sdk/source/common/threadchecker_win32.cpp ${SDK_ROOT}/public.sdk/source/common/readfile.cpp ${SDK_ROOT}/public.sdk/source/common/readfile.h ${SDK_ROOT}/public.sdk/source/vst/vstpresetfile.cpp ${SDK_ROOT}/public.sdk/source/vst/vstpresetfile.h ) if(SMTG_MAC) target_sources(sdk_common PRIVATE ${SDK_ROOT}/public.sdk/source/common/threadchecker_mac.mm ${SDK_ROOT}/public.sdk/source/common/systemclipboard_mac.mm ) endif(SMTG_MAC) # add dependencies target_link_libraries(sdk_common PUBLIC base pluginterfaces ) target_include_directories(sdk_common PUBLIC ${SDK_ROOT} ) smtg_target_setup_universal_binary(sdk_common) if(SMTG_MAC AND XCODE AND SMTG_ENABLE_IOS_TARGETS) smtg_create_ios_target_from_target(sdk_common) set_target_properties(sdk_common_ios PROPERTIES ${SDK_IDE_LIBS_FOLDER} ) target_link_libraries(sdk_common_ios PUBLIC base_ios pluginterfaces_ios ) endif() endfunction() #------------------------------------------------------------------------ function(smtg_create_public_sdk_target) add_library(sdk STATIC ${SDK_ROOT}/public.sdk/source/common/pluginview.cpp ${SDK_ROOT}/public.sdk/source/common/pluginview.h ${SDK_ROOT}/public.sdk/source/main/pluginfactory.cpp ${SDK_ROOT}/public.sdk/source/main/pluginfactory.h ${SDK_ROOT}/public.sdk/source/main/pluginfactory_constexpr.h ${SDK_ROOT}/public.sdk/source/main/moduleinit.cpp ${SDK_ROOT}/public.sdk/source/main/moduleinit.h ${SDK_ROOT}/public.sdk/source/vst/utility/alignedalloc.h ${SDK_ROOT}/public.sdk/source/vst/utility/audiobuffers.h ${SDK_ROOT}/public.sdk/source/vst/utility/dataexchange.cpp ${SDK_ROOT}/public.sdk/source/vst/utility/dataexchange.h ${SDK_ROOT}/public.sdk/source/vst/utility/memoryibstream.h ${SDK_ROOT}/public.sdk/source/vst/utility/processcontextrequirements.h ${SDK_ROOT}/public.sdk/source/vst/utility/processdataslicer.h ${SDK_ROOT}/public.sdk/source/vst/utility/ringbuffer.h ${SDK_ROOT}/public.sdk/source/vst/utility/rttransfer.h ${SDK_ROOT}/public.sdk/source/vst/utility/sampleaccurate.h ${SDK_ROOT}/public.sdk/source/vst/utility/stringconvert.cpp ${SDK_ROOT}/public.sdk/source/vst/utility/stringconvert.h ${SDK_ROOT}/public.sdk/source/vst/utility/systemtime.h ${SDK_ROOT}/public.sdk/source/vst/utility/systemtime.cpp ${SDK_ROOT}/public.sdk/source/vst/utility/testing.cpp ${SDK_ROOT}/public.sdk/source/vst/utility/testing.h ${SDK_ROOT}/public.sdk/source/vst/utility/vst2persistence.h ${SDK_ROOT}/public.sdk/source/vst/utility/vst2persistence.cpp ${SDK_ROOT}/public.sdk/source/vst/vstaudioeffect.cpp ${SDK_ROOT}/public.sdk/source/vst/vstaudioeffect.h ${SDK_ROOT}/public.sdk/source/vst/vstbus.cpp ${SDK_ROOT}/public.sdk/source/vst/vstbus.h ${SDK_ROOT}/public.sdk/source/vst/vstbypassprocessor.h ${SDK_ROOT}/public.sdk/source/vst/vstcomponent.cpp ${SDK_ROOT}/public.sdk/source/vst/vstcomponent.h ${SDK_ROOT}/public.sdk/source/vst/vstcomponentbase.cpp ${SDK_ROOT}/public.sdk/source/vst/vstcomponentbase.h ${SDK_ROOT}/public.sdk/source/vst/vsteditcontroller.cpp ${SDK_ROOT}/public.sdk/source/vst/vsteditcontroller.h ${SDK_ROOT}/public.sdk/source/vst/vsteventshelper.h ${SDK_ROOT}/public.sdk/source/vst/vsthelpers.h ${SDK_ROOT}/public.sdk/source/vst/vstinitiids.cpp ${SDK_ROOT}/public.sdk/source/vst/vstnoteexpressiontypes.cpp ${SDK_ROOT}/public.sdk/source/vst/vstnoteexpressiontypes.h ${SDK_ROOT}/public.sdk/source/vst/vstparameters.cpp ${SDK_ROOT}/public.sdk/source/vst/vstparameters.h ${SDK_ROOT}/public.sdk/source/vst/vstrepresentation.cpp ${SDK_ROOT}/public.sdk/source/vst/vstrepresentation.h ) target_compile_features(sdk PUBLIC cxx_std_17 ) # add dependencies target_link_libraries(sdk PUBLIC sdk_common ) target_include_directories(sdk PUBLIC ${SDK_ROOT} ) smtg_target_setup_universal_binary(sdk) get_target_property(sdk_SOURCES sdk SOURCES) # iOS target if(SMTG_MAC AND XCODE AND SMTG_ENABLE_IOS_TARGETS) smtg_create_ios_target_from_target(sdk) set_target_properties(sdk_ios PROPERTIES ${SDK_IDE_LIBS_FOLDER} ) target_link_libraries(sdk_ios PUBLIC sdk_common_ios ) endif(SMTG_MAC AND XCODE AND SMTG_ENABLE_IOS_TARGETS) endfunction() #------------------------------------------------------------------------ function(smtg_create_public_sdk_hosting_target) add_library(sdk_hosting STATIC ${SDK_ROOT}/public.sdk/source/vst/hosting/connectionproxy.cpp ${SDK_ROOT}/public.sdk/source/vst/hosting/connectionproxy.h ${SDK_ROOT}/public.sdk/source/vst/hosting/eventlist.cpp ${SDK_ROOT}/public.sdk/source/vst/hosting/eventlist.h ${SDK_ROOT}/public.sdk/source/vst/hosting/hostclasses.cpp ${SDK_ROOT}/public.sdk/source/vst/hosting/hostclasses.h ${SDK_ROOT}/public.sdk/source/vst/hosting/module.cpp ${SDK_ROOT}/public.sdk/source/vst/hosting/module.h ${SDK_ROOT}/public.sdk/source/vst/hosting/parameterchanges.cpp ${SDK_ROOT}/public.sdk/source/vst/hosting/parameterchanges.h ${SDK_ROOT}/public.sdk/source/vst/hosting/pluginterfacesupport.cpp ${SDK_ROOT}/public.sdk/source/vst/hosting/pluginterfacesupport.h ${SDK_ROOT}/public.sdk/source/vst/hosting/processdata.cpp ${SDK_ROOT}/public.sdk/source/vst/hosting/processdata.h ${SDK_ROOT}/public.sdk/source/vst/utility/optional.h ${SDK_ROOT}/public.sdk/source/vst/utility/stringconvert.cpp ${SDK_ROOT}/public.sdk/source/vst/utility/stringconvert.h ${SDK_ROOT}/public.sdk/source/vst/utility/uid.h ${SDK_ROOT}/public.sdk/source/vst/utility/versionparser.h ${SDK_ROOT}/public.sdk/source/vst/vstinitiids.cpp ) # add dependencies target_link_libraries(sdk_hosting PUBLIC sdk_common ) target_include_directories(sdk_hosting PUBLIC ${SDK_ROOT} ) smtg_target_setup_universal_binary(sdk_hosting) # iOS target for hosting if(SMTG_MAC AND XCODE AND SMTG_ENABLE_IOS_TARGETS) smtg_create_ios_target_from_target(sdk_hosting) set_target_properties(sdk_hosting_ios PROPERTIES ${SDK_IDE_LIBS_FOLDER} ) target_link_libraries(sdk_hosting_ios PUBLIC sdk_common_ios ) target_include_directories(sdk_hosting_ios PUBLIC ${SDK_ROOT} ) endif(SMTG_MAC AND XCODE AND SMTG_ENABLE_IOS_TARGETS) endfunction() vst3_cmake-3.8.0_build_66/modules/SMTG_VstGuiSupport.cmake000066400000000000000000000110431507546454600234140ustar00rootroot00000000000000 #------------------------------------------------------------------------ macro(smtg_add_vstgui_subdirectory vstgui_SOURCE_DIR) set(VSTGUI_DISABLE_UNITTESTS 1) set(VSTGUI_STANDALONE_EXAMPLES OFF) set(VSTGUI_STANDALONE ON) set(VSTGUI_TOOLS OFF) add_subdirectory(${vstgui_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/VSTGUI.build) endmacro() macro(smtg_target_setup_vstgui_deprecated_methods target) if(VSTGUI_ENABLE_DEPRECATED_METHODS) target_compile_definitions(${target} PUBLIC VSTGUI_ENABLE_DEPRECATED_METHODS=1 ) else() target_compile_definitions(${target} PUBLIC VSTGUI_ENABLE_DEPRECATED_METHODS=0 ) endif() endmacro() macro(smtg_target_prepare_bundle target) target_compile_definitions(${target} PUBLIC SMTG_MODULE_IS_BUNDLE=1 ) target_sources(${target} PRIVATE ${public_sdk_SOURCE_DIR}/source/vst/vstgui_win32_bundle_support.cpp ${public_sdk_SOURCE_DIR}/source/vst/vstgui_win32_bundle_support.h ) endmacro() #[=======================================================================[.txt: Adds VSTGUI support. Usage: smtg_enable_vstgui_support(VSTGUI_SOURCE_DIR "") Exports: smtg_enable_vstgui_support exports "" as SMTG_VSTGUI_SOURCE_DIR to its parent scope. Deprecation: The usage wihout parameters is depricated. SMTG_VSTGUI_ROOT is exported for compatibility reasons and is also depricated. Replace "${SMTG_VSTGUI_ROOT}/vstgui4" with "${SMTG_VSTGUI_SOURCE_DIR}". The export of "${SMTG_VSTGUI_ROOT}" may be removed in future SDK versions. #]=======================================================================] function(smtg_enable_vstgui_support) if(${ARGC} GREATER 0) set(options) set(oneValueArgs VSTGUI_SOURCE_DIR) set(multiValueArgs) cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) if(ARG_UNPARSED_ARGUMENTS) message(FATAL_ERROR "[SMTG] The following parameters are unrecognized: ${ARG_UNPARSED_ARGUMENTS}") endif() get_filename_component(vstgui_root "${ARG_VSTGUI_SOURCE_DIR}" DIRECTORY) set(SMTG_VSTGUI_ROOT "${vstgui_root}" PARENT_SCOPE) set(vstgui_source_dir "${ARG_VSTGUI_SOURCE_DIR}") else() # See function documentation for more information. message(DEPRECATION "[SMTG] Use smtg_enable_vstgui_support(VSTGUI_SOURCE_DIR \"\") " "instead of set(SMTG_VSTGUI_ROOT \"\") and smtg_enable_vstgui_support()") set(vstgui_source_dir "${SMTG_VSTGUI_ROOT}/vstgui4") endif() # Export SMTG_VSTGUI_SOURCE_DIR to parent scope set(SMTG_VSTGUI_SOURCE_DIR "${vstgui_source_dir}" PARENT_SCOPE) message(STATUS "[SMTG] SMTG_VSTGUI_SOURCE_DIR is set to: ${vstgui_source_dir}") smtg_add_vstgui_subdirectory(${vstgui_source_dir}) add_library(vstgui_support STATIC ${vstgui_source_dir}/vstgui/plugin-bindings/vst3groupcontroller.cpp ${vstgui_source_dir}/vstgui/plugin-bindings/vst3groupcontroller.h ${vstgui_source_dir}/vstgui/plugin-bindings/vst3padcontroller.cpp ${vstgui_source_dir}/vstgui/plugin-bindings/vst3padcontroller.h ${vstgui_source_dir}/vstgui/plugin-bindings/vst3editor.cpp ${vstgui_source_dir}/vstgui/plugin-bindings/vst3editor.h ${public_sdk_SOURCE_DIR}/source/vst/vstguieditor.cpp ) target_link_libraries(vstgui_support PUBLIC base vstgui vstgui_uidescription ) target_include_directories(vstgui_support PUBLIC ${vstgui_source_dir} ) target_compile_definitions(vstgui_support PUBLIC $<$:VSTGUI_LIVE_EDITING> ) smtg_target_setup_vstgui_deprecated_methods(vstgui_support) smtg_target_setup_universal_binary(vstgui_support) smtg_target_setup_universal_binary(vstgui) smtg_target_setup_universal_binary(vstgui_uidescription) if(SMTG_WIN AND SMTG_CREATE_BUNDLE_FOR_WINDOWS) smtg_target_prepare_bundle(vstgui_support) endif() if(SMTG_LINUX) target_sources(vstgui_support PRIVATE ${public_sdk_SOURCE_DIR}/source/vst/vstgui_linux_runloop_support.cpp ${public_sdk_SOURCE_DIR}/source/vst/vstgui_linux_runloop_support.h ) endif() endfunction() vst3_cmake-3.8.0_build_66/templates/000077500000000000000000000000001507546454600172715ustar00rootroot00000000000000vst3_cmake-3.8.0_build_66/templates/VST_Logo_Steinberg.ico000066400000000000000000007603321507546454600234360ustar00rootroot00000000000000Vv 0XW 3 l :00 %"   hrPNG  IHDR\rf pHYsod IDATxyxՕ6n-k,۲d[eY K'@2IfL~3%I!@oH2IdI Vc"YYjn֩{VwSUUmsy{ulڴ 6lؘpNذac`,E~hhd?mѐt "66 @aAhh8F8B8t@nymlhT.<p\1lˌ@cFUю?̬Vm2QpDA @ vqF._a)d *Gs˫̝73E??W̷m2 eՋ]} vі04L0Ϯ5͛^jDƢoA6i FQЙK$ 04<(P DA6iсak_@gC=o0zmEaîH3WW+D_i AȟR%3! `{i+*ৃGCx~(>Q@og 2H]Xmө~f!1̬چ =aIB᜚h#.;ݗy^ ׹v `zICSV{"6?Q2v' x`}MlB]Xm#B$5;?FZxn?}^e= mpraratp08kȸ303PM{ѹ( ߁zb08OYUzm,^4`dA$w 2t -0sm' {N @QT04߀֍g/O4Ǔ G RD"Qtm"ՀI#H$*D3({!%y<[Z̄h}_{U}f/3 S"DJ'2詎h06vrfVDa`{܅uѳ)>!h\{F1z2=~w' Xi^t8b{L#K(}@~'c'}CfmƉ)# F< h/)Ȯh;g l0ΩCRpV-H?vN.E7F}N[Zl ~F@< Da?mI W@^l$.ӆAA̎Z$y1ß?Dh\t77D`LܓN!bl{fDF=}NOMJ`{q_1qՈ7ߨ}f$`<@?Þ}--`ɾD *?՘zgM>!HV WD{dq3x 0`M+FȘi> G&BD T>wyw"hO&:Qh #]dϦ3 (/ΛRmFd_30j'@%"VlVěTe ZSXն+ @x^7{3O. SVfC0eCx=`3E;{tN @ԓ x6 ''**]3ssr,‚)i30ցtwD0 F 0X` +.Ey(*,D~ CmE)bfq\.(x~@ii ~22ʚ,ء0SXնktb޾>ر {@S 3'#u ČBo<yϏWXXY2TTyƌph_tb4oF~g(S>=7 2VL?x?F$Qgu~OP]w*j`v1 + xsӍhCOKN4Tr'}} pH >4aVL }0XHD ;s;3)c0KmgGtW~DZ. H>4<ŵuҺ:x<> ?o:|f\uq`mؾc7yg+x~#3pZHV?jpG?ފ^xaF4E$D$NS W JfZOQد~-oq9sfKw}3KKzxz>¥ukyxOc$4?c+uGMJ)ֻb _ϣXcT'Jj7_o544ae2 ¹ ef7_ڽ5+W4y 8@Ki" ˅"o_ƍRC~gF`*x<JD5ڬ4 ܅uY{ױ@`.wl0yDW£`g,. 3w| bFN( 7ߴyyM+7/>' ꫮ暛O]6E`x=Zr+:ڊmww 1”rsaj0 xɾ<yըEk/m7mO?^zEsM]QÆuO&%zD @W 1-׋`puގ"ݵǾC 0o;}l&_r֮]YŦtxOʖV4:j|sw晸֘B~e7**pӇom3z~`aJ: UDaxd_BpqnF886o#_< Q^> -b_ 0ჇڊNtw(ex==,{̟g{U5XvcvYɸ1Շ+@Mu=xv=^B%l{ HnW Zho´7 WD[, Xs+ZZZuطg/?EQyZ}_\\;\.8GS yW2H8hi:6?-ҕbV}cÚ'77y]DƗt:D׏_ڗq}z~m]XpHMsppD5pX6R];5n|ϛ~CSks7v~S8Hsj%şˋÑgf_$14K,KdioVY6^{|/O=U!//~\(ESO?޿+V4 _Ja٠?cO݃Ͳ-hm /ťe֭K43q@߄<>pf⢵N~we^A$IGpuWk #cr( Z:"ϢJKJkonۅNig zǧM_@OOJ}[r{;pHo;2{񃼯;zmN8N,Y\5kVvqfz^9oDLܓ kf" ȁ)ZjЈ0j(9kjڅUS!Usn76o~ǎO_Ss%c9Xr9VhƘ9tX$\nj,ic5o|^<ܟqT'(KZHDC.~?{P(2y>.TPNP0bAz|cȾɬ䫞W.@_2 7],V6j_XXaω;qM7Y#P~0{Ѹ?y'O?ߺ^|gEpGHIfE=xpꕱ3&| AQqT+cFlE. rR(5(JCj+6-ͪDpMxI'>j ;^ +55UwŋkY,_^/sG~|bC {F"cV@Qٓ[㎔ߔ!b~thؚf(+)D_?[t3P߳l;22~Y[ocw{}Dyi!fĺbٲ:AadDA$5htp8hC݊amۆNbjLx ;vS+&ẫJQkxo>I'H9?~-(,.Չyvc۶uq\\3:nXUU\.,]/ӝx{pƜ9UOoY<3 xм=Ϗ܇/}l޾!',( 8:n7HLX3Lk>կ7{> j7 o%E7|W`F^P*224^X_E>_@>/!֌$Ӡ(hi=~f&V) .v&'Wl5gB[[;Z]dC P_EZ[Zu?а^/H$haY=*,\8>4C,H?n=qB쀢U:z9~#dWT#  ,!,S}{N6̨AF*!:zFg!ګQUUg^uw/i3NjW]ۏQS ǧE0<yyys_HAaAn).^n/<}J_rሹn|x笸դo>*3̵Bx~V=֫sz7}G-IhU(--ѹ5H$ kWS  8u_:Gri obO y. %ͻnl7"ɶ?q{%IBMud\\ % xQQB L& @8]IQyݓk})nF5te5)zG6iY Χ>~R}DxL6&KE2,~۴i {e6@Qd2ksWSaFFD0kNm?f"%G~2 W /)#Vy#@D} H@k[+qXHD g?%~p%#@}m֯]#ퟸyB{D"4GGWJ5lݦ[k Zـg2ӴcJCHw_*q$ s?өpx<?p ~g]2[nţkœXZd^3*'O?W^}=ߩVhI4p;DG4 pB)՛}KrB!<_p}zil/>sǧ˅G0 IDAToUwxakvPh$*$ĩN|{ %^|` (_}PHjN2Aݗ,e mw~cӜ \Z^./W!O$css –.+|TUU/K܎ɽgfgeU>|<Xl-IV\y.8 =mۉkcdYgoG߷nQxWD}}7,ÂE]\M}npu:K(8ىwM_T\\FCƇospT'~?F Q#Gt:~yRhHc\G٤ |B%-r,Y>ew|xt: ׿y;'>y*++c>M'?1< goӼ^M>) XEF\8ۉ~,صk/v ۍ;g6"x<]n. ũsaD[{. j\vz\r1::h|Ys-Q3z_{ĊPS]M!SAiQJfOy02i=88N9ք{{_u)GNc#pj{ص{uib\p ]ztJ$3wGY478xg:ۅ3o?{y-O{ܳ?C$\"гJ0>Nut$ΠgΠϏ9A(JXSΫm ۍYe317 ]^yXX5ۼW!ycr(':1<t2شiSR/G=։p8g֛7" zˆ/ŭ2~by 痱F ]~B XPH(ap69n7r<9p9]"Iۻo rl[\\ySQ8u5ס w \+?,1-H]8_ VXX]w5e?I:‰0fOWb<ΜJϓrP @JkZn:h՗(b)Ásx?ߺǎ`'y.+m[0P@IB6SSm]χ~˴ha#LS-6ӔO/kACEQ׿mvHc@_ UDZe<.`x<>{=~olnaTסdV90ƪuE`CGϾmRپ d ȯ @]|:ۋ<7,} KESO?7֪<ӊ$"ld]겋=#"m! EF օ<_1V6& ־ XX!BPBd(s A6_=xsƶgqO:R%@ (;_TTtM5DnCxƃZ[T0)8`0Ry& AHȱ&sxgZ3@"K>G2E2O#"/ DU|{pPyg={&#W0z( ?.' LAs@2!'HC  ݱcUy=!mzN5[LCJtl]^(>0Q &Z6,4DuI=N,:՚?H@2Ja"ŠaIkP|`CvX0 J24 (kb:PV6lt=>K #&E]e>kg!2uwYO]O<=Coھ?a*) uIueul+sEJ@3=2աх7oǁfDm$ [ݗ|' S5>>od_ԭH` cFiX]M٦KGҞt2#`'кÓYlAOȞQ;؊m{g}KQPtOXEM5\t @% ;j;0u} H@5ai@@>d3zb]T,`fˌ# x{') L!u_"8Ш@TgFtfRD!xCoy;;5v ( ftݗhZ1^A EQZslӰ 84{b='[glu!H/{ (=v!hxC ;L%EkB<>uu_BbxBӄTO@IPށA6ȩ6 !:ڄ7mE[g7h,꾖v[vT!H@Z fˁEo})OWxJ@:,# 7[E $LDK+ZN#DŽ8Q90`N/Ǯ'Kʮ/ȃ3`S/zp4^޼GG2 9>ں9.ц)RhFf2|E|"@4S@Bxpho|bupԍGsWݗ HI-0Y1v]> a @7Sc4{q'IBEvqhhBqYrl%$\.p(鋎 /#eȴ /DGepk;Dao<mBsk;.hR' ߏ3gaџ =ȰX61p%NY-OT(a>.^FĠ,D@?Z ?# 滻e^!9)tq`0}5p#1 !@ƑZxD[JА7SRS_6iIB4 w Ev`)0"ƫ tD}{$Ґ&Ӊom‘0h?gF*`xy"  |g` p!-zXD") gDdd}@Y>#RH4oľo]0 "PϊR3aIÂju_s[76q! v}@vV"%enfx2^JAzzM~Kǃs8{voW Qʶ෼Qdxi6}jOG{'okîQpddT,H' GSSա}X !@ƑL (#ԛ'@ 5,܈:d;|[|gVFJ@@_]cQ:+I$BPp;d^\K3J@ь,CAGv> ɘr yh{8g0?H H>Ɣ>v!"o\(8uH#:?Uw_%}7`CK9JAgp"R_t`"V!IhF (0CR.iǫ[kI Uu9~^ݧGgx5FgC`%,ul5"<hxd܆oР2"eYܘlnǛZUy8uʚPF}MǼ'ȿl24 ;{}>#(h@Oo/mz MǎeV H(ǓCx{u!Rj?30:E&s18Ш' 0QHO]vYO@Q!(5H;0R2 ()"yϢ~x $ g`^v#q/6/Uae.;MO|ӥR V4 vϩGhknt #DZdTwy*NيA`oŎ|(( Qow$!EI4';EYi%ϛ-HyO@e-O'Lw #W= +dʛyvd+*:%f0}DD䏹n`ӻJŽtQr[T\+7ktF)y!ȍw5 e= ҭey2`$N4 u))#L_6iHT='Sbfg H{E5DLöa P(6m0~ԁ8D1_~YlZH:~7C{[pDTuGکsyW 򱪾?d!H@Du ǟok،QC]iGClmn¾w6h˗;l˿fiC{gz;pN;$Qڻ/7ǫqN\{fd!9lq%ϛHIO@^UpoO@CfepE&P=5A.Kūm C7Og~z/2r8p9XzYjeF˜[6Օ]wrf)O3+2mxeEO+ ȮDO|v#mQX@tw]h,$Q݋q`<`0Ǯ/qu_ߢJ70)ϗ(Py#D)?YH D(F$$CU(,,@4Q+?A߆K|Q. x#~%-I D$*( E}!Ku(8}6kKtj|,-KHy-! AD\"( ΗwRZV7jAj?l`3d=FCۍ@ % ñufyz~!س0^`"Smn5it=s/ί_ߌq?WJ#Z^B;Kñsfx,AgfY}/NjKp P~fx#'x5?`u7^FKsl=i@:i@,xuEY/>_ßlXvk & (^gmkiƛ3Zoր#:8Vp~)aUm%B=)@ kDDǶ'^$ߘ=G< K}eҫPN>EH GfɾK}ضy35ܸ5OցW\gd t_)u(S}M)ŵEjD|RbYh:`[]R5.GQI)E wwa)DQ0# H؍!}OqYc WeJx NGJ>|13cd(OvB[MEDd!b~/[˛>km;ǣ3 0K!0~%> zNW^H[Β`##i0ϓ3iHQ- _dSb_` 9!c+-5\9*z7! a{oc5ke_#aaU}9 =q]yr,%lQ- g.:{{WH= Ybvzg@; aTU4"# gh ۭ#4..ƢUhjy=F$tg _y#=Xl#=sG#U ʍ!( >+**E]ʚ:O12^ P ]wnB=ϨX `奅i1"E cbֈ,3#cF$H$Sʲ1 r:hi_3˄AjPvo8#|C=OX }t]ZRYͶ2(](Z]OT;{|Io`lZt.Fy3f`kQAӆL#ChSh>C1bRDLfNiZ ~ ?DAFၬꏖRrhC^/|IDAT Q=mV~c?5yODl=ӟ9k6]qTIHQ1?Qx+✀uGOj8˅M&Lݗ,3FKlɘx}tUm잢% a[rdxq4mj5X}zN* '0 x>>~]9tVV"p%?`a re ;O++3q}&yƌɡDZoU|&'(OqL\tٕ]@bI1O$ҐFJQȖR1Lݧ( Xb:~W>4ިUiVPO #hʏ?GFP򞉬{81*>'OL7 lWQLCh;g+`ahzqaU}r}as429B Ctu_"?W53hҀF>6!:?2cоxw놫(ocp9Y>민s*bHOB~+JP?wS[+.9d)G#Ŧ`>WδG}w9*ՙE;"H,#E$/9E]A,YMTg`._ 7|@% hX-`0WW;<_P۟* } e W3}$vS k"0C+G6C.7EAKqlo h>䟑*I( Z.[&`72MIqDG`̟NDRwc>6r)(i(.獁?5* QkEuX{/, 'EBݧ( oҨx/Ԏ3JFID03 mY;1AwOD)hn0C)?-( Bhi:ՔPVIH//)օviH7@co87xFGϝ[nI{tW%ǦM&tsE7oݩl0zMS **C{_O$w6 Y([>[\TU>#k)&:F?ct-PiX{p:\1uk}_< Vz7zY1p3fHu8yE:~e*EQH@+kc##nq@ۮ~gb뛯 IB~<'*GhR,[y>V^N5pp:QPo t1>]zOmXsl *%}<9Y74x޾OYUQγl9ԘKxq*ho]*,,U(**1;:y s9 8,YP9HZ}'Nifw%>EhߢJ,5yN } }h+wѵd3|:MOdD4wv6H@?xe e!ssXl)go Mムp컲Teװh!f&Du_"NtD0~"~Z,NAs [@-_9bm@j4ECh.x3hO^;wY2 $f({LGߋ;h,a GBJKJxM.a\¬ j*4KR|"@ÅI''+ 3ZciI# gԥh ؟5T_Ov;{gmkh9GMED"P/fqFg~c}zfuCAFz<<}4iBJc<̄Ѩ_MjD<Y! hSXXKPZ6Khc~4:p0JAq~~Rۿ$oXrίRy4t{suaNepaO=Dq"vg܅ht|io@Ȗ7G;*y#S1Rb }]z<uc@xwh?:īt_8ݨ?wn{oEpH<fD2e}m2TW-aF5}/3l% eJd#=| +6_6B"ЁE?u~A!.1Q7Y?>&F̌ځ=;7F|[SqQKؾ}uαba<,4@ O1on05Yk/egKȚXƣw(ЯAh (da"!hqNM(xe'T ^X$zY (x??Ow3bYԃkࡆdd/,O}-,@Zg`#+EFťeXҰ3fk <-_ ='KS+/RIBJĉ27:%k.L (p8Bڻh,nu}">Cޛummc;ud}GrXY{^r{ 0% ÿv Y^R _|^Nηc}FFƞvy){2Acckc]kYHclKqq:4F@"KaX\YPO=g;~t]zfҁӢ<>D(- W]ucd!Q4=9 aǻ[78'_ϐ(2&ѧ{UU̵da977 k?nGiH8C4E*Yl.j4c˛)HS}x獗M*^r]a$l"sq _{ǍW_YMOz<،Xn4PW!{zz>0V彽g- & [GC^Ea+ڃ?>l ߪ\V4$l/=Ttee}DgCxo8; `ǁ1sBH$_D1%ӀЉOIa+?aPM=c<ޝ{ʌioGIúP-[3UYƮV6&貫7Zw>xZ0223B&#W^ gԡM)k}w|C`]JKJy{OcPk6\Ҹ}e]E*Bme!@Dex]9O3 Au_A=SxZEj{O2~i{{SwEF?Ϩ@.@yYiM v9Ktvƌ|%<9O# CpE]㪋W=OȲ"۲̬l /` B#e]aL (#۲`ㅽ,wz6V`$# jH0x|A[ @U9.XVcx&wpØLP=p6߅,-J!m2<{Ym Q܆8迉z/3`,㖵$aiXKRbp< !Bo}d1+kUd,ݻ/3a,V؋sf.l0Eq' `l` !W0ՅȬP^Zhp` "^_M(lu_v6SfZ<9/K`)xʩݗE VlOV66T*} Ё/{md+~GդIENDB`PNG  IHDR pHYsod IDATx]wE^KHO %@ 4R#]AP4)'ʇ; H ʽwwg{_ m;{~;7{g̜!!>D|PZC3Ck0388gA9 , v8Cz*,Yx10000H13fl7-o5eÎ:^&Ro >A!l)-~~a?ի#I,iʒFSFSq&H'є\Mi pǡXjuA m@!DA)ۖB6H|LYҔ%_hyhy)5M ~; OZ97 v:QϿ&~ Ob!O_'G|h%MYhh7LR^))4kNXj4<BC ۖ=m{u3]egum5D~z{>rߞK 6K--o5'tʚ,flیєNflیmS;4_yaXP5> 9K懵{}ϯ-mklKPJW_.+#{O=^|H)j fIS|m6Kk3ImvPxM^flt6c4fl7wq)_$_kf1?3[y:eegύ̘J f1c%GJ)IA+b7~jov@w<~<ԓXWmیm5ף)Οlی2MaSgBOՁR/+OO8AtIuOg>Q{U=/iޣP>Q8L B@O?o(l````14Md|MbO;n<{Z '?} (xh0JDuB,jo)YY]FV,G~PH!TV)b8jʒFSFSqd[)&۷;v8L~aq֚_{M XRأYSA,sXU{ZRh34 :aW%b˖.}'یєNfl)3@yj2&@ pmƂFOՁihfffZo/fH)Z9{Ԝ<@cY0xE1R9Sv @cjzB "R-z֭E?wseiӔ%_hyhyɌ[)&y[Z[܇}<Džy4 ~3XaKyv\NDލP1*JbB޶V Jk043)a .2uz \ϩ 1mhJ'o3YҔ_ f FSr5_cPe>Z P-Ψ'=Oc-o쿓T/ި/m9j/|`C[g D+-N<.4eW)Z^)Z8j27͚:/jMIچ1c#7s^Q:OA #:ZYVSGA}ַ4C3kAZ[1Ck*# o?? %ԃ mI@+~{݃_{pc婸'b̛fM7Ļ{7 M2bL |Zq1jpS/_;?ٗ Ŝz@;[u˶Re[*ugl|0$0c֎8Յ6h z`````0T0#53MvvQv\8Jk w 1 RxRL"ͤZ=XRAi@β~Uq  0֛y@rDab!I¶^W} ?g15)KQS|5یєNflیm߈O=RpR̠Z?;bWu5Z'݉郎ey7n+a)[s.\煾nHLl& W)\w{/.|+V,=flt6c%M`Fk4%W5bMeQ{Gλ S!, ?ű{ewy?@mh, %B-Ceǽ7C} 1 ?$L,)нn-YN>e{z64RtO$hJ,GMՌ[)&wl8[?;oې46X*]wKO=J}5ɇj``ఖ|N)D*EyM|-F / 'MBOw.] ЀT mhJ'o3YҔ_M^flJ`ij;͟y7;7t+T]JA^oC/.uMے;zQ G4gK2WYO O?BSI)I=?iSeQ&wXz49Eیm4W)X۵7@ĶImv4UflA$h@{6J$KB~y4l44{!8Ž;lv<%obYTImTon,H5o3YҴ{l5uΠJ0sk4%Wum8SqUADD.z&j+8w]Obf 9}^49@`VD8o[?Vo]O_=UW{W" NdHZuV8>h74b~O$hJ,GMTbLFbY-YKceCA0#5:D?7iq=(Z3zՍuU{YT+'93ϔ7hyJ;:^~((A A,,_Q|#Wc@MՔ%_)S9mhJ'o3Ik?qmm𔆧ţof4RY4QjA$ֿj^"YAxR{f֡¦*  AJkm`ˉ;#{"eMm6K2 یєNflok>q 5Z|Z󿐳 9K]uSZ,iT'=='{wޭ[^,Su=q HfIl-=+_G7^4K6c%MYۤ6c;(F8ij|osh5 Ҕ8jR_ǎqteAZL-`,%F]Bۖk:N)Ug(y ڪ7O풷vے+AZkVh7;IE?ciF3g1c믡s5یm4eWY hmm=_"FIl_36%s-!k+WzJҏ3g[h)>+[+é>4 >l)WW}0g F^)P( m?s6z.\n & _*U^5'^csee[Ŝu[wJ#! $eKo~_WFz,}׍hyhy㨉MN^)Mڎ%WxD^)k5eW3 Mm6[Mk?y+2Hif]_~ȡ--)eZGw"?GKd{J/(-AXnprhC?գOi~8woF#G ۤ6cgM5h9mx^[)ƞSw|G{vcKp[/~ m^U׻݌mRxU=ogA4W ْ-̫f^{p #LB)(}c8愓Ck?\OKIcXD3 ft( Mm62ޣ}~8IA#_3Sc34_rэѸ7λ)hD)Z WbP-#`1*0k6Z0~x&hJ'o3YҔ_ &(FSr5_ʏ9@U7<lg}c+{(@fb̻94Zx+%/I<G@h{}9IɏxK#є9MY52 k4%W5o0ߟ jlR^7iͻE(N BЫ]OR3Xo42"ĖԵv ݝ8cdb(FS&5e8jʔApGֻh67x]٭Bk?̓^` +.WD==܀^@0=$R¶$ܳ8ԓ䭷p 2tMՔi_wcOl5yk\s-P ͡ 䉂7FږpuWBF7x&W<7 kԛJk`PPxS5W"31"%?g?5WyY${e4%WS|LjtMՔY_ws/1aq\h q߻ ̟>I?Z ({8b#.s\6@C 1!gI^x} .d}Ҭ֔^)Z8j2@Jyjʤ3f½_*N [>~4@,f1:OCPFq\xJK"es$h-8BP_NBK<}Y|k_#^^MՔ%_)S FSr5ecЈ "43fOfZ-\oI)-J,_uzG"UeQ(41T=̚i\AC )@@_f KJ@{pa%l$}jʒqԔ)_`H0e4<᧿=ZJ-}ohؖ{U뾬iƿAc+E{]iI15gKk~`fr4 (aᇿ Cn괨]4000ج0[)nV)SO݁fDeǃ44ze,[R^Y^ qtbsFI^3sU2ܩ53 >S 31-FgIR)k ɛXєNfl)32CQG}J3P2}LI \)}R}qc\,/$H Bζ_xW\vok^)Z8j2l^܊W!>~_sN aY^+;SuNкM ;`UgzJA[4?Z?AZzv8ꄓU+v`6ck4۷ś/pٕ眏f#5VsZrR[vsY*SPDMB)=y DO!g-s\9hi㬊 IDAT)c/eh+)i )7OIm6K2|o W|#8 kϰ׿;J}XkS'Dvb5ʖryΒ+~1qR--\8И{5j47xc(}10003 FSr5%׋>t5N?/=;ڄmbꟈmیm4eW[)nPv'[oךz?Q*HW\o+ɾ^4@ɛFMDA$<;ڧ' Z58hvt:=!c̘x?npD?1Mo3YҔ_M^flt6c۫ؓNWb }Q7Rn#sʎQfBoc/+DD@{vԚw+Pk[z 2 ̙+;fϙukګ.7;ڄm럘&,iʌ3 FSr5y Ԇ|%HO0`5TS bMYu4)ne"z7]O-o8h!\(LADA֭^Tp٩Vu>/ ?1M-o51a#<<ßq=T]qO  Xo-) Aו ` k)S)-Ҁo!jApL"!` ے[slH|200H/@:yj{/qo`Đ$hsUVyIM,:TC +J@@ XJAO?{!Te'Ck5eW3 M}Ƕf'q6 9:Z!-J]k?=;.IͪoJMwݒb[Kttf?$~j4ypA`ܸ8q+jHFQ o3Im6K2+hJ:fX|џ`Vꐫ?ٷZ -y^wŹ~VIzoo5e(4p Z,xF#[RAntͽK,&f_v}r5%g[Ͻ(LC¡߹`#¶MC)U7@&Ee%MYۤ6c;( A!e*U'#ZXYk,i`vђ|-ŗgNB= QBs"HAO=;}}100Hf@yjr_KURZ#hזlX㟉BΖ+;ޅ:,{'ES|&&X]YtW/0DjDT l)ܵ?kFiHxhyH1o3FS:y7(;~~np ߿6@O? ` !Fvn*ɞs1LMY5/ZOw\RaU<|}pspxgۅ:z"a 6Eflیm4eW[)b;ǟr:vk_x j\@TcAd ݻ*U! įae4Ek42""+vm+ Z!X멠פ-?y;Jkzסc `I.\v׈l)K6c4fl`Rk4%WӐzgɧ= 凙 '* @cUJO9D cZa4Ek4m2au޶Ceּ05D#sA|aKKJ<'p־}]٩k)KQS|5 2o {BҚt-_=ؒPSRj\4fFSF!S|~0wV/|UUA0"@@ {ADN ҋܹz%wBĘkʒqԔ)_M￁A@D0aKuޅʫ!rT]&i>@^*\Tu'XW) 0q=싯݃R% f@zy5/~޵>]mCʏ? pi}:z(m)KQ%֚GmuZRT o}p/ARDi3f}X,)+y6ifISf|5@zy5{Gg$׃?=}kϟ6IP7uWQ87MCKDQO[ ~ ak$m]al"1/|`ۿifISf|%9i5iy~ncSЬQ_臙A'w=?mP5h'-oXB9-Мm'V`#  ^ |w?>/Չ Ԕ%_)S FSr5cb]w|nn{Z~J9;Wg2q4ѿ:Z wWGװ@ ((,$Y:׬ZuYĤNL,GMUn Ƙߞi債&?smmG# }ΞO5L=``Vy˞s$آUjTQkÁ?\0kb4r":}_qP.D䚁ŒhJͻ˼0~I詺fL$smmKL$.8gQ Qz{@GMY55?R|@u+)D Fvf" Y~a7!M-o5Sیs9;o4z[8fhVp1gg;⸧ A&@ ʚ,^)Z^)ZʃJfͲĖvnιrLD5Fº1}Lx;f,FEH,num3Im6K2+hJNz¸- &+hm=`I᭥=WDkg߬Mk4Evm * ¢m͖gNo z6r:Z+҈W]GMY52 k4%WSecƌb xJ49X8= *tN\f޲A@Yה%_).} UbOi  ߶fL ,){Xt1,^pXյqԔ%_)S6ck4Ōwm>LaGJþ~e23RИm|Q5655}'< Rb`up0R ^Gkf(ǝ| kotwveQ&,iʌ&H/o3FSx4)4o7T=RAWe˖hu=]DD@*qheYS|8%mʎO>''Ro2g1P'8gbxGaI0c˟ۤ6c%M "Kf̚Ӧ?39x0zXU=U -700H2\! ~^;cg{jG 9RH!`K_{᷿Ɨx$A0sk4%WRq~aʕ2|LjRی!O݁C8;7a{ `A#oY]S[*)"k5W@-pxk֚Wؖ\) (!ׂp.Ƴb+/oS@Fd4fl)3 MwtHy4O^0 " phoy\uW>7hCDõ0I4kx{CG{;{쯽ҴXCیm4eW[ixj\tٕ(u t^Dlyxwx@*ImES|$JЪީV[r)JD&437iy{O){|rIJflیm4eW[ix+pzpw^=}h)=O)}fQ^)Z^)ZޡRqWԁHeYI ȒqԔ%_)K6%:ZY<3obs c=ҥKL.FI㍣&py5F 考Uވ&ohͶ% m>v)X7Ctce4^)Z^)Z޴i,<\=4o[;Z U[Ɍj0Pk d e@R3vR-_ 垞>e eY7&A5@zy56R6|pvǝtEa؈~5-r:|\)=^8iFSFSiDD 㩙ۃ,S3/XWSɟ2@30a#qcʔ)xⱿnpX=ۤ6ckmیѴ/KW IDATz%>4Le0fi0 R*{z["3.$MMY ͼ֘h䰖 .'jqCkS6 sHo?ۤ6c;(ZZ[q=c}fi?:Yos/A4uMe=B. U)R>OU\wT_5 TQm7\Xbb`0t Ii56m[{;+a5ɦbavgѪ$NK--o5 U]=VJ/cf=wk/)$\g/eg]5eW^fl2!F|`n̳^{>bs}huw\@k O--o5޺R߶D9R効S%7_H±ǟHf#ˋiHy,u6c4fl``|qig{)][r9k?ѡu``Fیm5l\K'z\{pPoڢT:_Zv똱%Õ~'^)Z^)Zެk""ZYV=Uz3̙7rdPJc¤ɘ9{Z_ fPSqEe%Mm6Ӛ,9睏aǝ$'Ih-Vs j﹕pԼFSFSFSR s a0mt;C_;6s  ?;x^%d .=M,6K2+,j`Pig_{=eCk W5;[-)^i=;e```[ʜ-Iz@ A[Pa! @Y_xO3mX`M#Ѵ '>\z5hkԚyF?L9W铺+5<5|@dm8MMM/t-K_oZ'>D!  `I%񏧟{?$Dlu1፣LjRیm4-oݟ=vCu!j`"kʮrj\Ap`&hhh3k;vW-WuP?t @kF3ϽM>GJJ>e @Fd%Mm63kozq#y>)SIm6UϘIil3mk(]5ؒR wyG AM-6iFSFSFZUZ#yDdW]Ou40"`ifx:cW]dɶ$I{cc60!GB K )/=K H @B/.b޻zݽ%{t{vf-gfs‚硩 ?ܒ K3lHi` GL&?ٓG%am%D"䇉( ύs/m hVdyM1U{czeit͎[ɿJ`Loeֆ:W͛6*22h@FT_*&6%FoiPH: =NGAIEDhl!&%KQT4 ذ~]{fNF|C;(|0a#c*&`b4BK0w9.9w^MyaQ[8mMsAp6lذacXX g4Q0_r(SԲzA V92> %t66tK[x4&u {gc8`l##P5ɦV.|nՁH\[6lذa 嵹YEbhoNyX0W+ Eq{gm455;6 vwȔ ^&RurOff%Y,~{\ z<]"#2-Sj2L|p;W4!~㐤.9YA%:4c'aX$R$ &|/`=8?`7e|C2|o NxzJI@=FڿЁ,(Hk:42d4]XTbID$NLNR='qf|~?߰U7v,l 5:Asld${P3ut]$Túgy\H_QA6lذa cñ,]$bx՘mkv$pܚ3 0 0b؜sł0b<3)읍L0|6me$ 3"'N&㟤w`v:Ώ?Su<"r'yW+ޮtkt62{}g*RE{6wp-ӀU"]1U ~%DZ8 Y7ÀLF ]0T]GIXzM!}|m40|6-er\g} :qM7|V/:"S㖘>*k=n0쾦@&2@D$IRB_Odd^=c؍iu!J}M'( zy\fbDԤjzgo3b;Ѽ /݋A"K 2ohd##d2TL§" a O[29r+tg4蓼m(J7PNׂ:4MiPUCiUUqU#n~ghnC:|Y?,CVd888NM @.F̙'I6 m`̝;f΀iC&̅,CłdD"Zk@4(j.,x'?GGs~mF:`w7 Ѹ 3srVrkp\v~Kd*qUC(B0D(FG DDGDŠ*tMkдN/nngYY~dge@Q!8!Kؿ[xUU<^t|n[m8eHDEWhg$%rAY8e[9ܿ/uvPp*y2W^|eQ4ҏHS#ϫ.cv1%p4+M7Jޥpx[PЈP_߀fw(i]t-@^HIL#EOg$IDVi=>tP(q2_\kktS6:?{Wo?@ H d3"PIGY/;?q[F7eb;FZpٕKOH"1F6IȒ/ڷ4zK۰&HQUPu 8ǎ%Fz_5!t3̞n*m$9惀NC{&n+0 i<_>tS iCr|Ack:t7Lo:Sg]4vDdy@mH+F8O,C[[pA8pAkk;B06$p8:2>Ժ)SOF5hؾ}v!??%ţP\< %(Gvv|>\.' 9яu7⭷ޅi}[6l dc[|$ICJll%fzySpcw|3~{vĻ=H-lFZa10>r(ѿյ"B푳nb%"1;^b8x0 ij"ts򊆜?hmmCKK+vYv<*B" ??Y~?|>i 4VO,~&<Y$Kq)=T7#qTYybdaài: |;>$^yElܰ!}1 if{ƌC$vO j0ϫ.vJ$_OD9#@Wa*47`V޳FB$z{a9g+4A]>i4 7" "p8Drqnn.GaԨ"cԨ"dgtxCc1>|kměoDIO6RΏԫ%i l6WU"c52z;Ku ` X& qg?E^O6G lFZ`¤*?—c/$YÍmgmn{@ho# It]Cx-hhlvM&8/$'H(!p +׬Γ  C$ B5`8b8(B0BB004MЍLC#GMXƆIqUY]_ sXs3H0CU&@dcOϼS߂H$X4ʮdb„()-~n&~gNRm/==! 6l %vه5k#,ˉrT?eN>().FI(.)AQQzv!' i^2UUGZZ[QWWF465@HA̅{-[:"Q2С#]:6;YV+vtٓcñ]K=./4]~ٌbn< "r_Xu[w٧/XjIKL}lU5xbĠNswCV tc0q߆dHdؼe+֬Yv#3 Il4ƍqcǠt4 7၄5ĮE1X|^Ҳ1`ꬹTB`-PPt4#W3N_P)BmLTLFaWzLé,#֭;VaOhtrE8\;v,r:AD Z=ZɤPyPRRSk9S DKK+8}cChhhX,F_}lD䉩D`˩ʥ("DjYf Bu|/qkSi o=IOI:4jL#]j+O( .D<0pct׀3'WӉ#G⥗o@0sO}ҞIK*\p.SFNfofcPXX1ي[̉J934RbfG6 $B0^{m<_C9A(xPS3 ]ӧMá@4 d8`DiΛ&|C_{@(JUI{lذ Hb,Wo=ެ.ij-{Hbq=W;.V \ء}ܝBchinNa/m2N׫d3,4pF;>o>yrLߌ -`,CY< ޛ/I_m4(S&U2kB{ʫDPydbf$ &M5KW_`6<}ę4C&ϋ *1kt,(EcDuz3>1udL\mڜ1o4ϊ'bCQ;m0f$rFU|DRdc$Usa ˷?G~KJ1w)Vo,X#ҿTB$"^/曎2eZ_%IuZ}<غu;&Q-%.h)t:O%\ *# S[{;> [tkH$Q:6kBYۿD $|sd @0j&㊫f{uBOvAs,rDb*sBŀT>񭨪} bacP!b1Ն IDAT/2^$$RGcҫ0g,x=iv`fۍI_YsoիעK 6zU\"L 1_POeIWQ5;J Xh''c{Ѕ⪆[s>/<4}ƙ`1x<=_]t)]{c $=C؃vF\BGccyyZbЕN!UqGW`.;D$B0z6nB8I#.j#]l;BuѸ@eG@d|<ABGBSSw`W|S*2w=fi@ت3$df"v(5Mg|tFWk (S&u}xmێ^KgLl诚4 (..fMF.2TU-[ݻidl 2Sev5jV$i!dD c\M/,(8/[-tȑ^BzNR'|C/_;?Hܨ#,K%oYI74]&.i_/mMGҽ,cxgkH423~|n7n,TUW;9cF N-- dlb[t{v״9D(\P60ufR ⮩kk?/\w=ƌGWp8ԫX}|mȷ?6/О1߻*zǝt&t袳ħ@dLމ_E9>O$ݭ>!Ğ^R0&?t5sGR f8kl'o9t J6lD޸_8{$-p:d/`DZ;z2oB@ U_0c֜ldC- 6z7݌{M@V. @3` qBPu񀮋?iEQpxpБ^C׋.EAAm yy8q'?`%TyWlFTm&Β$ildf]ܚ-;A&Ei6}>`S_6 VSɣt)#:o9@~q~Ik)LL{\J|fqqF.|Qt$ICxxR%izjjiv ,\oQ5gBo&;`]k a:`4ұ>ß_P?^_}眷%ecJ?[^_`^u.KT `]d"S6zؾ}'z{e"&W{h  BO~ OM\{6lj3O5Sd+ n"1+ȬdVT5ec1oo'B\vt@9!6F"&VU=G8P`C]*eIz (Id6@u۰Y~*U7% @MMv!37#xOa۶C ),/u9|L0 @d& zg dac]/~wzoz ث6aic 6b|ICq=B{bvo#ADBBaM30E+ g Dؽg)ݻܿK]qŵX~RԆaˡĚ';XY,dYSq9;?>t*|ψG̣QUTŒ3t:i$9媶`䞸ϖz εӝo:ʔʾ IP:zt[f33u88|(ѱc1yrua8ŗP5'}'jFݍ+!&~z PWX #1 ,.]H DbD4G2LҪ@$:l %D j{߷`"sxגNPCl0&''̞XZRu2bRN}<ƎI @$I`!FuTWO:EG6h ;v~I+(ID4iGp݅``ŊkO!xIV"B{Gv܍X^$03E9t:|3'P7J-8/d=Wta9cN.!3@$ pk1 veWl`Eß F(w&Dv7aE G9:{eI2acÆMY]RbD@ I`&}Wv_e8|tw5hYVIPw2`|m >x<}N> C FwtQ.8n0[@Fn"`2(,ºe:~@{[[ ecoޏiBLd=; I$>wm0B0_a*M}m=tH"uذ\vi!A~̐iUPf3nƎɕ$_cǎc$4զTt5ˬwh&,\}ͩȋ`~EYz(l"$+((V2eڛxo ` ]K{7W]=]Or3dq~07S'"PȚ ֞NKV8}űrLBJ{{ADضm>.+-l|ec8xp6n$Ut1P$z&K[0#8+V`5V| سc7Ja0BÏ[nC8AM*=( 17;zM _0O"hjl{+W#ZYq9gvTH$w[uP̛7*DCॗ_^V:+ "3cmܔ΂K.j6DD FeeyY CQ(d"1V#AƦbp5CqW_z`Aj,ڑ$ӐᾯKn-_v$(kÞ#F!l=?D[髽{DZ+Q__'Q ӵ{B0c=kni]i?Y!í۠(]a1 qcxJhIիއ-7 ~~LSD{:|YLp7x ţp٥YF@!]pv܍&E_{8$$羦LQz]$./;tdd72XN:3/> t XrEކ榦EKޓg̜e@+۳/}׬(;"ҏfg<: "dy}#9CY ˲Lg·Ʒv$YӽOCW$)rpf,IL$%°`_Kkˉ+rhtDE+EE3{fKvÇPoD6x2$J<-!}ƿpRnXNSߧ=i7xO @q8A%QU{J"Wu3=ab3}lI'dY[CnZ_'X}444$!Ŀ݁XvMxc"0D۩̉=h*"&a I^}-pe@7 vʫ())Ƙ.c+@aa.x1zYD O#"8N88 YPt:4@QdU{C4M|f$I6m N'4Mu@\UqqA4i*T*7m1[w']gz8c=TG_u9Ų$=t(`Ć9 L&J(7\$d6* fL> xO?B` {>Y|ޯ@D桱jŦGG꣚.f䤞l0%62tc"iXf-;.\ ru !`6v)iY oיtuŜY3[qfI!vp$V$Y$$P76◿z uu3:`2[%ţj%ҪƧ!! " hkoGG{¡04MQ9IYZ%#D-S\rCV*q fA{00 X@bK^?;>?|{)P61dYMݎ dTU8!iK0p}xY4~S07P>vTU3-xCTk2&4IG@'eҪhb%@YbG"{ʊJ Ds;׵[:Wd>/QTAfꁃ=Ml_I ˊ{gX>sA:~g%&aWlV:ط;:xyy8s3$YF0DODz>ͤi B@:"(ZZ[چ:|Ass B0* "b漘]>w'Ѹ@S2ShL$s[y `u+Çk|_ a9s9s?4B$şvƣ&~s$Ih "83c̘R}קDhmmEkkZ[DŠzBʑI&"Ȳ   ۝8rv!;+ >/+,YY~|сx4P$hԸppppp@Hj\E,f߆N|ZH(0EANn6rsr| ''~n1gRUF$k7`ˇ0cT,\8&N;͈B?-I0_Q[[,MӦbڴZrMNNd׋AlmȘ֒~f$.  o?!Ş=g>5 w1ֆF D^BcD)iA3Ar#Z(vb,9PX2/s*Eغesz74 a˯ ?ů!dNoj`tȕ D@N:PE1'à ]FG،cǏ8~x!n7Ɣb2.)Faar %a@QD0B0eQVV$w݈V ށV45㨫GccS"^{5vQPRRb u¹9 8ּ[@MMΚ;&M@aA>G<|>0ၲ,cx7lU]ژ^æ  `zp(wgA[[;9]`8x0@rAFZ޹qlIa{\c`&Nu,]7V|Q,tj`f|Z uwƝ! q@b&c^Mذ M_%8C{*S_mgJkL'vxPXuH$v=r6}7s @_U<R+@vvf OZ\Mو.mK\kN. . لBtp--سg/~g%;}+CMMLqc ??^N#I`b{9E_&:gZ X~#v؅1cJvr MJ\΄ =ul& L,;Œ0~|EQ5U4V.IM^<9O&//ɇ~} gr^f@-Fnn&T {mO0jB?z:|O-U se{(%"/vy~ϟ;CQʬnbu^Y0?U{͹x=т]t]|ßWX\cM"4w0Ƅu M P2 r|^|^.)i<{ zAȲ|ҩB\.p5|EDfP'y{oT\ڭw~50,?7n &O_w{;OG&kl͛K/Ʋ1MZfՖΛcs_וy׮=wֻ\[Amm5XA= uMGd$r)+tefx\ WUR˻X:JJ{_}Ew<˧x&{x e7IPXX|657n Mg 8Y}df+d\$qiX00 dE$_qc[oC=p$r!`˱s!IruY\R5!I:O"サ VAII1OΚqcv{P3?`e6W6oي 桲'_tLZiӦoaٕ}z0s4L6[ndzϽ\0}@Q5}abJ IDAToٴOcRsJJH36^F 9s>DU͸aVIv!a,RSQ>&z=x7z0dYFeEEe m|,'au-\|)?.=+0CԺC5h'ֶ~:u8z}o&NĔ)4i,_⭷߃_q*Ȳb ƍu73tt nZ̙={"F9ATUC,C @ B(B0D0B8F$E4C,fcTy&2 7>؂mw"??cQ;&TbtI1^/`cB@Q̞5, cǎ0\VIFTUE~~. xb=. ܽL.Yn$Zr9y\OjB JCPL7ƎhL COm1,v(2vm|]DM)^, H׬KH 823A>=`p5Wcg)hM-8r(C]}ZZZ  Ši:л"9NB$Du hhhĖ-[q0edLZȲrBpz'q⒋/@^^pNsfDII1|ظishgFf¼'iod߼||b W aܬf +@278A%$<éo?-\7Hk_߯z'Sm?yt:OWȼ{M޻w՝t!p]X; /ὕkB6NY utx=6l܌\`JTM(+'l|6T}t2Zf&Á. O'`*cTQ!_-عsE>}Xڌ`'@53"B007 6틴ϤJcX/$&"jBeo֭L&7\v *`f8,[z:^w N5ȬmJ\rɅvruVx\8f9bZKMw[ M3\5~4ME}}yVnbj֠|,~?yHk}'Ι/Z $ocB1cя\cDѴ}P!ı֎mfη,}2@!QҶ/(w~_h \êOsI}k<~&Li(/%W]?>,h*x_Fy8L8~Ėn [(}F/Z }*2x+U6v a9p8;vbp8Uɓ1}j-ƍl8]NJ`)ڧÖQYY%K@nn.z<_ zYhHwW# p-?N҅&tS6y7KXH\5~ea\g"˒`ab'"B!/+ #DdGbu19z kn@A~JKGWb1ͱ523~?LwuI4LZyg1)CV-zJ`q*mDţx8mgNpqGo yǸ+ 'MپPǚ.eOp5Uqy gO8}ho7Au$J{+W ]Ǎ+~p̺qv)˜s;C~4MC]}yVx؂7Yy,:k:#">r^}MÑyOi_Yv|eꭝnNL}Qvsxˇ[6$2 "ߑ x(=2Rgzo-s`aUI}u _ h:Nsǝ""qEԬi,ED(tM0`%f1f23^/_AGG^ҡB0^m̚5kjeJ_"BKK+^}MC!rB./K,^DܤʒJ+WC{ u2o_x2{8W3A ` 渁UN%ז{-?{mg'gٲ%[NWծV.sΙ r Hd 09uy$HATtOus~]]]8w"0{v+%sX^^.Sa Z /1XVvbժAMm=rsa2xuz~!e@>Na pHF|A/\h3|Nמt_4mg<=7(6j+o-}hB@z2 "-ɚT7/*!0l>p8N|~̄j}dk( NH|pnA~~^${8IGՊ5WGLj;AS!4$!ttSUMi! !'13v= nҒAU]MȖc|ᜣu y$HL&ܼug^-@Qwc "p·Db\ &3tNܟ 立φ> nFrRs0'T| %sf#//A%o`*(yHƆiXP63fLC띶ILk<@πHU5-# r0p /b/B%!̬s7|9IFuJPȝ۷va'1:t%sQTT0Og,7"//w$4˖sxÏ"9F'#Arޝ..ZZSHKKB,]"779yIҥr@DۀoiB3@N&_zP;tYOz 'R0)mSb c=:O1,Y6G:1;mpQ|WhIիqE(;5VYjVX:՚=DjZ ywzzz 4 ]i݃.!--EXPVҲ1=III0@!t"|a~yCB_wo!(o\?Qm`"^py iE $R%|J41, nل5o0\|.cm҄‰OBcX,#""(cczd7;m `,f3n7oƭ`&J愊*,ßHh>=MM-C$c9w.l֓HmD`Mx><,9v@I LUMз@:yx?BF,Kc㓃G1r:jkAes K^Xt1RRRqu*w {8ܸi:$'!?/硴lg"#~QB pų2'af֏1 P=6{f!BLi* ?w,]&%!WYL`}/+Dӧ --w ;BNQOO/RSSP^^69zz[{XƧ_}II=1?HXpMXh fGCS3][ׇdd, >Ir p\6gXE--sƍj!((%A4lĴiдxPЄzc[RV\͉a8IC|Џ30\_^W/_pggH<}Ҷ ^mӼ@:gCFۯ^vC4(V7Z!tAU0 f%#Zmw'i+F7'?2 9\.7>w_瑜dU'E1P_߀'τq3ŋ*pa&Qhp޼|󛿊C&6 {uz@7n۵6-W`((TpvZ2vEگ|yg&|R=]Ҍ?`)-+g>ڂlB"> Cs3 fSYQ^pbgl9n ˖-FMmN:ڻ1(ƍ[x 6VUڜq1Njrly8#3UUHOK, "55= e8u,.^~(270"I;ى .cNI1,^2ɤ)<H>_OdΤx!'HvN TEDSGp^ׅY҉0DTlۺ u2xpI̛[3xpq5\~sTU&!VX㺕&Y3b2|k"Ճ<6:H8[?lpmL`ժ~dyWOgfCNgj)H(Fۻ~*y1Vci;bY1p6UC~40_ MY=}4Gmw99Y0Mzƨ]\0΃•4rՍ7z]]6ľ/ --Gn\ϧm+Wǁyk?Czv|AAUMN HQ);5yIQ-j_aY1,1B6VNJKiaW I& ?a H/G뚟L8&ˈsukQ[׀W!w 9DY<ĝlpys!V`)ڱlbTtCwӰ|,(GKK+N9˗f y6Qqٳ99qw/I$FE]*D2*b"' -- KK+[Xa |A5. sƔ._.KY+J "Bvv&ٳ139GgW7>w_g?x~gD"̙ӱm&$''"Af ee`A)>\FCS}"q-33֮ƒŋى[յqZZ>eҽ}zq1tuucs{`Ai8DbO6;,o?Ƨ|~AzȋH _BD+!2w3hljF04lk3={e0N9w* vmC^^.TU(DŽKhEql`s W^ǵ700BI pf5zmxa3\k$*/ Rtf3~ v5](?c'[8C?r 񤆈0mZ|>?cmΈ!p]C^^NXx39n߮Ż{UMӰj | (g]D9L> ˖-FP8d?&;18\.ܸY` b+e@% E{W;HʀJ}__c_HEVe00PH E^w+ru&tttb0lHdBum9s[lFlƕp͈PLkVx[y$"*8(*,@a,[ u himfC0BQK]8pq YdeeDE% ~lv'SUa%<>x _loBYfs^?BLOIcXx!jjp Phap0 8|8-AALsvzG5k֭[ 2i_&D~RRRPV6sAUU%Q[[۷kҊ;@E9us!8 xH$D90`w1MD&*'au30[j ߎ׿Aɾ%[-ie?BPal!"$%%amohDkkEYCÝ8r8^`1HR0 ySBUU(,5iA)HM9ؾm zz{Q[[K N+c)*"AUU;~ & zE$X,J"p M{lL]Mߙx9=ThD zCaYͦbMo _a q<%3{4MR1MpêUcm8ohG`2Dk"^yy/2$[" zlN81 S~uN|o./A~? H\SAgEnjX| ֬YS'ςأIF1݁Cadffl%1ˍcNfyKB$$$`mHKK5LRB 1`5k&*׭AwwZZZ܂;mi8>94Mþ>FQQV\6ev$Sf:eJO؅??Cbj TMD{|9) fkf7_`g|Kh<{'Z[vC1Br5u8q4^~y/`l!Z\v#trq~,zrTTO͕@L f͚Yf`ժ;B}}#vvAUIQ7dJ9ۿx9٘=HYɤ1?~xH.0)[`ӿ;Mܗ, f915!ɾ!!"jk ]JXl &Aatw?@Ssˈ4!/~3̐c?EArr2P:.-]%b R/1É@0O.H 0s)L:E'q |`(?iz6G=%lR-Xuǫi圳kr'O1iԏMCWƛoWh}A5d鳸r: ,f3܎#ILmsdJMMeŞ=;ӋFܺu}7F?%Ř9sF <|]*$cÆuɖSBܜl`Ų;F}C#Zvl~p1Tfɣpr/\‹/<ks$qcFog`Bws͇?'> Q8 4!2&æMqu\~sV1V>s/\T5u8ulp,(Ų#EA GvvQV:^6j444MӠ(!ݍc 䩳ؼ r"+kz|&DƉL#oVKbD#pVXBrb§{?0S4QZ2>^D[]C:J*;v eX"j },A8CJHMKų{v"-Ie?C6Vd1!"l޸v45jգ'&4+q^;_gvDHhBR'"_ /?  ;=K"XSikvi*U[?#-)FbRbTV)I.^[շG]4 [6mysX֭jT$''!! EQ'U|zc YYU+`;Ԍ:466  3HXXz ذIQ$hT5;`w# `HǣMHHolZŽBR?=L4 "h?X6E_ƀuQWWko\M&n߮Sgk678gxi^MTX8 [6o|p??re=viHIMANv233EDFf:RSR !hĮaMTE&)Xl1/nǽNk@cS3mG@?AU1v޽v4bQE9"`b>WpLlfxwҟɦ1JNj??½>\LYx|c `)'Dƕ6ŗMYغe#iU I !(//EA,4ml""p MaСBPBmۺ99?ι"?`GsF&Lf$'%"%5iii@ł2\Æ }6C?gddPff&+?. ]hll[L1؅湎m4vÃx?QY RԨM8]^~#3):P5 :{, f3Sh۟s1gYi)}N?a>ck%`Ѣ T[ 2.y^EB/߶8r`h>^(/Ǫ˟1r?ǀχ>[?[} ˂FcD) GFF:221\l\NܸUkWo(SPI.))roI$@/zp{},s&@Ӆ>lI@BBBdd69Ox| DFQJ$X,س{p֐@\x 碲r8){ 4lH8!;+۷mZ ( {zqul\%'jb9(-م6p oנ>&";c iiO.L,n}vO"yD !K$ ))3sgľ jc$qA4deebgS7". ǎDIL7&GsW򕫣Nz8Xl JK>{:W^ǪU+`MH+Q@4!`2)?%%C]}#kP[Wp{dp볡 H$r{gG tTǘ^!" |>?</7.7N.3'%%O71-hTUŢڰ.b@G19p1sߏOE"@nn6m܀ĉUIᜣ--MU@D5^7xQV6 @QJ$F]L7AS5~x^__2\I~ |e1-sڹ ų C0ѣ'z_Q렪b*$ p[*zb5%%x]o*~W%UUr@2Lb0ݽvt')rZYR d,^NMϿsfCZKHL> > 醍9眣oQW1;8z|>߰Cɹ*-[cꫪ]GT$E #3#֯{7CaYV+Ġ.ȀJ$}6'zP$g@X=MUՠ4[_$۷ҬY3(J|kJ&,^+p ݹ1ܹL&y6N:-Ϗږ1?@'O{aZߧ>mHmcщ7naƌ?ֹ>MFFkëK.Ƽy%z?E55CxN  g +6_pLlfx1=6 kci;~eW@?FB@4 jRԅfU*fJdeeBӴa%2)m""$%%a*7N]#,;\5!p1̝;";#Ukٹ Gկ,_뫢c:W q5kXfH6i}*V+֭]MeʼnSgoKuiQÃ?cs]Y>qRU 8#XڎG)\`RhBAAUӴ mx#ܼY0i/!PTT];l3wS#0Ơ8GVkCDƪJ$&&O -~S=H ?s K_,f.될;GIbChfLn&K25D 燪jc ~׮}ƛofɁ/ DJZ ҡaA4=wkF(8"\El6aU7w!ΝPOf3V\o|$؏'1\x Ξ8A&'TUx}>xXX[sχ_ov˛@2E/=3Cc:41l6 la9:AyEPTXM#bB& --wpY"BQQ~_ŊKCq4#99 &a?.\oMĀIVӈ yxxT(hjjS7 Qɀd"4 3gm[h5$1EQPSS'Oy0l<~4k1`2)زu#M˃f0%$EQp wtBQ&2QU ^EyyY\fdɥ$&>tItOǃ =p=FR<^/N>LJ`;d d`aXΌ {Q1V;qkV4*>7nVdY̚M[]Ʀ1 !`;07(!.MǦM2줅s˅g/rM(زe#Rb6Ua_kJCI'>M{X (<|[2LZА#P<!0 !elc AUի7qvmTŞٳ99YCǓ䗴ɸ6 A ;wn?Kml6(-G7g[8s>!V1ЖMYEyi8A:G:WAwttaCϧT6$ dӺuZ\pyHYM\'"bȉc2FiomNcCgm<^'):e@fTU'{/8q,۔D6VǂG %`G{0p\a" BA,߰^bńko˱6G2 DԔT[Vհ;5DQ:.,6G2Є@߀C9߼Ղoⵟ kdIB --{ihnn'P[W?jތ5!`u9qofIl PY|̚5p :Y(-c_h@_}NK@z> p8s<ž>lB! ;6o+ڤG`AUU?q‡ V{s>lPHOOCRNUUEϕ򒨢 pB$S9xIlopt$aǶͨKχ^xwňD+v؆rXXKCIB=e4M 5%6m0|$4>݆$@>=n~x'?{(E$'%;;;wlEvva=1ʿXb/[I 6E299HNN6 QXr9 BHAw pG? ! Cncc܊|RdEbP߱4ֶ&cCyY>>dؽk;fE{K ;,Dv2|'XDB 11Ip=}& 4sssj=8gh WH1q~Gy13?QxVJ?C4ώdF+:" !eԒS=Y};oAY MOVd~Vlݲ kꨩL&\)izIQ^12C]w IDATo{×9]ܰ"5Mf#(&YESDc2Fik~c=}vA]26:EI@ʀЩ `sǃs.߃R1D269s^|Y(ܘ AJF3g66oWGB82|T34DBD36VJOɸ=>tt D~'|c#,9nǛo dndLU+cӦ b|F"BjJ oۂX3np}G?~_1ܐo{v7fΜ7$> " 8=eCPHS pa6wuucDɜb0JDbwmGssn>c@EE/0@>9 K;oEbqPMcpp8Qcf,]H ɸ"Ã4M3@b,bt΁‘''> EQ*yb4MӰm&é GZZ*6VGFzz\0"E:@@9ZZb#CD4 K.Ʈ]a2&A}.;rAQ Q߽׎~?B]}C\J+/Œ% AZ mXatÏ>0$$zAܼUXGAk9ųW_ARR+=}P5!>%O  @ /7nΝ!}wAD4<.ݻ lj<ͦI⭷ށ/EJr"D646fsl^oD"Bql|˟GAI=%c CHY`=α'm( n7>w (GJr2=9Q6MDҦWEEعc ~סiҡ'"(ݻ#''$m1^c( >0</n7fL8&~?={SDD5k~S/bnI16146ױȇcbS4Nt1ApyԦXs9He( `Ųظi=JyOG"#q%MsS|k_eNظ=>O/%qB&N&\TmM0}4ëHb Æuhhh¥KWAD1s2Ӧc*$''MymjVU D}C#މ%+l]xS5(ĭk "pPQ~EGq pe&Dۋ>;AUqG )T;`;N> EQbmĐӰuFd%9C(.. XX?x7 R)W77ο`*׭ƗY̙3?"cKBڌI`wx{H90 Mx'o~p|HeAY)WYj5s&6m '˅C9?|==0@+7F |YV޵/aiQ~hvC;\A9Lj~lv'zlvUUHwsl,mGsN.'NFMmm݄m[7!11=M4Mck׬5"l1}RPss ࡣlǶ-Xx!2a2)$h1M8ؾ}n4m±t (..ix+Bn>Ɣ ܽA+|*ӧijzmppJ?\`S^T&zp]]ʵذ~-f͚)$`0b˖*4 D\lۺ fY?!sBkǯcNl,_V`ƌiV{#8|8#@ff6_gDzzZrcphniE08t!=( a2X}A}؝ yfK$T;X8?nwLJP[[JlXIIVqcE%͛Ќں&VE^%Q;SMP[WV:}U`Ѣ .Djj*SL&\rGG}C# saXd&,&ΝouIQz흘=9 F#jοdB8D@!Ԍk좢)Z8!"b۶Mh`ƌ\Vu9>WUmmwމgΡK,eK94U\Ј?r Aiعc 6T"'' 1'N!c 6.\Yf3&eA@@EW\oMLA _ NEuu nۄ͛6 ##΁ddgX|)q8-Dł0P: B6u\r JtBAvV&L&[9xhljƩgq5ݞRRR8/1 )1T`s{PTT!h®m(ǃk8Rj'NxvaQzR<߿CN9G~=ܼY={vba$&U٩!1ъ6 M-DhEʱnj% q;w9Y3e `Ldgg#%% yȩ5CXhAUAOO/jp 45 9&SUs!""0(+brX,s،?:KdyXlxB /*Wۋ>; FHL"BMM:;Pv56lXMA4M`س{M?GFKމT{2Ap{z݃K"== 99c: fa|deg"-5:D Hǒ1YB@4x< q^EkkkG_ sx_ 23P:.֭["-oXvz/_sWοc wǯىիW"55%r%`u_$V:qm4U:Jkys6TE҃SK7l~Xj.^gAW?~caETU3ĹAWu=TIڎ1}_4٨HH )) iih|dg#33iiiHJJ^XDh%\S4+|:uzNXbPU>v6[?I]=ŀχ`P@`uP:ƀd",[ (%%%rMw>ݿNp Immwqv-jkco9GgW7~j\ CVf&fq١ P1dONzmvUM&ޱ6R R kŧpmCҭmx7puK(*,4hxfxKD0³hFlMô|ٽq\>qCX,f2̚`W84M  BTRU AG#ZI|lhiCulFrr,LgiiHK $%&jMb:Wݱ/gi#UUT~x^x<^nr֏~8Nx<\nJD9~pyB0Պys zpRu&8WaN5vlC Aj0\.Ng(wE3˥OMbSCcUÅq dff`T\<"#= iiHINb8g UĠN{IaB_t)ڦȌ]LF \z --ضu36_\4EB`̙x]o>ֳu# gMm}?c4,(/ܒ96-Mc A4 ;COO/lp:n5r`';φֻ  APL &S8^ p}D4 A8 >Gd0 )) ӧ|A)-^مHLLD0 _c ^鷓yB45ʥOƣ1b~N8w"X,HH0d2#!kf92¡wTUCɜxaq4ۀVr0`d2p7mKM` Xl jjjqEw-ˡp>i_hBXv*ٻ/G^HZHHq)R"%Җu̙33s<d_ssmdٖ{e[ %.fKu( $% յP |?ئ_$̈_|LOO" fxxx[TtRtxvwBH&Ses(JT? ;>60s~zmՁB5㦃݉mNB`5iR ]|L&[WK7z>4Z(8߇ڼJEG\o_l4-ēih|M7r ڄյҒsvw{|k_E08$)%曯"Su>zzzk_Xv_ ~[w}uN2Et3 ϣ\.#!iEnXVoߵ3|L8Ԟu^]bww~01>`p<1:2^ڴsHM~{ˑqC'IZ&h~g%nH$ݗ\6#DQ~.ÿqy-/#k'>޲,)D57&&ge(KP("NCMJiHkih4t|^JeeK%Ӭ/ΕeG(a[Ozeu) O@]]DWg'zz1<4(148abhp==석ȞS.lI1K%屇{c:)S(jZ(7:%c= =HGeuSDITVul @:_9Nv!_ eatdDK^(z🸈ڔŝ +YTDX@PBP@P@._@.\^K%2^Mi,i@BZՓhVOw4B(J5ӏeջ tDGG::NBOWՔ=Aww#jEt\d-&4r̘zc]ieѪ{:W(UwuȘIi@OڌWMw}p-NyחKQ|嵗qn޼}Fog|uLL{lZ+#ڧ_%144ё쿻:;;ف~#6^]r˲`& Ài)DV=gRAE)IeN􊁡A4z2_루up@!P(kwW_2Ήcc;_C8ARMGx⋟ʥe\:fR;GuEm:}'A];'X&I,)ӃAM&!8!q@_b>/ko❷g{gW^}5O#xahhScA>Q?2:=GFI]/B0 Q0!Lhkt";#뷰^}o*xn)=Nj7|CuP0r١i;DSLN0M tI-?yԐ=@2ͯytwwj4=˲022cQÁ`&T- -S`xPpMηB=e"ϓ{mTn'F8po2˘1BF&Ww1ڢO=@O<QYQRz31)"J2~_o_~ CZ'|!yrS9']Z[S{Ս1S[[!&0MP,N|Lh4G#j@@ l6|k(JxYQk(+R˜C-kL|>LS[ M|affOsljc~~PB"AX]A"83S)TJOX[{6^EDD1 "4MΈs5\!Emmg??{蔈 #UQT't쎾eI|Uo⭷W^{ÞMڃeIyēiWԲ8B iGx` o~ϣ; XT:cZhirluKL՝-ܸy;ߐxkXXBǞyzS;Ս1S[S;1 !`ID*T:_AՊmuS}@Pz3bJ3q-/7zS;Ս1S[S;1YD4!W;թ-VtL>'TJtnD P's|n߁P^DDtquXZ&W}ᘈ. Ѕ|Rװ_~ _}5LNNOZ\\A"A._|j;#Pƃ˹ IDAT>Ytr""j! 2⪆B)Tv8 !`Y޻P7o};NHDD-DRp?X[oW_2FF!Ȧ 0> B!Oo}>r; QQESӵοd|@"j{O?^֛cffj@$!_,Ct,mirlmP$~?͛ヘ^}`P'7˘19[o;$j|EοxceLʘi@қ=&!r{gW^o~XX"_9O^;n19[/crv~KPBLժSBO泙1^tLmS%{W^{/ELNDDz" }N+'eH$ |5ɽZP:[@,FWo:G !]7p]+/| 0 .&"<)ežDOj9b*\.Oo~_~E8%ȋLBR"eaYC48Z)D"+ɟ9[aP""1 dT7r΀O !aY>*B^y%ʗ199˲N +:4d-?<=Ӕf˘ Q{Ou.[x/J!p&b^mWbj1vjcjXRYG$:߱V/c:P}@Pz3-czc躁{`}}S޾}Wۘq ƘکnƘکgq&b^lk˘19[c膌iW;vj1Ii@OPPr׮Çx+wtDDT D) jG}.D`LR"Ov&{m|CwwWq55V*W%Q,6"bj' jE`kk'TJDgSJ%^ʫad:-ވF:[%JIDm1O4eDm0pm躎:~wY $y=X*#P,?pB#_a&|>=\H\CTaO"c,6^ ) ~X{"{m J0}൶굘کnUڪ( 2< Miј}eLʘi@қcpoxzU/cr^lNĔ&u"a"r{wߤEuoC"Z$rEQ @(>>vqeI4T;D'D.$ v76/otDf0He]xLn19[/crIRh"B,đ<^ti@^(ʊ1VL|0,x"4V ˒'xɛ2&g=(K&4J) <ϓeL$4'TJDnTsֲy\_|tZ-y":'B %E}9Dk&B4./aui^ty2&geL{ܲ,$R$,쬿NzS;c%"cpEq:b*8:;8 aZt83QDt$L]DI\`?EaGȥh|mP9DDt,ӠַLepia eq@6劎;Z&k@8BQv.\\%ODG":#aIP4H~ۡ(Q}JDtzv&L#<ip@DXRJ)p@DJ6 w2XY$:; 9 zja"@'5dlᘊgV09>R]{Ł1LQUC6WNe矈DTBTt[(Y]9tviiPTEP? Ӏ6x4eg9Y2&tRp['~H?S]$+8DJ@Kh0M {l6w\CrQK.k""q\KX^`p @R"!4-ZOʕ BaDj5N!j*Ӕf˘IeMxc(ʸh<98?_M֚[/c^4ZnM,^dLv'P*a+xUyjk꽸}ئ}B\bjT/_mkAMez^DI{q/\^0)D禢%4d%Cq--Ńm QKSX(+yws; Z˄Fm/=˱ͨRѱ"OHγ{qOYZpJZH8HBdO<>pKJ2yT ud&P,W #L9Q۳;&劎$xf;ՙT -(W*xl8.DDxLz ;a|3O(.@4Mēi23sTPmds9(q:"rDD(B@ĒܧXY4{d&"q \R)b+l.EQ 2n@4,&9-MAT Dl=. #W(Ӏ6x4eg9Y2&tR` I,D),"|e ²cΓο[" B֧WE$6vCT7Aџ= zӁ2ezf*+Z15qИtÐB"H♕,gp,&7j1eIDϥ^7iֶveY~Wi@9+=R"":@Q%\q{Y bzb>r'y[PB8nr4'aO"cToG{hLEƒ}lH<]7a !O4M!jE~yl=4!EATx-<ڃanI 3yD) c0M [0B8 Nซi.> !ݺ"mve!jHi9cV04LA#JHe`V='U":ֶwWE""oc*26!`ayS:IqQ4L;U Ϯ.`in ]NG ؟_\MCղqB!$SiN"4Bk%4Q~>q)0jY$R?F&VhLzq,6^ݘN*B2MwM05eu:&{htI<`_{\TLYb;a @jֳ)-.r`>5|<^tpzf.[Z158[J\6wb|rݶ;kmm(ʸVDpn >E9,ǶoT&rY>U4eBh,onX.CNw9 ׄ=zwѸy=g&%W?)5?ٝAN5qPEױIT2 LR"&Pj$5p@B)%7BK_\  q Ǡxve S@Ke)J:OcW4b'>ZQ[ĘIk\D) >z[( 4t|:7:@iYEcڋRAԢك0 !Icv~ ꆔ!5E, ᘊT:^X?@&[@\M!LN8HeqPJ8 ja6ocģ,\4VlR;U<e |RZфhV4 ^;MYmVɻ1TVQ>-'$%45!o5L/`az-TuW[)&!'㙕 GPV2mzM#HGr[rR [0`t>wL૭u>;7\mp{ IDATӀ2 hPz3cj 41)>, ȤR]X,Umuo汊";{Q X]G_YbjoZZI- ኘ]+@Pnti>lϱyNz2 \D9'>ϙڌMv'd?'`Zjl1'@._9!jEGQB@B0t"{В W1Nv4$$"$ZI|zarpCR{$r"Gka6l;Vw9"j3znzJDt/ŕp4vg? :oc7 ^: '2 I%|LyjJNou~;@t w7>EFKRB0W|> >~z {L{T*U&/4b}{r ;DmOtl!Na.ytvuqzvbHiYg'ϓS*!-@GJeXAX9"q@DO퍇Hk)/^:;a 3X NNMXґHjK0)d:]K%'k);˱ͪ1y7=mf`A:D!b~qãc{c[-&>L6'"'F)RJy ۪(rX rn<ͬ(鹪g*n}!߾LZ !(|^__X"Uͩp\RLx ?U !P1j?a矈nQB@TTREp&gg l4N e4? ztTiէ#r;=7鐈ȃJQKIˤquT;0N~@&W{G7uQSt}w_zD(U* !WaYqx9.Y1 .R8\^AgW$`Z⪆}p]]@_o}Ӳ&3Hjz<R 7ζ_RJ|~x'e-0 hNSvcU/cnL' }cPmƣXZ}#;[H ,>O,p&Qϭ."8;Tv!JX0+$TlPuTHNG\eyD£|p)5م%/,]u:eW5{S,gE ӉFPB4Bb,Kb/n[..遉.D:⃡ZM#i::9p_ !e8$z{~6\1Us膁XHm:B( :MtQ8 "WӒI"9\p#-1!9\p,+;vZP:G,a]nWa!5vO`~z]NDV8 "ͨJ{ۛ0 $D(Jcuiӵo#V'a!J²d/wfji|>C"j;k);˱ͪ1y7DJ)equDvrpxtj 颎Br<^ Ϯ."83!}> ZχQqTí]$4 ʣtS079:pz;]VGc>^(˖1VLZiW &%f[@ocJV7ԬzS,>䶌T19> ÐEXLg91\ 6wCHfN@tvt`nzSh:~""Rmo0 4' !{Xַpgm?U l;He',Ncjl5DIBTѤS* RW104tht;6jeItvp)8Ӏ 8 "B@J0 w%[Zlp]@ /vQSlm\ѫSU[7\/݅y O%8 "O߁* 0V`tl 3 Xnj ci~}=D2UJ#bv~ hriEbz{'rmirleLލ2i@Lz,אT .bznNHz{c_r!`I)w"0j|oo/Rb|dKs3 "b:cV/c:P4LZ/LeŘZ+FLzc!DFK! E_,Zۊ߾4{tI0-KnE(ԩjSE3yuuꦘکN$O)@DԲiYC+]XDWwQ+++ !Lwnu>3L( o\S8 | A22'S2J Ns!8Eaן8 !x L)uzzBy<!_keRJ|>,`rt"j;Jm'ݭ h)˘ @r*z Bdym ;΅R"cqnSc_D%!Mks.]~C#NFbOjioP*=ԲZtwuay~#C!"EH- gNԐ$Ba2"{PۋŹ _oND4x4eg9Y2&tR>M;:-{we*lpS:`UsF_xL^~˾7>'H@$b{/,+nX9ǥY8ϓeLʸJoeLSz오D2G.b3$Z<5D8v(, |I/VrdpP,ϡ;{:uSLVc8R"r!)ecz *2viI,,bz.S2!4͖;R~/ ŝG"e2KP;Ttll4Mi:)%|q.tHDtS$f:=JEjiJmD,l&.,肕+l섐HiE<w&0?5OiJbvaSϾP,bcwjJʤ}$EL?D-"&-0v6ױJ(noJM ICŰzC,N jEB ElB˴)Lqw_4 ^;MYmVɻ1TVxH !݃ϽYlݗhi\XLn1b:BۛGøtYL)ku\hLn~˾7{.5O3XٕBq&s-mϒRvwubincɍk2eL4BTVbjT/_&|s_mloh4,B9j'==]]e[:uSLVcӀP)yeY]\F07ETr:f/G#fҘ2 PSwC(-?ƾN{{87A^?ڃC.~D<'7ʥv6"R\^|>?R"PARiPf1?Qk%I)1>=qlag!*ؔ :?VHk)*b"H˲ư0H XΡለ"  jխ}Q+e Zy3 YdS4 T\":+ !`CAK#XΡ#eY-nUiYEO_F{\GZKEG)BR݆T1щ ;-(؍İAH( &FG0;eAmz_ms4 ^;MYmVɻ1T&4? E !g :¡Tzn[4D,l&-'f0\;>z-4v'X*a+F"ƋrO㘝@G7کTK?^?cOgO 6^ 7SY1֊QxibBm_V{\d"^=^;n\*ݭu(.=f,B~ypyPX.c};d:}^=GKr~zJLç.ͧSiکN$LuO-!p*9* 6015 7vb>R>yBO>|7>5";X\(oy\`widqå<&F= j+RJHB)kMH)al<\.hNj7!03"zz1k2 acg|CՉ4&GGZDH)e TzmU0<2>ģڀTQh"{pU,>K?gNjil -7}tcaf#C{jclMLt ~"Q}@3A c{} [0 4Cuم8r &g\^Ec3lX2Jr[t%ۃ,I}C,+27?E.UwJh'==g1>5]]$`(!@\:V1_!as7 4Rb'JԶji Oq98lG5-K_Qd hqe!cOpg#3ܪn420Iʉ[k+omxA>{]YZ'YlS%Qr ^%K, (HT )i83ΡyTU&34:O[woݺu XEby RњAp^ȶKԻv+%{B3ry0;#-. Jr\v=ٮdR(1>5Ó3=ƺbہ<DMӐHm!rS]Q_0f&\vY4Hu= N&{]w動GM͉;gSQUE\|POėroƲ^z_tY8Y%Cany&cX[:|.<^]ՆFNjWΝ\&c7`tb5ZWt0h:V6Hg0L~.L"Տ 08f|x~^1 ( T{x{vYQreABBpܘ"?yŊVJ וi(xчOATh "8V{-1=1)xܮNS(LA~՚e Ux\ 7Uh; kljnA4>e`5V'ഩX[2 x8mTpnu B bzb cĀžυetL*? d;"qu׽?~ؐĵ&3#qAl'4>"kƪV'f0;ñ;@\ r0`f| c#N(wX4FSPe>nWKUyP)7_GpuMn3sG1Aby*4MN@`\1367Q)165#sr"V(U*s(0M$F#yh03L3s7WjOkYh$'ʿ3yp Uľ[ci(i#ejU;VGG/Z `fxnE$D_slHo}CTtڨw> 0M0!L-o'ũ~ r6M\np##q^:{r-hZ|#Ӝ)JKH\ }Q x=_󦦟e9s~V~>Oj@:8"$VJ$ 6iR}[M̟8PxbWku'Nt)br41(=t$$l(#O-rm6|.UA&>w㳟Dg+eġx1wVt;ww @j#r#?1"B\zbtULOc|dD {Go.ewl$' +ƿF4o2 ]M~dۥWr]NCCJ]H4Ɓ`(l/[mR gF.晹ᄝuBT`au r{*c\)cQ^ !4 z{Laʗ 8/kl 0a*&o>Oឯ%wɶE  %9u^]֫uuݘC49$VǹڿuZ9٢v 揟o}%"Ke]YEZw^9gOʘ^3SGYVY"BSӰPd'v˽fusv,v4>/TVf;sk?GQV/Q÷k#6r DADB`|jgN=B.ך'V7-hYdқ8r'x;\c9zi%;Gg gU,#љNӑ*ęɑE}*W`"AhaQ"wv/@n, 03M FnpcwHTeyqap(c3ArV=Jb0MKOWEFfAW(p<.^|/H*!W$$$ ia Dcq.cs} TԚ^3{fRuL,C<$̌d:d 6>14~o߯r\N+K8@rɶ lzCnU| Oh%R"q|;\ށt$$$ "#:♧Q*v6iZ3O#s]`f$6SXKn0SEptf~w`g|skgq%d6J v^p* ䷋%P3CUtKi"Db3d_ ̜}Q߿+lHl?.4?wy+eҩ+BwFN2DՀpd7©'P*>ld@9`F^n1'( *e,X.3 G&Bءmwce}L6e3b.sd7GaG:Gu*Rk1$$$zBMLyGOҨh9<ȏOv>gr^\ATNdűYGZI DZU$ә/1X`fh#W^Y2ľ/("Vx.}ya'\y ׃c'oFtڄn,iW4L1NN_f c)ZٚW[q BA콕?ADjX\I _dKUN _/V7 OG~,~|" > gWSv镜zneN@ԍzKB!arjgF>QNNhԱpc5G"yA~n"B<ʬ@&糳^Q|ݵW0v3kshbX>Y;'Y'@r!~_=;aG-zeP'Իҋ}|@À^lll!,W+e𔲯,V:6RV.-hc#QMOr4;^ět6:9}|/C9N3W?dž8: : whD8x_?{ *!!`ӄű7!:2ҩ 됰4 f+H 3p\cT&;`fy8pV3B/aEX:>\_t$$$!#BltgFTlś8` H*(&FW@vD6Rii0LԂ>5x{:WLث8NOapakc $V;I`  cq,/4 \#S I+ƿ)c" }[oh IUUZexOVʝ@:֖ft9@F+2~ۅ3Er߁X\M -_> |5QJKwV׍Go?dH@BBbaEM  XEbe J VJiH\@|xx`P7L"Ygf,X ;h%0tBsSC1rrloPTE _WԿbfvDd=\]_'8aP!ՔG]z%[َiu짺5h8:¡FFǰt4JM?S۟[w1# BSNٺ@(W*XX]CNNN{wc;uvpbL޹ ߉ &0@K{HmnvNȶKԻv+ .!!P*pǑJQ "vNݨ08a 7b(Abutu]mi2ǃqģ冷m둵XM%7:io}taHGÁכ'4]Y[uqYP~Bwvݏl[m]a@%䴗^ !:TcN@յ8=?260봺rq!nkCihv23^L! a϶ Azˉud 0lEs1ozuS`f0cSg^O_2@'r䑇zN1KbIt{6 B[(W@\a>̬]Cc7r{ku$$g "Ш:\Z9 !W 6_/Kg%!'}H4Ll-\h#ݰW169PɵU'VQ-nu/!@?EPʕ4p^ ;ceTf ͯ&SOA|4]?}o:~Abag~{t),~3| O-~& imhvs0槧:Mc \Kk(W#!U,mXN·TEQRx\*^7>q׾*H\#󳠭; Gxl%eMz,я !ku<ȏSеk;$cq<[0N@`n414|^O)u Dl Tk53910h09?_xOZVRUEQ* n^"!?;{*H\avѱ1<煷!Ele~M7g>΅{'7 ũF6]gF0a:[id)( ?E4J 0:> Js̘3`z| Gg(@y"aHqnem_I; # }:$>'4OE8AyA/UUsy%se x |^/j Älz <(WZ?o7S[7aY3Kr %$޵prz'M05;Cף:%nNI>'LD1$0w߲;/$'Ec8Q_]YuHma##y]7>a@"8_ ? ku- rj>¬=|K@ډ9{\JE,/ ^|qu] XG ENe#W`+Da]ytGYd%++ͨ^-'"琰R\`"nY) !Qhaqjg]Č9͉vpdj&#P.ڎϠ:66)anz& @pU;qxMxGȐU?ADqad(;o wݾv7N5m޾tR.!O>/uVdk.ѱj"y#3v/{蕜FA8;h,E=^}=N&'ۃH$H4]ӨR.BSv] K#3ⱿڭrD0pne LZ[c;i2,[[ǧo5(ky2-LW@'>}ֽ߸Dn_}JZe,R+ԩidWDd6[lzaK p[n+9ރt&U%Sh AU]-ZS͉1:1I@jfG;.O sF]qz5lrw3)Bй; bL@ a"(30(6ݏtW6πu "(P ݄i5j8!Lt&K/R,Vka"Rw>kKNi/,#rsY( EQz {3pQ*tMk+6up0[s={J+WP.t5e88Y p(Bmmtz""B~ aU/ʇ{N<~eO0n0  A`0~ rRCUGFb?!"Voru.9.Bz|6zC^tmpֆ=ˉnña4M45ٺ7ɩuE细˜B8hmgWTJ%,mP*w -Ț&qR_[kTjf"AABPUPDž/|Gr`6ݏtJ6V `ځ+.~@l6bp]?W/'R[#reJQz++9uv;;>i( euCP\K"u[:'"?B46ǃZJZ*;(N+: fF42Gf]کzAD],jjy8]t/kl.Ϛ~/OddM(HU\j+g?!|cicQ~d쥸`kXZ8}3s022Mס*Nk5 IDAT fq>o2UQy\-=j 8\?@Ӛg3(l1Cǡr!2CtdnR*{"Px,GfxZ< .`aezÌ;tGFS1MdwB|:P_?{«~yzrUU׿[Q(QQa&t`00i7<&Fc>'0fI tON땜F/VUt]?tNlgPU]nLbf0s'pBLby,JQW=Eh8zN EQxl$FG&'r'ڥ0M3Y^YO뗬R7 3|dj. zj/KkNӖ!AP(.B~/nGwlnԟyU4Mo"Z=xڏ A7V&Kgt[B1yǪj @n^_,AJN]Xf= ia;(PUp? `86(hkЛMk  (f&ȥWKmtz,#&4]otʲtͲl,EC\]&~K "V/!|#{KTi^؁v R ŷ\^$V πt@xs33 #@x9Uޭ^rvhfQT y_E$Ch(]P-aCpvr=ՍMЭ_W/k.'z\|)I [:秅 {Y|>||uGGV:!NsOTnIn)"CjlFG(ʳjuzgG*HrjN; "J\&Mn <^B׃$?H|.r4;UW`fILaOT8D0F*nmuY\[9ɑ_]7M/PG|[葇~t9 z#+Ô-H`z thy=86;XZ8Fk lfWF@izCo79;ˉ*2M4 ^=y_㡑0j*4;p:@3ӈEI%DZKud>w[]GV:{pʒ~}bfڟ+̧RU.{]y>{&amb ˋg1R1>1z!ZNp&:A(@T7Vfe(~n{z25U&H ΄ZY< $XJ5 NSjv8w R UUU|_{4;8FHtc — F&sl;%"k柬n>wl=jn$À^kYRA.oolBU";J aћB4}T|wfjajm\9a(vҦt0zu E۫&ʥ"eIh0UU[`ۿ8 !r琰}}[: WYcAo^FPS>Y[.{ U?(U3-vbåZC~o%w]980uu麆~ Ȥ7qmax8Bi0 qkﬣ!2S _vO^/9l6CD^w$9uVo/8麎\f lQ[#O}MH4F(Fzv8H Gg]LAeflX\Mh^t.Fn<L`%!*x<*b 7_iez6Yݏt:,{ٲ|.2uZndl<7dUz bÔd'MB켾 ɩz{pr[[h6pxtz;6bxd`^Ƶe*03`nf n CPz,Vhhd0dpl%#/ oʟeQkNBB|![Zhz=NO/b<}Y @$N{E "s|lr.{ȯۿW9 ! @QUkhMuow|P@8u[i"`u# MZ]GV:r|8HFfa}m<@:v8ģx[߄`@d]w?z7װ[n:<4ͦfπZ,n)FۅbV?i?<6$S .cE lU``f4 [T*`e -T д&U+`6ڨx@pR/nhk(aL!rva˚̈14aVygZ_ u)ƿ !^_ś^H'7Zw|e5mbkixEF+UA03L6عae&X&3"/~lnLtVz`fTJ%6֡5p\~@v&iaT%h恆Z vplvVv߃+ "45 kXOa`@8TU~(y~f28?|OUPU*jJ ѥ 0m;/_h, @VtMf2 `'d{Mc#bVEQZ! aG€^K3lbznp\9n !P,t[ %\}PǸzN/] \'}wjdҩ CdۍdvmkΦZ.bbjhuȭ0 {ћP*&?n6'LV67cF;0niSr:2NVE>A^s*vFND~{NjtMf y-@Nw #Ñj Pձ@&Uz59榧>x7O±aQE!UCA?=#x۝Gr=qYQβNȶEtAoP2忏zJFl=Ȗ`lLm ~0 1ٜb&؍P l7` 2 iR0׺ڍv !vT,@״+ƚߋA?`8e:s5,%cw2Fb*s:\{}- QaUSX|YЩV\Kcl8ƉY~}v:hRgWVQ,Wv8Öԫ?nN~B <5;ҷLf~fjCYd{M~daѫi6xzg?tÀP …Z@Dz-/@6`8ZW}|ԁuJGV:=p TUq a=ক8dMr@Jx?ipRB\0tvPi/,wry?岖:e;D\`86k5͙n@A(L\P>(OD`fX\Kh8ٱ;Ʃz/Wp]BNePwַ醳DB|ڿ+$HQ.+}7~z7N{Mf@eۢwiJ&Vp7Yz64ݰtSŠj7%UQ {+? 0 q嶱F|.j?H^cSz1C5 v=/v,0rq~W~a0M+uYsV:2AD+ .UЃ&U1EQZz۞$%۱5 <됰?!a !plR.O"F r3VjV66[ݲz2fFl8BS]i?ףZH$ƆyY_[E$GGxNlݏt:,[=GP*q3R'*b.?IR4?w硅窪"v/mrKt.-s F\v R`|>e˾vz]n7"#hU+`f?~ϸD!ЎCB58@6_`ze <>a2ʵts99{"z0œO<t!^ӻYtXczs,-o~Pz+ 6 @B^*$;L4ӹ|~~3M3+ a02JeDj3ʅ6dT'}d`STtq?z U]Jz=BكՉ8N¥tPעdֽ.c7Mb#%0P j?bvdfxF|S: kz#+v޵<떛kML,:Yc  jbc! ~k~v\k4Fj(]2`+*inX؆*z}hA幓}m$P$2x,qŇB5*WjS/3CULbvrr;̚6so gw6GۥZ<}bvrHw?msR,ex?ny3pɓ0 F(Ԛqsrbtxa0G= 3{$KcÀ^+j jU=m 88=^BA :MPAdmGn@Z `fbcPUe 7f@QĽ~?PL{f뽬8PYq&;ߌNWAAa@{V8O#_(lh^o0LVtfi<;51q'=oKtYS4}r82 548^eU4Pu[zXoRtj?z{XZ8tL.-W|c.U+#0\]4#'GqRқI ^ч©_: 0Jc9caݏ~>::3pp:vb|¶ Vb/{?){Ѩ;_}盃dGGV:zI$ !0tY"x}~!a@@S(La= a~f.߇0d/iRt(^0В8~^A( .>(f ,g?w?l]_[A2ёvmh4"B$5 {fddjR}Bs=zPZ/KtFZ W+fQU@ݜEsI;?{'U݋ϭyzzzrؠU"H010!dx6&0$#BjܕQU=vSvӷ;u"e٘3[\x h!6]nah 3iW1̌۫J:  IDAT.Vºt7ge[J>ϲzݤi2MFe?FV`ۊWS`pp{`8 Z&aW`ٶ9/o}޳:|trzm9}/V@-ֿqr9,΃1"8$iNpeD˶q3|5[o=س'1;H(lӟsZ&!`DsP~\5 ~y[~vBi?| 7|ླྀ{OJ6m5NۼMFe2ߊ!u mT,y}YB4m;Dn&ZENYI_|3~ۣfPl8$N4bgޛ͵4?KlAC &mmv/d\I u=\x S`b !]QsZ&!Wd ߞ/U+VПb_a3YXU~dΠJ6m7Nn`lGX؏z18#HlDx]JIHjOPkGO w"Aʥ"2K0Mp5[U[ZH:*?86=Sm`_ #CTkc3Fƣ;W&ed_cPe #|\ANݲ|pd\7- / ۶!;}=#w dYcSx&Id[E;oMatb/҃PE!:YarfRvI+41h?AȒTݮ`9B{-_/ D$$Hbb Dn$>]UO /k1Ax[QSW5Թ 9L;B3Sqճ Eu11r)Bj DمŋeIfqKK#Zm)3Uj" WȮ,\*!BhvkF?Y[|GNL\$m?cC46<v|N˹ѐv"Kos*ݬ1Rdɋ/!ܧ>?sRc&փm7z ݲ|u5KˋpYx1@Pt2lTe,d/4-lټO~3hpdeZ)cyNk5y]wHx3ozH)p/# iY^MVʄT{GG06CncQoigUz ;'"H K248>/ol1Axo=h2x ;=5|B(W*H8`Lx1Hk"!R&{ſgsyqt0D$mNmUxxB02,#Ml o#`XYZb>YQSvkؾq--,,Fb&!B=#K !~̗GA[ASGB 7'ϟg%ZvL˼`ۍl4n=zq?|Ȳ,(^H rC?Ndá]W]G>FD*cH$I l&cW5o#5DbٕFCCfhj5^vwqra3MT˄a]1=QvX!T<Eޝ/Ufޏ֖ǁ5\ 47\OçΠJVz&M]S\s 13} 3ԛJablE |"T r~jw_ɓ{˕j)f;v;w?ZT=BO*h,4R.;p749jHH$&jظ,`;Ζԭhgc0+ َ6Bvb0>Z,``߅Cq>WQo=v0`;L,<(~_M lICNN=/Q.W+c S&@hvFDۻҩ0&!!=0EQQ`A008R!P8~5+#v ǧg0 ޥD, EtLX;a>ZXv?rõI0|7~8lAN1Mw~%j./,&9,ۆmp!88 N~ПjRc'߲4"mC5깿LX2ưY8˲jS]IM@hz&atϞSfhj_ޮa@˕ Na%Z+n?_M/كc#_ִy2U2ir~k $Հm c-m7V`zr{ J |3j: Yֶ/iv~YZ?reUQCE͠=} X!P~0,DRpֆȱ-fVP *n-h-@1*8qr՜}C5mA7I'Ơ Mݨ UYzwմnnFk3A_$o_%5?[]Y,l7iꚺ@փ=,RaKx=Yf=aai9]ўx\_\SO/J9,#AOor!VkibJlfF=:CmWr FPmVy0Z,M{z9B4!MUpD,Ii ?v=,ӬQou,k4$3jlF?pm7z`fz H^v`n0=J?k~vTT?~ʓ.9253qzuZh޳u|SU4b{Hg:Xv;B.:cNྫr"y|7 Ͽ*M״[˅\S*]Q ~ψ4U!]U i&>Q*NY,l7iI~>ײͮ cۍeBz1MQEAD8 "lmO?x>թR0F,ۉ{8;V=W!cpdt=R2 {6Z OE0*gQeByߗִ%p!YőӨT Z펦f>^b+ȲcXݷ#[!)zk=p܎ Dk/?tͯw i]ϳYn5u {V=p\r饸m91慢dtDlh%t{z=ljVưB]ݩ=f$zz{ӛc0*% J<2Kd64]Mh^VvXX^YqM9 `0h0Ԭv@%nNDoZx}~dU't7-z+Y,l7iꚺa@˄:"1 b 0Uf؈/O&w^ċ3 K+ժ,|`n'Qг6H#0M;$X#`Yspěu];OI֊a@\p-.crfewe'4Fכp{+ $_{WG@߽Aq+cln;o#a@;)9/Ñeٰm qks^Og_e)꿀[5\^3xqa@E@Tq1y9e|-q;Qn/ox.@4Bkcf~pv䳶QBu7XU$8\$09i;\x}@D`v}wS~XY\hnUu u.o=-粴p/~8p{c*c䯵RX9}]~{N7MdyK{[6*'UE=jRs.ۭ [Yy DZ[`yaiկv+Z[mfw⳶g! x4{ǩ'F ns wBM?%c#/Bu(V&M]S\z[yb ~eTpUWAd2k /r:2":>uWk33(3Feh bkж΅w'(=0UQV`fmPa;h4B>Gz(M$iSNj&NZfjj$COǢxDkjs*_/0*!IdI)8?]k1As-9Ra7&cۍfeM)ek J.( rҦ^JC.e'gVuM 4M[dGAt^[S:WF8ތ?1IF"DOsTe8-ua;i?* ]YmY۱hP86}˙U?kF/T2BlnijB(|,)r4 >ȝ% ,A$5]oCT:z+M۔wʘؖqߍ &cۍ>| +0 ãpBȒΐ:-CDt{N/^dNR|d۵S:F/C!$S}G"0*ʦsmNd[rYc+Z "n gS;:oB!ґd4|a_BT n *!vk8?wV)1bۍl4n`wWpY̝ӟv9 h "&y{T(WRП453XάaD ֽ۱S:_pIbR$ /4ֆ GZ"TMkȗ8:5|I3: MUwP_OV BTüwd !]E_O'=Bo{ aIS5p:lCxƽwI?_|s_֠c@DqeO]#ܠiYi!; jNdEA 0U7w>y^l5y38eXZBdEQMdVs829RҲi#x-hlh{F_MT/|x=k2?ҏwkV__"Dr[ubIS5XSl!;PH0-Hһ6AKi5_W{̅aӲ{ضc0: ! JCt4 8_?q#"X2 4M עj3p>yxLDjZ *2Ɔ1:_k.j"/{B&ٳ88#gwYn`<6.bD=\ p˶`,ۆBpΉ ι;'^>9;Yǎ{X0z;^p)Bavz''OLAn|g !G08:=b^H֬nW2C0OZ;5WMU16< R ʶj'D3KG "b :8@Ę#k?|+7дk)`wMSfe'Q)6U ,Z`Pp{ 4lَsĶfWsIҲNˈZHGoX ryChz$jfL;Cͪ+[_\9b;VM8vNMmg_ t\/z{Kig/4,yR<A"}BFq׼ױxVJS`L9e M;4=y#i(=^RvP <|4OQ!VχU$IF/M=^ضRYVfB!"a(zKvlnv%l՞zy+H"Z,50Ú !0©Q~$ K $A%誂ɣ7a0@Mn`vTM?}!]Pb8K&nq l۶TE9ؓ=NVq0{cج i!P8޾~h{H0u6 .ܵ04P1$1D1׹0LLa~yփzʼD{FFZFNce$8'yWT4S9tp[oU4Ձ [6pm7zM$C0{ϼ mf |(2eEQ羾T2YMQ?je9%IBaLG"hPnnZy 9ȔE"P)xZlkP( LsTEӚ$dWs8>=CrŸoo,cdev {Z;XH薱仗s %nxOkŹY|#'?aS跒|e[4uM]syY=c7 sc cӎÝ!]3=m'7n#k'/ s3?W+0m[EmfP$ {HxH1jN:Xf193Raj3J!ͻPSr9n7,IPU`uC޹!Vϳyvkt.o=ضд0`b~*W* ^; "˕ w}ȉ|OSҭ8(h;`]$=P,qh_~+ib8稔K,-R)# UUkߍFh9DA0d˅Oa0Nr4yk\pܦJUg aDDD$_Se$":g. IDATܻ)Vϳyvkt.o=ض$j?3(.bI}@ۥ!ƈp|l7(1o4 ^"BRԱbfzLè},M,1I]x"߫F )l>_ۢukmNBSպڿz.X/(wĎ8@m/1wM !@2?]w֢\$@Ssy[QSyv&۶YDDGT~51 0b 󅥕 ;/3҅Rn` PyEAo:xO/ٶj8>)m4?#"*C,&ܶJej>O~(7WxY)Fi V@@UU7FW龜+vܐ p'cD7~c'ϠJ6m5Mй`;NcGq]w eq8 y?<4SUՊaCem;vD/ U`T+0MɚZviȮ,T*$+<$j'g/-mNB0" `|xv_uR]-'"QNŸs1y^j.꺙IbPe , p'oۛ2oi&M]S\zi1d`xl J1r~$\G dZϬuUyϾj.Yt8 =I${2 U][QӦej@X2 h<8+M8 ay53(gRT?c BvX],wi9cYcPe!ME4!2\7m`IS5p:ljB`j>7Cd6$I`*,7aaZ1".{م}$hi9^"J OR*Z)Ӻv]nbww݇d6 +ːHL>-q+U>>iOFʲDC0Vʅ{*3ҟ`baYBw֞"@%蚂d,DXy5fgfڶOEzݤk8[5ٶjG/j,Tup{(]̴,2L8|G7?dZ,lێѺUy^b D#`Q\m[MѴfCJ9Ehzo  "pi~iG&a9gىa ӠMvvB]*Bp{U3U*y׬]Jډ+1U-cuaz۟;[in`IS5XnoL㪫lۆeqoG-7(a,]|` ӚFBB`Q'=7B@$$sT+8limDB>=,6zOJDm K[6 : ݛ;| !#C}*bj;_s1R 7~cTX!ډ>ɗ!=8%8r$J动Td*U p !8炈pE*oq2LkB Wׂ0;KZN=b>$T]lȲL}ݳt?$I=uSb~ilǁփݱψtCO<廩]9y?Y`5_i~ucD@'/noB铺pV`z]iaaǏ~B.>pNf*]*=ʕ=OU#pyzѻy Fe,#Ao_;( ~Mͨk=V?BPTDvy aqH8u 'Nbvq so3uX4 &ƑEkō[ {sŰnɗ*p̌eASGuGއlbI}RW][!й`ZS>SHDB䒋) %^L:|1"T k~qiY_ 拥ҸiZ y^MבFQQҺ5MѴSؖ%cX]Y 9Uđi,,4^SŽ= 3X$of?KUʒF!pi "ra>% m?㫛m>8Mƶo=@ÇǏ~]Js% Cu#vyj<`]K ,{в; pї$!aC4m$/yVQ)j*TMpX8qr+]l@G4vZ]7++ֿW<?׸/Qp_ya>% U lG_Җγlփ&M]S\zue{s''>8p!8w K2765Z?FnS"B0|"ʧ_~(/$W1Ƙ8 7EDਖC>KD\Xc5۶(Ӄ\\Bž7Ï(8}SUHD$I]:raT7kB$1"4!]A4ꗺOꦺփm7zdlփ 4Vf[gpr.b${pZ[:Zw-\V9 'υH7 P$d*p8jJr64 V3MA0 \Z,>ܟ0)z$$Az7r}ruҽ['% IޖD$(>t]}R7յlփmq`R.cei> ^W Iacy{\adw ҵdP#M(z.F HXOC\, ?[Ff uݳ*IƇ164Yl9\7ReAx3%OU&$|mX` 5ByMiK؀jpp.,"*/^S5=3Bt!B hS0/ a(w/@O%{LMvP{FF0@Cڹە ! Ilz 0+R@;>_)hۊ0[6te ==-ysc #Ư"L O/{E K+~&aڪ-@b#zҤh2LoN/p՞zyuU ShH?X\HDvKق^FnG K_7J6'uS]o=؆@փ 4CYfiR\Ox⓽$6Njuen0TE4-;]$ƶ~I"ޓr 㸿6I79a]u}wUHb"Kʲo E޼?`"0"ȲU iƗnܧlem[4uM]syαl4f0>:+x0ֵ[vbDdVjR9lt噹K8r팛@}Xo0JD=F*ݏp$JèxESwR;@e@$ &ۓ8Iuݮ\b(oB|T1mFc Ib$y,1([_"nǏQnzۭ4mSn}R7յlփmv ,ͲL|o^J6FCP@$c^KF1*Wsk^/O$IҢk`tb/gcBQ~g'%"7[RSk(m]{+oA|?f% "ASek7݈]>TV$̂ho#%<m~(SI$)=>7E.(esg %+ ! 2z҈b 8nkjg^N]BDH&`bN9^׭ʽn7WKE8uOEH4Ѱ Qouۭ45 n`IS5p:lix-Ӡחw\Br 0bT ʈRR?エR5/4- `q3r} g$*zz'ȱmTe0vk82MUi|hnkiM ȴ7O])}Abļh? "!GO\^[4uM]syvcbQLLLಟ \]$( -jP,ӟb*W9Ybʲ{$o?B i!P/ MQ-aFlrI;Bh!윦VVeJWq!jR$#Id 1w [ɏ| [4uM]mH ,ZRF>>HUӑQ*8I2ʹ 3UUQp [zb,5{҃8q0fN.o{94]ǁLַI'{Ip*x螟׾|5,6`syvGM'Bz`cd(eL!K$$IʖqE{X(W烎#›LènVjaUAs64CS+ 5 }{ b&.ʣ.կ{{,KtMAD]ͯCF MAkw O|"\x$C40I e9VVЭ{G&(WPV,H j7l0Dx GFJN!D/ۮ~k ?_eD- ۶] l#a@;7Ծ=ۃB eôl8\;$D<!02BX4 ѓ m;h+l0 8_ba,.́;#r=LTCC nUƅ0b!h|~6.> "ȒXX}=tnƻX\X8mEMTVUu u.o=@Sy;8{~k~B@@prB4x Re/َsgX4X1QbLBMu$cpt?t=rn8CT׳HA^EXwES+>\ iH&b)[p\NMo⦷Jy5 n`IS5p:lxK?PU w':`َi']0着LKlj`C6m&IГC0R)]!1 ( qJϿR4}slvi=~}%o,WcqaP,lփ&M]S\zB`iq70\I2I^[p XKIDD+Y׿?xݟܥ*ZTGM$Dcq* Ov׿!dY@#*Ͽck9)q\1wl0#Y*2tMу}oJ~z[4uM]syZwa8FE)Oe#6?w"s݂*U*uUQ\1ƈHZ?h+ibHAQT2*!Nn @?"k힦Vx͢*BV0R?dY"U i8߃V)Mй`M-{A> τpD,Br\¹xs~@*Q䋗D @[MH${7Z^fiV@Iwt>H{Df55B EB9"!Z{mQd ,QHS8syıPoiXzݤk8[6¼mC܇M j!Ȫ "0u$ dB^Wӆi ՈS@DP)wXk * @*:`B=YϿ3tϛ P?|?1Y2"!E忉Ņ3ҴMyo,o=n5u X8V+܌;~=<+1:2 .1/8o՗Zo;N?m?!Y"ً0"TؖlI;j  cR==P IDATut9,=26|b5!~?*艅17y׼˭6Gy`#Ft"o}5K/qWPoV %ôppewVM!h$X8g7|x-hwA-MDqYZS'Rfqwܙ6ocQBOJhtxp]Unyg6_0m†ao ,no| L-މm7zݤk8[6Ԧˋ [?_xsQ5-0bBCЩhՊ#'a"ϯ.'"` P;" _^;u/[2B/bso5hPy*A?4X AU"z>* W_Z;~Ib%U(ҐY>n|3VbIS5p:lxn{, Ѐ |?p(kSO%By?"N{xjzzS8ʥbm[NhD@V164(vک B׸A=_"#*Tgs׆[v+Mu`sݤk ,.04qA{<d_ 1+qUU&7-{^f+/pj1DJCT dvKX€201}@Du \v߇?@7m<,D^I0oM^ qP*e,7lTRJ}Lōb9?{?TPtH)8¢, d2.r T07 W-bfdR),ζW-MefG׵ ݭM׏JY6w{P (򚕸Қ ol4WD7Vi&A1_Kcϟl:|45lѧeb/Y'~ҏ i0tq/_S_Y6 8iG )Sm  honD:@2a5hp !P 2Hra;r\ou^J&^df+UXN13 M?!c΂H$S#dn/BGk N?Ld.''e8gMU]`hR td-O^&eʔՏ2ʔ){=cxGd8::H[@ğ76.:8L\:20DT'A3R"LllBTlt@KK52- ɿ`f"uwb^_z'^-/3C2v~ϴʦ;fRO iB ahȥhm+.-,76NbJ4E44p^|˷0 ,fL.AJG/}Хe;s* @aY3L6>Q*P1D] 3#a߇nhBH^*byhPݕLD&@Aa j%=MvO+fGO[ӗm)?2Q(y)6 M~u7˃@o`8 2i .WE̜.,$Zڑ5*zM03t*}lkZ^).ib?/TțPƿuGw9-LISq'_`c4E7vڱ-bUHgҴdk͞6ˌ 8i9{7hEeDSz ®IlC#Z;(Labl e˶Nq&l:vmn=q4^fPEǑKW:~c/MhB@VG􇐎3grg&M5IS| oJj oM ilƾ{³鼷 ---5LQ&K402>Lђsxϥz ʢI jikG[glBXRV @cPw? 4tmE/wrr K M 4O=׏"{RCO=;3 'Mq56lAX2ef4q~oxP*hjnd ɘT24Ca9XGsM+)+cfittr}Zqe3̐ɄT\jen/!k CG*i m~wv{Mz?(S,;޵ln54?<>?kIGc8+g|cIS| oJj oM k^\G-Λ7}6lK&9iINIo;yRW47^dfݲ>)9;S\Vo^=j:^WmHeL f #%(aۍ.LqtboO[7R }CcECC[GU04 O?}/(kj86 X6 X)A'wÚA0OmnSELδP*o$O/߻}d0bY]et !C7P,2M7a @*l{ :04#a7S?0:^hb*t mceG\Г+H -m |ڻ{׋}=Ȧ']ӉN$MskFƋ+YVq4&Nhk#܇o㯠IQ'86lAq_U] X)A'w]ؼ%uwЂ H$a{^ "HV!_,{yg?/f?N[zx 0 pH j`2jȦ}O%7)e:|ÿo g=6Nklx`UPclx`ht^qO}u7_(UZlGvJxQPК@*F4ki[ިկdV4ؼW~dM]33i:ʸzdž76Nb*LU+Bg[6`l>PPרlZrx,!~bA_DߴtʂJ$DބInWkӍ ՗V`_ M5 kW=[ ZLA"^M,Zy\™\#eHf8Hҭ@ÒY2Sd(s9T{C6qؾ8m^jnl|h˰zdӉ[%7~H|% /<4eػ{'Ϥ ^I0oM غm[q*| q`躿`@uh<_m牦\ve;LeQYRK^T2 <ђ|b9ߗR{cߗ&_]NICGC&=~B=igOlx`)6-WL]۷z~ސDW[3i$ $tADu TL{7nm͍7 !HV\;*;1t4~w\r@ ahH{5ڊ]8Xk7)SSo4E7.ywn ,±*8eRض5'nCk+ y=/% =/Vz'zv&XژjP>V뚎t@S6C֬'?(JӞz&w>Aq'_`;+*.oM غ]nxp3HIqMd!~!lZ=shI4'xC0ɥOv4\;6QzĖҞ mM%u4fvճtUWb}Gα 8=`'MUPLYd,?>}Z\Dqd?JIÀkr$c$""AT,W*7_5}mgzIПE7@UoxUe;"wTk.OcvE2e15J)SQ뛻ՇBRJXۑpw2!{_KWwaڹoCeZ f*0c2V"Ou\y=+υĭ1lma5կL2e JSx5)_O0uo8=xyL2Mm.Kf kkGayɁw2ES/D#?>`,N!%ÖrHK@AuMkرeeXҋUj糮4ՖWi-o=jR}"4E76lVbώq$$X2p_7#1lg[BחgRݶ#X!}nmƤ# ڎ#~[ID5 ]GАM'<>e,6[ e<: ol4WD7Vi&ol&:IDATx_1>p`~k_ H)'pG@\q[眱BKư*8F,XܲrźM27O~a:R t٤]ر}3=x?u6 8i*.oM ذN;>>> k φm7dvr`7 IߟxjrK@Ƥk[;[( &s.\!5:wݳIQ#1olx`)6 AJS4y`{Tü7U=\}P} @¡pGMOhBXv{Ųt: U03; C_rDKӲ+D~~HSB4M ihʥqpv\ugiㆺk'Mq56lA*16lAJS4y`{Lاz֯iSO] )%l)=?g#"*WL +ZrㅹtՓY#13tM0f?M{ć 8r#~}ª@'76Nklx`g-82eʔE֊־ O<0{;ïπ< rdZ1~Es]dYvcxX5@ʀ2DX}¾yX~H/ BбOO=8Sw_eʔ)T(*Mդ|!V4`1}4`<_d ӴaK q$ݒ~dpogTp3)' !7,qxt"GAU0gfHfKcG:Yji2Nx!0M%ќ埸O=X$:IS| oJj oM ذN۵s֭yX`!.^LЄVr7e@ ui N1-002>בFvx0tӲjPuP-JC:AGO=g `)N7V%5Ɔ7Vi&olx`_18*?2MtwwI$~oXdIdshtbu.z)keN+MIU0&33뚶+eP6^"` Z|_T]q'_`c4E76lA3>hUx… H qߍ8~xvFۛѺL*R(UHTp24Ѥߏ :rż{dP޸}]Z 1_[PtVi&ol4W@2e^'Ʊez%u 3ƒ%x lD}e -i>W)s8/bx`Nz wguM 4|g5@2eʂA"^Mאiퟃy W^b J l3Ñ 0CBH%dw{>o`}.R' ]՚'˦e}Qè X[_ m1P*MGM|?ʔ)Slۻ{V<(ZrIi ]u DQ~aaeʔ)7U«IqM?-슫`@\m;lM&)%F0ë f9K߮߶}uٞ1{z 3hժ?pB$ /_oi{x*MGMD7Vi&olx`gUӁ}{fھo9Ag,*ӡ氡kϵ555aKKHS{4m.WF_MH'!?{Yyiku'Mq56lA«*M okڷwo~©Mh%L5HJDdJe={Dxe; DЦ031I^iizI?4!H4蚀ЅCVHku'Mq56lA*16lAJS4y`{R41K{i 8I8S f+Uq#qnǑ Tm:#0umec6 ?\xL~)M C#H 4p?m7m76Nklx`UPclx`h7kZIMB$ftx2J~P*/KU^}H:eRI4fq/~)3hXJS4y`)6 AJS4y`[Mmі kqp.wtR206$ /@ŲMӶ7gϱm՛\$L'/J&!AMׄ5 TZ?o2,˚B=i, 4E76Nb*L2eubB7mWC}l @z*ؤ,t*"J6L ~RdU}#ŗ,kP5r֦,M7Pȟ@Eʔ)S.#2QU«I4pS.\| .2.XDtRmHpˆ&oI_X:?=:Qx=PXK>rGePf.v4ڔv랁1CܣAp]x>C\m61ה*MGM hy`h7.413_݃R~=mIsYChuG߷G %&B8 cpPgk]٫ ENr'!iH& 9qz'^;IAq'_`;+*.oM ذ֝۶Y}{pDŴ FKCc/jݬkZP*/G#`w ^]nki|cqx Bx $ / ݴ qf76Nklx`UPclx`h7.5i#6[MV0t,X| GcL@J6)7;R>5sihft!ё|<Ex|tM#]n~n9*Lzsy`hISl|U @ty`h7n59bq_V36yK0^xb@HvK8*@Hyv#oonTT e""ݏG M aLHXjB?G X)Aq_+SL:3RW]+>v R ]i4MjL" "r9ㅦ\d:d.N1̎m _ ؀ͫ#] BБM'֔M/=JbPL4 AJS4y`Mmu/" jjjF #B59_@rżX-x8N3&M Tx1RXÅ]yp\]tMC&DkC{1\OT*M>G X)Aq_ -2eʔޖZ4x*R3ÖґpJ`^Pnon(ͷK)?hz@ (3;M GJ ?o}ˑ4tt4`'q_=WLHA"^MW)z.>&H.MlmÑ 5`vHf7,^(/|q+9HL7Y?[}2N=ӛl;R73v&Bp>c4<4tL#^Mq5W(AJS4y`jM{w~tرp[ ] $;8?~(4؎iLP= \ !9mAϥw49@$ȭ0t܋a~J_: U'MU% U6 HhzyZ4e('%²me?*x;' :CÆiNWA++=$[sBo9҈i! %o[GT75_q5WbN'`y`hISl|U @ty`h762V|+WpP&@S6zP*_ī4WS|GMU; 2eʔ)I4+XXxR$ǁ` ` aPP\o/y1̗ݶ-sGzP}Cp ]lhm^3Q('3SN7id6f|\~m)S,NDWi &txs{XbYmdr \>O[߸w`ݖm_48:q 3Gz e:a<ҐqPe;Iܷ7'xoƆcڵ/E^Mq5W AJS4y`M{v懶kW,5lǁ %0*4ǝ7 \&=TKG6 Q=ݔ=R2rQ_{GlKzV^M" RMW~78XB X)Aq_U] X)Aa &6܋d?$j QI$c8R>{yhisHä ;aO7\iٶ: 'ݗm\ُa:7Vi&ol4WD7Vi&olx`㤉Q(+_OY%Kv҄Wߺ9JptOS.=;*Y6T2a67pϼqzqitMs w/ !4A0 /\ /" X)Aq_U] X)Aa i֮zm-mz'k{4MV6ZlBMhlm?_(^{ff ͽ4~/5܏o/xgNAa U'MU% U6 8iv̶mN)_#cۖp@ f R*ۥL㰱 k׬iF_3Ň.f]ZX0LJ.f]ҭ-x94PrR!{Th=bBrd fc|r*//ӞW)>t1S|b¬+V6eYkGT J `ؖW1U. :X*5Dz~IZoef@n`w@{EشiV}LFWcŊeq >t1S|b}.r\9$eTO ʟ<Tcjkyf Ee=TY)-wEi uO?<8-)>t1S|b|bŴt{K/J`0:x/+@m3 @\[Xdտn)@ǒL|=B"V;oy aL񡋙C Li1㎀/%38 &WdQ\_1P"̔lX* (?$@ Hf$1X0֣L{C3Ň.f-,nC3Ň.?,x9ܭ|)!U˟È~]$8D(„Tb5 Ha##`()0h0t 1humhdL񡋙.Uߪ% Ŋ&rqй[=Vß >3?ӜkQ%,!WWD`*XxwXb*Bh]X]q]\kpW&q +ԃRQ}MʘhXXB<rR GmAXGVQa)>t1S|bqA>t1S|b~͂7/*`]XJ'V@$k۪3 Sݪ% `iNN-QAD˘9;&Kn8i4s,キo)>t1S|haq)>tVKCcs?C {'tR|k3R*p hTrG@*EJ0йk7][6o63l3Ň.f]-^n4vPXRbHC* {cqBB)/j ա "e;)B?̀083fAP^6 b2V8)>tO?J7݌S睅tևTц=gjfuTnԡD$&A FDzERRŬp|<D%ۢx/?jM\C3Ň.f],4ȇ.f]JRL; ^ (Gﷄ3/+! VJ&0ak->ghuچHv"1@JlPN^60f])>`]XuQ߄)'O@p?:G8՞Pt+2ٻ~46cqB*d@.Æ ¡={aY?JTcըǀ)uc)>t1S|eun%C&L񡋵HZϾ$$]''Ё@o.!Pm˱@n.mKcYx{8{ȤӦ|֍1S|bLq+^q\կǷHrKFO 0P\(9h7RRp]^ `dD (aRRk7\~7QTTϗ/EZ3+VC3Ň.i/& J1+EU?P%NW*5i1[]3J}/a l!KW/=y˖. )>t1S|b @|bŚ|^qqp8)K4-,f ~蟫io5q SS"-U+{r8nFi3fo>x3cL s|bŚtYqíwqG |_NbqR7漨78hL8UU:c9 Q$LaQ7l,/7 2S|b9>t1S|b{|މSC= Dܞ_'$`NekfZB1wd\ۮ`U÷p!`3hԘ1غy6F(3Ň.f-o+.eY&5 w?(ׅR rT?CӞ` hWm)7Tgw&\8(-!`[ ƫ.bje @|bv{LQQy|#(| `JI?xPJu@݇eSc>8xƲ-鬷L*N!Dײ{=ꪪ|8LALR)|(d}I|?I+O>=MSrg8Uj-+P>j x$}PJ?p`|.3Ň.=8nEV{0LJ.f]c&u4sOpؘJA*-}mw$DS)k@ R$\b:wh4c2jȲ0fD֭+u)>t*G0LJ.f]lc>Bѻ߀ppY?7LD@tODD|bT{Z31Q/00&Z^tQ#L):w톓c&O˗a PJ5HrbL+ƊUG=?&rڕ0ÁT S WfH׶1L1mc@^}pֹcc駟` NJoC3Ň.S'|{bӣ{kh=TtOx(k5YSfVEAD$"k ,zI"7C 򡋙CΝ GOF${+Ҟ o#Hux֗g}f΅SS1QXX_R?%{Lu1S|b9>t1S|haF?V <>`ױ ]Ǿ3#|BTa:}܄cS)DGʫyOew)>`]mξoH%B?sǰ4t?z R7@80ъ@IMIf0GN: ?iU;\!hi53S|b X.7pٕWC*b`!HJ- {ID4@h5G\ܰ ILukvMcj_"A&LfonLj1G z' ZoJ `D^K3S|Ti[ⷎmHD! X U53Ň.f,)M[h]ϼHCG@2T7 C,-!蕫L*o f,`W1:-؝4j[4r^ 9QNA"Ҋzixن>3f]uqfq)>Z |=@D tkdoQa [cW?@)N%,Ṣ̂ ѱ>f2͙{:\;oO%^s?cL!|bhUv?]ᒾa$`׶KVxlBx[0S|4Y;};|8j(-!Ȳ\ۂ28cL)>t1c܀Ͽ %x?l"ˢ#=_>H5NX3:RЉEIw E e`H ? T0|lP@X(0Ç.fgC ͣs.$( 9Ʉ}zMƿA*՟{ڍ{v8\yk[g{b ,j;;Ŷek^oiC3Ň.C3Ga cϾGKQWE/Sm}&D1[Ϙ6ޚ{â@a̘n ױmfV|{ u1!8e,ц2zhx}C3Ň7񡋙EaGGiNM}£wy:6ctWlmL\"<#؅Ie F!f ec 'ģ&XaUfu+2S|b9>t1S|4}W_z@3I g@`T fyG/ۖ3fQX.ݺcʉ'㤓,hf]Z!4>}3fE ԟ/șbcR4ZՆ-k7+Wt8 )>Ǝ??<v"ٖumu;]{LZ,Rrm[-A3&ۈ &۶1lLq* ;eSyYh!3Ň.f-,nC3G qEH$39:˶D7^OK( pw͢ހTjm:X@Et@pc('aq)h_`cyy.P0;)>`]{ ?7D\MB*%{b~—r pgmHy']\Z*?a%&31~Dd5(_lֈD3)>t1S|haJڍlƝN& #~ ոH1wybLI8vd%R t8GO:^&?H[bjq >t1S|{'qX1*_@s4XB&o @i'1._1sұM~ H@,!ض=h>}Al޴ 0{f]Xh];e;?Ы2ߏ@?f%Di{M:" '"  p@{hsT=| .%ҥ VZ[3Ň.f-,nC3Glʉ'Y|E]3j'D'WqwNR p^gG.XHX8lh:mzI_vlC`3Ň.f-,nC3G=֩sgt1S|bqA>t1S|`ʟ{]x.ܟ(BܐQq> <^GDTj3= Kea V ~нWo:P\ܔUSwL s|bF9g.|hd|"Aa? z:S/Qo<$ٖn R`h!+LcW Ų>.3C Ŵٳ'λ˸A(~u"05& : ``L+!UsSd L*D~?[ q:806u fυrO8be95*-f!Xft<SRe9SsTl#njNbJMc"A&ŴԹ _ ?):|qMֿ@)7;FR(5@ + ,AH:6|]{L&$!Xh]M)y\k v~vC۲: A?xP`?&u{f]ҷXְcV70C̐ѫo?yH&#MO} d9>t6眏oE%H* C꥘xD@bZ#} TxJ Y/ؖ;.gC;~:7+O} d9>t69~߽&dTMGcD@QUTQ[O =1S|b~2r\ϳ--kIT{nP"Ja܄o.`C)>80V~O =>#ty۪3O1s_cjyIx)3uh(X$c#qa#eF^>I @|b~>}'J8B4Iʵ@{>s L??jfOQ*qt7a /ME=v7C 򡋵JeaѸ J!7zk$2^p%`wf]_0ʶ:"gk ڱgѓ&+P~}42S!]ZX0LJ.۶}㛸󁇑**bUa;-AI3^0?T1S|b} m[Vk/g歊_Qn!лo?: }vsk™ ̔rH3ŇjQ%I\xWիA6  `?cҪTj/՜[ a@@t f@)/$L6d.Yz8V=!0.֢2Tر3)̠pq_00:=D%1`)>2fұc^ kܰQ\pmU؂޻I".1Z$ S/ť%d9< HYB\[n']ڙ)>t1S|XKNd̔l-4J"}…GA`cy9֯[ .7f-,nCkVZBLy*n~t%?_Ec0Vwfr))>t1S|bhȈH(nTl@}#Sfp IDATqC9]fC :-Mu?pI(V`F>/d#{~0m|M(dM򡋙C3.H58-!ۖ@b(俓 ZYq1:}7*| /3Ň+yqE#Q_m"*N%G b[⑊ymn ^ƌms"--,,} G~ں{ ĊBh]l=f,.J?i2)Ź.h74"d⌭U5wԹ@+|BũYfl DeO=AK)t1S|b75C' n@RnI_?rt|ڬ\6*8qװ,k۷R/RіyBBc[TvΝ7k׬6Lų y8 y nȈ" = 1Uj123Ň.faDf9Kr2+{̠hX@A*EE8‹ѯ_?[6mܸ%}C v{L" Wn2N -MP Y?8rW)>t1S|4RϗT!(1׃S̥CbCyYݥM)ڂC cR;pY`||fx\(K@a1۵%V2c w`]q0qiXf5֯y: EcL.ϙ m=33` H&*k?f NL+3G8e ~d`]I & <񷿡bk>9Q^43Ň.Ckc&OcϾa#Ta!#YDO-~T'bn 8ƾǝ@NV9Qsֽ'NI< Śիs=W-L5VڏED;a"|h,Pr¤t}NJkGxbKWR X!0zv1Rr(nACǎ7bH$_?_T8ޟMcpa]^ 'Xb$""/ޞcɭYw*R@*d??M۷ljaAEŘ9d<R)&1[BxRݞcŊ4 RumkL*9>g{uk`ӦMmo>VCc4~81i PX*;pmzu>0+)Wh}A}T*/Zf@,H%+6oo ]fk{LA= A Un?  ֍;Tg_C3Ň.fmGT Ѫ@rn fzMpʩq1͛qCyݩFkM`9>ڜM1 ?";CO б090d<"%dJ! f])>t1g$&k޳͚3Əǖ͛7ZX0GxWlRPN~ ᎭJ{I5jif])>tS8c ױ+H+@1V@E@Rڣ79t a4;t/C@TٯM ۶8݊nϱbj{1+.H<ߞ5Ϩ a kcr6]cq >ڄv<9 J)R1 ]۲]^EU5DTqhMI~~ W#|hd"Pmc " `?bL3Ň.Uŗ}w z?S +]^ADz e)>t1S|b;&QH5Q1&]ԗ2r%̤ 0fDIزy}bi41S|haq%wE"U@pQ$X1D*i 0jif])>t&'Y$*)@%.{ '/>_2(ۏp`g]ti[?eEy; @s `L񡋙Ckyso Abd±\aETn{qb2_oJ9i-,^ pUn_9C>`pj2CRzNJVC|%$2a/%?OưQ _*=f5ُG.]as/Aɗ*9  ሌ\Tgߔ`=?,Uh-Dz a9CD`)Dl[▛n_K)Nw:=z?^ p/ZV'?P5+VN΁Td<}ױpR*7|,H\pװ|wɺ_*0GU|ߺ:t(- ]ѿD`?IDSEf,z#"oS nbE L,`R~ $y2 L!ZH˲`ۖE :m%ضml"t9lh!ԍ^3гgvp(OYka)Uk.h\ -A{kx5.[9x%v s?%:v鎬C*m?Dc1sOݞcJ̌ f֊mشi3lق͛`[e%kPS]L&? JsbMBOB1`pd(((@qb%;S) QP8,+׋ Eq[13=8^{hP'A)_ ,Q DJK$N?PK%*|$eכ}Xq> 8`=,z^(,h93_(̩ }? QQQUbŊyuTa#*++NgAt"B49EϹy*md6 Pܡ]t=S^=ѫWOt;EuoveRb⫗"vm7$'lz*]@mCN&W ~Nj=[oK˾U>|t/! Fq:&!"+Da|K|ϖ.Æ d>QEin{$os.R*pVу3%ux\0!WTl_ ,[9jjlYMN.*eVJ5>Yye|U"@ii Ӌ~}W(--‚zyy<|?46lش=;g:},8 3QPgX% 3]/IG G7ނYꌇ@*OK*.HN\Y}3ڗA tr`{UUm5I7T-@*DiRt ]tFRtXBR)۲XkHd3Yd۫QQQ-[bغUUUƔ+`RJlڴ6mƻ.  tc;dزe ֬Y7OTDDq`:=E[?1cpRCf@JXx.Ŀl{ v^+:Ùtmt~o%O+.[lvﻵsEEӷ7 DϞ=PTTuQw\3ÃC?03 @&֊m([_W~W~ʰ2h63K.0hXmAݫX@ AiXЃqC`/clac'PڥϊsW!`Ƕ:HR^ .@)>RXsկK} |UpMbf8chѵK$nq>UTlÊW>§.MRug-{윙# *wlg%R}"b "D,^/6nܐOHߊ, ;T*FX.]H`P*H:=x8Q2X#I ٞ/3>PQ W/a͚u@~^}S@e᠃3avP*.*em|Z-QaaQFb14h m*C13o>7v4Rf}0S|aETc N\l > D$1ǝ@9maͪ/NvT)ۂ s|ce;d JvD6Xó~|QޜvZ)tM}'Q?BJ !'.=ѽ{7:30ol3=w^4nh; deed2{/ZK53G],`)eL1hP(#ƈԩKWL>DL6%޻(U2}bqI3f!E# @ d[Ԍޗ d|߯K?4**ɛ^?kҠA\E^ׅ1|t$hu f-r⸤l-$+DT\D꣔ :b1SЫwZslټe^k7,0?W}Gr4*F3Z H$\Ǿ2f.=32 ^ߚND8pƼH$\4c c >'c;Xz5|o5ljR{{M&%+\˚{ P0tp;l 2+ 6"Bh#:?/U4_G3R?|yA@m7oGj@B̞53g4r?3c5x_>"^Fsf`ĬTn %e! _sՕXh GM­ͧdAQ~~TSn_䀌, GDz5)V\n=^},qcG3D~U>3FD(-1GAaZ:5쒙⣉,H9Jɱ\}β)S&]2d2_}'?\v;D]XҞThjw@)ee`cXbewtK|:t(n F|B r <֭֭-rkfwy3wly93uj btڕN::Q~E 4_EqC^ަ̌!o^:$DkOD$)zcOT8(& RCu?{%v~8Pw<~pO1cG>l!d5Yftl9V̘`1>+`l¬SGdH$\>P?nV>gEJq/O3\>uV*J n!bRsW|+WKP]]5m-;6L Ph '̋x2@ p?Q)NEDN>8]߲xא {Usp=w=l5y_ahIFS2?ű_:}/{@zjx] b)1 qy/zUK3X'27 =xT*?9؃R/y~pթc}Rw^tlDbbf ~0t*"I?gf Ǿӵ~u`f(0c_?Nyh 6R]$H {tI> *c>Rl>NsR teLx=؞ s 8:2T@~Xv*>7lD.{f(aٲ嶻vT~!wmcŌ#'Cyy9~!w`nR[oUUU˲m,xnR)VZ\k:㝭g&{AD,"uҥ_c Q17ZX{~GnP *N%<nƽfc瞰=O'kmFmo~ /<' $m""ض "!̌˖qe_7ϖO>ۋk)6vu 3öAy 57pX \V8k`bpY]Oݍ?͹;pG^XS8`dJ6>ؖ8o[uffܰOoau}JJ)\pY֭kd/嗟5Emѳg!ڿ1d`9qlŻcBw_ ͙mƅn UU-m%"P@wmY:&Jg_RaPI[}_rVlWUm4?IKnw;h(g|*ZuKNTO^p!zȝ+FDزe+}w lҚfR*>ov>13KO>CYYym 8r {'zT:h${Za%F޽0qqzČS‹j/;;'V}O5@ދ1v 刭kHRWG2A3!ǟƒu;z 4up+&x%f%E_O; f_*`H7etN X.1nRN5! bv8!DMMsO;td`vGb5ѷ_ۧ7ؔɓeV;":S%IRIIÎMo=QI'Na!AlC:A&L:C5442,ԠŃ@_{l7$i?+Lf]Gxrߣ@*0|a~' IDAT_Mcq`sDD8YR]у?0@DCRx:"r52+ٖq8 4 oi ÷y@[O$V」1-dsBD3/}gMǐ!V &"l޼?W\N$9}*xp!<ߣ{SR߁}w,!<q4.7[d݉0s)ءR"A4*+ckE֭/úzZlظ 555ZR=Ƥ9ʢ䢂3Y/S**0!@ fR }8yLgqߝPK 0_y9? !%E)[*kcp֨ǎCC& ذq#֭[PVVjPk, %%ѥKgt*-EitEEE(,,DA* 7@2"HURwFMM jd3ԤӨBŶJlݲ7oMuk4*leJ`aau튞={O^ֽ+:cI)~2"G?2 SO>!1&xxcIӈ`ax?g"@"| ,B; !XR^( md%0Fon^5k?ƻ-U8fj݉P&s3}%ăY? U  @\\~ŕ89xտC#{ “Ͽ.=z!xvl۫o!"ڡ7ed6:Cqq>@.WJ&իwśom۴6ma8bXt h|.Ԉ%%]/ HTUUcժx㍷)~WU8GCB^PXXLs(W|GÏѷoL< FNk$"S)W~ѣF8\3˲,p;,'Ljy*,,СqAC0{ ^5;VY٬*&HsRv輂{'ϧ=`}EJLǘ GnO<6k%Jx!6_HE.yQ{7{dKܰl˖{6͸;!vo{ooBBIHJBIc0mܻdruz/fsv4_>ѳ3ϳ3ggv3}*3p̹Υ ?<ܿ^L<0-$2TVV4?݁SCGQ[[4#rsra45$z|r(ZIXn`ĉ㣣!??JKGc1&`q܅cohK.D!z~y2ef͜^.#==]EC0@P9Bu G0( 8nv:^kP0pB 0D|-c̨ c  C dq!33 %"jE@_@Ew;w1`#G >FQ!|qmsNDdY( ~ *jŮ{q2d0͘>͜1 h4(d6 B3ΉrrYnNNFv;"i1tѪl38ݷe#Ι[qZ5x҃r*I4W,AΉ)C3Tf?1 *<@H`,`16# +O)a4!==[6oD0(㝻2~#ґ v""aX-hlxmp"`ĈaxKǐ!ZI1 p=h6a6[`p8raw8T^,,( r*.]w%#cƌ8q (A[^WF=z$Ffh?Z1%F}}#r됖Ek8; zӍvYVHV8sG YYxK㡇 /sg~-;t|`3L&Nwr;^rrP2bVk !?|i3qgΜåWl,4ե/s8}1zt fΘ)'љc䜙3㳟yyy}jPgՈ-7pw:q;GxԤ_PV LDeũl} qſoEzn?e%Bѷ}/fqhWۦ/|ؔ4?#1Hs[׏|` @ )yʊW^}|gwm=I 544mE0}[,V'?'$I]z=ٳe`0xfLiSСhl#"6i| ^lsvmyKzE^@ϫx>w{gju:X1kݯFڿ3:֬׿=g +1E4ciPV*r9Ip ' U{~,)aO r}EEذvۍ>,L&dn( ._˗`[0i8L<ËE?`hd)~lk A!",v\Vް.|D8ݞ M֡StWmG!-=xC~iNb{_) MK?c +V,CYy%jjjl&M,V?IZInӽ됑W7 U4Z ^WGPPѣ0eD5Q'5oۉ$ 7m@~!3zk׬ $ &D]yȨЗ;HR쎰"xwz9/RQtIiMAEQtz+ut!+zmV?Kwli9~X̙=3h1p\vså}$Ve ؽg~Y]{Q_JLBD(> E~~Hƌ?A55DنKm£eUlW: P44w|b@j_KO3vz?f'hb)fpg)7=s$1ڷ f͜ɓ'FB1PSSw$ImNȠl"p-cTw&9 fq>r YY6K3b$ 2n{ %%#" oxvt:]84l6t4(={/.-rREV~[_ LO3OeF O(༭.''fϞΝۍZ /&dď^,lgw/[?>"t;F Zy{3D(Ћ#c`I4 hK8 Iٗ^.-AY GnAEy|߿|>PCFb /^|IJCwa8zDsEEX}ϊbIZ17?£?}_oOfn AQdt sB^nNuTI%SSoڝ`qiEgdg; o 7y_^'->UWBD;g&'N'2G0m^ {śoPPAA?IDvqI?~(> SL 0d`A酛Y2e"8+ZdYq5Yno4ߴw4Wp < 3HL@V^>;}[6"_rV[cpmoiZ(Iv܃kh݆s1vl)͝JKGk_ycƌ; Ʈ/IEyy^yu~/<:*+z;\Q8>mJ#2O#-cs>{VO<soYDfu=VtΝ+OR'0(*47\l>qA=ܡyy:e2|>Ɏ@,^elvTT^pYLf deeFY'K Qh={  %"'遾c ^Sd!?N:8ågq'Ikeϟ$CF pDt$N!Ƙ>z@#x::;ogq90(lR56mf٣FcY?~,>ƌM[_fK$}M6 j\rY3جQP}VW'lHe`~0ix466;`'I=uM)ӻaDׁ1{xW fLC@V#JMR_P__ S#hƍkqJ5\.WR4xxS_gro3ODHOdžkݬ0pۭ1~8l۶,ˉs>`aa0(**w0md,6NoB_bl{џ>gػ`T&ӸOmTNdT3rr_˜ XDmQQ/$%/N4V!",Zx&9kB;ϽT`c(+;߮/CeA✣d$߿c̘RIÕ+Wo}xDG@Obs,F M"ކo|a!oA˒$@6@je OMPlAnn.F*Q1dj ^ǧÇGI0p`!Ιp9]*BmnΜ9'`0`" D-0u!TѶ> $+<8 lbcjҊ@%^7bpZ|)ۺm;"[&ڷw&NCAm]}$IӬYXhO|h43a񨨬ž=\Y9s!Y5_˶kjŸJbkVرO>(싶ؿ9dsm @S9h^k- +1 dN?(ߏ[ څ1+ư["7 joװkvz khFS&O#˗ ?s!$AQ=W' ^&<GA74[Q9W=ƴ?ata.FGUq|%2LZVvmKHD7NvS:J"NCA~,X0͆bŋqY\bp;H@ؽ{/rsqZ1'!؝4LQȎNNt?U, G{#8"1c/]"/QT4֭|oDŽc[|/.]={yK&"dffb5)iYd₂| Psgtj8ueehjjF0^JuH'`[1}T]$"Xnj4",j{RBX8p#T8Cobt}?#͐f//C B]]=jj뒒,+:eb\ x/݇Ú+0s—£dFEE>m*V̘> p+0oldddtx"^Dɖ0o} |N?QHY~h b5Bu:{-(+?T/t:ٻO¦N}X$~I'ٲȎ~1 ˗<D0EQP\IIqTA߯lވ_KRex %%#ճf v^oz֮FZ/}3#Fnnn]0ρƥWqW)::?1Ip Q'O*`BMvJK`ՆM"Ø@' ̐foprW"#plYR|*>h֭??3fLS 8Eb)0yx}>̙2Gm]]taTɲ?څcKa0vGgdYA}n)0í*? r +hd ל^7(sU$ [6o@u58΄7 D?ڍӦnsJ5=n99ٸgrtn[UuFcr^G'USŠ )1jhljB 8}\ u$ +*qZ-JJF 2-)U'BOUlI?LE3}G#P;au/ IDATbWZËe7ۜn۶߾H;p8-oãG~t*rrQA!1t`0 ',d4P<^ŋd 8y/^L\7s?_N:#GcYDD1'N3X?ADTTTȖ-]tm~^.#d2Jyh4bKލk*ꬭׅ Xłsc>?R4kk$I(+@ z}s D)em0#(+.$yl•p57lnw(s>" CFFۼ ϋ1N/x}.]+2k-׭Z$AAAQ:tN[iw~+'}S(9"7,b V[=õzJjMEiM5DɌf\NЁ6Nj(9JJFbeIf1Ն[5}#"L0sfψ[l2E?1p9G^^.,^~ +/E5|0j!6upNB T"9nO_ASŋDQIyt:ܵ.޴dƎ9$͛7UNDط*HÇ?x3c!{Fev֘6M6()@Д@$ra0b-s|GfΘWR2"V#D0q%"LlٲIrcغu;FFFFqi+'?tߏu<5Sl1u<cDUU1qHo.6Կ_?,]ƾwRo5wXhѧbOo{C'lbs|vFUʂ 88`=,YK܅6mS:-?]]|E@lCXd!" _E"B^^.֯<$ |>k>76ᢲؒ'!;;+/iS'۶!*ˊBZB!ԨsN;\c=*$+D](,tmo᧏ec4 ~j X;g;c>on~1-]„-IpY\x)i"s 4qlXK \nvX6KF?> YE(Di&['Ñq؉{يv5׭p8yL"wqݸ6-iP8@h@ :\}+9[ MZj eK/GcuS:ŏu:sNo%#ϵkWRE7x䠌mo !33$I»}Ʀ6fΘJS&Olt6O]( ^}u&N^Z71Vލ'PUiDۿ? ((hǍ};1]/y$8EBPbl{bs+/t1Iڜ޵=7ے' ?[[Wv |*ۻ`\rssrLu+ۙkk5?nsjo-Nt: ֆHggOlsV:YYmjWVʿ#Cm䑨py c B;ϟ5?9@f͚9g&eǻxv7p;zPWaaAuuMM8'L0C JJ~3fLKJ^r{ZWL&"IV_>{?q| T%K&0갾+x<7a41~؄c̘b_cv(bi߄k:@(ď~8>p' 4֭NKӵ+ V#/77)~1 l럢san."I"’Ew"+ {VD}E.Du1vMğ_|ݏ>FVZݖ< ñpIjqNj„q?v!ӣbwZIbK "[nN6$+JBӄ0{HG4Ӻܗʿd#~7k^v|bD_I$v5_b᝷ceԿ+iFyt >Ο`^ l`г6oD,-aƺ"m}bD-aJ=lyO߄䑖ƶlY(![L{zŜWʟJv'"-3ՃEW@8pdYV۵>Ma_:pMj èQ#gG0xùs}~1Ւ)""VcqO_=CaԠWw"D:ux?<ں>U 9-c$owg"B~~^<靎nWT:ÅK ӈ̚5 ^]'(˨m4jAXdY~>_ۦU l޼YYIicXڂ1͎<;9[;6?NaTH|s0jШl =>U^) 1tחG[ѣ.$TG,Yo#JJF`᝷CQ֥=Nroz~~v[aރd#x-x/"';S#ڕʟ1?F EVK=Nr!TOx3$ITUu'pa{Gd1Z6|R;wHjSOXn52[mOGb@>g\|7h5$il2aD7#_2 sީ!D >5ZHƪRBu =~{%}SLfF6o^x1gLL8>w'+*{?o܆98qz> ޳?ܹYzD4#V,_{V \.wϜ,bd 蔊. 9`gb_&N:uk H7~eӊ9ٸo˽/~ӭy۳ 4,C'#w~<`=޳KES'OBffFU%Ij*>=ͣpۼfMQVV֛xa6Y1ͩLLV,6gTSY˖ B]`gιPu tl5ˍ>\"JdɴM8~|ڽ}U|6nXòCv\=IEp"]Ćâ3ۈp^֌1\xKʕꐾ1FӧOa߷  #v@^U(W$&LTsNh2`)4s/ѼPL12vڃcOSߋX-@DoF=WңƎDz իx7wn]0ÇNӤQn,=7Rx???6oZ]w$ ?9W%7pa\4abdyhu?gVN"IN'~wAlٴ#G degSo3{[K6-aAp?Đ!1cTL:ŷ ##s$Ie5ط 8bFEĢEwb}w܃-:j,77`5YVP`)t<׸kX~b把'3gL9o'ݺ`>JJF,R'uû}|]qcK1#333y|Z+2n7P^^gϡ~?z^w%<3{&/3cwcaA$( G}}=O9r,'}Ob YQ~=ɑ :Ay;ޥgb{0}ڔMڴG1kW"tmQa!VXڞ:9|k),`,$4l!mjv_AMhhh!== y(**Đ!iȐA0`rsrIiittFZ7s +Cer=p8h6P_߈Zjll@!4G`С1w,̞5e쵑픏, zXVCΕ|EeS\IFӮ]{QYYysgc„q(,,thH$;'{o"Թkն%8}!Mk"٪ksf ***T]ܒe4ܳXntwh'<~tAHDر5 grljef&N@8,S"++|~xMoh0I鐖f4̌ ddh4``$EHVd&}}~x^@}N~hR6olU1z;',ÏwS d\QB>pry&?M+ҁWcoRNN6Cnn233AiF#3tRS@$"77_LJf+AY{["c ±{>++5+`\F]KiƩgp 83f4nm>U!"5{k37=hjj+WQUu WVd6ovz9/v &ΤwdhG;S'O¨Q#b3yȲW^}~і6~G@,F X0-#'(`0b@phhBNI :qbۄ B lڸ_}Yz=֮YL-3hP/0$m9؆1,dggaԨXt f T_Ūx p8! $E?Y c{ lG32(9ƕt(`0s׍)mswj,z]㧉pdԦS+H  iEΟ~/֯Fff&~;_o۠Aix?Gډ͡uy: 7 Rx"^wo웩^GFz:edp@ a Eq08Y8yx&U_ڟϚ-GScha8#s~hCh4( c:}6߻͘1EGzln]0Źs)gffҚ+Xpn2$bCu8mmʔ4a¸r( 1Ƙ^À0ӦM&LQ*|E6Y6l6lvr=#P0(3ΕḈO\``L I =Ff4`L3"33Y~߿RNnȀA.c֝pGs~9Ph]眡u;dPMgVk$)4}H=hll3xfLǚ+p-CU,xMN^bYds}]_Pߣ5;Cs +0ȽCȲ Y`PF0p'IQ1N^%zN>ihD!tu>5鑝<lKAkD (F*ܽl c&窵̰a`exw@1X IJw׍3ʸ 0thqhbcNtcIͳ7,+h4pElϮހ$ I`X񷿿cO` (][)^#_K'`ڙ}F1UP=t,:[^h'f+_"89{tbg9"ôMWh)Vu'!'¦?Բil7:>(L# PM['`َȑcؼi=̞E0I}9^"qrXxɎ?6uVCt:LfMVvOӒ)^BUv{~W`=+sYs=xش⇈_ğ xي@@н4{- y  10d2<;T_Q-@Q^ji b%'_/ߎsNMf;9 Ȣ?}&~ C$X6+x귿 7@;Qf+l71/!D~gϖҥ+kXbrs!ABQ8jp~@$I;38q$Ao!qǧ+AV*$IfWٳg`4(꾩aӊjٴZ6c ^5(]k%l N_j"$I±c'\-DFF:8,V{bsle£})~  I.MsebP H!v-c@>BU%/;l6X0D 8f&Boj{#HEWĹsX~5fL 0DՁfCmw)1T[=3ލk1d`PM+~eӊjٴGENV+^i".l N_j"nvΑq+W,+1^aZhӊ"~gls5Y8o["@AZ;׶~^ IDAT(+?KA$(wB' !10PW߀_xOEs $@  jMxj"eS0 s^W`ʻ1Un@mbG BǴRchjjƟ_|O `ĈbUcM+~eӊjٴGkcGmdY{ZUM["ڄ0y9'ϰ*\ ˖.FzzZrJ7ش⇈LxaKBB(DD~(+;/6zFMXGPD@#ctOO?L& duɪ>  ~rWbժe;`0۝-i4`1T;}d^ñc'()ISͦ?Բc'BCv'zuxԎ_m["ڄ0yD9ShlS?r 'WӖ<P7a,$t{<ؾᣐEd&ef8]^]QD@p$IBMM-ݳxgl2NC Z߂@5D@"G[N]\eP]? `JE[d!rm`X/j%VP˖<cp{|m4CQ8⋚yjɖ6!LM-?bîONx&tFH/׊M+~.P8k͖<5/T1`PFj71yl oXDHЋ NmhwS P  cN7;GtG DC @CJmDcǖ`[vI DfKmWv"865 w(8v<\njchpQA/R=~-ٴZD_dyS6!LM-?SCcbscHJ+堖M+~QhMĚSŖ<P s\Zf  N'&Rڃ1YVP`n%h!h =^|r {jW- @B'H  %M7dclI1ƌ4Amx}~7YA DqL+mjn"Yz>NWZ}O,ŠvOjZil=M+4:C]=U+gӊjv&Dɳb?r;Yl|FJ&fibӊA}<JflKBB($oZ7cQ=b($ 0`9dO'Wpy|86HbV bG)/uMWy74[ ;[ ?f L s4lh8_@}0iM%CTASQX3%:ceVbms(M/DA^Ň{jsBJ侄Fu]3ܰ?U]bMIDtn$1448q >@m16'ꛬvgvCY%؝K>B*X X !1AF&+- ň0 &f3%.7*._nGqLBǴRѦF,E`9h3>t ĽOhc M&ٜ1-n lN*.]@09|h`mB1Z6@LG9xVL_B# bzZj8'5Y2XuL+6;*T,-N$_ @$χaB8稩7n4[Pq dYN !4d{C=QeWkvTգJ5$! c (fLTaCDG N0ƢE:X ūPlQsA"865LuKt=w %V򌧍ЦM V Nv aՕj4[tvjv&Dɳbʿ#VosNWjXņ񣇣dP 6 ~` C}ݦc"񛎳lK(fy5#GD"˘v L:ήJJ㹵@xLaMyq8"iFH\9v2]X"5ȲR:ӻ]?"@rzفj[Wd"_A>q/#K͌bNLTU?C:gI,XX]5FPE ADPk+E>~'t[:%\-;;d*QE%#*$D"X^&)4ar ^|W_;t2yIE$߹W/!k(w ",+#orMӰby}sS`P "A'18:I:]Ip[<5nK26 iV4ʅSXüӣ̛[|tRׯkΞC[gn#*G|+w=8 _#k/GDGZ]r3cauh g:o3EնE\A(JwAƧOSf-`L0[$?Cմbp[ZOeVX0A!*bF'g;0tbE@5v7 u7Rnē hMᇈP,pcqli?JdBw4&>ޛ& 4ƕtE$㱝c'k)j^DX25JIwb^\7E˙"qzفj[@x.Lk/=O}9 2C=PCߎ$iH- @h kPU:Tf5Êř"@[+>1EnI um D+R,GDfn:0aM (z H$C2Yh.8L` jFN2A"{qbcuF'?ôM#%.vNIb9McB1$%0H]Th" dPz:12Q<|ջzsu/geXe3i\BmL̜aǫ{4@h~2ƆzqfjہUUUbHg HV6 +a݅>ӻzs (0atߓ021X,M T - vBk( 8!fv(-?TU8 w3C `ph>&psåb.K# |rd+WLg+n&@y?k~t(P_3ќ0'&L!+P*qjVO=2έ@Uo rhByC.nbc;fefHavumcSXüӣL2^i4M2B-L~{ny(mx~#_ ?ypnQfz#"( m7gZ03> ]{M}s~9S8N/;Pmkr^Xk_&gk٩C#իqTFG{arw㊥/S9[hoiMy5#G$"{q2¡&OAE$hz;J^uW^{9"B"% bncC)}Iqꜿ)_6TۺIDwʱv[<}A?vdp`0-(U^Cs ("@s F beȥrbqm}gRf$TmoDaM*OPdkK `Ï"B:-l2 >/fF Ik055̫9=$"0m6;f8~,]G"=\6W_;`O/ƦN5]c=\=:ֹP,ݷ-wbrx(V;:oj35ڟH@{gZ_եŝtDZUN4046#c$IrԼ` @$&dFhfqOgAŝC'7 ׀2M j y X6PcU\x;H";O&F0JlA@o7w;' qGYMcx>stC:x,W_x ׯT,Ω̌` (`U$Xrvm7GDPUKFbw;^IZ_ZpFC/n`"@QڿzN _ky`smK\,nIl. 1<1qX,P,#OIvdžv71Uz)t[&$ax|]X^CȿeAKXpSh>ލb5$ә;?%f0.3I36tQUw SbpGps3qFuIcKr\Vg"BXĵe$iC >3㣦7z_$M˖nk Sh=h6WV" y}TE2" ƧOFr]Z݉g40M jOPRm^=^($7Sx)Gt8͆׏+9w~Fip>ŕ#r{nKZc=\=\ fWP*5%V(5#9ءW-+>+T*;}@Qx9!)4E/N/;PZw( m(pX $OAXQ@DXPTհ'RFqF)P<"He$nk^t"@,lX-gNi cuk{gKH`faC=zcBvc5UfDQ HEMܷu_C'N |^F+  SI\ye\ r oUU 7afс~ >3"kmO*74,fDQfM~ſ60WL;^Z3l IDAT۰ȥfD`9uģM͠??iֶ vVs$almm;hYTeOzz "ՌeRD,O>Ξ^,]G,6D9\>oK>u&$"(Սm'Sł!nkuE(m}(vylHZ=o0TTȏ>³_({3 g Fыj[.Z_她Ԩ H"K0"@E)Gmq4 ł3cq_Ug_Eo8~@(@yO|B~tmA&jA082~,\5~ʶ,ۛ: {nyæbU$}(;ݎ3pmzcBgX-WsQ*E "͊ f/T ĉ3jC߅x}-,gr .ο\6v.ǵo40=0=v"1+ Q~JcV^@Hl  W_7LnxԂe,T,MQMhd'v@#d1w{k &a604bW EӪuTہ>"ՌeVX+tbatr;z<`@;<_A8籩Shme ya=\=:fH0,TO twct-k<GD'SpDi#qwInJXBI.TB4F*?C qb8STUmiŃM,^B>m,T"NLjvo)"@033(H`qu0rᆴN ( MP[0`%Mc\O EY#"/s_{pЄ DC#hu67j HSkE<"&OEgwj#bHP+@{姎 m7A[VaCx &fy_8sT IaDX¯}p60{ 03l6;>]+Hc}Q4.z1u,nOCַ10:؏.pEjD;mnc34 Y~OA $n}cs`m`fut7/6V0 T:n;B><f$@& 7 v0HL.+LydX.-H`fx\Naۜ!Ҏ7Q0lZwS|mV |n'L B[{'^oC-~QuB6bF&݉t.+hy136 I6@HҘ]Z( YWkYrD _{=z[w"ՌeV+t(yOLׯ ev=(wE+<61u?~ S\wG;&k9zpDP4u%5B7#֏$?R5M CD\^I'xǁ3Eev^q֟Zڰ%&t E_W'9Nk[ 1YeobOeVRT HR~ceMn(0a ̰혘9utH0A$`|hM5M&6o`faaWI+ n\ & D_kzÛ1u y[@O0M)"8+ŵ Ch$Dn>EDоT~_\#{@"@T(s-N_ Mf!SF"azt>oC*- WתM,o4iwmHdr*Z1Q9U𞷿^t[v{ʙ"@VepST=ttGE0^F:d*auwIgnQ](_/K4t&{kw.퟽.OEmTGeOs p[-&7aOhcn߇3,f3rnohd9\[Xq&jffIq4HoA cج'?>i5 @dDz9zŹf(J>,@40'3l6T k(% fvE@4ʑ}-EPUUo íw2<,n\Kd ˭IMfF{k GI.οLsN3O(?h͂v_ K%6 ''V0OR˼ӣv]H(d<1b>r(b`x흝X^s=O&Rꟍv Cŝ, x ;O'%'%nǧ Esɒ$_o[I7?:8ÉT2i*pSlLT3rzT!%^^PЏ3Vޡq^t̹]~n@}?[˼"@fq_W'~ֽw-olUd׃cĈv|(~Q4+h8?/oKvӗ3([HD[\) [DL*W_|W/B>wbJ]x[ӧO&~@D@S fvK7_4Q0sdKUGe$ȥ/MM_U~[~J5F:(:^|X]ZV~" "ƧO@H{zn{1"4M6Chav$uEQY (X$6D& ՛T  /֖/0s_XxgEw<<ȣxGtODaĎ ok bnyH쯷A̒(^[?1P٬x\>ccmEo ͎+*e1@@$#O-NM]NgcB@D A8}!CпE.A ]}4LP!̌1ui`Zpj| >o]%%Y*bdCʔD=G,sv%ER_q1'MBy G#?5INgT*PR(MXU5]}3LX*pD0 Hy>:E==)X.bi'1 ?z~?Gp<56Lգ{|+kdjp4۬V_/d&,Q5f, $ fxwcyi8i3"喙!\*>7 CV5Ҙ. D6߳vm w}mAgN7;xS%"۔d`Zo~9]ntC,I%ʎѣ(D&U9fNgSl.dےֳOHx,?v<[O6+~H//{5An&?οvQJ YQM,+ [}OlEb3s?:nvbNom@ ֶavtRWO<2TU3q,& ǃcm!'vjW* ņ<`lV]{cl/( V=g?aNOΰHXF^7M%aɃ≔He.|_q#Ddinva@e@UUDBD^r8:fuЋbw`^o R8R鶤?j<@m"Uߛ7t]^,+5 qh̲mj.Y _Enr#|?w %pҫ(xM YQ5* $B/C/H*@cBGݟ^y6Q* rHn=L*Jܬk, $Q4ȓGUOyLEi_K%hwڭhqdž+F`"{q}Mͅ`\R5IUUŌmB-JB)E0ލCNN% 5J;҉XK7FXy@O:ժ̌`WI4TIDQzI_ff 6m^?߃R>x"{qt kDNXlvhC "jBsgz ۶LOG؏#"JEDBSI>lw=(pDt6TP%=Ѷ bC}k k}6( k}-MeJ:>{Wc n\V8{<\, ,*@Hr:CYVZcn=8? N#E ֣^:s(چ>g;~La$QP?lK#XV0}A0\˅&O)$ @oⓏ} A熍ƥ ~Nܟqzb i "/,s6%QڵYE4O((+BeUP}-n'!Ooo\E"aܸv S U+5f0I&1X.J/{=otux8N඀nv4` `7WSUH&p=hFp6}p8I2*c83r8 sPni2/.#W( rM nf Q9Uz@˯C,۷e8g8HMRװ4w=0Us])R)۟jo[Hgvm7{=22PU/DIŎFr AҊή^l6s˫l?8Z}^LnF@w4Ts+(KvNh 3Nڭ$2(C!~ 3d2zܱTdhsmj)^@;V?-T&{j2>ilqp׃'DUQ) nwrU!ڦjEgw/<^2yFM&GV _h"I (䝉Q13Z<taő:Sj(gnII㯾?ӝWc0JX \yetbbjtsDWb1-oxH41]({PFmP@p{ \vHՀǃT"~_u{:;01<Ij~H Kk;12[Z09:fs;?g(ݲ" pڬp$~O~z{b@8f"{q.~?D-? E*2TUC5ihkuŷ"UU;5(^v@AϚΓRӟQګ'"SI]ph[^Ě^ ?lXvQr#;~Hz]?\>^""H݊O2->PIɥӐY^x>4 QeK, rI_>=5w|djZ[ؚMDPU᠟0/'VmkfC\n7IrK[դC-3QY 0>a/ǕngfHD&7WzEex^_Ǘ}<_'7 4 -/afzzz`uH@'3crl.[Ff'|. \b1D{՚7<^uI%(>Iird= T9 R׽AUUZZ@ dGo!0{ۂf"]lyG8VH"6Vމ/CFs'Bp'W..fas(JU- |q%m6W{:t67K_D !" fN\#,+;kkG.A!- XL ׈Pe,m m=!I}PeI:[(V2OX,"6+yS tR@8a=oӉщ<d&GŢBRUXc4,l.!0}Չ e 'btj.ا]k]Yy}y6VP*w75vC^pb kOnIfvsb`bx-a>w@( PY-"/^_~1D¡ӡB؇#Pdd ]466YUi}7 k}=_lo Eb3Ͱ34t2p`(+#qI#;B\v'i<fF}9Ե E-"ζbShyRF6H6E+C&H(/,z^ IDATn,7r;Y%™=n\D]BQoeO$Kd從k 4 ̙GDPd`X"A}p ݎ81J%>}NOQ+`r- ضcfجV<0=IWXҘU7@?VUFO Dp9lD𮷿 pؐI ޸7twus砩1TV哉D 3ŒܳFPę;#WT,QЌo C#P5NLC/K3:@%~<.'NOa4b_|PD1+}Ï3Ur9IN X] v'J\yem냙lnelVkP((v9DA2Gȿ " jQٍ͹+@$*](lVk3a De$J?/;O޶)EO}n9M6S\6KsX[f8.Ȋrȶf'˹bNa=Sl%qMWIx!n:(w{Mc ZYm2L޾N8{"^㽊~ Dru_ g~տ5Xg;t }W* JmmЪqd(ʥΎTj 4* !܌$0L[ 1ֶiVNo{b@O7F:il-(qDP T([q?I< gߏ3p"ascz44fh*1@l.|bX.TM&sGڴ|u( oK E-0QA'̌5Ño;U?<Ї^÷?3E{:|9`yiQosMSX$ɂA c (2J UXEu>vmvEA":%x$CgqQЅ3'5?zzt(*U?.%&S#OmV9ޏz7Pw_?dYF> 7֊#*EX$D4L6vi'@0 `~e]i/3t&ݺwSY8_EՂTuT^[-WQb.9C,# qzfmp:wƉ@$(L5}h,1/r zM't.Lb*fK_PSGXjOF? 0R_^CX-ڟ+NMp:~J|9U~Q$L,Tx/ɷgh(v™":Z_$@L mnWz{Ì+$" OBxׇ@*o AT-!#߆d" %$"D .BVhxpzrY>]r_gUUk"ϧM4aeߋS g9*K PUUM3xfrl" .uH"rF6(cE$bdTnS뫮z6vۿ&G!BC=dSNCT"@ ʇ UG{'_8pFC/6͍5ח11:qb%DcB#}5M=5^l7<>I` nGlv2$YP\|.KP^_ -G a V6PuH޾.L R7܃r V;UMrIVX((j*Y/xGb.9hp\._@ga;f@A v&FH4Wbr;ҊΞ^JLiG2W9MӐE `roKjUӰ@p'Q˨`C}=n{U xd0eJ"㲓羽s3p@';foЍ$็dY'iƥ&g{K3 aHp'{qwTaZCޖ2i b@bHЏl&CnֲH6@QT,o b]%?cCBeP}l/'Ix[P|m7<[ {oܒ޼3pPG 7ALuÆ/D*t8:51ǓӊqAtSx/A p=!ICmǑL*$@EC-$"Ȳ5DbS+TtvP vڭO,,Lx_>&)43~?#M""˳(*j[Mմ33V Aq@!5EM/<hĩ3kiIF`YN-HOS{?̚ m^;UDX( E翍O\* 3N֐3zq@v K} {ߊ~%A .[!EEEU3x-8Á!;H&bP+! UUچZCbP-|Kj߿W6G(~ENj%_S~ODX$lV .}g+n'k]8s`;v/~5x^wj7dYؗDQ,&~eM$y[Z78 EUN&/lnA4$bQ lmnw^2:Het?jL]N'NOUnr|{4}?(aӅ{-pFCΜǎ[x,x<^hF9d oH,QTo T:3ʶa'9QՃd3i*Hp\B(l*VLb$VVQ*uG3cpm-)Cݿ!zoDtxpŧz?[,>&։3p`f,@<}=N(dDA@&o~qǺrFC/Ȏ{rha;9,+HVdshI:3=q)HVv;Pվps^tv`bx(roJSTOI!$E+9\|q:QЅ3'Ʊ@\:$@'5bfYwu0& 2$J-;?zgݳ ے((R%Ya- c+Qy-M F$D&4;VH3S5>[ݯnWݾ57N+CG.'*\9#ɢk r09DJM bx(b8œ~@9\p Cm-}"ROgƎDMj{]gDFDu>uD(r'),tqN@~l|)V E^=A丮3t|tޞmT匱qSމ&EVuQ;baLf$ &|{ 2c-FW{iGTak;3k;s AcLCG&CдP^7LRXmdx6<$3Yt@=.*K3m-v7 |3B OHkDJ:rHg$x>ADqz/~zciE[;  f4quW^-74FU1+첷^5DcyQ*W|r!tUo>:4BTG`iRމ# m]3Y|ZʵJXlƁ*KO270jiȦSʝLXDq(w "uߍGV6LX fdžbxoAc.?q/ tM{"ǻKr,04Cs=0BDd R8|>Y+˪bx9D* #X`} \b׾~ʕS6qNH!Jp Bp{S CD'5AQOzaPOo< ꣁyw]o_sSlXTWT:#"Y4wBPXoS(sc c9v i H[eܻe+sLN׮D<5J@[k{Q`:tMC4bFn͘zuȘ*:PGǬ828VZ 0?y`@rUӴ{:1D4k tuM-mm̡\.VoFDpÃGQ,)Fι.0/`׾~87it2Ik!v*0!FgQ㌈ ]XD" Eq;), \6п!tuuA@Aμ8w;xˮo{ 冦 @t9#b44_s=M-Kea;y^=H " I7n޴e2-7|:IAgfU*b4tUf.Jcڷ\sIE/$а8rr_7ښsX-4Iv&ƅi?#F7A"cJ4 ͧO!0pd9?*@}ݝд a"Nwܽd,}-#蚆i`tx_썴чd\2UtHayaeѡ~>]DZv\>>Qh5<6X(ָM cZ:iJ|dͦ~& 2 42<b T 59:Ǖcђ6tONm: q*7_w=PwxDs6GWNBhNlkMek;^"kLѶ9w%Q2*lx߸z?TA έ[#v]N}8;I~J&] !R+L 4Q,/L2LSWN0麎=hkn-LcxGsb߮{DA_g?y ]9B{S#A*NߊU])&CRy/8|Bt{\.!Z)cϮ:rbفas~!-hjmb2в_Je 2t!NrHq!G-EV{Oט+%ŧm}HSE,*C<|lm˨ !PidlR,hky8J.X^yB醁N446X,Uֿֆ ag[1FmcaCʤ;GrbKu:DUˑN&cl bqg}Ή ]ip*|ﮦRt0S>$C utbl}뫴s+hnnFORDq7*Fvq{G/L\3cJ!MfyȬ9GMx4rUٲwN8`DMcGap 7^w5^ߵaσAq>}|_wSڂ7BYe\BrE+mAps9G{kKK:vk;7bx&@Tc7fQT 3S]5׈KkڜY8~C*di!b$Z[[?Qnh2t·*. &bu-FC&=of\⃞ F$ <:"tIš*:d0P!جՕуDÕ|h 4DK JbmXI筎! n|nhjmC:HJU:-p!uǢXKt듡1F>Ru#g54!1P?| Y0eB@جo6rLtD0#Q2Lұk}ZxLx"Im]uXZC @"%Ǖ?Bklaz&9#Bg0 >kpA`] C utbsR<]=}8 ӄt|!|75m^*[1FI)^(c!ׄ֎Nؖr@MBuȤXr"f:7zE"5z>&#d"J|pخYf܇d1UtHaa`hsfb ϠKWB2Qju-z/XvB0Mw!Ѐ$(30אŚe} %$O"G U{8XƗh d :kk9|H.#A*mWo}?W`,_9-9 K񫎏qϕ 6{nx^)G}ݝ4Mjϒ9 /ѧ8 [1~FGFN*Er+T!A eCG'w6c .@\sR"]J媵TB2iƦ446V*edR0Sm]T/tsy^U`D/[~i 04~]_Z,_a),t!>}cسU:o} y|q%bGr^sLD P+FDhi@$R!sd w=nocL^E| Qg"N1Cݿ1,>y`܇d1UtHaYl91>ml"4V@7 buTTw:1/]TkƘLCZ;рr6 F1bayO7ڛ0!>B/L2v!"i 1鮟?N*;S}sTb Ф7^c܃?p. yBx.^sqnh~at|m`~cXl)6!Ph~PJ}4t4gSڼ! TA,3Yq?"3Džy}\ !Rxo&OLjTUyطA=b B4 fRJ'\\^`{.ccDOiMqۭ׉B~BN_SE,*CSBm[xz#4><&4657Yl\{!X* UcZ!DMm**էX k!L-ƶ6f͗}U_H4؏/|-@S`T66zolB]? ]׉@d;nISdb4f2Lͭd\*c[g[utfR_ScVi fdc<~D53tR( >[tlhP4SEG~I!cF.}GM ԓ#QŶtOogBJ!D~>/DVH$SZ4 ?l)!ZrX;k ~Ζ^?+}j;u`Cw _R"L*:PG,7eA&uضٟf0 ~Xy1}gS6/%@߿01ƐknA[g7*UʓA3C۰[ʱ;rB1 RvDĂi÷9s׿'ubB@*:Ίx)Jwχ8Mll9ΣmF9AG+؉3LmݔH&Q*&R@cDw{25𥳐zDAj_]c5 #jͯ|>IŧקSE,),  m8ص5l}y#S`zBe7S$bquWqӲϗR :!P*g5HBu]Dz%]hknAp?""\ !< F ?135_ţ+[nhAj>&;^nk|XiJ"F ~;;P8YLRXCSEJDo:[ Z?Yr\u-/WU \ cFM-hjmUZ)6>HkW.G*f8*9Au67 Ne 6Xᕗ_,>>ř*:d1UtHaYL/=\&ˮx;ALJ}^բx6f62VTlg |SÞKfF"hF2Ǟtf@D\>GvϤW״M?>QDL Cпg'}閏Z)TvfT!A-:snބz{ 4(Dm@ lw~<4^(_!h2 @2AGB~61e}BC5 e|h #ȁ7pWM]Zh j*T1g,H`eW|B> NB@D %ѕ#ێCVccسkjBroI'tkXW6nDDBELXvmM}D~T!C WTH,9ab!ز Tb+sQiw6Q7̐lg!f$BRS-Ju&V̅p3r?y|6@5J'cط5|OϓCSE:T1l|| nڈCvӻ=' bA/ ֶƇ(/[J!D\kLӐmQ\*v38*M n3"@Tov XԦ,\ۢ_|_L*:PG,yac֬ZKEs5c|d,QӴv<V0L""3AK{R qCO*>,h)wVnexmq(x'c`_{V*'U7T!C C(Ɩ6 w щtD\w)+b6qے4:{9G1?qR @MӰ- "@15o*Uo/jWO OZhna&@5t l"Qג%5ࢶMmDe{eݿB4**"iR 64 ͭmFJv]} LàK{@SPSYchÞCDj4`Ţ&[F0Utp @*:d1zcNl"֮Zp<rɫ@<\6ڶQX&+vV6yDhB,GӇd2M*mcZ8A:Cg9nt:pf&Zۨ 6 BiҐ~Dij!KvnvJu"aT!A6*2G T>-Pϧa9(VMCyxXsq,7 "dI1՗妡?GfP:`)_M` 7yTNNZha&@tbΪ%]|kߤ<*q}N>B bB^Mc&Nֻ؅%joA{s^S]SBDM@t X=S R )1͸c纪6烩CSE,&f-Ц60$c& ]V{Wcb_KڛS,bn+` %8c'БNDw|s]ْC m^-PG,Y=ؽm r&vtsA>~5\T,I{ӿjfUm!Dr ZJ򾵯Uiۛ2_v\˞~@XMű}ẏCSE:T!u9ql(^~YtI :ZM*i'\7a :d1UtbR׻?ޏD6'*9 \ .0uDϲF&+Hf@h05?QCwm/e1Utb!C۷ w D\1 .9SŲ{pYwbzP8p1v |jq~`WG<AC2[ yIԮCSE:T!J]6< 2YLy֮-9L勥}xξΖHx"0!=bY?gD!1߇W6o SE:T!jmS?cGڨ5n\ژyP䪶1OA !OeӉ/wSGTLMǮ6_"6ߧ2,  -Y6qx=rrͭ #09'@ŲG󑶦v8,S @l#C0G'}{Oy g#l"lP7> 4A+W\A b9"rڹsrB8Z6B@TRk;~x-T,gcNO??m[?lNCSE,6߯iF d1<׾DmR>_lL*:PG,Yl^.֯{{woG*Dymq/ulhdT"9#`AT҉7} Q^kk&xeSܭ7T̠5\h, eΆt"LmXd);XTm=w3bDb/ʝ*:d1UtHaa`hI[_݉%}|!.@0C@yxrYjٲֺT| `=|_W1B8z<9TZha&@tbŤ ]=~E B }.炸BhGj_[XWsΛ̋91Mc|Ω6e "FW>{#ٽ㬏9l*:d1Utba&@tbŤ#?1W^|]t6d* L $.8ٶ[BߐNיkM8IDATMW/>z1Q{M׊;YLX P!*:d1Ut7+wwQG[GLm1"9Yky>!S>e<9BеCP>kcM`hq|ȡ>&8*:d1UtHaYL*:.ط^ۄv,]HQ"0\&uO:xs!k[_z80 Ls8L*:00ڱ 7>C1-pj39kϦ/jYہ f}S\kI #@7:B;' 3#lYgVJ{zzsABDD7dbjB+ /25o/TV!c"F1tϯF}'&?l~m=+zĹ9x. MRպrܥLiiH04:(c`Ra1؇n8&Fj:d1UtbL T!C|A9+VE"& B,s^%6'hT 3okɦ9|ltac #NG|LJk":d1UtbB@*:d1Utb ޝAK/ @\—0Ԑy06 =&f!C4 :i0 /q  nLL*:d1UtHaYL*:d> y y.]3܎p~N}".3Nh@*E~d^ajLL*:d1UtHa?'IENDB`PNG  IHDR\rf pHYsod IDATx]w|UE{{) zĂ"*vݟUwX{/kY*^BB^^ڽs~%yw>|̙sL=3o @o #J~RR]y ǿN 9)0(}ɇtbk/BpMQ @H=q҅%`0_] &`Pj\"!cIK)59wf $!{&@'{$H@AGbԣ TvUI Eީ QHJI139u5WmE x_Pp=tsHٛ5!dP,6Dd!"IÚ&*$YҢBb維qB~@EW![w! E1MDff""ghgE&f%V@ZF\pe~Q(=Xhk H%Iv;!Pd&#U H3&T]bP:M\$a#pɂE{R'VzCj\JM7>s5 2U普zvD4O"0 4it\qd0sVe\@G?Q:mA҇ }'b{xw=ncYUT3 <^qyƼPap`Hp%ع}#D:@ڐel]Dz H"_ yX``l?4E#9>$!x`ZD[5ffnqIsOB}M5 @Lc] (DJ*k琔2SBU(?ИO_,у.3IA{ ,?M@Wgg o8Ԇg^cI8N12kMil  CIΔ$* °c輋#=;ɅlPNp(ׄp K`!ܝ!0utހ0"RSG3!8ܓ͌4!A"$= k06TQ^tQAm IYQ?p zqs"gWy,6iB#ICWPY S[︭n2m:^yo9tl Ykl3 YYT5q$\,Մ(b0LÕ^{ a#WAG8$Q_HϽ  H &\ hgMhKMrs-3pI/CC} /p @D%OA8fDk<.z!10A0_e~ ḽ,ɩ130SX_EҎPHX!ۣGOz/3C1R51DgvpFMLf ```eˢ3ϻ#p?jkjM~ Im\f g_{{<4MdVUB0@ڃUs t,I ̚`ƈQcEWo~cX_=6M1(Z@ASw?}8# 6U{@ Lؓ^JDJD"aXpԫGrsvbS=B}̯Jl i: ,_vk^'_zdh>"zܮ{~#LXόAWy*!(FL=uޅdn1  !Ulh" A ŨNe0qq% ߇mvZ<1,j%" K(9/WU[|&N՟ytʼ3a33 㑀3CVxV07$"2(2o\y;/^o"I@_VzO0qQ <,i30 )8 Ty,5 ]̚`?,'7I=Boh?1.yJxN8dѽG/hAdSW{4cF>De f@Bq8HNJB~^.t>K艈w_c f*KVz=9K@DAV(/MX""Y`m1O6'7`0d5q;&% !fV$w f^} 0vX,:ꪪ0؂X"EW~;g11XQdVv;f_ffY |& dBW_w^jkjBG\0|=ە{$nV去I6$C$QDծL;. &.&IYګ .a0XxUvض灶?(.oρ@ODŽ#aEQSay,Bi]No'S yDA&B}M%Y>P7Ǩ՟^}C8l}G By`%. Z&#̨ rxq['Һտ13]Dm:<̋8t48٧(5*̽=%G_>LDFU3RQdmo`e:mvlߊƆHcvx'Y6&9*d$zjWF| )t/9HD9w77toO~n.=$IROMjB `hUUaۡ%"`0@eȊqPYYV`Ab0dyDt&JH&?~MzW1g8D koY'7bGS+.jr>PTLe娬jiiaJߘD$$I( 8[*H޽{Q߾}08zǒt(7N"KDbM2ljBTq[|?wshX|?q6} ! rCͶ@)јmB77w} ޕKNFG֝G #ӀYܻWO֭;I&ifQSSeT\|PSSs|(ܣGV+*fρВij5dy3?/$ lY^~Iް~]9,p[Y~I$>̳'CbDHݬӵ@iY9c3{`8?~,cPT\MbMhhhlWVGЅ,7kqQQ !lpU 1}Ԁ:7ذq3[Uŷ+.`;eY`HD,IDTKOlkxJ/gU̐& 5M <&[_}KBvɤ;gg " |YiȠ<ٔ{f#M4:u n˿=h, Bp%33H´g`ˡm`ܿk^DOIIYCve Πib*3e)E``Ff~8 0ytA]m psF \'6c+ʻ)%-c+lx@稬%.8Wkn "4aC",˸s,wl=81?P&Z$$kaS5}܉7?ҳ#N#:(xgU$#m3>4q466W@PӿÇaп?lݺe%@# q$IH1~fƅP QkK+M}ͳ?6(:pff,^9~M7$MB| &` !ȹ$Io&S l6[~$IVx]Ru@4jhlbp7ٳGDdgEkfGo$ȲF ldzKkV,@Zhc [?JW&4f#v9 꿛NGtzy~u|75t@uu-L&c3 }GybT w]S|?f3Zf456EE%ؼy+ۤaf$%%a1=j$} ==In:"BEe~ ;杊I'@QBt"aM;޻ 0nuFN=ua~^k@;f lůEmm]MHv "d;&4M1g٘wyXpٹ#Y'q@G&` 6!Z 6:j*M6:OEHMMg <ȧMP]^ھ}zxW6(] @-ʫ' FMj} u఑98 $'# ±Aw울t>]qu\7|ZncP;_~7/Cݩ>2Y,V]x>sytǿGfwlCDD\: Ї2mzznwd0(8f3'"jsqilT~2mVi|ǽu$!4l:#P\ߡ138=odj J~{q_} 9;&Ӧ@4~`6[B> syE%XRmwW͛em{N;u G|=_ 4xΜ`>FQ`ť5lznݮC3Aѧ_8"KTC]aG<7m⃥~o}\DeU5 -\p1l=a\ACC#VYG^$3M)'Rffo1 #F E lY+\3睆+VB8Ɓcdb,5MȄp;| U;~>{4B0xMվQګ"aժPw_HSSS}=19ݞt'MS&E*"fÎ݅Y~5Kݺv%W3z!DdpKڠj4õI"lxk- `f"-V53 6b0>9~4 !kwOr IDATX,`fKNN?r#.w߻}/qʷsHO{Wx k h̬(M?Y.ppqIU/@}jjj*!d0>1x@o3/Y\;wO>w lήmw=ȷ?f暺&ӭ/ .zOhiL &Y5 #\XG[o8oqkQW_O39 D4X7""H~=e ܷO&p,L?f k }>|?D "f߰ #;{8ҺǤ-wFkh(@^pܸo5c&Ytg}p.zW"۰m΀dL&|ٗ rl͜y4FszI"=<>\|y'3}ݹ%X&˫깮Y? _nƛށoq'ɒ]՞.W\{q)ʅ e=GZ~_qcS[\^{yŏ<|?/))o. /8'O JW׿{S&a)'af2͇%DM?]hZ>³ utg0^'υi,a1VUDG. ]9lwfAv*>Nr] ƎƎ!m|.>XB۶-[SqA'Сi1GA2l63++ WC_ұ8,V]yuFN/TOi? M:iVu-EYV 8Yis˖+ 㑜D8YƢ+:PtTTZEvJDl/B`l-GzЄ`%d' Cpc0%w{ok;XA}XIJfgIdY~jW,L@_ye\Pf_f'|NӧM4t}^2 </YJVCYg RS1GOfも}a޼y+5;\׮g5.[,TVY !%@fuOKC^^ھc4M|mW}E+}>4߱+Wf .+]mm;"کshmL[fڻw?V S74a8\{ϷތӦ3*דn~hH*shš>7;wDž:035՞dj$icg"c~%"Yssh\?(_> ~&_A,cڴӭ7݋S.ب5z 4mZM]*kB*_/IϾY;. ఑lPqqI㣏=[l8TeY5W_WZ{fqy{ h-/ۙ,2L˯#>O}dѿ̧Ck.c03jɝP&{TjllDccki+W;u/֬ hAVV?\x9~TRZo[PU|ȑ#pܬ>""r騨}d^eu0@FYUCr/!YlڸHWc˞JqMpw\>|_i_}*+xժPT|ǃ \I:0m fٗQk<{➇\@TԠէ<7ﻡ ϥlɥ{}_|?KNQ檅PůVO>}/@?wq3){vy~#7܄ (+㫿8fƌG,и^bOcE}7,>f|}siC=Gj6l(ΘwKZ"BYY9`fNII\!oB<د)89A 6Ee0[l^: |5 @C/Ǟ«EMqi/8li矍tfOg^l 4GO/B,LPo<z}" b@λ/몁`5W_ 3 sO9)<O>֠ a>Ѳc郓O>1-}j۰sp\vӁIMxǞBii;}̲Hcǎ'w .ai} xPVVx \WWSӦk`dK&S+׸FL^_@j=>O>/Y֐e%_>}2}N;}L8ַK#?A )Qdf>x,b:rg8ф:ruH?W. FЇDUW>;sIB=ScLMMUW,)(|٥ʷc @_}o9l߱=ޒ@.{* .u^:=UWS'8I w33jꚸ! ]Q0OO' ˞x^|u465=R+?Piֱ3+o3R~}}\! Y˯kbTM|O#]:fƐ!_w g;Cuuuks5 ojsE ,ׁ}v&v!u7b\r8 `G4`؝Fa(Oݻ=猈凈PT|6}#ǃ"S'cldfv;+ue5jjjѶ]:ѷO&:kfx\w@^y-X,vyvAyOFz43{r@8foYr!:+]0PpҺӢ^J7 |(SnC'2 :dfk຺:jn6֙m6mڼ6oeY)==geQVV_ի'!%9eE&0خdXlz* jjjr_inpd4yt0eD6v{lpccUVVq}TXXM.~Gh򤉜=zT6 $Ƞ>}2!J+kYڟ\~!` IQ{B#tکsp )))3u7bэ53g*砖FtM4qk HUUTUB޽RHFjhhDnWtaDi3fM0Ǎ5MCKinl(fc歴q>u\u_,jsCv+`;Y @SUZabO:ph W]$"||rG>:t8a|2*;DV+*+Q]S ĭ-dZYU${]$AQ6 iݻSٛCARiu \B}N z_7~СC}2iii>ef2:t0 :M4 9C:.?ɒ Y!K2) IH8(O,08mE_l& ] .:ݎ iVڝ.͝{2$bpgcG3ԫgf gmp@`t߬( ɲ  HD:urD?oipie*? 3 ]\YoB}׮ÕW,#bIկͬ)?^7ZQVY[{@xf&j@D8p-Yw0&d$ Q`BYe]J3Ϋ4C~Gx~ŏ+q %G_>3PSׄچ  =DzWϡ&LЄ㨲5:Ȍ]Q0v ;v],毿v=gBM ]Q0e,V{/Q?!cL%h6Y+JmtY "bM`˪jM: 4^=pbdfZu}fzNj 8jsqi,V[҅􆋰fX3T^^qĚG|ņj9KU]Q0~4srr{~ŮweHMf>-wE„NUU|Wt=+'7nf|p&*sۇ]QW. 8bPQQe?_y]g ?`f8vVbPt!VY~\;I, >EeMW5v9]Q0uЇg27ߥK`IL `U֢DDSG]Q0<pA><#XglX-3@B~8M\R^&pYW@0vUAؙ33@Bw8C-8gY D,{Y<+vlvE>h$+pb =afyUjLG|l[ţ(]LEb #=l~@,E2D9{@%^wE`.<paaްu7lv=GK~Ss+,s3ͭGz+JHXM~nXm 4jnv;ĹtaP}W ]u}wHTPXj>i4 RGB *)jw$\Q&``ڰf.f  6EUTm 93.kJ[^Yw퇦iq8-6UnWH;y@g~t@躬 W4Mж{멲.V:Nw>m.  %"44xovs׍NP375`y 'HW+Jw(}ETVYFbĐqH3PhƐk7~lڰvsVLW_U׀ʚx3]Q08 '"TV7?öRU-ʫP[6Yv 껉cB0v)~^2+ 9Ԃ;x`f&伻$Co(fS+~^7rnƞ4!`y Mfvu%\\V)۟+Jw8o BsC<.SYE NI# $I18`Y jXdiB 5unt,,W0aCo`bö\MkhrˍsVGZ`j;xl:m$Co$5⻕eg>.8ņҪ=i۱3/5450`1{L?% q GOF;K>Ō:BfjsOϐx$Pz}#lrق_o_ֻK+hC; b]O Q^]O]ꛚ3/JD޽XxyҴ8 be |i/۵v-*30nWivz5Ƅ̨mʚɯiZZbfߋ+WPeY\"]C3e#mܖ gfWףY9*_z:K#8 $ vl^mע5zN?{?EQI%N!J+j>/̌r?XrG(p2PIU- .Zm @ Sq%7u}{rYu$'"-V^y~Z}nhjAiEMSzS0G.ᄦaߞݴQ_[U+蛟aG>>kh,r^OT8e)I4yhtKMR ;]:p`ِm3K1vTtOKJ^ep*(%|qEe( /fFn02F!$<>.q8@z}CeTcݪyonTUjcݖ|FWTS%,\PX!3#ƌt݄҅G@y |"3}DzڴzrwnjGB@1J+*(x̌4q( JKD&H#> Hx bb"9%O"3`>]#*JK"&4MCBTfF޽0yHYlqt:j ?N>fruΈO$ܱy=nXí-w|]Ů}\U@חG (,폈v&vEb4d E?e 0KotИ 19ѫagí+֮ jю=h2`>xQ'ˈ`peAO,QZz~) E?% 8l'.=>n64]4_06t숮lƎn5rjk>#Ơ~b)9%As%̏OЈo熮0wkZIhl@w$D`0Mؽw?TMsaqƌF{I~$(4$ZHsSwW`o))|LL?xv'Ci{,Xvm}v셪i!ɓ"˘0z$tfRD7h,wpvPC@^i]ĭ No2㙳OQcAe &޼789y PYSYP0 4f$guV5uqHKCDd%}{v];^qlR;t7p~Dbq09Գwfj'۳χuJ**@1q?)hɘ7wFGv\g~^9 Dl{vֱuz}|lڒV)S%@VX˴y)I4eF"ŜÐ< 5`؃Ahtn`=gnջ­W߽^Ufmh=c|td@B4_ڿj}CfƉA;W`UTjUQ^,U*;/?ӢEx@2[ p_غJu$cf4֜qJr='NP^Tj[ "cƨ"!S=__~g7Vk1_ @k!@3iDe%ODolZ޿{@+EMZQ%ѡc'0617R+13M| [U&F?NX޹NDg~E޿Tr\_D8Ù f(ض}~Fbuns, Mە c5o g S'}'=raA*`,]wavŵtHF#]B2a+DF84׋4ʡjZ\ eTЄtjfnB  l`*#EFP@qt`;t'Nn\jy1_A?fTt慠i|MU孊b΀ s.@3=on|p?Ǘ^y- 3f aN[ vFƲ |GISWqDA[ocWXWL"Xl?+mۘR2ҖkˡPnXV;l_ ;yة0=>h:1 0cQΩw_OLс#G!{K!"!7lG>+H ;ɤc(oEA\ Z&FiϮ7PQ8 uu]ip㸱3ܦBD2<Ƕ/(vյJLʤ,J4X63]m-P|8 '( cPl˖㾫 NO?y,H,=փޣeV#1d2\ f \ܬOR `|%&y$ Bosᙁ7rUpӆv"!XW͍DD?3x&Hшk{">yܣX(yBUQ <Ƕ>xv:6ne]W,?iڥt.`{bxӉIމTu tRAœd uDJcfDP/  yCSÕޠ"Iצo?#+J <ةa=HgBE#e_&p"4'"xY^2iچFbgDZWԏeꫫ0/Ǐ^9l^1`xT4/zzO ( utCL*0,v-y=>jS&cm$}#e| 13N өADbq2u GJ̌$=6@98sF'r?^m%^"kW</V2\7U6ٶB<w{W9[voʷD۶0׋L&XYHT"95L&Z. j|9Gbrj:v]Ȟ8/5K}*?G>1ڴ\WYo#+Wϓ}'a6op$ƖmʃH{˺s(o.b&'hp$\yapCs Qw/DaBe}gRֿ7`bfCMN#ë˅|GEү!\blWF) h$rt2ɩφ^둈fUش2¥ymMV&{02}" `kg ]Uo*XhMa& ~$2 ۻ: |9Oa"k< P=Џiѐc )=̤֋S?3s$m]5CWߕޔ*p p xgVk.Ok\)mY{ ScôT3# L*ld#xͿ6m S H%"/@c`( Pey /ǓG"{̌XtC\0$鱥*L鶛?@Sq*1ᅢX(K.qt ו~%W\M ͭp%E mPII&/`UUp{xrjh6^KhS{+sK M/;4A@oᜅ8cl)9uzqx{܄zrləp(imW2 j삦먮JL%&ɶ2 gK\xɩzOi⧳ ˶io$S%˔OjO!l]S?_#g > h|+V%tgp\tR/!6RME$ k+_VAခ~;a9c+++%(iHXS tߍHPǶ"c;p]r\GuU9{m;@"g$KS#,$DZyxS :~:5J23\Ҡ*olX{B irH{{XJ<ø_] \_vΑ燌y}t`.jinFM}ٶT¡`"\_-^d_+BU5u(TbL :9=E'{!@4^F^Ir@̌a:v?_ Fcv~K E"ڎ{\SBģ|xlx!o=+p! 8r3Z^@mw.0USvp%2A44B4$NJxf#F$Usqr`\4} ]}Z7]WJo}6zg+M.SjwwWF#C8]"a56= ce&EbO:m]J':5P T.+چfNg(LmWLzɶ,"-˸4tji%&Cmc[ 0Lc_;o;[Z3c ZDK S( tR; O4oD88)[>‘E,H)qwB](6w QqFTSӸwy (F4=5!2־cH])wƣg!.XV‘74VQ²K@O'&(^^MҏE8,LY( $V8`5< d  rǏ9:B@I:lhkV_QUU%gRW1s(G$52W#"A A @ڲJe2 f4֠۲к`MUJq\MU]oON8xp\E^E)y>@atl"#"˲e*~,37XEDFV\ 3fqH)} -E`ة "" 꾹y}XzW9fy@)|s7/\ڛVO MNwTX<^Վg \iBs]c3e2i$\ۦ'ʤ)^^(\Y}{|ݻj瀀o?'|vܿ\,UNap_Qmn߀}-14W>B4؁t-'+^NJe/hM33ItC6PJv]L$ܩLjN`!/ q}s+ faQB'%F8ZYMOTeFQĩO"fb9MkMcfS{[+54P:c㸃<\әI dٵUTU[Tl2w] uڶp(oKW-}CS2uz]w8̀X& ^D[4<>㼱k3BaX9NEEكe099gp%2 M-0$&!]$A…GČ` K6u"`>l4Eٯkw]yHU ??÷m ȡK[K +kW$qh{DM]4݀dEeͭm _FDj\<"B4^u'W/~`ӁW+ Ӷ̯'(H\}{軫k-vߺcB0_f݂=1CCB@(Z& ,L2_"=G R\UUT5P 8loZvfFyCӾ c^y  Scs+HNLy TVP׆VVؽ8MA"#f̨@<㋟o*̡$Wj]V~Ƕi`lw /'WzoMQMUmGO *k@j&IL4P{s#gf03 UESCtw[*P~Gj0<8@^}!S- RN A>8/LE%0P؄`(Q߂[\WoY9g1'>E r|" {5y>v.@:\sF&ޡ=*j =4Qn6K%QHV:L"hņ¿ϑً̻=n&"092Hwb=g_Dk@x-\) ͗;$,NSUk)sb|PnklZY&fv);HꚊޣc% ."5>}UjokVR!Ӹ_SՌ+0ӈp[̘tQ]u6u(`hOzL%&/_ spR*RR< oJ?(i82Iit%SϤ_v(.MMNbNTU*SPR{ 헞]V.:z+JH8p8c;f vu5Up:jxihYM<oG**q_ e򕲮+,oSgg'+H ۑ{@4\ @) |:jx5Rz*(0 ?~gw^41>Wphl#ʌ+s;+6f+ ]S3uÎ+{Ezν|Φ 9|64p]٫AӘlZ zD*ˊ׹5}g;37+[V&Cozҥ;v qt\Z,z @ \hu/3#dOcpBW;'<׿&'VΠSxP ][Dmw=^ Rzuxܧ(gi]S>xWKv1w8K){=566aeU`0{ޅh-\kwShB:\Ǐu,$y.!erI -41>7_zga;qeuݟNU؎۰[ ] DmN(ZD \ ` 9;t~45HR*B<0q:]#; ␩Sρݸ3&'&?ŬWN. `6T uW BQroFDŽu7[IkPM?='tUn7 J]ykZsH)̏M[ &pp+啮p ,}^QEǾ/v >*H.$9C kl&Ǖl9aU5M]X{9|q#ݪ* GGw% ]yh,yWbgrKشe;T݀JەBSSM4 |ih4E5DH'm`}˷7Kc/ĎG{g~ڪ*nh"!RуI3nJihrXS;>ƻЃ~)%vz܍˯ zғ+ 2>z5EʗyDaڷu444P]c F{TSjs[s3])?CkOm>'Qټ4yE$džйq3`^㚪ll *d4<+ost##R ^_ zg(4D 9eGC@kbX*ُďִ R,a=sVrW'ZXrc7epmo#ޛ/|mŒ{]ĤdIENDB`(0` %+'"zgB$  i^QrlĴ槛1B<4ocm뚅klĴĴﰣA ~p_,pllklĴĴĴT,*&WOD rllllio]Gp_HĴĴĴh961/*%}iHnܚkkkloXSB/H8&m[DcóóĴôHC=]SFrlkll~ddR=I9'H8&I9'm[DccóĴĴŶ[UN&!QC5\ZI6蛆llkkxeNM=*I9'I9'H8&K;(oXccb}óĴĴƶmf\  F<1'O@/H8&WF3llv^ZH5I9'I9'I9'H8&]L8yaccbx²ĴĴŶ{sh2+$ SE5~I9(H8&I9'WF3hmZEJ:'I9'I9'I9'O?,|iRklĴebcsĴĴŵɈsNC5BM=+I9'I9'H8&I9'O?,RA.I9'H8&I9'I9'hVAflklĴĴgccoĴĴŵח!  >6,RC2I9'I9'I9'I9'H8&I9'I9'I9'I9'H8&VE2s[lllku\s\ĴĴicckĴóĴ䤘.(#RD5cJ;)H8&H8&H8&H8&H8&H8&H8&I9'H8&K;)saJjkkkgjXCI9'm[Dnóólbb{óóóĴ><5-N?-H8&I9'I9'I9'I9'I9'I9'H8&I9'I9'_N:{bkllk~kSP@-H8&I9'm[DcjóĴpc{ĴóĴĴĴP)'#B90>I9'H8&I9'I9'I9'I9'I9'I9'H8&I9'VE2klkl{b_N9H8&I9'H8&I9'q_HcchĴĴt{ĴóĴĴĴĴd73/B90>I9'H8&I9'I9'I9'I9'I9'I9'H8&I9'WF3lljs`JK;)I9'I9'I9'L<*vcLzbcfĴĴòĴóĴĴĴĴĴ{HC=B90>I9'H8&I9'I9'I9'I9'I9'I9'H8&I9'WF3ls[VE2I9'I9'I9'H8&bP<|clócbdĴĴĴĴóĴĴĴĴĴóŶB>8B90>H8&H8&H8&H8&H8&H8&H8&H8&H8&H8&TC0hVAI9'H8&H8&H8&RA.mVkkkóócbcóóóóóóóóóóóaZQB90>I9'H8&I9'I9'I9'I9'I9'I9'H8&I9'I9'I9'I9'H8&J:'m[EhllklĴĴĴdccóĴóĴĴĴĴĴóóaZQB90>I9'H8&I9'I9'I9'I9'I9'I9'H8&I9'I9'I9'I9'ZI5w^llllo̾ĴĴófccĴóĴĴĴĴĴóóaZQB90>I9'H8&I9'I9'I9'I9'I9'I9'H8&I9'I9'M=+xeNklllkͻĴóĴhc{ĴóĴĴĴĴĴóóaZQB90>I9'H8&I9'I9'I9'I9'I9'I9'H8&I9'QA.~elklluɼñóĴĴk{ĴóĴĴĴĴĴóóaZQB90>I9'H8&I9'I9'I9'I9'I9'I9'H8&I9'WF3llkmǴĴĴĴĴóĴĴĴĴĴóóaZQB90>H8&H8&H8&H8&H8&H8&H8&H8&H8&H8&WF3kk~ƴʸĴóóóóóóóóóóóóaZQB90>I9'H8&I9'I9'I9'I9'I9'I9'H8&I9'WF3q´̻ŵĴĴĴóĴĴĴĴĴóóaZQB90>I9'H8&I9'I9'I9'I9'I9'I9'H8&I9'r`νϾƶĴĴóĴĴĴĴĴóóaZQB90>I9'H8&I9'I9'I9'I9'I9'I9'\M;ǸĴóĴĴĴĴĴóóaZQB90>I9'H8&I9'I9'I9'I9'K<*qȺóĴĴĴĴĴóóaZQB90>I9'H8&I9'I9'I9'k]KŻʼĴĴĴĴĴóóaZQB90>H8&H8&H8&SC1ŵziøw}{~{vdtctczi̾óóóóóóaZQB90>I9'I9'q`ɸvhWH8&zI9'_Q?ĺZK9eVEI9'I9'ĴĴĴóóaZQC;1>_P>H8&I9'qcQz[L;˻tcI9'aRAI9'I9'¸IJĴĴóóaZQxriʺUF4I9'r`~{iK;)I9'L=+I9'I9'¸ȵĴóóaZQ ~q`I9'SC1ɹziǷyhXI7H8&I9'I9'I9'{I9'I9'¸˹ĴóaZQ{vo ȠI9'I9'ƶ{jbSAH8&H8&I9'I9'RB0~q_I9'I9'¸ͼŵaZQSPKuʺZK9I9'cTBnun`NM>,WG5{jn`NƵI9'I9'¸qbQϿe_W 31.ŷLǽyqqsvziwiXwew|kk\Kk\Ks}ll^Lziɐ,}lH8&xI9'ɫ%430 Ⱦtcv~m{{jü;MJFsohɘɼTda[MKGlo|wp.-*µEȊ'ɤ!/.+ȷȾ5FD@khbȏǺN^[VEC?dhvrk ('$ž?ȃ"ʌ+)'( @ A;2k#!}n\]m蚅k²0-)XNB'nlkzaĴ?;5 0+% {flkiq_IK;(ió³NIB LB6>oؚklqYUD1H8&H8&bgĴĵaZQ% L>/SB/lffT?I9'I9'RA.mVceĴĵqi_% C8,[K;)I9'RA.zgPN>+I9'J:'mZEhk²dcĴĴvj21*"&M>-H8&H8&H8&I9'H8&H8&ZI5v^kkrZóecóĴwB  I<.}I9'I9'I9'H8&I9'I9'M=*xeNklfgU@I9'gógcĴĴU D9-zH8&I9'I9'I9'H8&I9'O>,~dkk{hQO>,H8&I9'ceĴjĴĴĴjD9-~H8&I9'I9'I9'H8&I9'RB/ly`]K7I9'I9'YH4v]edĴ²ĴĴĴĴ#!D9-~H8&H8&H8&H8&H8&H8&Q@-p^HJ:(H8&M<*vdMkk²gcóóóóóóóylTD9-~H8&I9'I9'I9'H8&I9'I9'I9'I9'cQ<}dlkzƷĴjcóĴĴĴóĴxk_D9-~H8&I9'I9'I9'H8&I9'I9'RB/nWllnȹómcĴĴĴóĴxk_D9-~H8&I9'I9'I9'H8&I9'P?-hkl˹ʻĴqĴĴĴóĴxk_D9-~H8&H8&H8&H8&H8&H8&RB/ktǺ̾ó²óóóóóóxk_D9-~H8&I9'I9'I9'H8&I9'SB/ĴóĴĴĴóĴxk_D9-~H8&I9'I9'I9'H8&dUCıóĴĴĴóĴxk_D9-~H8&I9'I9'O?-}ǵĴĴĴóĴxk_D9-~H8&H8&vhVóȸǽŵͼʸĴóóóxk_D9-~YJ8]N,~{iI9'²Ǹxk_ @cTBTE3ͽijwf[L;O?-{m\{iH8&²ƶsU{vo#Ӵĺ~mo̼qvetzҤJ('$TQLò˻{jyht平d@=:32.ŸµWTO ^οokd  :ƴz,soh͟C%$"MJF ᴮ^:84.,*~ƿxROJ (  @WL?WC>8)0+$#xb{bybTME8 =2'uktaKN=+pXpe^TH$9H9(K;)VE2^L8za~mvmaZ<2%I9'I9'J:(|iR~eeS>o]FĴ|noF9*I9'H8&M=*yfOO>,lZE}q²Ĵô|ouF9*I9'I9'I9'YH5v^xɼóuĴĴF9*I9'H8&M=*mϾŵĴóF9*I9'I9'oaOɷǸĴĴF9*TD2ȹó|qcʺʼ:84ǹ 31. zJHC${woPǹb_X9UQL/˽zumS vst3_cmake-3.8.0_build_66/templates/desktop.ini.in000066400000000000000000000000541507546454600220470ustar00rootroot00000000000000[.ShellClassInfo] IconResource=PlugIn.ico,0vst3_cmake-3.8.0_build_66/templates/projectversion.h.in000066400000000000000000000054201507546454600231240ustar00rootroot00000000000000//------------------------------------------------------------------------ // Project : VST SDK // // Category : cmake // Filename : cmake/templates/projectversion.h.in // Created by : Steinberg, 03/2022 // Description : cmake template file to generate the projectversion.h // //----------------------------------------------------------------------------- // LICENSE // (c) 2022, Steinberg Media Technologies GmbH, 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 Steinberg Media Technologies nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED // OF THE POSSIBILITY OF SUCH DAMAGE. //----------------------------------------------------------------------------- #pragma once #define MAJOR_VERSION_STR "@PROJECT_VERSION_MAJOR@" #define MAJOR_VERSION_INT @PROJECT_VERSION_MAJOR@ #define SUB_VERSION_STR "@PROJECT_VERSION_MINOR@" #define SUB_VERSION_INT @PROJECT_VERSION_MINOR@ #define RELEASE_NUMBER_STR "@PROJECT_VERSION_PATCH@" #define RELEASE_NUMBER_INT @PROJECT_VERSION_PATCH@ #define BUILD_NUMBER_STR "@PROJECT_VERSION_TWEAK@" // Build number to be sure that each result could identified. #define BUILD_NUMBER_INT @PROJECT_VERSION_TWEAK@ // Version possibly with build number (example "1.0.3.342") #define FULL_VERSION_STR "@PROJECT_VERSION@" // Version without build number (example "1.0.3") #define VERSION_STR "@SMTG_PROJECT_VERSION@"