tortoize-2.0.5/0000775000175000017500000000000014177415663013255 5ustar maartenmaartentortoize-2.0.5/.gitignore0000664000175000017500000000006614177415663015247 0ustar maartenmaarten.vscode tortoize .vs/ build node_modules .gdb_history tortoize-2.0.5/CMakeLists.txt0000664000175000017500000001152614177415663016022 0ustar maartenmaarten# SPDX-License-Identifier: BSD-2-Clause # Copyright (c) 2021 NKI/AVL, Netherlands Cancer Institute # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # 1. Redistributions of source code must retain the above copyright notice, this # list of conditions and the following disclaimer # 2. Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. cmake_minimum_required(VERSION 3.15) # set the project name project(tortoize VERSION 2.0.5 LANGUAGES CXX) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") include(GNUInstallDirs) include(CheckFunctionExists) include(CheckIncludeFiles) include(CheckLibraryExists) include(CMakePackageConfigHelpers) include(Dart) include(FindFilesystem) include(GenerateExportHeader) set(CXX_EXTENSIONS OFF) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) find_package(Filesystem REQUIRED) if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers") elseif(MSVC) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4") endif() if(NOT "$ENV{CCP4}" STREQUAL "") set(BUILD_SHARED_LIBS ON) set(CCP4 $ENV{CCP4}) list(PREPEND CMAKE_MODULE_PATH "${CCP4}/Lib") list(APPEND CMAKE_PREFIX_PATH ${CCP4}) if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set(CMAKE_PREFIX_PATH ${CCP4}) endif() endif() if(MSVC) # make msvc standards compliant... add_compile_options(/permissive-) macro(get_WIN32_WINNT version) if (WIN32 AND CMAKE_SYSTEM_VERSION) set(ver ${CMAKE_SYSTEM_VERSION}) string(REPLACE "." "" ver ${ver}) string(REGEX REPLACE "([0-9])" "0\\1" ver ${ver}) set(${version} "0x${ver}") endif() endmacro() get_WIN32_WINNT(ver) add_definitions(-D_WIN32_WINNT=${ver}) # On Windows, do not install in the system location if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT AND NOT BUILD_FOR_CCP4) message(STATUS "The library and auxiliary files will be installed in $ENV{LOCALAPPDATA}/${PROJECT_NAME}") set(CMAKE_INSTALL_PREFIX "$ENV{LOCALAPPDATA}/${PROJECT_NAME}" CACHE PATH "..." FORCE) endif() endif() if(UNIX AND NOT APPLE) # On Linux, install in the $HOME/.local folder by default if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) message(WARNING "The library and auxiliary files will be installed in $ENV{HOME}/.local") set(CMAKE_INSTALL_PREFIX "$ENV{HOME}/.local" CACHE PATH "..." FORCE) endif() endif() # Create a revision file, containing the current git version info, if any include(VersionString) write_version_header() # Optionally use mrc to create resources find_package(Mrc) if(MRC_FOUND) option(USE_RSRC "Use mrc to create resources" ON) else() message(WARNING "Not using resources since mrc was not found") endif() if(USE_RSRC STREQUAL "ON") set(USE_RSRC 1) add_compile_definitions(USE_RSRC) endif() # libraries set(CMAKE_THREAD_PREFER_PTHREAD) set(THREADS_PREFER_PTHREAD_FLAG) find_package(Threads) find_package(cifpp 2.0.0 REQUIRED) find_package(zeep 5.1.4 REQUIRED) find_package(Boost COMPONENTS program_options REQUIRED) add_executable(tortoize ${PROJECT_SOURCE_DIR}/src/tortoize.cpp ${TORTOIZE_RESOURCE}) if(USE_RSRC) mrc_target_resources(tortoize ${CMAKE_SOURCE_DIR}/rsrc/rama-data.bin ${CMAKE_SOURCE_DIR}/rsrc/torsion-data.bin ${CIFPP_SHARE_DIR}/mmcif_pdbx_v50.dic) endif() target_include_directories(tortoize PRIVATE cifpp::cifpp ${CMAKE_SOURCE_DIR}/include ${CMAKE_BINARY_DIR}) target_link_libraries(tortoize cifpp::cifpp zeep::zeep std::filesystem Boost::program_options) install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION ${BIN_INSTALL_DIR} ) if(NOT USE_RSRC) install(FILES ${CMAKE_SOURCE_DIR}/rsrc/rama-data.bin ${CMAKE_SOURCE_DIR}/rsrc/torsion-data.bin DESTINATION ${CIFPP_SHARE_DIR}) endif() # # manual # install(FILES doc/tortoize.1 DESTINATION ${CMAKE_INSTALL_DATADIR}/man/man1) # manual install(FILES doc/tortoize.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1) tortoize-2.0.5/LICENSE0000664000175000017500000000247214177415663014267 0ustar maartenmaartenSPDX-License-Identifier: BSD-2-Clause Copyright (c) 2020 NKI/AVL, Netherlands Cancer Institute Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.tortoize-2.0.5/README.md0000664000175000017500000000135414177415663014537 0ustar maartenmaartenTortoize ======== Application to calculate ramachandran z-scores. Building -------- Make sure you install [libcif++](https://github.com/PDB-REDO/libcifpp) and [libzeep](https://github.com/mhekkel/libzeep) first before building. After that, building should be as easy as typing: ``` git clone https://github.com/PBD-REDO/tortoize.git cd tortoize mkdir build cd build cmake .. cmake --build . --config Release ctest -C Release cmake --install . ``` This will install the `tortoize` program in `$HOME/.local/bin`. If you want to install elsewhere, specify the prefix with the [CMAKE_INSTALL_PREFIX](https://cmake.org/cmake/help/v3.21/variable/CMAKE_INSTALL_PREFIX.html) variable. Usage ----- See [manual page](doc/tortoize.pdf) for more info. tortoize-2.0.5/babel.config.js0000664000175000017500000000031414177415663016122 0ustar maartenmaarten{ presets: [ [ "@babel/env", { "targets": { "edge": "17", "firefox": "60", "chrome": "67", "safari": "11.1", }, "useBuiltIns": "usage", "corejs": "3.8.2", } ] ] }tortoize-2.0.5/changelog0000664000175000017500000000034114177415663015125 0ustar maartenmaartenVersion 2.0.5 - Fixed a crashing bug when fed with unknown amino acids - Replacing ASX and GLX with ASP and GLU Version 2.0.4 - Should be easier to make Version 2.0.2 - Added cmake build files Version 2.0.0 - Total rewritetortoize-2.0.5/cmake/0000775000175000017500000000000014177415663014335 5ustar maartenmaartentortoize-2.0.5/cmake/FindFilesystem.cmake0000664000175000017500000000432714177415663020272 0ustar maartenmaarten# Simplistic reimplementation of https://github.com/vector-of-bool/CMakeCM/blob/master/modules/FindFilesystem.cmake if(TARGET std::filesystem) return() endif() cmake_minimum_required(VERSION 3.10) include(CMakePushCheckState) include(CheckIncludeFileCXX) include(CheckCXXSourceCompiles) cmake_push_check_state() set(CMAKE_CXX_STANDARD 17) check_include_file_cxx("filesystem" _CXX_FILESYSTEM_HAVE_HEADER) mark_as_advanced(_CXX_FILESYSTEM_HAVE_HEADER) set(code [[ #include #include int main() { auto cwd = std::filesystem::current_path(); return EXIT_SUCCESS; } ]]) if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS_EQUAL 8.4.0) # >> https://stackoverflow.com/questions/63902528/program-crashes-when-filesystempath-is-destroyed set(CXX_FILESYSTEM_NO_LINK_NEEDED 0) else() # Check a simple filesystem program without any linker flags check_cxx_source_compiles("${code}" CXX_FILESYSTEM_NO_LINK_NEEDED) endif() if(CXX_FILESYSTEM_NO_LINK_NEEDED) set(_found 1) else() set(prev_libraries ${CMAKE_REQUIRED_LIBRARIES}) # Add the libstdc++ flag set(CMAKE_REQUIRED_LIBRARIES ${prev_libraries} -lstdc++fs) check_cxx_source_compiles("${code}" CXX_FILESYSTEM_STDCPPFS_NEEDED) set(_found ${CXX_FILESYSTEM_STDCPPFS_NEEDED}) if(NOT CXX_FILESYSTEM_STDCPPFS_NEEDED) # Try the libc++ flag set(CMAKE_REQUIRED_LIBRARIES ${prev_libraries} -lc++fs) check_cxx_source_compiles("${code}" CXX_FILESYSTEM_CPPFS_NEEDED) set(_found ${CXX_FILESYSTEM_CPPFS_NEEDED}) endif() endif() if(_found) add_library(std::filesystem INTERFACE IMPORTED) set_property(TARGET std::filesystem APPEND PROPERTY INTERFACE_COMPILE_FEATURES cxx_std_17) if(CXX_FILESYSTEM_NO_LINK_NEEDED) # Nothing to add... elseif(CXX_FILESYSTEM_STDCPPFS_NEEDED) set_target_properties(std::filesystem PROPERTIES IMPORTED_LIBNAME stdc++fs) elseif(CXX_FILESYSTEM_CPPFS_NEEDED) set_target_properties(std::filesystem PROPERTIES IMPORTED_LIBNAME c++fs) endif() endif() cmake_pop_check_state() set(Filesystem_FOUND ${_found} CACHE BOOL "TRUE if we can run a program using std::filesystem" FORCE) if(Filesystem_FIND_REQUIRED AND NOT Filesystem_FOUND) message(FATAL_ERROR "Cannot run simple program using std::filesystem") endif() tortoize-2.0.5/cmake/GetGitRevisionDescription.cmake0000664000175000017500000002245714177415663022457 0ustar maartenmaarten# - Returns a version string from Git # # These functions force a re-configure on each git commit so that you can # trust the values of the variables in your build system. # # get_git_head_revision( [ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR]) # # Returns the refspec and sha hash of the current head revision # # git_describe( [ ...]) # # Returns the results of git describe on the source tree, and adjusting # the output so that it tests false if an error occurs. # # git_describe_working_tree( [ ...]) # # Returns the results of git describe on the working tree (--dirty option), # and adjusting the output so that it tests false if an error occurs. # # git_get_exact_tag( [ ...]) # # Returns the results of git describe --exact-match on the source tree, # and adjusting the output so that it tests false if there was no exact # matching tag. # # git_local_changes() # # Returns either "CLEAN" or "DIRTY" with respect to uncommitted changes. # Uses the return code of "git diff-index --quiet HEAD --". # Does not regard untracked files. # # Requires CMake 2.6 or newer (uses the 'function' command) # # Original Author: # 2009-2020 Ryan Pavlik # http://academic.cleardefinition.com # # Copyright 2009-2013, Iowa State University. # Copyright 2013-2020, Ryan Pavlik # Copyright 2013-2020, Contributors # SPDX-License-Identifier: BSL-1.0 # Distributed under the Boost Software License, Version 1.0. # (See accompanying file LICENSE_1_0.txt or copy at # http://www.boost.org/LICENSE_1_0.txt) if(__get_git_revision_description) return() endif() set(__get_git_revision_description YES) # We must run the following at "include" time, not at function call time, # to find the path to this module rather than the path to a calling list file get_filename_component(_gitdescmoddir ${CMAKE_CURRENT_LIST_FILE} PATH) # Function _git_find_closest_git_dir finds the next closest .git directory # that is part of any directory in the path defined by _start_dir. # The result is returned in the parent scope variable whose name is passed # as variable _git_dir_var. If no .git directory can be found, the # function returns an empty string via _git_dir_var. # # Example: Given a path C:/bla/foo/bar and assuming C:/bla/.git exists and # neither foo nor bar contain a file/directory .git. This wil return # C:/bla/.git # function(_git_find_closest_git_dir _start_dir _git_dir_var) set(cur_dir "${_start_dir}") set(git_dir "${_start_dir}/.git") while(NOT EXISTS "${git_dir}") # .git dir not found, search parent directories set(git_previous_parent "${cur_dir}") get_filename_component(cur_dir "${cur_dir}" DIRECTORY) if(cur_dir STREQUAL git_previous_parent) # We have reached the root directory, we are not in git set(${_git_dir_var} "" PARENT_SCOPE) return() endif() set(git_dir "${cur_dir}/.git") endwhile() set(${_git_dir_var} "${git_dir}" PARENT_SCOPE) endfunction() function(get_git_head_revision _refspecvar _hashvar) _git_find_closest_git_dir("${CMAKE_CURRENT_SOURCE_DIR}" GIT_DIR) if("${ARGN}" STREQUAL "ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR") set(ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR TRUE) else() set(ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR FALSE) endif() if(NOT "${GIT_DIR}" STREQUAL "") file(RELATIVE_PATH _relative_to_source_dir "${CMAKE_SOURCE_DIR}" "${GIT_DIR}") if("${_relative_to_source_dir}" MATCHES "[.][.]" AND NOT ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR) # We've gone above the CMake root dir. set(GIT_DIR "") endif() endif() if("${GIT_DIR}" STREQUAL "") set(${_refspecvar} "GITDIR-NOTFOUND" PARENT_SCOPE) set(${_hashvar} "GITDIR-NOTFOUND" PARENT_SCOPE) return() endif() # Check if the current source dir is a git submodule or a worktree. # In both cases .git is a file instead of a directory. # if(NOT IS_DIRECTORY ${GIT_DIR}) # The following git command will return a non empty string that # points to the super project working tree if the current # source dir is inside a git submodule. # Otherwise the command will return an empty string. # execute_process( COMMAND "${GIT_EXECUTABLE}" rev-parse --show-superproject-working-tree WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" OUTPUT_VARIABLE out ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) if(NOT "${out}" STREQUAL "") # If out is empty, GIT_DIR/CMAKE_CURRENT_SOURCE_DIR is in a submodule file(READ ${GIT_DIR} submodule) string(REGEX REPLACE "gitdir: (.*)$" "\\1" GIT_DIR_RELATIVE ${submodule}) string(STRIP ${GIT_DIR_RELATIVE} GIT_DIR_RELATIVE) get_filename_component(SUBMODULE_DIR ${GIT_DIR} PATH) get_filename_component(GIT_DIR ${SUBMODULE_DIR}/${GIT_DIR_RELATIVE} ABSOLUTE) set(HEAD_SOURCE_FILE "${GIT_DIR}/HEAD") else() # GIT_DIR/CMAKE_CURRENT_SOURCE_DIR is in a worktree file(READ ${GIT_DIR} worktree_ref) # The .git directory contains a path to the worktree information directory # inside the parent git repo of the worktree. # string(REGEX REPLACE "gitdir: (.*)$" "\\1" git_worktree_dir ${worktree_ref}) string(STRIP ${git_worktree_dir} git_worktree_dir) _git_find_closest_git_dir("${git_worktree_dir}" GIT_DIR) set(HEAD_SOURCE_FILE "${git_worktree_dir}/HEAD") endif() else() set(HEAD_SOURCE_FILE "${GIT_DIR}/HEAD") endif() set(GIT_DATA "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/git-data") if(NOT EXISTS "${GIT_DATA}") file(MAKE_DIRECTORY "${GIT_DATA}") endif() if(NOT EXISTS "${HEAD_SOURCE_FILE}") return() endif() set(HEAD_FILE "${GIT_DATA}/HEAD") configure_file("${HEAD_SOURCE_FILE}" "${HEAD_FILE}" COPYONLY) configure_file("${_gitdescmoddir}/GetGitRevisionDescription.cmake.in" "${GIT_DATA}/grabRef.cmake" @ONLY) include("${GIT_DATA}/grabRef.cmake") set(${_refspecvar} "${HEAD_REF}" PARENT_SCOPE) set(${_hashvar} "${HEAD_HASH}" PARENT_SCOPE) endfunction() function(git_describe _var) if(NOT GIT_FOUND) find_package(Git QUIET) endif() get_git_head_revision(refspec hash) if(NOT GIT_FOUND) set(${_var} "GIT-NOTFOUND" PARENT_SCOPE) return() endif() if(NOT hash) set(${_var} "HEAD-HASH-NOTFOUND" PARENT_SCOPE) return() endif() # TODO sanitize #if((${ARGN}" MATCHES "&&") OR # (ARGN MATCHES "||") OR # (ARGN MATCHES "\\;")) # message("Please report the following error to the project!") # message(FATAL_ERROR "Looks like someone's doing something nefarious with git_describe! Passed arguments ${ARGN}") #endif() #message(STATUS "Arguments to execute_process: ${ARGN}") execute_process( COMMAND "${GIT_EXECUTABLE}" describe --tags --always ${hash} ${ARGN} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" RESULT_VARIABLE res OUTPUT_VARIABLE out ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) if(NOT res EQUAL 0) set(out "${out}-${res}-NOTFOUND") endif() set(${_var} "${out}" PARENT_SCOPE) endfunction() function(git_describe_working_tree _var) if(NOT GIT_FOUND) find_package(Git QUIET) endif() if(NOT GIT_FOUND) set(${_var} "GIT-NOTFOUND" PARENT_SCOPE) return() endif() execute_process( COMMAND "${GIT_EXECUTABLE}" describe --dirty ${ARGN} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" RESULT_VARIABLE res OUTPUT_VARIABLE out ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) if(NOT res EQUAL 0) set(out "${out}-${res}-NOTFOUND") endif() set(${_var} "${out}" PARENT_SCOPE) endfunction() function(git_get_exact_tag _var) git_describe(out --exact-match ${ARGN}) set(${_var} "${out}" PARENT_SCOPE) endfunction() function(git_local_changes _var) if(NOT GIT_FOUND) find_package(Git QUIET) endif() get_git_head_revision(refspec hash) if(NOT GIT_FOUND) set(${_var} "GIT-NOTFOUND" PARENT_SCOPE) return() endif() if(NOT hash) set(${_var} "HEAD-HASH-NOTFOUND" PARENT_SCOPE) return() endif() execute_process( COMMAND "${GIT_EXECUTABLE}" diff-index --quiet HEAD -- WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" RESULT_VARIABLE res OUTPUT_VARIABLE out ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) if(res EQUAL 0) set(${_var} "CLEAN" PARENT_SCOPE) else() set(${_var} "DIRTY" PARENT_SCOPE) endif() endfunction() tortoize-2.0.5/cmake/GetGitRevisionDescription.cmake.in0000664000175000017500000000251214177415663023052 0ustar maartenmaarten# # Internal file for GetGitRevisionDescription.cmake # # Requires CMake 2.6 or newer (uses the 'function' command) # # Original Author: # 2009-2010 Ryan Pavlik # http://academic.cleardefinition.com # Iowa State University HCI Graduate Program/VRAC # # Copyright 2009-2012, Iowa State University # Copyright 2011-2015, Contributors # Distributed under the Boost Software License, Version 1.0. # (See accompanying file LICENSE_1_0.txt or copy at # http://www.boost.org/LICENSE_1_0.txt) # SPDX-License-Identifier: BSL-1.0 set(HEAD_HASH) file(READ "@HEAD_FILE@" HEAD_CONTENTS LIMIT 1024) string(STRIP "${HEAD_CONTENTS}" HEAD_CONTENTS) if(HEAD_CONTENTS MATCHES "ref") # named branch string(REPLACE "ref: " "" HEAD_REF "${HEAD_CONTENTS}") if(EXISTS "@GIT_DIR@/${HEAD_REF}") configure_file("@GIT_DIR@/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY) else() configure_file("@GIT_DIR@/packed-refs" "@GIT_DATA@/packed-refs" COPYONLY) file(READ "@GIT_DATA@/packed-refs" PACKED_REFS) if(${PACKED_REFS} MATCHES "([0-9a-z]*) ${HEAD_REF}") set(HEAD_HASH "${CMAKE_MATCH_1}") endif() endif() else() # detached HEAD configure_file("@GIT_DIR@/HEAD" "@GIT_DATA@/head-ref" COPYONLY) endif() if(NOT HEAD_HASH) file(READ "@GIT_DATA@/head-ref" HEAD_HASH LIMIT 1024) string(STRIP "${HEAD_HASH}" HEAD_HASH) endif() tortoize-2.0.5/cmake/VersionString.cmake0000664000175000017500000000603414177415663020156 0ustar maartenmaarten# SPDX-License-Identifier: BSD-2-Clause # Copyright (c) 2021 NKI/AVL, Netherlands Cancer Institute # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # 1. Redistributions of source code must retain the above copyright notice, this # list of conditions and the following disclaimer # 2. Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. cmake_minimum_required(VERSION 3.15) # Create a revision file, containing the current git version info, if any function(write_version_header) include(GetGitRevisionDescription) if(NOT(GIT-NOTFOUND OR HEAD-HASH-NOTFOUND)) git_describe_working_tree(BUILD_VERSION_STRING --match=build --dirty) if(BUILD_VERSION_STRING MATCHES "build-([0-9]+)-g([0-9a-f]+)(-dirty)?") set(BUILD_GIT_TAGREF "${CMAKE_MATCH_2}") if(CMAKE_MATCH_3) set(BUILD_VERSION_STRING "${CMAKE_MATCH_1}*") else() set(BUILD_VERSION_STRING "${CMAKE_MATCH_1}") endif() endif() else() set(BUILD_VERSION_STRING "no git info available") endif() include_directories(${CMAKE_BINARY_DIR} PRIVATE) string(TIMESTAMP BUILD_DATE_TIME "%Y-%m-%dT%H:%M:%SZ" UTC) if(ARGC GREATER 0) set(VAR_PREFIX "${ARGV0}") endif() file(WRITE "${CMAKE_BINARY_DIR}/revision.hpp.in" [[// Generated revision file #pragma once #include const char k@VAR_PREFIX@ProjectName[] = "@PROJECT_NAME@"; const char k@VAR_PREFIX@VersionNumber[] = "@PROJECT_VERSION@"; const char k@VAR_PREFIX@VersionGitTag[] = "@BUILD_GIT_TAGREF@"; const char k@VAR_PREFIX@BuildInfo[] = "@BUILD_VERSION_STRING@"; const char k@VAR_PREFIX@BuildDate[] = "@BUILD_DATE_TIME@"; inline void write_version_string(std::ostream &os, bool verbose) { os << k@VAR_PREFIX@ProjectName << " version " << k@VAR_PREFIX@VersionNumber << std::endl; if (verbose) { os << "build: " << k@VAR_PREFIX@BuildInfo << ' ' << k@VAR_PREFIX@BuildDate << std::endl; if (k@VAR_PREFIX@VersionGitTag[0] != 0) os << "git tag: " << k@VAR_PREFIX@VersionGitTag << std::endl; } } ]]) configure_file("${CMAKE_BINARY_DIR}/revision.hpp.in" "${CMAKE_BINARY_DIR}/revision.hpp" @ONLY) endfunction() tortoize-2.0.5/doc/0000775000175000017500000000000014177415663014022 5ustar maartenmaartentortoize-2.0.5/doc/tortoize.10000664000175000017500000000330214177415663015761 0ustar maartenmaarten.TH tortoize 1 "2021-08-31" "version 2.0.2" "User Commands" .if n .ad l .nh .SH NAME tortoize \- Calculate ramachandran z-scores .SH SYNOPSIS tortoize [OPTION] input [output] .SH DESCRIPTION Tortoize validates protein structure models by checking the Ramachandran plot and side-chain rotamer distributions. Quality Z-scores are given at the residue level and at the model level (ramachandran-z and torsions-z). Higher scores are better. To compare models or to describe the reliability of the model Z-scores jackknife- based standard deviations are also reported (ramachandran-jackknife-sd and torsion-jackknife-sd). .SH OPTIONS The input file can be either mmCIF or PDB format and the file may be gzip or bzip2 compressed. .sp The output is a json file, if no file name is specified the output is written to \fIstdout\fR. .TP \fB--dict\fR= Specify a dictionary file containing restraints for residues specific to this file. .TP \fB--log\fR= Write a log with diagnostic information to this file. .SH REFERENCES References: .TP \fBSobolev et al.\fR A Global Ramachandran Score Identifies Protein Structures with Unlikely Stereochemistry, Structure (2020), DOI: \fIhttps://doi.org/10.1016/j.str.2020.08.005\fR .TP \fBVan Beusekom et al.\fR Homology-based loop modeling yields more complete crystallographic protein structures, IUCrJ (2018), DOI: \fIhttps://doi.org/10.1107/S2052252518010552\fR .TP \fBHooft et al.\fR Objectively judging the quality of a protein structure from a Ramachandran plot, CABIOS (1993), DOI: \fIhttps://doi.org/10.1093/bioinformatics/13.4.425 \fR .SH AUTHOR Written by Maarten L. Hekkelman .SH "REPORTING BUGS" Report bugs at https://github.com/PDB-REDO/tortoize/issues tortoize-2.0.5/doc/tortoize.html0000664000175000017500000000575414177415663016602 0ustar maartenmaartenContent-type: text/html; charset=UTF-8 Man page of tortoize

tortoize

Section: User Commands (1)
Updated: 2021-08-31
Index Return to Main Contents
 

NAME

tortoize - Calculate ramachandran z-scores  

SYNOPSIS

tortoize [OPTION] input [output]  

DESCRIPTION

Tortoize validates protein structure models by checking the Ramachandran plot and side-chain rotamer distributions. Quality Z-scores are given at the residue level and at the model level (ramachandran-z and torsions-z). Higher scores are better. To compare models or to describe the reliability of the model Z-scores jackknife- based standard deviations are also reported (ramachandran-jackknife-sd and torsion-jackknife-sd).  

OPTIONS

The input file can be either mmCIF or PDB format and the file may be gzip or bzip2 compressed.

The output is a json file, if no file name is specified the output is written to stdout.

--dict=<file>
Specify a dictionary file containing restraints for residues specific to this file.
--log=<file>
Write a log with diagnostic information to this file.
 

REFERENCES

References:
Sobolev et al.
A Global Ramachandran Score Identifies Protein Structures with Unlikely Stereochemistry, Structure (2020), DOI: https://doi.org/10.1016/j.str.2020.08.005
Van Beusekom et al.
Homology-based loop modeling yields more complete crystallographic protein structures, IUCrJ (2018), DOI: https://doi.org/10.1107/S2052252518010552
Hooft et al.
Objectively judging the quality of a protein structure from a Ramachandran plot, CABIOS (1993), DOI: https://doi.org/10.1093/bioinformatics/13.4.425
 

AUTHOR

Written by Maarten L. Hekkelman <maarten@hekkelman.com>  

REPORTING BUGS

Report bugs at https://github.com/PDB-REDO/tortoize/issues


 

Index

NAME
SYNOPSIS
DESCRIPTION
OPTIONS
REFERENCES
AUTHOR
REPORTING BUGS

This document was created by man2html, using the manual pages.
Time: 14:01:47 GMT, August 31, 2021 tortoize-2.0.5/doc/tortoize.pdf0000664000175000017500000005174014177415663016403 0ustar maartenmaarten%PDF-1.4 %쏢 %%Invocation: path/gs -P- -dSAFER -dCompatibilityLevel=1.4 -q -P- -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sstdout=? -sOutputFile=? -P- -dSAFER -dCompatibilityLevel=1.4 - 5 0 obj <> stream xWrF+涨ʌTlVb{-9#-ݒa%73 NR: ݯ_wn}&eQ;)F뀬C֣#Id aw 8 "Y#4dutk5jd$,v7&760:EiM.?-ޏlrc |1FNⷑuq<~|8f>#lx،cG!"8OyREKɮYzfSjo..O}E]^^-fHVn ߟ۳L0_ J2N JdڀJf*rY_X0k 32؛S]-_S7r![ n'rAYS_wWoOJVElSqnN^?eukoN04^yellEJ͕hquZoD}O*C ͻ-ɺIqx{eN{l;͒8T.jUG@Y@sa{!+ثS6Re@Ĕ؁sS+>;BNT6;=!NQύ—8hHIOb$0@"рKY7YJ0iװt_Ϯ.N^cb%*Q&Yd d.B .[%TfO&>A~rltX+&<քK]hH.q~8J,eU;݈ 7e=.O{Ӂ6-!P#ln\&##XLAFÝy{9ZCR{jn?L&̨nZ 8y2fiy)u oSV0q3֪U T봸Ķc`X"(7$R^v8D1lù#vȱ*mJrO:KUGݿT#29ҒkWtpOj1 &sgm=m'\UZ].`#K}/3y1վ]Q,\fj:^Wj;˱Np#w^zi}(X+=7}Oݮ/=h[jBa=+VVMB~,//(a!|oBpEODbvh3P1YAcأVbG]jˡY ߾>{{9L5r/_Kk O %w0 m}l1?!endstream endobj 6 0 obj 1668 endobj 4 0 obj <> /Contents 5 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R ] /Count 1 >> endobj 1 0 obj <> endobj 7 0 obj <>endobj 14 0 obj <> endobj 15 0 obj <> endobj 12 0 obj <> endobj 10 0 obj <> endobj 8 0 obj <> endobj 19 0 obj <> endobj 13 0 obj <> endobj 16 0 obj <>stream xVwTٚ=%xcga&F1* t@M7QhBC#9"q#F}fG͎ϳ3x}oNsϭS_}ѣ05!8^-Yr()>rdcǢFȡo94<Ƴѥ&5x{I0m2620pvݟ͙3w]rJ(>6Nxᢥ? Z+,dI)h$(^!L1 )"Dz("2*&6.~W`/YŲ/Xa۰l`Zl6bX  &a0o}xTgFc{jThzx c>vXK>wbܻ[eB쉴Yްmn+ǐ! W&CmH%Q שmVeM.V4uqgWj'l8Ho%A&B:c:L,ڕ׮=;z26fR1Ѣp@O:zn݋Su)^NO`ѓ~f_?%=J[\Q8LCK8%x~Q Aʹ,IqKw\ֱ"ݭhDSL}; )* LZ{y3OߔXBSA]oAs OѫUx{0/ǒm0:?j=ZNo`CdI U(jj\rö( rl i=X~~3M1ݬT1֛r s(M=g8k4[#>'O+pel[6 پCc^mV NS @kkc'k I )hu ^|27)ݒT&,nUz>{p;(8LNNLh3n-]`پAzYO*@l;w̩,L-..ہ5o)o2Xj.5TR=8>zEڀjf[ %?⏦0BvD~j+U9%qi?\?VOI#񀈖v}xP; {pDg#Ijy%JPuo-&*0 ͚χ`s2ʰCZc+ӀLP2ZZ-&Q6T|&涟?Ĝ2\psh= h4iZ*gL?LB4^ryGE5 iiL1?,1b4z<('JoF3/h=D#3-g¡gB-^>b#֤P!bױ3~< \B%@c#џ)ФT#[>}u(2eLv yVY ';s9aY5~)GDU <=ˌ׆s5NOZ f}W-{ -'"4#5v{p%3xdlUhj$Zs&9" B{q=jr\C$C)%=ٮZʞksft/$l3H6jB2,VUmez=6ޢ7!W#J=Mπ) KSh5iyo.=)uz֫u}}vz9ݠ!G1H+Ы~[7|h@_![8|H.…ᙋ3m Z%O4 tJ$Ja"7JQt3EU']=OKpGعb2*Vn8j _f{ FN>M p~Ѳ$s8F^Nb7PK&||:r2*kR6Vbl,#Bg2)%e ȃ%$gOP-q%+#=Wӎlth-*6؂}>h:>TC.󷀻t~٘)!:L8bvSFSݏOR'dz<44p+ѴbmׅZ׏6v0{-x y>ho;n^6hq;Z>72IB]D-po;LUFё$jbFpq1 endstream endobj 11 0 obj <> endobj 17 0 obj <>stream xWiX׶Bv EK`՞Zm:+(ZE*)̓ S $$a  A:֪msG7?s>ɏ {}$r(חY~?GIK&:W 3~stP` +hW6q1i^]r'^ʸdC<1%5Iڝ?o_pa%OyM[Ҷo/+fwܞIK^byN/.-f>Yx3Y2/3Azfy,e63˘-kVuƗYμlgV0;?LgM*3aN3N? CVN;=wNqggq=Ḧ&cϺ<ȥznMs;0m[BD4¦f`b],y{y=RX<%__Ynwcq:NK C).7 /S<7<aI"(LCc`l}W noU#7F{~TpX`߈ @.;yZ/$ S<'7{5KÇZ(]V(M5 6}R䁂Tgu@"|x򽂻ZҬ. v~fK!vncl(&ٜ>8[j8ʃW*?x=(+6L%7e31P[?d(.0#Rɽ~6=%ܠVqǪ)z> gz)Ud6M]\ek*zǜWєJvP__X-@|=YP=^V5Fd#J]W*(ǧ-JF<:XX{ t{>} $dyItO"t[T$F뵣č8 ~7ܦ?ln,iX$u*\ZYKD.S9/+,)3!ӡW/Hb n7@ɝ]&fj%exJ9/(JJM^S4k=g'x>x /t͏D/6'R.zA .nlta4ֹxi_xj}W5ӡs2F`<~|\W%,oJd3s|"n<|R7>)o'ðTxm-%[n76WVrd"9':*;^ҔiS8FƁD{2jx*';bd߭ѮsSp=n瞧e顈;š $IZZWD)qa,!Vydg~;e9;,N7+(F8Ⱦĸ8?[LK(Pq ^K:F zm7 Q@;ήQgr0 /44^wOPpx#"9O~3QVܤ>M&s]9Qq ;Bx^/IprsFXaWulWᄾ{f! /Ì/F:^3ks2"DjCzs&I4!DNϛxSIaP!^ NWs$DAAe@2Ps`&%=*6vsd{CxH[+.ΗKqJPvX5H)KdF7n kiCK~|+ggWo#`bΡW>!oKiTm@aGnzh M]fV~0M̌/ڈ^:q~jfEh+#/r#YJU,r+ iE3Njdͪ+iHtb{a݉wx}opn׸¨ć=;P]х;ڣ)@9q!}^ij6n^/_}U3OMUt`iz`pBf2@ǥ{#,MJxicn:Gr 8⾝]kҏ#>A$I?g10WUY*6O!=W@E;,un|56q\ƌ?P\X39S3\Q{0,66<+~hkh(;A3;CnM>OCRWZ\Ҭ-Ϡ{)$*j"Z>\vK%|n;=7ٵ>"ve@a:jj,tmE#ٽEC5 {LJo՟ng{6K0[ _8^lҔE8udgbnF`奄F'qdQd$ߑJДeO]IH7Ŵ7u8{:mv/=t/t =qWVf#=w lQm=j'*ekl?Os`#Xn4`IXvCS;hdj 0G endstream endobj 9 0 obj <> endobj 18 0 obj <>stream xxyXS!{oZ# 6CUj3Ñ2)f$@JH aeFDqZVJG{ii]y~+{Ͻ<ַ60AXٮaQAcMذ3wػQ?7M:plffU3oäyewCU>#H MXv݆%KZYd9# N8d%A!qA3f1vwܞ 'HtJ=yHxpБ!B\]#"|)лI75%8 d*@ D N室S`!5FL.02ˬ/Ơb! 5^A6ji@F Jq@KS;_W0ʎƒ{yϩlGJ#ZHi5E*ҽHE)J2r鹓kA'3a4 ( )KW哖1NNO38دAUg[G,8=MQ ᒪ*׺jCǙElCI荾tՄC[ҩ Y-*j3(Ty~ů~JIH`wlar*C_!Z-gpFWwoڞ$~p=p<|_Q?7{`<0Dʒ k˽ {)CAkA#hCe5^jN}Qp1wE~ 4\vu8T5Sy=QVf5c0qҢ$Eqܮ+opeQ#=cepo?tw?dj WuU*ŀnJB).g|cѐɳD3:̛@żb1#7jI94*&G8*9p_; a,98u:rLdd6.[;IHO߸r{[|hTB>. >;r:3-Ņgv̭w#@@6>&b S3Y0m OQE'!6ZYs|wIM۝C rgk}4#%Qqv\!LL GH (NhN>ᬋ:=Fxu~`3?O1ϻq}%- (U%{'"Fk`jk4yQEe:2ϙjL!]L(vev)L'5>dd=c/r:T1JDƂ"T3%57N2$@.!"T Rz@RxdN וaLI E8e!k4*.R~"8q4RCFeԗ2~3>ZZ-62k/܀,1ϸ9gse@jI~BaB~<:{ri=$=<DZEx H!R[7mYC}͑{O#VLyz-hmiu Ifk Sg,>"v"l7t.Χt4Gk,I$eɩI@ 4Z_B_=>ZW6lrg 8| vQ:%Ʀe&|+Fn# xe]T z+(SF-_+QJD-)SYTF tO+ӕ}#u 9ϕB Bԍ\xHLH$$F}* >GEԠTQ>^_g8o]( # R&;_IګEGՏK/58)WV!.l5X\O'[s R iZdTڀ<ө.V:F=Vj&[5ruNB GVMw E]̿p'|!Mg$+N yX@ Q#3$FQыڄ7Sm@e:gekPjq~Tg^ltm4XQ A=?/QJ= >0BGHbR˵Z z lUqFoGPsҫ#UqwBX~>)6ÿ(WvJL2V)ZHYtCkuPC0VNJLpN~{,J+{m@ /$qHИ>~gNy&1 +W>Y4@) OQc/߇^8|,+n=1X'MFVh9h[]?M/FIAS#_SNNy=X͡YeDQ%%U>zc fYfZR5! JsJM0hԸ">\R($RZ*eѫ,&L̟Լ4@ǧą ]cUW\6Uib=e3A[xg@uR]DT/H,Vʚ+=C^~1{q=e-Qz?ժ~b=)O>$R4FA)9:釔 ĕԶ*?hf9$,bq0H$[R]yiR?З<Ǚ< E,hMK]-ʵF<V3+9 fa_xpCMC*Vb22fYjɘ# `te-$MVPY$ #[*U3y j ЂG Jq˅+9h5.K%Xi4ܾУ'wV3M27%~KIS)]}GMqrH!@iVqzbԓ8oL ֔0R,#}8諩]٭4Nfݖ6ŵFu^xjP@#FH($3W:jcJ6LsUVVmd?'7q ZwuKoO}\=㮣|:V:l vD\nY [xOGf0.!!47!- }C՗ YyEocl.FWbrl**j:8y|cY!-}ė3R]*q4 D%^#с4 ΥxL3X<<*T|~ٙo+ Pre=x.^k3.A 1Tʱp6h BTHNMUxw7 l&voHM,-fZIbInuRLu"Q'9#6O~z0t{w!n:ŽJtCKFC;85VeO-e?]w3B9BM5Es|;>R/*U|I%&ġ? cH͖Ϳ-(yt{\TcRj"y]ns%XEnHiӺ  z z F ,u@o`L /ø \"Vy>9W)&Tf-0FJ+OE`g9gcDcY::3\ރ캐|M)3%rP(eD'kbf`MiP ,u΃@_FglSP] QVFZt #z>vkQ{QW0]3m#BRx'bCe&o06ɘxEM Ak]9jXNbGto.m4 buQԑhdPo8ji[?X# m@',-N?axthdj[]Oe'8z׉]sx d3 TN*}Fs*N]Y6o_BV] g:o=k(-;'|u_A7W9b|Am0]Hk6r$2(K%UVֈ& #.5;Zů)9x$J鞛(f~1Ϟt3)Uz TnHV/S<ʂQہ# fw4|8=E|a":R)=Yvj 4,ԿJ_0c쪅Pb 4bӴL 8*P:^m]k8*RDrp8uVì1d534Pku5}ŝE) $( *Sܢa>Z1M|B)ʲC1*V/1nkHYm;{̍z5 AƦc*[&q7VӿyV_G%C韎#럛LY邼B Y&Ơ+d̮-TYgV*1#_RS̶-v]StxD(-QPm@b#n1РlxrXWt$&*ݰ7P#l=fp"Zk[bP"$H]4|O׳j%?/c.Ah&@3N#zХB;G.wA94 "K^n,w,6YA(oƍ~S0,1Οnyܰq66m@ST`jظUGT8 Eo  ~?fb;܌cJkE­WO3_6?}#d0/",=BX%{{=@un뉵vh:3L--A0%w(j2o&t='.w$kkyYk^EI}<=ᴁ%&⻃u}ty0"CUϣ7}`Hzh\,? /UԘBih~G0s'OaCq /G#}*_˳6%EY>HOi94{^RCB=92~wSp9{nߞñ' 1fأ\hVroOyD [#4fH\>S{{ (p s2% Q|÷]tMFՄ>N}aBbB! [:μN٢rblQ7 B|/w;,YȝRgT$Zd^}rrEhɥF9s;O8n]1~ק>q8B_ffLQgW{ˆ7;Цá{J+gwGCun.~DjVqN k鶃 {a]0լuY#`s?|cp}fNؤC q@sp׫] ixm:V.wZ?6ТU%B?M p*X=?pg1W}pC}" 7{C%Sƞۨ0$(N)v!щ֋*ηu[ۍ&3l&XQ)^ }KɮY/̞>stream 2021-08-31T16:02:09+02:00 2021-08-31T16:02:09+02:00 groff version 1.22.4 Untitled endstream endobj 2 0 obj <>endobj xref 0 21 0000000000 65535 f 0000002159 00000 n 0000020744 00000 n 0000002100 00000 n 0000001940 00000 n 0000000182 00000 n 0000001920 00000 n 0000002224 00000 n 0000003119 00000 n 0000012188 00000 n 0000002711 00000 n 0000007930 00000 n 0000002347 00000 n 0000003782 00000 n 0000002265 00000 n 0000002295 00000 n 0000004122 00000 n 0000008250 00000 n 0000012643 00000 n 0000003687 00000 n 0000019321 00000 n trailer << /Size 21 /Root 1 0 R /Info 2 0 R /ID [<148FDE25E23D3F0D44524B5B279AEBD4><148FDE25E23D3F0D44524B5B279AEBD4>] >> startxref 20898 %%EOF tortoize-2.0.5/docroot/0000775000175000017500000000000014177415663014726 5ustar maartenmaartentortoize-2.0.5/docroot/images/0000775000175000017500000000000014177415663016173 5ustar maartenmaartentortoize-2.0.5/docroot/images/PDB_logo_rect_medium.svg0000664000175000017500000001112614177415663022717 0ustar maartenmaarten tortoize-2.0.5/docroot/index.html0000664000175000017500000000646414177415663016735 0ustar maartenmaarten ]> Tortoize web service
PDB-REDO logo
Tortoize, calculate Ramachandran Z-scores

Sobolev et al. A Global Ramachandran Score Identifies Protein Structures with Unlikely Stereochemistry, Structure (2020), DOI: 10.1016/j.str.2020.08.005

tortoize-2.0.5/package.json0000664000175000017500000000155414177415663015550 0ustar maartenmaarten{ "dependencies": { "bootstrap": "^4.5.3", "bs-custom-file-input": "^1.3.4", "clean-webpack-plugin": "^3.0.0", "core-js": "^3.8.2", "css-loader": "^5.0.1", "mini-css-extract-plugin": "^1.3.4", "sass": "^1.32.4", "sass-loader": "^10.1.1", "style-loader": "^2.0.0", "uglify-js-plugin": "^0.0.6", "webpack": "^5.15.0", "webpack-cli": "^4.3.1" }, "name": "tortoize", "version": "2.0.0", "description": "A tool to calculate Ramachandran Z-scores", "main": "index.js", "repository": "https://pdb-redo.eu/tortoize", "author": "Maarten L. Hekkelman ", "license": "BSD-2-Clause", "private": false, "scripts": { "build": "webpack --config webpack.config.js" }, "devDependencies": { "@babel/core": "^7.12.10", "@babel/preset-env": "^7.12.11", "babel-loader": "^8.2.2" } } tortoize-2.0.5/rsrc/0000775000175000017500000000000014177415663014226 5ustar maartenmaartentortoize-2.0.5/rsrc/rama-data.bin0000664000175000017500000053341214177415663016557 0ustar maartenmaartenx =ALAHNEMcEyf?@@ALAEBΈҼcn9B{?@@ALA.B #Bv?@@ARGHdDR,D#i?@@,"ARGE8Bw2A/t?@@*ARG.AAy?@@4ASNHC\B'ɴCi?@@BASNE`lANb+ Ayw?@@JASN.8B/68Bt?@@`UASPHuODrDRIm?@@/dASPEdA&½t;At?@@lASP. JbB47=B}?@@wCYSHe2Cꕲu C6BQZKB/t?@@|_LYSHiDz2Ddj?@@cmLYSEAd{A=u?@@uLYS.+ BV+َBRv?@@ METH C[@@IV_p5A½]A9u?@@5if6iiiii h萆 `iviI efffffffffffq"hfffffffffffgVF)3ii™ci&|f)Fejeښffffg fffffq[|QffffffffffgG敡fffffffffffg тZfffffffffffflii`$7ifg fffqfffffg xqYmXffffffffg |lĪms yZ21lj擬'LqjcvAt/KLCLͼb-elo9 33333333338a(a)&˾a7369{}]X"i2%0#L#sM]_3]6r[Y LL5iv\xDNA4Țy6Cd44qN$'6S3Rs)J#333338Rx%)1݊r蘨=W3ni,1q&tM% 333333M!R8)4UMZ -$333Ӄ) /9Upoc d<1DFbFW5!1v6c`ؑN",-333333+$rrSY{kCݏE=ueITi2@04&I#`:>64$t9i h33387۽50-#1u:FI( M|SdC44 OWZ1D2#{LEIneMoMf$43:LtVPҬY< ՇIx]7?0lG*04Eb"*[04 G2Lᕛ5\3!L cSd;CB04e5kvde|ϵ҆5"ZjŲЌ 333b4_1wM53 04wBC 0^w^Q6Ycfffpp Zafff8ZSlW0fffq9X`iyukICAfffgD-fffg>ۿ֭Gd`&ߒ2WePH`iV>w'IffffffpfffffpaPၦfffffffffffg&ffffffffffffg!Zffffffffffffp ffffffffffffg fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffg QffffgffffffxűffffffffffffcYXffffffffffffg6rIfffffffffffg"[Xfffffgfffffpdpffffffffffff:Yeffffffffffffpefffg!g fpffffffffffffffffffffffffffffffffffffffpfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffqfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffqfffffffffffffziěXffffffffffpJ@YfffpZfffffgSXiChd )iikz:=˃dc`ii<,tHҴMj66F&l&i B|VnҚ6afffgbRRF[($OfLz9aX@#E%fpZfpO!Z(e $ɲVh@4EJa%"Y#$e&fY[q' /r|fusKMQdI`ljin k n LKbIYB@f&%'&%*ErWƦH%Bj0ðus{&JIYDцcebc&0@fgk*kjlbeI,Zbͺ|]\y֠mɈnTHP`kluIۜy,8Bl'e) hLC8uYgFI6wdO!$"[qtplEg%S{Ved"Bfn䵁@fsFAr˰R\ا"!pX1WMb ![1 X&%0F&;M~w5&g)gW;*M%paYJv&LeD7f rY&FZgXsmVfa LpLdʌ F0ldY,g])kY<9x^ƽgmbb& 9gE֗ȘYYm`i b֔ǖf6Fd LjnHcǨ|TDIei3JxןY|ClafYl `)\2(uə&&y Ŝehcaf,glFyc^ńicbJhIi-LJɤ̟󦀑IVT\Q+k<6b a̘nzsBbd bILd&ƪܛiXeIc'*pc dXx=@Y%0!pf.|Vk7u\fe92IzqpjU3v[eE!$$p bn svvcы"H$#f[U!lGle* %HpŖK$:fqrR6k%jcBD?Vّzk,I%$I#`"[{ 0.ا2*^YA .If\j JiFlR)(cC&( b&I`ʼm|8vqy}2B9&5Hy{CYUIu5<Ka `LʬUf;F{ƞNc`$9&Zgj{Izg 8teBjn[ $Jh!^24Jd 1Ԙ3=Zk^jc{Vjf)P#f`F)9RŜJ[Iap13}DqgVY< *۝ ?q^ikўup}eafgۋ-š_ f(4X3DKg^q)N&b)$$N=ffqynl.fu;+B4rE^<-I̿2;?mbRYRLYs;]ّ Q A0s 38-3^.Ugps Yၦfff:z'rlhnOAXfffmRˍ1:58Ɂffgξϗȷ<,YiD́@ffff}Bq8CEJI 3333ѦThP 3331]sy'83&  333<|qѺˍ>o+cLvK^K7KJ@`n[V.7m33333ɽ֡.o1 3333WNp7 333?50ȴq1N6CLC Z5T6R4,3Fc44HLbF$ 04DL,` 6CL4LCdMbCLL4 a44LLL4CL44`CLCL c=iFi)FiFbii`il,ii9l%dieffffffffffffqpcffffffffffff+1, 04`4BK04an˖&L,0#LTK2LL: ͷXPc,stր 33333333331d\.*$ffffgffffga^f+ 1fffffffffffpl܃A kh`2rf{уfffffffffffgCvHfiE9Fffffffffffffvȶn+զCAffffffffffpjӗnPjי>>Agffffg Fc^&|f| `iY,S%lj^i`fffffffffpq"e"qf rci2IefffffffpK˒1+,2(1033333392سs6;]n3 >JB96i6 k-Ġ c4Affg!fp[Kn;?lhl rgRI agfcS0cn)=FA@`iȜl&yKG10tzVY)MDdiiBmkpedǤr=;$AxگYA)fffyrZ$fj~"zqi 46XAffgJNc*%RaZ7 !&rfaMIfffcDAZffo2]42kZG9m33382-s<9Svwӯ- Cb 333 $ 333()-;YF$& 3338X--233 L3 3;Xĵ_=S &aFu4kL#N+c}4HLۑiF4Ck;Iմ*0 04F H3C)cٞBZ@z 0L*42p1##؈q%}?c ]:1Lߓ3 LM333}c]՛DC 338+9$-)j@Ըf[:*H4L Bk5LL߄ X% e 8ΣʆA,331)eF R8--+931a ~T5SNCOcH6QT.1dZW)ȝC@0 &KbjA̵C'5nCNa I6!.AJte9i9MӸ1X]f+/%mhPʬ8i}T3afffefnڕF6Zth@`]ܫ7dHpL sSt19|Ys 33331\m=mh@h3333wZ-Fh3333bpLu[HK04-M2C04^P04nF04H04ۄ 333333(3333333333333333333333333333333333333333333333333333333333333333333333333338333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333339 33333333333339R333333(33333=-33338rs 33333<ֶ40@L͸{ 33336M&Hffffffm}h9zc1hb3Vihi.,M8SBƌ`iͶ"R7!LHʹ}ش<{,@L33 )08M33ѵ9'/,3 339 8RM3n6TOSY0L44 sLIJ04uZUY5 j  m33393333nDMɮ6-:BC 0`CCL4DT{ZA%ffgRa fg];@Effq'fpg RE[ ffgQfffffpg fffp"Qfffffg*Qffffffffffffg REfffrffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffrfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffg%ffffffffffffffffffffffffffffg!ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffg fffffffffffffriii&irIfffffffffffg!ffffffffffffcrffffffffffgbIffffffffffffpdfffffffffffg ffffffffffffp[ $Zfffffffffg&Vfc)fffffffffgXfffffffffffm)hkV<"kF&lY8roi,qZTibaȏ\@5`ihgmd1:v5Afffrfffffq/%YRfU сffffffffffm$fYw]V`i÷r^efbLၦffffffffffch"XeM333333333338v+~KLְvF?&,b覵  4v0 LV$Tdζ&ffffffffffg ̄$ffffffffffrqq0 PM@`i)K6jv4AL =?O|,v0LXu:Ӗ1R0hb24W6{ K 0L-8CMfVF@[@04ʮ-)TC,m6EfLeV;ZˣST>>'>{'l7 )!33333333333[)+]W fffffffffffffpvVtNLA04q۹] 333333333333K0Lو33333333333389 33333333333382M333333333333333333333333333333333333333333333333333333338-33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333338M3333333333333-,dD&I`iȒi+]'6Ah`lkQbab0;-zRgJ}=VU4fffg#p[rv%g&[QA$efgbc Y0٢Jfa1qx^Xb6[sLIffp[s!e1j`k{NZ۽Afffg$54fEimK:;xfɦD`i&)!I%Ici|=kOR}^mE&PAffpp %d$q[-rqhvZQΓYjܙRfp[#e`ƆnxY4[6]奍-ffqb^f Xp0}Gޑy_ h)QIffg*SfZglX^8Iƶ4hg`il)el)H^7lJi)$ل^ۇk*g!giÕ,q#ɱϙݭٴcfrv6&KmƙlahMMכPmF,F `irIfBff8?im&2q[Jiffpdq"K%fff8 qf+Ng5]Zfffffaiȫ0l&mk& %fffpZ9fffgwrbwfffpddffff95gt&d@`ilF^Wffffffffffffn&ȧ[ffffffffffgOeƙFW`i)Fiil<`i1Affffcfffffc{v`ii~'DffffpZfffffc1+ͩfffffffffffx5 XYffffffffffx攛ffffffffffpp&Nfa ffrffffffgw Y0Yffffffpfffmii`i&i4&,fi`i&lYÓlZɸ6@`iIɌ&L ׸JS)ffgfg#&d]&RHq qݪAfffffp0dm&sၦfg!fr&0I!'RirajKJu{vIMD`iiΔIiWfyIYE)VzۏrVMlFl\ ig!ld{*Y%gƤ\ Ei5;A$Zpep*O8Dr9lcC)E8xl,J&mHg2&`iȒɆbiʙwXImĤY)vZl+ 冧oZehai#c X&V𙡴2%Vbf~2St[;^ "a' Mh啫!Pf;fY^Ya%&^g 䱑mNZpf0bG$e 2%bVmYcvow 7}2^QZa~%[ks!iq.^^a%SSb'ji᜗&`%Fjgebq {dȶ٬ٛT9SFHgٕo>f7GZ9irb` fa `j¶~&o.cMf0reJYe%&FG%&HY 7{#Fm[.gXV%NR szZXgfsg Jz2T^&SZUJS3`mjmmݤme齗-!Hх$fBĎܭmyw&uBgiDLXev7EcJUffY(VdhF )Iiy܋{{ ,9&D#`i3|Y7iVg%d& L)BY,%IJ kʱַtV"`ZdDlseh6k5 a I\` &9Ujkl-_)ƭimmkxFFn9Png*isۚ+\gQhFFənl Ifp7]l~ݡȒj,q31%$;qֻcebenY5i2K8%+j?N,24&c9(6b1":lֱ[!!eqiTbc&s2*Y &*:,˶+4-Xo{̍/ZcbzfN&j-ef"I$d¹yh*Uo5r e@8܆4bdL!͵9hfS%Rn6*@`i\H:}JHIMA $֣XN V`+Ut7>\ٺXei9 [x9Oۤ-)1g}Ni1NJyǙ۽ܫuiyfUv 033mSjkG#J;fCZpCH`F59@ -lLP$SQ*|l-ij * ffr032kmģE8V2sRәJsx:s ^2VkNh33du*a7;dXpHc)ɬȟ\^e19)Iki&x14`iŚG^ qx[@y`|uӜʴovqv14W,Zj- G5dz&#Vfn߮XI4m3333+ٷz&6nF`8`il,ng\$fW]}wffffc1dZBF4L`|Ojᏹ M3Pʌ04 ,c)ܲdI`5  333сIrGd>c1BmDF04\ycjA:sQ04mО=-TgzЌq$W3"`4͵tY7K7,F04oٞch"ig!nuېY `iJ]`⋩ФL: W&6p0Lo\N( 333333388Rf]u:2m 2B#333333338-}k-5Jw+2(ٶ 333333ӅXDs10+0XJs1bbͲ 333333ӓr5'52ε1=3R/{N"، 38338R3W1+s0s32S-bR,(3333382RR6-9WS1DE- dԢ، 33332y'jDTMMt6JfLD0LLlg`"#mtϼ4$ñ0ANNKL6#a}8MmKVSJD$"83ń ݖjJ`?F.SGaS JICN#L c7;.64Ld?G46(CRHLL,ĔIbHYZ23g2Q]"333,؍1, 83)޴28k^+0K44qH P2##N3W~x<&&٢aYIX pZrpR%%aRm!N/1Uזbj&RcYd.9efg#q"aYjd$bAAFWm~d aFe&yM["gS'&H,ey[~Ya2mQFd%fgJARfFYa5w/܂몗VrYF~QlڕdFiiSܠDnAiyŠ9^]6牉ЦTdRjFiRemicv\ lܶBEdE&`ii<] LiFLT1erYNfnhfg 1dڿ!eX,J:qV')$i;`i0F(=35Gd23v&hfi879JjEa`i`i&\FfffffgVXffffg yGd`h`ibºd&F)] a`iiƘii晙i`iF5hiՁffffgfffffoㆶ`iL `iRlh `i,͙Fili`i>lVFiĒiiĒi))FŘiiliiFi&iiiw`HdiLF$ԶL 1LNd6R<*45&0L44#N& fOD1,b=5΋+0404 dIdN$\褖̤}̤򴘑L4b$@J]ӓ l5 r(Gv D=K1 Ӆ033= 2;mM03e&OXrLy##LTb4~)DbJ˯LS{D#|6][a4424W,f,.9 LC$ڙEzk$W˵25S5`&&UhLQRjLT\Z`vfkkx|B)9+ViY``l "nUj|s!D:Is͚/kb /2 bّpZ8&dgg"gvbC{e'a!]Q&gf`DMXZpg+%$"`pߎe^塢Z Xego"!ZP%'O[SpA$"b,\fg;Yjlqlh)QfmwTnX~gަ``hc&Il `D7gFNI[LGyɽshy)ei2sYW 6 `i搖)F`qw%iI6^br,٪Q&sNGcmfZq0Xf x6rmmf6ۇ!&P&)@ɼ.szc-b&b%iX![rBZ.կV.myhQf ed u$`Ze6CSh`ƜL aŖ찗LIUl9bnJkjI&iّ1Vm,H3(، 833gE*-/1ZS, &KmX89 "ٙM3J(3:l-1)Yى5XMhȓ% $=E0RJ0nҎU4l%"m89x-)Xشc0< őS^)lԌK+IL2J-16DTI`a˴1UwLK` ѐ8w7i+PʌtHS l9ɑX#ηkc-t>M n[ @"%#DԔJd "[`6NM`Kgea&"\Tқ>w{ial1f!\aNaDt9-bHȗ)*m}.}KÐ֖361m1;lt%1% җז$=MZ~R-SDQ$1B8lu$ecej 5eD5|FoX3BHC3c4tCMt*ЩO6e iF Xˏ"k#h2&#΍.\? 9Hsˎvr$|rC''`IٗjEvϭSTNn4:&X]n@xٳS]Q_,ک4XK(L:/MHԸ頖`i)ˋq[.59"`&} (Qp0"̎]g1iiuơb雂 _;ó `ix=ۍrmi`f-Dy``!K{jƖJɄfn~7r333[w [& fs)K(ss;L}]Ydsl/>Ēݴ2}r촻3h64H_[co^dcq]dsWUlω6.:^m,fc 04ZX\daUٲD0$0Ld;%b$ͩl&¢333Hn(MQF`im " <fjgĘiCMDfffff8zl",ƒYGLdC틩y~}Պʘp333380՗/ E3Lg! 3337Wї_]e }׵'$3333>C9K>jfffgfڳI>kۀɢ@Q`iHoɯ\;8eFF9&fffpnn2:g8Offff8n\1oli3 ́fffg#ŧZfffkI֝^gsfC@LgqLStC04ۄ3433331χ:ج 33333333338-ϑ 33333033333v4CCL4aL#LL44#L4CLdH4J14CLp66CLL4qژ8B333333m2M33338Om ffffgqhFch"affffcV`i-ɜnpdKV`iF99tf6!`iIٖj`il%4[ʥh@!ffrV1ZRh'fgVݫw-UM&ii,fַ d Zfpl~nj5RՈ)pfeYfc̴NYeokcE& P`iigVʘl).;lMYlg$6)`iYfQ-${t[1!:pdg1m$цFap[#Fى[0e a mllVhii‘i`ma&%JZafffg'`5hl)L`hgiLiiil&bi&ɆiI&V,diVl)FiF&&iiiFF•iiFiiil'Ȕiiii˜iFF)`i$dvd$fffgffffffx@Zfffffffffffs0Ffffffffffffgc5H[RIXfffffffffffr0;PZffffffffffgv&ffffffffffc"FmMgffffffffffr1JXdXAffffffffffxCeffffffffffgN>Djb]Zffffffffffg4dZh9ffffffffffg+$fffffffffg {niNZffffffffffp Af&șffffffffffn%yfBXffffffffffryyyHUk3`-8eXffffffffffc yZJffffffffffffgp,'Hj33333333333W{q8TΓAfffffffffffk0Wiע;d#l[7V^8YQzLMIbfffffffffffffm1-Oh0}\qffffffffffffw扫2b`hi)F&i•i&ii&&iIlfƙF<&/Tfi&<+2Ձffffffffpp S% 1!fffffg  6diL5ؐ;v `ilILńy$H¾S,8X1ffffffgQ# SO ibyi&fffffffgJk$1qvfe^b c `iFȗpfe'^#r%XffffffffpUYpg 䭛dLAZfffffpZfgLɑi3)c$ffffpZfp_э3:ip DD !ffffgEfceW1j1ͫ|tªS14 N3e4e.K5!(MzLjl $382-3 ӆ9ygbf:pΐn) 3ڄ- 333334ӑ sٿnNRI43d6D,IDL&( 0MOd.?T"4JH4C06 c̶HK4M4Ȟ"XT0sedN#LtLcIa5142{Hq0C ue KJ7v'4f4Y:LQ2 L+aFrʼn(gTڮzn\yF3ՋFTk`hlNkaWm3h昉qo橦kV`iƙ~KK53Ȗ䉙߬sd捭t`i5:mv6`i_ ku M33331uY -LB333333}soِrG'M3333&?4  3333dLێȌ 33333M33333ń-6ʌ 33333m 33333SK 33333133338=#$4Lt¶444CL4#L4LKLcLH4tHCCLCa46424oK0P 333383SM3333=d3333903338V$3#CL[ 3333o;T. 333335%033fcL<ښ1$4L͸HS 333qM !,0833339 331ɍ( ,1(M3330333nO፳L24L4 }&@22a6 L4 OL0H L6KLI\44NCL#dI4N@J4 L4J4444Li6idiai $Zfffffffffffpp5qffffffffffffpii&V)9&):hiiIiY`ilIhFjF>1dffffffffffg#:-%fffffffffffcR`RTNTffffffffffgݛd u%!Hffffffffffffp[.r]fbmfg ffffffffq0fqfaffffffffffpxJL)Qmi̜q4sXJr&Ҫ 04Ͷ[7 7kgfffffffffffp:T86DfffffffffffydIXh-?m333333333333mOiBx^yi 33333333333aSe*+@lrޟ&i⩱]f*bj"~т333339 33333;.e<ǚp0333333333331P&#3]<93Fݖ5ލffffg!ffffgcnȬ5`JS)ffffffffffffyffffffffffff!`iii&&iiiGhij2"YQffffffffffqpvx͠&ffffffffffp;dilkɇhB`&V9dXffffffffgSxR3m6dilxzL:0Omvv@`i^cvi}oy^D11`iYC5!4'IW$YL5c6NI, 333338-3ӓ'޸uv9$LCIn! M39 333333Mt?A2=@zq1L LJ.pIOMLc ,333M333 B9E/D 0446L ؆WSQ4S+!6̒ldlLeJ*dDZ !ɴ07DNCNb+Dݺ e7CS#kRi2GCLOCLJ6ID3Dϴў^l,3338-<337\se6N[F,̲Ȍ 3333xm90ؓ 82wWm,EC1쌷LݍP]/.ڳ͘ʍ-3333H, S"3nLe%c!Mͽ 2L<<0 bWeyfcCLc),3386DNd!yM3:3F(04K 333/==e, LI 3333,3333YV-Pդ 333399<333JYobh! bI',)\F|ɷ̞36m`l`icb`dlY [{%dF80g %' N.2KQ0Yce{űhTeeHEnF Hdlټ¢h) ?FW(hy6jghF@FlBmŬfYF9ͬFnҔmYx.gTf%XdlFCV eԔeSF&֒it8sK [ꖔX`Hh `liIi&鱥jɨ~yY"Z!!f쫑im"6&Vf6lŒ$ɍ)TX5,nFѦFXi)-ƜdxEfB`,vWxéQg͹8fiIi)LXlYVD!qMlwb`YT%XYXkhbF `iŖ=2U9r͈L Ճ?[T]SQ޴, 3''S 3zXڳƍԒ- Yc(5m;0F 1%)0q4R++/}'>-, !2K2YxL$3-W.n- 39M8C)z:+gpL"S<+S M2}.Ȥ@ك,#Rfl!)\s r 0RD ٬0J-ђЌMӃ'XXS+EOa>o; C)`&NDDp-ٸF%}sr/\f\[Ag I{1-1Q %Xł]}e nڧ&rj)&ffy%M%ܻ 0~LІ`@`[ĕ+T8E̖Eіՙ9HhD&`i?䛒yPYM`;wP[XDbq'p:[qсffpe07$`qZ%%Hpֿ,_{]*j`³mg)X/1q+vf &\/C" >3 =f04V16+EY,,5%,3333333333<4AO#x 3333333333ճm>~.H )ƃ04/[sgHL/bY2q4ͻ7>ͭc=fGDnrLG,imb0ZG+& C04U3B|t5Y^o fffffgfffffݞT%nd6~uVH14 LĐ6HffffffffffffffmŔiFi晙šiii)Fwldi)$aiiehe)Ȼ3lbdi;*mʈvP`i &&c՚yCa46KN#GCh'[F*>!.-^ j 33L! M388YwVbYEb+c7u3 04dI4qH7<=.5~YKgS,3339DӉ0ӑX ËZC58f.Üf(04L7chAffff9!qݡ Xffq$z\Xfffg gL! HՁfffc`-+Xffffffffp{uفffffpy`iܘL4Lۄ 33333=933333333338]K 044`3Ls7IL4LN44CL#LL4#L4z`i#Affffgfffff9Qffffffffffff8Zfffffffpffffpqfffffffffffg!ffffffffffffqZgfffgffffp $Zfffffffffffpefffffffffffffffffgffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffellei)FfƙiĒhifqfffrZfffffxps *M"g4X!fp[JQffp[ G9I2h@`i&lFڕίz$n`ii[,)̨W˭D8ag!fg9q /CvbfQg$g"FJEp!!' w&%zYٔffr! bK H1j faFN[[ gRbU_ىY1ao*^ꕞ OX$ZffgYd&pZer&Rdg%do:0frp2B"E%z>fAZ.\e;Ͷ0B$ffܡahٍhk.mK~eQ` ` `ii̜)&b\ :Vidl)0i*Tn[52l$k%ag/BSXXes*t'pɋ[*eQNJMybdfʵjB 9Z3=bq<Ɲx:"T&h$kAdF Ʒ"%{Uc΃:7]&'QxDYX$^c&e"k{z~SĈ͚{l2'dYQIg#ҥӰb_0\fM\eJڌћ%Zfs:f+)㱋efvL+}]q՛fQjJ%*n^=&Z%g I{"nĝT5F&Eo|Mɍ(,R`Kyg VF#dHaL`l,e=k˺y%&TK9&!H9(Dnn܁{YIQbalӎjD>6 S٨iI6hDIL;ڈktV@diIӢu21ٙ !v&^ٻV"N]uBira:UY"JbUr%x[е05gmvš9Ȣ^7y85IffۛS9k\)MҚ#';eiC7c]-ZJs愷 @ffff=8ر*FrnHFffffc&g?YAfffo5\%]94+Cb33333]ܩsnm'/YhLqY΁/$0L|_mlՑ,y `iihMu4 3339  ٤,04tQLvre 4@04vs1 -3333]*c3KLM5h0Luu($2LƶL7L64SL L d4CLCL LCL4KCLdH2L452D&, 333333 3333gZhqs33333Rӑ 3333)Ǟ7NbK04Xgp3331W DQ! 3338'$3338;1a7v`i&l'U$UĕXfffg SXffffc1j|&YIffg gQcl^""de&điȉ`iWaVlli2 Ӟ1LЬ6N$LDEK6X2#Lۛ 9 33338meD3Lۖ M333338M9-0 1ѐ 2-3333333-333 33333333M3333333333333333333333333333339 333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333382M333333333333333333333333333333333333333333333333333333333333333333333333333333333338-333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333338M3333333333333333333333333333333333333333338OIii™il)IfdiŒiiiƓi\di)I&FR&,F`ƙdi&(affffffffffgg-Tffffffffffg' 5dffffffffffg+6zefffffffffffn%HTXfffffffffgYf`iB閬%`ilI;Ko` 3333333333333xיyJ6i+|2[ =ffffoV>>Uw,@ffffffm `iN\ƃ F, L+Dd`&FdjfI`ilF&̔iËf `idif晙)ƙΚAaF™lFRQdF&ʦL`il&IF‘lFiiiiiiiFieKZj"i&zRb`n):a ( ]&ZCiZ%rfffpZfffn"1bf %ҍhXAfffffffg Y}0jm1&az&hi9fffffffff:D񗜆q&yWu XXfffffgp[帋q"i%MƑؠXfffffrfpc!z|Z`i[zXfffffqr8' 6tk{ۖ%AfffffffpZc`㹢\Nh&{FU& &`i)I" u^a(!ńfffffffg&-YIJ^oh&`i `l aq/6o9Ek6diI)w$\"iڏ[mfQfffffgQo›Znfyjixvd`I`i{nv)z'hjri"hhFFi_g/rq[QXffffpeg"S?!/W'9^:Ye[rfpffcPp*c$%QٮdI8fpmiċ+C'B ջ(ФĬ33333ID\$ 0فɋ 38loN44NJ4 ŶLK:06#`CLʌM0 n4+c*I$ѩL K1LO4imӈ3%1YR76LbtؒX4 'ܶ! 06dIJJa,dL*M#0KSL' 506$a`aIeNFLDBM3d4 Dt " 44NJLILb[Me&Ԙ,04t%1,044t07INL0T%33ل2010 Ӎ)i/O ZR$,$38H݃,2M39 6J8M -C2 3820 -38-3.y,Y-&ړ(382sM333&ݙ2Ks3В,333 8M333#,8eI3+ M0̒M33Ӑ-331Ɂ,?o.233LH"33Rrgir֖Ӹӂ333339x/'YM 0j, 338333338R2dP'1g8u1՟&b%tXjJcx4N(&:Y`XdlciI|Ī׎M&SS$` k9Af9yYccmUcA&niLz̍'jd}HvCDfkgl=)FQfnv^߮?N#gqױ((A H;c,Yl*XoS=¸+fѦ8C/Of+r$3hʳq,6DbNJ-.Knvpc,S*dFC~I!J&j6YAq0fd9,>| 2Y 8[ʎ$Pd1 1H0Lb8cV*<}p‡3338-sng7[S"4mpllQ,38Wmd%~ܴ[o|r#3386vmm׍`č2"j.f333380% 1ȘF4i+RǮڨh4b~I_"r-.fnM;fffc !'l%aV`·8ۚW'affgnmr)edYc `ig/7fD`i.>.;ƠP93ffff)5LU"r՚ffffxaHfffffp "Efffffѐ%ffffr:qffffcaffffg%ffffffq&fffffxfffffqQfffffpfffffffffffffgffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgffffffffffffffffffffffffffffffffffffffffffrffffffqfffffffffffffffffffffcffffgfffffffffffffgfffffffffffffffffffffffffffffffffffmi&Fd晙fiFN3-Mffffg effffyޜbM`iIh``Ų\Ťb`p fffgm˲N;uFv~FSf4Xfff7m~S:93&]cBgK04sͮyXjcCRT`i={O]2MM:Y7%#ԖaDKItD[Vs̡9dȃ-14Y{2=i}6J`4d4ZL7]̤F4܁1dDԓq`N=9 dLӋrɘ3q8W3%1-n ӈ1+$ْ֮S0L4dDB7L4MbKDET=͵;wjaO; T0I40dKeVW6LLSi047S|d #LH,L$ʴb :h0CND +L͸A(`L?cM3T<Щ2(2NL+4 f4sKu+97V!MJ 9 زy!lM33ӊRɊkSr H ӓ,M3333+1Wkd].4c ,2 9 3333n,qmcqTM04IJJ6 L t?66so[d6L fKIHLcSuu 33338M333330gO͒IZ En\sX<`iȱ!6ffffffffffgFفffffffffffff8effffffffffffcfffffffffffffrfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffg fffffffffffffg!ffffffffffffg fffffffffffffqfffffffffffffg ffffffffffffgfffffrffffffffffffffffffffffffffffffffffffffffffpfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa`i1fffffffffffqp)dF iYFd`i,jddKm`i p%p֒W{0USMgfffffg Z8pYC2)RC`H`i[ W1)K1ۑs fffffffffg Kpӏ&g ZcxN}ieFiKq>a9Jg\o5ffffffffmk Tf\2#LYffg ffsy &1l[aAvYՉ!ffgEffffۜTi4O9|G6UfffqfgG yn&wU]dVlFgȩbm! WQ&ydDaFV쓧)\vmɎnT&4`iȖiili"iŚM!fffppZpZf8q/SjڞfIqfg"FE.FRJJEyZB7;(]h`F l␆ɉ (y%)}e㐘 c4qrgfIfc% !ckZ&!fpdprqff]c< 3g74R(04G<00J4qb)11ԭUxvŒ-333%!2, 33}fE}=0,1F 33)7$(37\ۘ97=0*Ċ&M3338(RK4S )0 6\wS4)>Vʬh3333uBS\LLͶY77$ 3388%3ٓM3M38sk*︓I3Vdh"333`iF&ihbi,<3XI3bA`FliI뜬JĄh "$ijũP6e46 `ilF elnől,%<%jعwhr`FFIi\xJiE֒\X/N{ɮٜUƀ`iib& dȔ54V9$ 49GSud`ĒILCl&,X64fiqȊgK\i*heFl&C4 8u} %M.SYB 83a2y(-ؖA&22-/7H8*-[M-8L#?n4ƴgX2d 24s1LH̋J)ܣCJ,3TmbFIKKMd$>) v뵓53dJȶ4vnL634dR43hƓBJ6waK\#wC4L4&0zy014cMKc\77kF`4Id c5.p+3Mr,Y3$$˳b4C$T]ɤ2L4ݎ&W^^y_ͩdhsa/ٝu&˔K0,A,)22%Irn}?S\.tP-+)LS4Ұ--38gb%M}ι54a4M.2cRL3JMQa2C>;T̬0L&d bJb=D.41 oa$}e1a&7"i& pefffqd츬e|}lHb#)!zL&TTUxF&jèm6Vdiʖ冑nyV#A.r]RY0a eB["naHDсffpmkR YfG4X&ef]ndw%j&'ح3p9АՁfppfD,igK\VU4$4`li]RYRkkJBs:VEXAfq'8Z+#)c@R_2&]q#}Efcb%F A47V'f#333333vH#Lqt-<]mq 3333;;23333nI4M)&04#GC$LǦ( QDLȷLX[ݚj۶Ռ33922333&-oXAP΢ 333؍38Y$vv2B-33338333 ,"с7^>Z̡@063L6#LJHcd"7*0CL43FLu4 LLKbLM033382333333s23333333333338$3338M3333333(3338M33333338-3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333ٮmS~<$`:-Y ,gL>stJ..p33338-3333P޶rq s׉hi=Ө Z!bʹ8 L>ϱ앗hry-fffffq&fffff^  7B&|"hffffffffffffayr{EN>Xfffffffffffmۛs- 333333333338|3333333333333nH04JCL LLLÿ$hi2S4C04\ҐJKx#Ld)qWos8[8M2YᑦffgΉFə9Ŧ@bifW\&u(eXffq-b42Ir${דs|u.Zf) 3333rcoKUe$5#LQFգoS 2NT0#LaDӈ0L+CLb.θۿ1$$l1-3333uzڛ0 L4wͮNRZtadFp3333mMLNL-\mrёT0&5e fffpl!``VB=1,$T͞Y" efffgeYliE1wBDffffޗMX$fffp+_"/j(Rdaihimnʬ 3锘ffffcffffm۸Y) `iÛi[!04CLsqQ0L L)@04bTL904 L L d4 L L L4̿&i&e`i‘kmYfffffffffffn$h`&Ż/fffffpZfpZffb^4%Lc C04s4W' ̤B3333338rM333#mqb̹p4L LD` qNܼ)m2#L#LģLYZQ;dM#BL3334ؙ#*\5oyA&06LNļB4tc^N&7VkA0t1M6cDLa0Ԧa;4ˇ u1<[ag-x]Uf%2Ia%e"da){bnzf%ehV!=&), --dɲ{ VsAJ1~e"epcW2 :LLN&[^v2}h`n>݌f)$eyCc jjfl`i>f.k2 1W@X$'0.ǡ@FId`FF˷9@dV&hǭיΎls `,DLcf_2a4X1ɆafrU%~zZ&"/mY9q&1K s">n;ȪY˭flah6hi`)KgDkűrPiB#& , u堗\ݙH‡*dfff۫"'O^5-LFfsEn/Alấ 0 !fq\nT`1*}N@`k&97{IB!Xfffܛ[xeLT)|ZV1bi2n]y)!z2RYZ1}``iy[ Ll3ǐW+=ɨY'dffys `򍎝qF jс[~Y4sv<|1͖LvjgeXaǫ2Z.f2v$gZq׺\&Έd%*kUv6`i/-H1nUfvjPffgVn3߇yUQ`iwn2n(Q홹84[04nrMCc? S5U #Rk0ffffffqfffgm;he$Qhq4__\^ y0 33333333333=56~` CW08 33333333333Ԟ;AYǟlB,p 33333333331_C6NEFmffffffrfffff6utQlF°4WeFS:؊,& 333333333337ձQ;hل 33333333387o/QYӆjVynJ3ffffffffgN(tFơfBbH`˾mKs)bQXXfffffpfpenmK?~͜ᮉe4Dffffffffpdd[ݻ_^rKfKfk)푫gXfffffpp9}$\;Cfbyy#v9fP`i;V߮'w&\b5B`F&l &.|\|!-tBlI͞@ii’lFlq۝!fw;l)~~n7lGiMŒ389Wxw|ǗJȈc2 3K04.4-333}m\dxWrH*#33333jaT)1%LT<$[1/xkX'S(04u011CLͶ\(c1l2L c 5L&̄z 8V$`iyɈB`iyD 2C&#7ڒIN`i)aiՔMq M33333(333336ghHd+<&`iFŒa`i&ƘiĒilF$`iiF&iFiiii&iwFiiiIFl&&iLd H«dilB:ő`ll&YU`ilI[Yyɋd)i6 q,{ƪ6!xqd`6iFllzf@hiifiY,aXٖQiT&m@`l)Fil,ji;ƈYum3oyƆ X9YrbrjZWY[KffcM X%pe X?)R&&fqňXg!FrJrc$Z&%fL&+%Z1/"1g5fC AY%n(p䍚 01AZZPޱSkڪ5Xfr$p[ $.F95yc)eLe\DVƾfhȖD`iȉbykK!&&ٙ  $C#JsLUVI2 [-)GMrIW-}CROk3&LbQγb=AΤy6$5l43#a6`fdBն5a$34*d(b183S85 bbI <$$ :$K\Զe3 ,V XP8{1C,E3DjϛTe216aԻJD*ck/Z{51̸_J$d-cŔt65+5"`CF0YaaTԾͻVDt.; L%!S+4ML+)S48܃֌Ll"+&2K´ֺb Mel#HRC"q&BөyF5Mlh ʌ٣ M8#ӈ1R/vg8ĹbiY7ĶjFȤya&zC!fYdF Lb1[{f,dnwlUsg`F0N$x>8x8MPuQf |J333{;.$\٧wNgSLs- c`[*X$fpZ"Dk1f5 VgO189L\+k@`fc04g/MAUieN#qLm׏41f 333uH(ivX:fffmCy0N1̘*l2L MÒ3ӱM9ɠYffppv{ S ""L>/3 x`@`i+1vi#ffff{:ffff:9 PLؒfffpvryh3333-f04&r|а0L׹clL5q2 L6L$L?P 333338333333<͍333333333333383 333333333333333333333333333833333333333333333333333333333333333333333338-3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333338M3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333(333338-333333 3333333333333 33333333333UnbJDffffffffffq1mffffffffffx;#\ YfffffffffpZsYNgfffffffffp93c9=09M @i]+%1ۖP333333333331'3΅DJs/J 04ͻ6|B}(4G j,ffffffffffmfҩʅS N 33333333333vi^jxl5I 333338-33333[8Ϲ!{9'*0 h33333 3333{ܽlх5QjsafffffffffffccڌX߇pa4lsa 33333333333>\+A ffffffffffffrG[04kLJL44LCL4q44 L4lđl”Ñ Ɯ&`ihryfȒFp*v~mH Xfffffffffgڽ ͥH 7j 04͸EzZf;ݍL0;H043GeCYN35+#C0440bdqΥLgrL333333338X1 V-\Ygs h 3333333382vw%erIL["LYؐE/E_4HҬ04$mXc4WUD9h4Lվ@4\mMN3<_s"f@,39 338-1))7=͞XŲc8 0`В 33333M 33$Նɞ*4O\2f% fr$w$ƢsdbaXdffg_"[&l]LىffffS M%ZfffpYc#r'Z{!fffc_frafff89-k!3T)5){U@+icwO,:̈́3̓J2D04J6DaCaK1 5La ^$H[3:3)Lʦx 331֦4LE͸ 3CVsmPq,#TrxdxlDz,ӓ92Kg.3T+KYetϤ県4P11 C*dJIrJJcV\_d_(!\ 1(4aI6VCcfcv"adتăpx,TɵƦ j#s^+gNaYJotMɉ!d~Ƹi%hQ횻qbRA >)I#bbY2k1=ΆU&g+bfYITSr'jI%fcn gn9q'[HX$vƦYiUJ]ơMVf4b` Fø" '즿:` zU\Vc&>y55Effff{po:V$Y{k,L݄S-Q\1{qWl̶m`qY.I₣D333e}ݭxk0>Ȑ 33339qV풒 333-#p=[f%MVƃ04v-si`HɐO'33337ppDv]4q 333vDWEA 04;iR9SmŎeY6#:1ffffVmR橦h,BLͼwCH|04ܗ*BwQ 33331/+65tU>F`iv\IA 3333=;i 04_$3333336s9D))li`Ffffffg fffffpnHfffffqfffffffffffffffffffffpffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffg!fffffffffffffoFVT`i6Ii AffffcKpfffny1E;Yffff:$[C`fffx3wS 33339<)<0LqX94W$p3338+Ҕ8333eaXffg KfEfpp"Wqfk'jme˜Qfffg7&e%fpp&E:fñ6\fffgkfffgS|ZQMffffqQfpq=詻n[Fffff!b0bjgQ!ffffpp fffgVIahd`iŻ.0Affffs&$ffffpLdfdlz5`ilF╹fii)(ii™a`iiFiii))F’i˜i’il\ `i6ȓVF&őhF&`i’kL^u[fffgpZfffs%2idEffffffffg qZg07%Jfffffp[fgrvjAfffgfrpe aɬ%ɗFΑ,io.&D`iilIIFđ%% ffpZpd''0&L7eaXpfp[8'0JEo,6hięibƖ,`Ϸ5Ybœlyid\ci)H&yehhF9I\,FiB`șk 2h6Vhl&)v³IY`&EYI6A`iĔi&,¡kdb)o||F)(V`ilc[/ R{0%e^ZZfg$f7dtg&X12@KV~ %(!XZgbZQf$pea: rfjYguZg!$ 0±eURZe12eY nrWt$Hffg mpiYɋ1%0&^1%7qg g)xZQ7 "Drma[$d2XňfI1&9ȍ9iICib-—iBdeV9| KŤbPeIbY+fOq^Vۦg G%i\ȵNI#>Xa'fƃ6|YhP`iiȚYgoF/jfRay]li윬ʛycXdniFi„LS\#dHa bl|`Io7lfu`i$i[ƕt#i1cjlf×ɨf6Pfi¶IiԤƍr1`ۗ.eaeB]!f&mUʤpg 1p+! qX̘YEnYfV1ґ۵պm$ffq0[rrxrMXyg$fW'3"Ţ Xffff;1:gMq])^x S 82##sYɔ<, 33\pOK$Bi|iȵ՛A&2ffgVy*vf1 '_&`iI&,xʱgU1ȍ|wzH6SFʮ7YjV`iwr&8v;:Ľ^0i؆q`iIcp}ffff}$%kѐXfffg I0LީƑ (04wt)0fffff̿w8`i UEffff9k!D%affffff{` X%ffffnqɁffffcQffffn2 fffffff0biV&iFii&&Fi扆i.)ffffpeffffff9l`VilJ<3VșiܨeeȝiZfqffffffg $e&Q`iii뒦ii`Fiiiiw&iȒi&)i]Xfffffffffp-(Ifсfffffffffgngx5eHffffffffff;F)+fffffffffffg r7rs ӑ ffffffffgGwTԦB#]nbJ&`lOLxĚ͹h`Ç~DdTNk _^{11$&044=͏EFMWJѰ 3333333333erq34o0x333338M33385ьSRlLq^>\e{7GQ(33333333333V7K|MR2a) 4vTl#@ls>UVV66ـ 3333333333yg w/mYVu/ZEYbilrZpXfpZ©dqAqLofũPIfffg'Z oʵ-1g7 )\,Xfffp[ KтI cꮏ%|sٕk6Ib56l`inlQ1/1*i'SizphhǙrl&@`l6Jۆ*1|HfZgEϛ8LAfgF 1·&2oL-y6V4 e2ffgg1FQ㲌4lu Ŏ).ց 4vl `i)B֩I&n)z\N锉R9j024N$N סYĤFwFd9CF)d]х$[G#gU{u16#LKF IԕtL ʓ|W2H.Vű7B, "89!2-X3B-._xw*صS )l$̈́ %5+3)6J: S00(ՄtM1) d 33?9G)/] JRXOyI14+;Y8Q(L,؍3u) (b&ʒĥTKBH,t$7bJ cP[]LCd6Cdc2R M339tuO.hMu7J'  D2L,%%ffffmbfon8ffgcZL1`iK&LjdO LcefffgۚR X`i+w%&fffqeVUIffffg fffff2baffffg!fffffzfYfffffpfffffgffffffffffffgaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffrfffffffffffffffffffffffffffffffffffffffffffffffffffffffffpffffffffffffffpZfffffffrffffg fffffffffffff8fffffrfffffpḷ24`i`iiĤFM`iiliLDvfa`iyboSvl1ffff^?wbddVi=܉#\ճ#PC04J44MS &v33383 8-3331'ܘȵiainlF͓iɻllF IFii)f&ſywhV&`iȒiϖ ޝm ` )FFi #c&Fi .)F`lI)fyB`i)&&FFiigVɆiai]S`i,EΏ,U a:'"[ RǶLܮϕErSёȌ 333333333336W%3CDp 3333333333k vZr_ h/$hiiȘiجm-d-Z )sY$K`㫴:?fw"ffffffffffff8g#2 &4Ȍ 333333333333333333333333333333333333333333333333333333333333333333333338333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333330&ĘidiI,1`illdii\"șm& )aeVl&̒l< F4 `iih|yF^i6@`ifbq-U)ffffgXddrC!)%'1Z*C:ER`Fǝii4;#[zE ieL͸m2Ӆ268ĸs=nͱn8F fTNy`ifFx]64Mfffffrfffffg сffffffffffffzgсffffffffffffzZfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe’iiii&Ȓl)i)9f)&$Zfp}sfffg#d6$`il&͏jـ`ii˻xSbIlf)I)\_d, _)d YH$ zUXfgǵ1+z%ئ?0ZLBdھ5g%Afffc'.6y`mhIj^Ī&`e)LTI"+bq a%ffgvqA ω,N4MmhbVPTg▟9v\xSn2Ag!do17t,Y!"Iǣqs[q"]2 en|dK+ۋr4^#|fffci{aڹx#z;<%ۓk3ip57h`enӝtonM66"|("& ffffn_w(J0 3331_a9rӍ3 WFiffff+y 9p>!h`&zIlh1уY4}v|y9mJ 3333 h3333}^f3333331ߑ 33331ф8 33333 33333M3 33333833333383333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333/iƙi&Fl&Fl_DhdSnFȘii;(qȹrlY DՁffr EZrqG͸(]*`1BXUEj@aiilI{2a LR<^} $ufAEffg$Zr &s(j>v,.ę/hU\(C)fffpdd['^-ǢNd9.d'e!df$V&F)lilʎZˮI%2_G)fi&) iiɮ1g9m=L&64ؚYefc񁵲fg/-0c9YWj3!g!frQn  zNδ|%|V86Y*m9g P`il8$Fl~{a)*~F"f`I9l`ic(~ئguًQɘ!XffmY`;gifq)Z &zAdv96L"o`ik~šYnR1apZg欚Qpk)v1aauY)Ę&ƙ ý``i|(,J#i&C=fI&LnĢ6(hi(.9cGhQdF) \.YК'uT3ljMmsv&Dfn2ep[qpO Rk~Zu5-!afgrKQ1pe.00SW_^XصYffg?q(6hgbsjiqsNZɡIfffcj3d&vEhyÊvXŮPBc)V: Bծ7)T"46#q06}qx[-n5ڡ,n9R)1wYS óZ*l 0؍8vэ)q?rap}02klA|i29MLSvY2lCi]<'ϒV9[.9a D4ayjafjKpt~1UfvqhT&Be1#VŹ1f^ݛkG#i&9VH]ϗmG404VxNi\6v, 3xW٘U=rp 91Uffc淋dmlh€# 8w$Ys0c]u̻333_U-Kvx5mذD͍33]*cێg_07D}̰fffa0%Lq1TV`g ˎc{ͥg`j顙 C04DWqŻ 9疚04p-uVqK@7rb7Oe&4B 044?pv5e55fffrjbes)l333M:age3`fffgk+CcCG^ l$h3335+S! 8RgtsuamM&S?6ӭ1THoIŒM8M3%#o@l  # 1n m{OV`o/f&Rp!bRJG qȱQ!Xp!mN||n ʣo8q#ə(5 Xfffpn2񒕵ufr$b9u9翧n0jY a`L.Zq3, 3|i=u\ů$ճok(C(048\3Qr2LϬ'trQǷ4,4K NoC>$L?=㤶5!(;ͨdl]{85#h5LNe͹U,"36qo31MuڳM΂lI 3Ӆ׾MN744 ycN*L%'J^2;I4L&`ab%ss*0L46%;\ιRgeY Lɶ#cd:L 3,#LZkscņls) $Fp333r_j)2246 smYUsЂ,3393!yvL3-\k=-N{>>uds_CD2LCgGIˍKLHcg4ۡC52zS.d3j|0L6$dԛZ4sLmѮS3L,KEc~pLObql044haUkj44\?TS 04Ja64ֺi/z'#3333i9R38M|\4rJL 3339}\64C==M4Od04`6BJL4\ٗܨ3 3339*풍33335ՙgixw>`iF U`i1Fl%v6`i`itfdIƙ>tXZfffffr'fffffxffffgfffff#F”iiv&‘iiiii))FʔiiiĘibi_F Eoi&,&`i"hhi>3urEffffffffffcruJZ^^ZXAfffffg!fg62gQ:fXffffffffffc Z5o!YdJ*Zmafffffffffg ^|g,iܖFT`i&il&IƖq]Žrdg!a fEq)'U2A-ԚfffpZcd$f ?b ^֦ <=B"IJbR[)JYqFVr#2s8kZd=K 1<`i)qY6WI`ȉ•e!=I/7ՙo$h$gf`Véuh&2fw?(eaR Y@Yi!p& )J_In)Л:fSjU%% M& e2%B5n/$+)yNYs(g$9c.#zlќTdI.ҘecAHWݎǢ0RnVnk|kL-N7kt$Ț3j@F D`&'\#+Ru|g^e6]]VqDqi#a¯`Bn8VoV.Il'm~Yߗ! nf kcvi&L˾5 <雇lÖwk(8UVg#&K])<3IFht"daє qfW]s-t` Ifņ^QvShjdU5C#fڦl&u r$pw#r8+~:$ssIY1"g%^Ti1$k)ŧn۳‰ڙm8Ya%p#+mHNWxeuaIil ThFS܇BnIڣxoʆ86D`gd!iJmqʨnmX1 &Bbĉd͜~r_݇Xݲȍږ 0NK'c70ՄSG1@ӘG $J2L66!b̷1Neby1$@ײ ,RRY-3w$xSv04'̄ YRqSwc$qݶoa1J4ٹ}8(dcU,LljaIܭN\{G;sM2HMu,`yLL^I/YD H4 0aIfsa*ͮ&{g$y7tt0ifܲ2ێRϏ]{&sz͑K6<ͫ4f33̘!=kw G07#(t#( ]L`d~^kժ,A̦% Ic.4)bm/k/~IA3ڄA[g"GqMſm'ٓR fg0 @Uojq8|iRɔ$K V ltq 9l+R [*+Y\cY6`ižȧ|j#kZ[{VO9?vd@<)ҹ&YeۉGŧa6BW4"#7fgj综,f/=NThk\i-zB{ɥMs_f\ycQ`i܄5i11wי%5r3nHJ& \'ȴmZv$p 3L8%8F-58u `+T񘔺mtp1Qff>UŘ$X϶\тagbv݌?q\uF\Z77xffgw!R9@MffpW{|]y&|^"b<333^Mܫ dj+L/.6.QEPb7Q Ͷ'O ͋9*%fffvr|z|v‹F 14%^]*DlP`i"^eS|ffffgϗ'skr> XТ 3331ӞBI6. i &14`i}vi ;ktsX偦ffffm1i2s\"v 333331"Yfffe%2Affffg"ffffgl!fffffe`if-&`i<`iőiI&FiiiF)`idi`iĔViƆ9 d ffffgfffqx[!fffg$effffrfffffpqJb XQfffffffffffr{ ffg frfffppbJ%\&ffgZfffffpq&rArfgfffcnafffqq!ffg*FFqopt%!fpmYffppZXX$UXffgVFfXXfg!9EffgvUzf`iVI < bĒVFƩjihiiFi&i&iiiwilI&ii̔ii`i jin8`iR6!hi$YQ`i|"m‘ $q6Lli,i`i̍)6`iLye&jI`ilYgV gc02cEffffffffffg,eibSfffffffffff֒֔`mxn:o(ic`xŮЙ kS^4qh&e](`iq۔$hӲfh33333333333oIr $0<|04ǿk_lI&OE9b 33333333333VgأN҆3qB0jAkdn6DdPd04?fB5 33333333333Vs8ʐ9ffffffffffffvӼՉ6l"(CLfffffffffffffg0!ffffffffffffpefffffffffffffpffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffffx&ffffffffffffpffffgfffffgFQffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffqfffffffffffffg fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff˜n|`i%DEfffffffffgFJof̑fffffffffp[O ^p=%Ƅ`i⑉z[x֐3efffffffgzc*{m_4fffffffffmd"J[,zhjj1fL4tX *{I"gA fffffgc<g04aV$RKOd2#L aκKVa;7# 0446J_ci̱oLc1C 04 ODr̪>Mw$AL 339 3$833=C㰷bR>v֓34 L$L5ݓAr-w,L333330ӂ8YnB/ 4,-! 33383(33gHсffff{& 33331ŅߞG, 3333KY\Ձffffgfffff:9ffffg %ffffceXfffffpffffgafffffpfffffffzXffffffffffffffffffffpZffffffpdfffffffffffffpZfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffg!ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgqffffffffffffg ffffffffffffffffffffffffffffn)IɆbi+ hiJaffffprWQ&ffffq0fffgC6h`i)`iyB`i晙,Yhֆ`in&i}C&a`iF&,/V0&iir,QYffffffffr9:Afffffffffy)1Bqffg!fqfg_%ffg sfffr$[effffffffffffq0 ffpZxffffffgeffffrZfffffffg ffffffffffffgQfffffffffffffrfffffffffffffgffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffrfffffffffffffffffffffffffffffffffffffpZffffffffffffff`ii`iF),i Ff,alxI9Fu ,LdhaFƙđ6efffffffffff98>ffffffffg ef^`MffffffffffqۈkYhldiF\hdYk#FK{!ΧguUѩffffffffffy\MolF&`iǿG0gĆ`iyÕzciEZ&`i^VNeM(ffffffffffgۛlmh: `;Ng`ijM+UvC99F `i7:zi"X654ǭg\.YiCLg($sT p33338M333333M%rSi @`iFWl|R5663i/N7TL@ ffffffffffffc~\ȸ4XfffffffffffciffffffffffffcYXfffffffffffffpfffffffffffffgffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffpZfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffqffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffrfffffgffffff8fffffffffffffrfffffffffffffgQfffffffffffffrffffffffffffffpfffffffffffgffffg!fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffidi̓yhi^;!ęffffffffpZg⸧%Xfffffffffo,*EXW$2fqffffffgnw-=Rvj`iFlai˷:19_Lfhzq[1!fg!r9fڭb &y宽I>FC8CdYhlM$M:LV-ޚg1`<ɝMg!pjbk f:$ 1Jq7#Y^pܹBc7lv1` ` ޅffy[|gK@gVWҙ)6eVjÖV`i.5ʲVFVZhe4 f$nilmiI2&KJMk$iYvhi)Kۮ1 qftOvW11 aʛL!F`i{5dG_.lgyf CXfffqp`JeZq1jj+oN]oƤvY0b`"egIHal&"{q8p &^]-XXffppYt& m1b\Z59&kFb"!i di8XNb h]&Y1fffgErAg'~ήkinia6D`i‰oiRLfRszk-qCid#JXQ&BZW84AbbRYicߙh!2G T)pm2X)Id[ e'wg;Z ALyZ ;QM=-sN 8R896}/Ξ?f|YBYȓ7_26 3#1+T n246H$übmb4"ȲALTM3u6,ezK [D6dV06 LD=)-bym˘P썑c$la3oOnA/K?R2L`v%l~\6䟊dQTB 5cM<5UL,֔+C4t21D>1D׍ 0 7aNb2)͹Nm LҳL4W4K>\N㫟cg;BA 0G+82j2ܧ̪m,D 336fcV˛ocی"8x3mX8 70[MYj͠ 3398OIe9"04]Xu5D.LDƂ+04DŽξ*MmQ"ffpZ){!VXE@>:>~Ɩɷ<ffg#eYAḦ#33332֍d245h dn9o/`9d㾚9xpǎ7XL)i­r%@LҎAfffx*3333ܽMa@4HLL^I)n#Lu㜬g 04Z6SfffgO%fffgSaffff9Γ&N``iqX偦ffffc'TၦffffpnrXAffffzȚffffgfffffcaffffgffffffzfffffpffffffgfffffffffffffffffffffffffffgfffffg fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffpdffffffffffffffqfffffffffffffzfffffffffffff8ffffffffffffoၦfffffrffffg(dFYF+)ffpZrf&ffff9 %D!ffq&ffffffqxY&Efffffffffg9,we`|(EfdH?&`iT¨Ys4`iRlHof`i&Leuj@ffffffffffff=$]eQ&Z*iffffffffff}1hQfg$Xffffffffffcq,کbqnyLFfffffffffffpz+iRmfywm1-333333333333SGOi(̔14licn˳VVȘLqW\dҵ4]Q, 333333333386U#TP=*0904Ͷ[[eUzubULHHfffffqfffffg oxԜgU"Pl#3333333333335qlgf=FPhh#33333339 3333űZޠr$;Nٓt DffffffffffffgzeEe"j, ~{j#f'#fffffffffff8w/K& ^L1wiLWf˵ 4 333333333331Ǚ8% 04sXD0L͸3333333333338-3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333338M333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333332FFđ`ix.gdHykmH`h^ڏn@F3,~R8љrin6CL^S fYň ffffffffff:lO0h;hYuƛF45n8#0ؓffc >g\pdVcNnN-t)`Y `i[c&ikl`Vۯyq果JZ fff8U&g#e|] zƳq61A1`ihJvd,kP`F狳ۙ#e$ۄ( c3V`i+S5dRW!fgnyT&=>P=4a,-/f`kxLH϶F6X}˜Дfffg*%Qfqzl#˼f)dyhp7Sid猑VnQ`n."S͆q~4qjc;>Z&LAci+gRvi2:CY Lفfffg7Ь 333ӏa6"i; 04e[0 04=ޟet/|͙ۘ,7a `t5*Λt!+kc6y("45n"a=3M2 Ʀ' fŒ 3 M)t=xnTRm+[b:UQ.yN4`A*Dn3mñ 0#Lb6"?|3܈K!Od*3D4Kcr7w?[n3:բHљȂ 39AIgع% f,xS+(0H5Nt[-xT,Bi>ȗyOџiqcf`8̱gקL4tޏԠZڹ=RM33330\*}nc33333>PŖl\|mD333338{kz+-WFiB}w FC33333<|sY8s[i#L4VrzS)y汜,3333#333331,Զ$,3333b4 04s 33333- 333335fffffprffffgqffffffffffffgafffffffffffffpZffffffffffffgEffffffffffffgffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffrfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffrffffffpffffffffffffpffgfffffffffrffffffrfffffg fffffg fffffq3Rhffffg Iffffg Zffffffqffffg[ffffg!fffff9dfffffg"affffqp+Zfffffpp!fffpqrZffffffrffffppevh&ffffggfpffffffrd!fff܅iIFĔ&&FIpaffg Em$fffr0JQffffg/vJ044)(0444J6#L L LCL`4CL L"i6I&6@CQVTcƁ`id[Đ<`q`_cfffff}1様eڝ>^*ffas,!ffffg~KƬYfJf0l(c 0`vb&q ffff>.äbI 6fCa`F" K*$e6`iSnL/;u6i(3t``tf%4ܘ[ fffgzo+/q9ght CAW9ױh44ffgÓX B&LvdσgV¡̵ƒ1j aMCɗraceIP?ڻ1$9gL;q `i0!lb& vYa֘q&-@֙ CvİK7&mrKuY83302t6MvMU7pĸ@ ?cLL33338^"w[S}n\(Mm.}ݐ3FJP̳(g fffg~H|wwɇ5&ffffgϣ3crϖ0`i;,q|2Z^`Z"ō 3330504aXx e3pF42Ч333333Զr3.,Ȏl}b&/`ip(Lf֫w031fffffxfffffxG&I`i`ȝaaffffffffffgG ,9bfffffffffffffa8gHz`@```l,YhF&<1`i&ÚX`i9s#2y&$`i'%xpJU*z#2f*033333333[2g+411s8JxtM4:&j33333333ufc+=/X#qoH fffffffg+f|Z,c]敠ʬŢ|v9yÎ&`i`i{\+j^`_'J]{O!*)KO-Y1\78%ѵM29v7%uMN Xv0L#L ^q.%yhq\JayUe #]qLpXhi˜iJ( p"eFyZ$[ݦ2,ŶeDVDф`i);+yeCa z&lk Y5 *jALCarh6SM+)۵C2BҳW3CU6>A)F;YYdy&Xיviv\̱^v78SFiÛxo9izyvckJ2#;G RJY`ibF<^ ga>n6in8aҟhPgqfffffg!gKfg%fffffffr$fp:p$YQfffffffxffnLFi2cffffffffzfpd*\5QpZfffffpe"J[nJ&Efffffffpgfpe$lȘaREffffz'$gFIfpZfffffqfg"FSa`il))l`ilI&f6`l)LL9#4`ii `i&yɱ&albiiƦI.2\jyAz$effffge:QjFőiǜiJh)IFi&)f!$fffffffg pd"(YFAffffffffg!M.Q!ffffffg)8 w[6Hfpffffffffzf뜒܏J&PP`lF–knWqnNkefffffffgKhqf##F FiI~nsN`iiFfˊ8h)Fḃܶ2h`lɆʞy}L4t4fݛG (d 338M3333338XeXȶ-nlb338833333O=PL,33dccF˩ g>"i>0Ҧi[Affg )@`iYFT`iL2٤14LdNL(M3333%M33333)304 L9$8ffffgfffff8yfh`Yds`ffffffffffffpffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffg!fffffffffffffffffffffffffffffffffffgQffffffffffffpZffffffqffffffqrYffffgaffffgLffffqAffffpWAffffg!!fffpe0 A Xfffff8UfffpZT0!ffffq%dffffx$ZvSfffffnFG2E4 333333*LS 333Pʳ90 33333)330oҲ3333388H338=l@S04HLt9qm2#LHʴEdVB0SI3 04#L̿b5$2LLHEǏI-xdԀ S3333333333naL3+d44#d4`ļt}_:dntS@`i;;W\UdܑgYq:Xfffffffffr)K!lV/eikh =֜g"ffBûؽJfitYfffg!ffffwەr dtY affffffgfff"y;kfYRX)ّEfffgffffp^K ݕS42 33333333<~If5c-4(0L^q+iR Ms)Xfffr$Zffffbb֣u1diXffffgBM $'Xffg'%ffffma_f35H04^@J4. 0Xфb!ffgEffff_ wn-EaHYj24`i*`FӖֹbHlCV&ffffffx/$iQ&@ffffgQnB&ymI6S3T04ϤOrM0@3333~ގ䅜e5n"ffgs\E(`ij槛PPʖWC4`iڧCVF)-O J04\)CiQLbfffcm2wo߀L˜(̦@aě$}y̛fv:[ň)I2`i=~_fAtťEىa%m䤴lfcӆ!#b2牘cl@dknJ䡘$"bTaF`iۚqP0 X0Rt{[)Q)*\ܦTSdKh{ˋ,Efg 솯hF`nJ}.1lmue)bn.S EJIk#y,ee)`ihn2>L|ɘX)$hfffr#f,QQ W2qJՉ!rEffg"RSdźGj`i)biǚ%Yr0afffq%ZppkAffffffffpfpgZ`Xdfgffffffp9ffffffffpZrff;fffffffffpffxZpfffffffffgNK$gffffgfffcEfffgffgffg ffgfffffffg!fffffffffffg ffffffffgffgffpZffffg ffpe2!afffffffffffgQfffffffg ffg*Iffgafffffffq fffffffggpXfrZfffg"Ipfpqqffrfffs"ifprJ^橥pZr&fffq g(d&šIY&itcF hl&ɓg$9a) %hi"b), &^*[MB`!SM8-,B336̋q0<=#\\?+ 0f!1IIRD04H20 oNܴQ,Bj#,3M3044ǡN.ŘEZY5-C51&$j*n'8ٸٓ l 9 83ӝuVxEM0wjjfL,#!7-9՞F',M38-333<Wj>ɘ,#SIff5 NK L35]!S=PlL;Lmf18SC &вg;[rdfoC,V/*$ 33338;mr\.Y!sEB(Os3uM,͖Ff, 3333wr^ce}͘q 60nc*os3MP6EHa 33337_ݳXu,}4u2܌c97%5|F{6+LDŏݓ.4S,1'8QF*RF 333338&d3"Ӊ/5w'5p 3333338-w ؒm33333339 Ӑ3R3333333v@04;L#a4444#L#LLCLa4CbcT44#sbB04LJ465=$4K 04q2450b`i`Yo'Mffffffffq[qˮ̡ 8`ihi<){8fffffffcb,jr1Y@`i`i6%fffffffgp wk`iVMHd)FV$ail FifhiƆaii֙i)Fii)iI,aiYT`iF lhiidiȑik&@dliBfƙ~6fI%BffffcɳVhakiNqQmf.Bтq񡱦fffp\gA#V`l'YLloYog3I hnF`i;skk-s(26[)Yn̨+xa Ⱦ9[(04uqeH y+cOF"urQbY,B;\@h%aQ@04sXsND u'R-l-Pl"&f(59`lriȷslk dcn^ok;HYMXfe0bkZfffg.SffY%Y$8[ߜnnlf``I.fc S".&šEdxI~-]f/gr@`n)H`&KddywBTk,҆ 6`٤gi#a%ym6,r,qSYhPbFFd`ir:i[f܊{}f&`i0`i2LDL z 04#fSL#NCO LHJLKId0LJ44<ēL4LL4LL4 L44SLL4L44cL#L L LJ4 0ȴ3LkL^4L4F?cf$3L4 .Œ-31щL 83 33333{cC$ 14qZ{W6zu2 ML3333<,A CdA-jpR,v 333 q30$LLؗrKj+5d0+Ĥ4dc(14Ӗ7-ೝ--##$338Y3;2Ր }92-a,ӲÓSsM3336$INDCGLf 3 333#3 ՃJf 33033393SM3Sݖs 2؍833333s9-&,M3333338 8-m4Ȍ 8-3 3333^g"ICXffpZffffg NIgG&g!ffffffffgpffffffgRIfpefUffffffff8ffrQfffffffffffgffgfffffffg ffffffffffffg fffg!ffffffffgafgffffffffcaffffffffg"Efr$fffgfffpffg!ffffffffqfffmY`iifffffffg Mffqaffffffg"Efq`fgafffܛyR`l|`iZ2 J31͈8֓ 33382]$C0N4 nܛ 4VL4>D1൹]7.,؍́ 333~Q\֊ݔԌ-QqL)-Ƈ0 Mӛ2m33#XLy",C R_>/>jNȆFmkԜ1ca D lrTĮN9v,Yt'+j0d dF|٘4{`#BJaqWs)o2KȬCas r9&Adi, I&$Ej|=넥vh#stqH3 _עn 2=#jdF^ٸd?-k[~yF.{_3c 32C)O{ܷ48;0, 336䄒#q}μƕcO:s|#0Q"1 a &'q0uQ^u!9`i|F|$j&8|RvĶnUi$sCbaa[ɹjLӟ6dFf&(kGzkIlsT 9ѸؙX3Ou/[ꁮ S3333P ;7+^WK3 +9H4C!%,Ϝ3338xH))ټK4BM5,BB3̀xC8K3.HbLM6==ai%K.)C0]͋59hi,mfA`VÄ\e``ɞ(d`F FhČ`.`i,AeI`iƑjd&lB`l)4hiĕi)ƙi&&`iiifii&iiliiiFbi‘iIf™&7"ɺa5e!Y$ *ojQ$]VG s.;y2(9uZVcuyĚ' `Y Yk'd1%5%5IY_c]4dͫ–sfثjb8VQRة(̦ `YƏtrE"HPal9غ!bavz]9YK[Wgba\ цaF&\D~9ԙcY6 VdAb`? j͚=2-zs0fNř`g0ӳc!fFdRb 1pJY5R 3'*qN0RoEr+ܦCs(+j*2"0K3Nc,>if ^6IC0C06Dͫs.I56svՍ{|l $8LJ+r,33,g043f 6D?^: {>8r@++ Lk+trkr ɉ7WBLF!k5˲bLŃ-9CYnK# 8Xh'_J6C̒$4N`N V13DɈ3+LIa4 VTS04430#VL s1NIKF!04sܢנdVFтmffffgafff8)Ipffffffg"affcaffffffffffffrffpZfffffqffg%fffffffffffffffg!fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffg fffffffffffffffffqfffffffffffffg!ffffffffffffr2ZfpZfffffp[1$hi™)9YJgMfffgg[&P!ffffffffpd畚SrXEzFIg fffq+Z^eJ&Ba$e$[fffffpZ}+n)fhii,Y}єʘ)`iiiiP69iIiaƜFF)`Ial”i`͆晷 dZffffffg!fg1zfffffffffpfpp IffffffrfgJJIfffffg)ffqfgQffffffffpfpZgfffffffrffg fffffffrfffffpZfffffffffffqffqfffffffffffffffffffffffffffffffffffffffffffgffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgfffffffffffffg!ffffffffffffpfffffffffffgfffffffpZffffg!fffffg RIfffg fffffgvJaffq$ddeffffg"KQfq"Efffffq0%!Qfc Qfffp:q(pZZVpZpʲfdiɑś׉yVyd˻͢affq+Z4lV9PcFL;Vq|h)Mlia %YUʥǦVlCҝ۬֙|!qT\JV膄lh`ʙ*ƔlVWabaeQq|Pt%p7l&MsY:p%dűA%dZmn^0QdlM%f:c0dekRkffVe`Fp%$[ce&F2"xyDgyɌ{{`zLZ!HlBvaIPFΒ)F&UiɌ%I5.FflAڈ(2F|huq&ai&,Ic&Fhۗ2#TsN|THljWv)I@`ii1"I11e)*)ɩ&|1 'HY`deV  sNɝYYuoBe `i)‘Vl&Q-IDfPk&e Y6i&Ȕl *'Ƅ6dU &lVIɒ &e)iiđiȔ)y k`VIIFil606lF╼5 `i`I)l`iɔiciiFl&&&I&&iiiii&iiF&f IFii&l‘iFF)&FIFiiIi̘i&i6F&lLdI`lFiĖi`ikт['f0YEpdr$e X&%p bQg%e%pNN&$ G ffB[FB[-%r`$"`[rB&Bq8łE&Z܄%dl)Dg)zfdȼl&>[50%y&fFE0)vafe}dQup7яp*k|y{٘uYVlyYxtiXgIaYq ch iĞȞϚhJ>.kfxnflM,ʈv18hi,a)hbS]q 5t&Ru%ƦԦLcMIZ0YeZc A\P:`!2UvͿɏۦrY+O}YhfahY/RLA!X"\%fvs\soe` ⒌-IVZ4XYnl!ocuV)`ijHYUcn̓yd暒hLT9M'i"6֌!4` 6Ʋzhi)ٙ=bf )uftf!`iȕl*Y!lZ~vfohdi,Mn+/c.dS fpf-8B1+F[(04-[6CMLDò$4La,bBJɨ44q*N<7zʄ+L=B4 aJo7cKd4a44:KL06#LLJ44`L4I444 L4#L44CL4444L4CL#NLD`4+NC`JJ4tKK#L3LI6N$46#L5A2L8M33sr++ )#+#)O4$ 33= M3/Y,! S03i)Mr0 3382-82m}$c ʴHL(\&"524F(l24 LtHV$S[IJ#.nL 5}3H&pBdN NDN@\SRJc6|Bc0Ԭ4ɌLf5+hK b4ͼ#r3kwc156vC2hfDŒ丫PLLnL*3$VdH1eJLHI2L53tKNDLlظc#27ɄM#+ 3133/2݄Y ,0Ҹ( 3333M88:Ӓ32 33333%&ؒR33vDN46KN#L L#b4#LL4#L#LCL;L L6,04#$a4\JHLģL1HK#Lۓh 0؍333893$!8" 2MÑ-ѓ:"333%XT.5x,?X]9(fԪϙ 3325,Ս:-r#0A.ݒs̈́ ,32z 38S7m#GP7.21(Pum1;v"fL"Ӑ3ObZkJLC*ĩ1ni]<zT֘ E6xu&l`iĬ̚Ė[11{vyǯm_67<(mNɯ@h@&alF3:p]ZoqӔXru^HE㮦_&i~xYlbY͋A$[F$f8qٹ Kv,aD#~yz9[jƦ9JmX2vwe"i,NRBnLk)BL~n˘lfY@(NV2#dSfJY^Ĝn Sg%iyy$d a#7Nf.PfGmk"229_5Ei d-1cqrenL1jhIZ&]!gV㹺e(4EL[2^Vm[Z{ &!lb *%B\ćn͂ɘa21)s%z!18n*.&טɬt٭YV$`9c<2d'd(IVB28aiŸ[1Ycn2&[]YCo0&er*.VI[$fl<^.kJmJkk afXkj~\nrZ-Xgdd%!el\)yƬõݑvIqO.q)b=vtXtkdY*!fIN/&Jo~I0d Lf)JcK<4@$Jٿ*;L̽4R6E.,L1C3\caA c}A$*M^A̬Փ~WEdB2q5<14D f.BKbX5}Z^M8]-4QӃkE̤,4L0C44s_ g!)8ffffff9[b`dI db`ng3.㬊硹fffffc6N%$NBdc3pѢn'>Lɮl⶯[#fffffpnX[0'1~bag%8Svn'J`fe+\xl*=䖦j14`ial|I2[1I3Afffffg &$g\[fr˦_fffff{$fdz9R)iD8IlvzVT`i `li\_*4ƴF&haȒ"jחFiپʊkdViLQ8i&) d`YI&Ỳ`i& FII`iiiƒ Ĕii&6l&iI)ii )VĔi)6ii9R`l&IYidl `lF I`k&ZfffffffpprY*eD@ffffffffr1$Z_nfQQffffffffqfxY-\FnmvI&i)dTʛƼUh`I`i“Ë? 0\1$W\BEffffffq2; nS7 mӜqhW0Vbd&|ɑj+0xrw7RsaّYYC%>A$ffffffq.2cZGBJ jX3Ifffffg ͟מHۋnn4ӕ7%ؔX1fffffg v,*S+I>yc&퇭2pΤJ,4#344O$JU~5S;5{\%c 8{trh,Q 04,33333387XqCO 6a;Ѳۻ$ffffff}), 7ubNBfffffxi'Vafsq1[&\!%dv0fffffclIGgYt-lƤebHma&Fmy&r0&A%%fZffffffg daj,29ljYbaV ,2=\Ywfh& l5CZmZ aF bi f6IFŹli)hiiLdlF`iœiFiFȑiiiđii&i`l& di&FiIF X ffffffffq%q!WXDeffffffffq'2Bm&]mrfffffffsrzI$Jq1b([Efffffffgki̜ޖlRaF ن$q&')fE]i2ᕣfffffgl[zmjYApTfffffe['mbqlg7SX %wAfffffcUrql+[l[|QEX2]Effffg~ֹljjP@jmFL64bAdi!g\Q`i5ĕbJr\Zv9lfʼnd⁙phܖ}zw⑙^PAS)FAIyYɭ]fC)1?1!fffffm1+6a*\!ډ!Qfffffme"nDZejfѦYeZ[ IJ|fffffg'fZfYe[Qffffffqm$pfafxAfffffg*bjnbIfrpfffffffcJafffffffffffg2EfffffffffffffqffffqfffffffpZqffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffpZfffg!ffffffffcfffffffffffffrfqbJEffffffffg5!gfffffffgcf&rdH&ƙ), XɀƼhiHji,m9\ YbTgV&ƖغL̘f\Y)Qgi `i,a)R)y6jalG&`iVa&RFͮĘY6ch܉]͏jI)īUYei ܌`iikfkY#Li$j[aȢl`i)jiؗ 4Gݖhb!ڐ`iiaIRb6l` 34 Mv9,9QҘ2#333/֬{4L^.T~3gHXMCTqC6d^v:E3mg 33333_T⺜S}duݒv3`Mu3\1JʣL*SI26۫ifffffmb\!xs^X9+Q]7W-s9hsU4< hJ,B޾:)Չ@-JAXܴ͊ϰ N|&Mݶ3{3m/69?6֜ʳA֘lz쩑i읽̎VykFAԘfLzc5mMtp;3o34QMuL- >[\M^Bmffffffc)c^bf's SRY[j%V)l_ сfffffmǶƍYEmmlrhWfm8\Ů 9%[ffffglZ[PS & xfMLf(RYHсEZffffffmY~l+fR6fM{[_'%d"hffffff8.^1%E1s&J`9%abmffffffr'_ R %f'%YUfffffffqe&}&HZ_bERUffffffp rIp-fRfd1fffffffgTprRrYѝ&fffffffgfppbJJbafffffffq$p1II$Zffffffgq܈gl)FflFiilyFi&œișiȘii)&adiiĒn&ØF`iFiFlFV `lđnv&.1fffffffg:rz[h&ni9HyyY``i&;̌ ӕd&,diǶalbYNuI,0jg ),cmILUPPbĖ? [<UEI$eqfffffcE9ڢe#1^ݦ EfXZQffffffy*n^v"Ct!6Y!؈A'Afffffbnno1qYBtZ9Q)J@ضT@dA`YLhr##qͱqښa̅)gS DfdV_k1bt&QE&YԄHZ`eW|kqh6W须ʜ_Й6Hx`MI+'-8Y.b33333;+f>g>BFt5PL+j0P$̢R,=B3333333/vry$;?5TΦF"5s~!Lu3M#ȭH߼ 4H25. 333336q/6n8%/-!lǘ310 333333ӄɖW?, 5$ `ɱL4`cA#""#dl@04P܎M+DNKNI1L4.@4L#cJ4 ēL L4CLCtILL404 L406L444$a4t04L&0N6$LCd6C[S0J;%833333388/(S6׃،S;SPMP?103333333 "mM 0k*6*x, 333333͉]5G︪/R0Jȓ,s,MG! 333333y5GUTKen2Dҷ3LEfʑ3*+^#04>̥Ma5nod݌dvLDг6kM;MM+904|aMeMuyEN.r ˃ۏ [L&>9L`0Lo˳]2c4QN/34p-- ,Ϣi\ 333333yT4[.MeE.]8CS?3ss¶N aq( 33333v$4> Ȟb6*K]FFL*8D99м6Z<`i4HD8l+ 襻k'ZɆrϪvZd޶ebg X]`lnC9lF˯eD3jY fffffg_rYk 0h%D[BhdAfffffpRVvlJ Fr!dd fLHYS<%[fl` If&)MPhii•řl`ij†)ili&iF&i&iiilFlFhi&fi\d jivięblņ晙JKq%#)dGffffffs2:e{#w f(ͣ!eAffffgi&\db˫i)VQe'Xh@`ߢzNd~dY4L,.{![ʭVϴOa 33333<];J v#Xg;y{fMjM&z )A3513 6"iiWpbu֛-ޛSgMhC.i)6Tl9jlVѼUxm$nJcfƙiffŹjȃ#n unJ\{7{T_`ƙ~%&>y#9jNm:Ykcgkcjipkix͘hug"a)V `krA[ %affffffffgq%jgq lf,Jd&SgBqv"O(!f1 Zrs:qpjِj $&G$!'fffffffffffgq0 jNU"qeqbi.„cKj)])|zٲm;v6kP*W0if,IEXt#Va!%ᱰf0fffg1s$JeZ{2&m2/qVsGks#>2MJh&%g7{6>|ˏft&.nαomJzf6yY._)D)sffffffffffs$rANrG$rGTrf"*ߌ֧k3aj}n~ȸGɳ>,#&ĞƘoąQifi-|)(gֻIFmh6my VhmJiY鑙f6i(!VYGiw.řYli$FP`n%e"04EvlIs؍Ycm&kف9Q5`|.lb`x$К!XۼSٲqa!1+&R8`i'ly.i)U X Xo{j2@͉f,@, #L4L33g%1 dFgzdmA ؒ-8=84s[b70!nڤQ ɐoZV:Jq6^ L#,Dʹ []]-c)3mih'B̒Bb+ܱ93\=(rMk$o9$hAtgI8E;RC"i^d84Nh#L oL6HqpqX|tPǭ Zv44w_o5=yK~C,'+"4s!"Dcn䡸w"ә9QN0DYrnj^CPсff1qN6`kmݢw:mmNUiZB1&Lr$硑ff:q3,F1^._IIX񅰲E&nK&y12`ii#+{3`e&F& #a9ږZ15`iۡ؆1qg ZR.}3۰XffnF’iF2wZ $Z`is\v52``KkrpZq?#Affgk 'R5cF &ŭ1ge 3-Lc+5fff8n?U$ZijiL@1.j`yx)|{sOor>~yV%mB캋04sr"I,nj8 y4O,Keʌ e}6b57FOgMNΨY&Т #uܤ?Zh0L˒߳nɒn3_7>8VJ9&3FL,ǖ hϾFvl坹L/q'M&owrw{v2.}LK4S(2`#wm"~dB0jګt]tr޿,tdDLB *\U2!npD4Sl` 04F_)6md (+nбJobYsYF¨^W"([tt4fpck"&Z,d \\9T˸Iȭ8/wם]]Tr(n, 328Is,iKW,kcFZboP=YQ[]>|.l%&(nhnz !ykٞnbB&`˛/Afffc f:Kc&f4c/o. LMffffn"X1rٯd&znţEffff|`ilP[)Ά@`hўffffgdX a18\aegZ&遦ffffgmlLRǔ3Vz\Itn`iihۛ dq!%fffg xfgc%fffggC`FV6iFFƒi&9&iFiiiiFȚiiiFlƘiihiِ`iFrm)rprAZsffffpr/Z6AQprZfs'fffg# zfwdؒY"F#&zedP` Ŕio_re܎Xg Glavfe&•Zffg ۟mY\dP`Vʹ/{AZ:JO=XŎfgy.xMXffgf(fzdX IY.k\奵.?QR  ǂ ~sFl0L ;E폑I(9[.g߸|rJX;*4I5fb`,o~8vLSo,{fcha#)lеוVrv,4sLVG2zO`iڷGVX#4㳀WUg+EHڍI j,+(Z Hԍpf6 ƴ3؝< [{n򊙎 GޙFM$vuJfL I%|ts-AW3e&6 LWcxe92i{4ʦI(A HZ@$#N<1tx&Afq-n*.O78XA&ɗ6MT сE۰ mSQ֚q 5s33Rױp-6 {ij֏jkĆXٍUhfQ`&pthfqruffffffg KfprYfffffffc{%fg ZffffgfgKffrdffffffffgIffgfffffffr܁`i$`if liin&i&&9Fiihinfiiʼn`iiyhiiI)& iFI`lF&$`iiShFi#*tq!& fffff9)%gp-oXg affff;w"dș8m?A]Z:fffff NXg"#w=edFfKoUdT&@p`r5gpբTFAbE2Xffe;GMcR(`knLi1HU&I,7ˡ`Fӏ"}k)6(̖PAjaKnqVs[8ebS eڛYedA`Ij<<>mq=-ȆgVtJ`fffvپ}E6$b|oG|^io7l\f`i(y^LzڠEG0y=2:11]&LV`d `i>w!ͬe#_+̏O6f6bcbZfffoe2H!r9]4kb dB `kpgeffgZ$#gLN6Ye6EJ{&fffcgFȑ؞ii36Hdi╙HhiĚꛕE& sN"Aq$p ffffƶ`i8K`i d`iIgif¢d))”f &&Fi``ȘiȔi)`ili&i&i)eiLaiȔlfiFii& ,`iĜiiii֙l`iffffffffprAffUffffffqpddffgeȑii,%F&YEfz[ddZffffffgx&g$ffffffgG1&"JG52ffgIr$b&y[ppUQfffq&fg'嵶|%pKv{affg)r8.+tSc4&al`i9`i‘nC[Xi6bl8xl;h&``i&I ۿ9D6^de< [Ic)ffpehXp.[4o9vYC w\&eHсffg RX[Eu]Y Ζ:bY'1q)aĐS 3339X/s@)xHڴ[Z#Tl8>sy 2DN&u;] fffq:V`ĜeG +} v‹iL++SY&4If!`F Ĭltf:Yu}XWdwf`hX:jY!0JRR7sr`fffffٌf2ޱu&fHM*`dǛQb`ZU@s&9I%ћvoefffpq"if:dzX$!!Ifffr'ff<֝ffi)lhii`iiØimii$fpZq'ffffffffxffg fffffffgbIffpfffffffr biffffffffffffffffffffffffffffffffffffffffffgfffffffffffffrffffffffffffffffffffffffffffffffffffffffffffffffffffffffffpZfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffqfffffffffffffg!ffffffffffffgJQfgffffffffffffffffffffffffffffffffffffffgfffffffffffffcffffffffffffffffg fffffffffr&ZfffffffffffffcX[ffg!ffffqffr3aEfrffffg ffm\$diiEmF|li&\`il)Z9u`i` lR||oe Fœi `i3#aӚQEdw+RqZaq2ffg gm&m.LVܭX8A<`ipXffgSvuo6`H4ݐpɎIRdaƃ4qaвLR 85mťՔmf(Q'EQ!Fffffbw.4ޫN| Ĭ%apߐ2c5'B{33 X 331osaBˍXH&ĒlX g\\V^'?4)H¤,-,'gg~204 cL<ʹ05M5C[|lĄ̓|3VJ 33mcMEH@I3f1f8zOk4\R"^eZBffzZSnwL&hlnmg1 jPHR?bV6zF@`i|df1"`d M{I* xww04 9i 1"qc-r̍, #Ө$332W" 2YzLJI6L/LcLlj M3 ݒI-M3333n}$0H̶ |$ēR7L4a+$L$DL$ƒ 444M4#q04 -M30333#%$3x0 338R3338XH1(ӄ3$Lt04 LtJ#b44I4 Lݏ 3339 3333833~P046#L NL$̣L L6L#LL#LL4Ls04I4GKLLL6 L L B4MH,04F7#Cb44LLM4.O+La34&4#`k@46445/$3JLʴ~$44lLCL04a LH CL1䀲 LL47lNNaj+ L͸ً 3#7Uݔ *lRxߒL,3͟ j[j3DKL$4ʴDg呠a  31#vJu6RP̊La L8o+>؏OӋ!.i4LL6$|Em[:$"7KLb_NQV91aR ӈ q&S-^lAL )#y-shr ͍_O?lQ ӘӃX1 2 c[A1AI#,qd50 CN L[=SJdID2c>TKL06KL @:΋DԌ2d@ʈ@o{A!)K2L5ãLB(*OW#CHC)̓-<*ګ csX,8XCu xrѣ8+xnS9)fa4KJIpWp/L{M !2 #d4ulҙrاOXP ؒ23w[.ԬCA%Le%N&LɁKnb#LµLNNUdȠ 33BxiL;3Y]) 333b̓~H4`6$MKL4^D 04JbK>)J6 L7404HC@KLې,-3333-M8-3333333333338M333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333338-333333333333338333333333333338-8S 333333335(3338M333338S039 38M83339/LM33-9 33ӐӉ*ӈ3333336vdMIJ5IM46dLu`1L(Jq3#LL 14>0KL xLJ4K>G"4dL#t4MJ0L$2cCd"#044q`#7sb4HcɅL3333Պ 333388-k8 3333LL8M38MS-(3333(X:El[ii9 Xf!ZJfR$[,&eIdpl(.=%ХLd+LT%ڱ"M%qSwfT`FIȑiWaF bxXmn;#cFI)ƙ)rcI2bP]qfqgipgZ'f$2I Ieafr'3eqF&lF&i(`iɗlL`iYI)FiFƛpffff8ffpp[!ffffr%ffffgffg!ffpfffffffffffffffffffg!qffffffffffffffffffffpffffffffffffffffffffg!fffffffffffffffffffffffffffffffffffffffffffffffffffg!ffffffffffffffffffffffffffffgfffffffffffffgfffffffffffffg!ffffg fffg!g fffffffffqr9%fffffffg!eg!fffgqEq$dEp.BZfgp r~I%]HAffy@Ya0RS f($)nj~#&! "q穁 cVkilb LNSfq[lyӉʶEF)VYI+ ԗ|fV*nlILD~kif `)V,v J&:l8eEifb@dlFsJ՘J?%Vq3\g&Y{ *r*qmte틦pZY`XXQ+L?7 i35=3ِ0S WzbeVE˸Ű3"($0#N#]}ra6:ܖJl,#8Kܸ$6s8xc.m=5589hm 82w780dLRLvaMSCcHȳM8C o= 6o74Lu8ѳ{J5쮂3UU=1 X]]k k)͍333s\~N0|32H*KKL/s SR蹍* 33<>Mã3C,Lwdvμ*(04VJlNj 1~@4umNn&ԍ 333;f2I#T`1JH6TWt*2 CLې#0 8-39--J03333"M332R3331"33338M$33333833333333333333333333333330333333333333333333333333333333333333333333333333333333339 3333333333333333333333333333333333333333333333338M33333333333338M33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333338M3333333333333333333333333331333333333-3333333333339 3333338X L 333388838M3333338r3ٌ 338-?i, 3338صܒ8 333(ɕ4۬ 3339 ш S $ 38o3 333;aK:#LL6FHV:e͢ 044n-m#,3S0ؗW\L=҈0L٘3LlM"9тL0ebLޑ ffg"Oie`l)m|,k\ȲMiXCeiĻn)&P`krJR&R@j-7eFlkh56@QiFƜY, n&:YF FlAi2IlišV~$effg661d iFUdUiF F[w$ X$dgffgсUYffffpi’n6f晜&ć`iFi6&˜ii&&&i `iV •)hi&FV& dIfgFK2KfAfffrr~u EX!qpTq%@Affq3k ݤ$e$qe&k:!ffz1[.aVAXc!n~andRZ~k%Ag d)'  f 4b!['Gj)&pp ["21g`eta[D4&u1b`&)<{l/hȦcUFdF L(lh$bE‘9A\|})FCE"Ip[NϱrHXRY2Ts#f&kg ,r/pKmR`ʾXIYIq %7&k~,,ayV !bHe bīI%Z-iP-0U1&F#pn 2gmYR8ܘ"B2Oq 1znf ٵ^-H$rBrb D!20>z$8fL`)ʥvxɋ`i\Ji&5nnh®0٤ff6(iƔ5fNIXb BI*`lJdǬ|jXd`i ɴ1f4YpcKf "i$ȲaXZq&g9uhFl h_FI Q9d`li)b j̉VaiYL[yXdil)I&lrNbk$${%Xfqd )I)F&iol& eiii&ԘF晜Fi`I`iiViIFlFFi`iiiFiiiFiiii,a`i& IF0cViiFFÔi`ne_CØl&&l)ܓP`lŔkpIP1vW"V`"RM0%i&X:S*2"Zg(!eFJ6f.$e)&M噸Wd{vZ2dmf˦*sr}!XfpbR$%"=gydť1*apۭi.e&:;0b+>aY:dNgXذ }7?%RsI*`2&;*>Fc*hYZ@$qe"cb1&2"e% Yepuz7znxym%T˼L\ysvy5&X9xc 'pDYQɢ)dFS qjk&ZRZYofeX2]'Q-neFٱ[9ill5P`IXd)&egV|1טj,k8VIFƩgm1jtҕVnFr)̅!&orm"鬏,rI$iinn16(Z빶sƘ5]khq3e$fg)z&g3lZ[Yv&kI2R$J?L^knpta6b3ciκ$[<&&Qen^'O;Lkqcl`]60VA!bhDV%q{ۢ*XZfXe!.n ]vNs-&fr2&|;nLo[dYOg1 33Sy60,-1(L31)1\^x,,330f2sS 33381*L 339Y-S339 8X11 3339,̬0J4b5040L44dSLCLL4CLSLL4CL44#LL$L L46CLL~56CLeJ4=b06վ8*043 3 3331XyJĐ M331$yTЬ@3%+#;WrDҔ 338\5.CB3dLLbC `f`Lm((14H;Md+#"CH44L }$dL$T!  46` ڣM1D@a605/sIZ-Mw.,-xG.su/L ӂMԒ:1{Hm,0ӃvO{O2L42K7S$HV$o+[mVbiǸ/")qiA`F ,$bIn"|Rk9$e"#V FBbilFhhRky!bdF>-n(Yv])lҐaiĞśPiɡfff묏Ek*`,&9>K̙FD`i ũjhdeiIjjP`F,ai˜iX,~j%ffffr'ffffg?(Z!Iffqrfffffjhi ffffffffpZfffg*bQfffffffpffffffffffgfffffffffffffpZfffffffffffffgffffffqfffffffffffffpZffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgfffffrfffffffffffffpdffffgIfffffffffffffrZffffffffffffpZrfffg[ RrEfffq1Z]䑁ffff܃iRhi!\aFhi|lilM7aIܩVD`i;_!s桲hFpZfp[$F2fMg6ffrKYJjg6iifVm?h 1ŧqeLNX0S1r %Dffffffff8,`FďaX`yβb`Xg*Ͽt@`i_p W=d8m33333388Ub3tA -8 C.º389-33333m[|pb,(R|&r@&Ęi‹׉=S"$ ;|0Lb_,[Ax33333337)zf#g,ك9֙ͷ䜧fsefbId[fffffffffgú!q0g݌ffffffff+kt&``i|Q`i<ʁ`ɷS`fƙiF,`i`iiFiiilƙiFiii&Ȕișii&’i%ffgffg1fff6˒aF ƙI&)V`l‘*`lfIvk,Xfg .a!fg%UfpcQfgW3*Yfpkfbiȑȉ y`iK%qvpNł!pf--A0%cYpncjf1Y<|@]f8y!i2 %%$egaoX5.QܟHHL$ 7[Z ㏗(:LʼnAfqeZfcnjݽӶR`BHyR!2CLep>.%0daJ4EȽ[Re%:,FwعԄKNqOܡ9>ua#eUffys&o7rIT^D&, 3|hXsM1aLܵ=Nv'"|T׫Bi/aF Wg(fffffffffq0[,&`0 @k}"nfL7L4?Tad5uhII([KV5jTTZ/+~njƋ !Kbi7FѹrM'/^7o5c] [, (39;.<06i ̼7ɘL-FgFF0f`r Ӓ9 jD#33tcf `lIYL`ilQ6Hɇn33 ,3393-%8,.qnw сfzE7$L -8 ^O\tM85czopHN&E`iiXVIĸN2qvd25GEr1kg!RtbXcB04D$077eQ6Pt$XA}&Us0&&Ќ 33nnX:uR$g.XS2&m$7 s333̘BՂ}Fq+rm#CL0UsCɛD1D0K( Np(p, 8qӌ묳N 33308<D6ٹG#04E9,3333 #ev[nJb] IVlo00LLZn.') 33Xl3333337]D00LH@04)+8 3388J33333333 3330333333>333333333333339 333333333333339 33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333338M333333333333333333333333333333333333333333333333333333333333333333333333333333333333338M383333333338-338RX33333333 3$ 33333333M33V& 33333333bM '"Ӈt-RlLsaqŇ26 ݜc5[R7HfffffffgʴFd4`l:dsD'  33333336-Lݍ<V) gffffpp'Z9f3؅+Sct噍MEo&%@QgxYNْ%gffffg fZ1/ms{sUZDg ffg"10i3U͐oF M9Xӈ33338m C, 339-33333؍}S͐Qffgffffffg ͘d`i&ifffg!fffffffcffffffffffffg!fffffffffffffpfffffffffffffrfffffffffffpfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffpfffffffffffffg fffffffffffffffffffffffffffgfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffg!ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffpfffffffffffffffffffffffffffffffrffffffffffffffffffffffffffffg fffffffffffffqf&ffffffffpfpZglfffffffffzff9k!Zfffffffg)$ZpmEféLVomC N-Dl 4w#b-1 388Gk[#@04 {5ϰO*ZPI bbX G>ﬞGcV6$`lxNEquTHE&9Vdq' &dђEc}qi’eɈC ͓!rq&TXg&۰cl[g yي!H)sM#)33"K4M]BFf{Iӥ`tcEZpZrqQq uIc}7|'C|gVkISZ#75`iii&)O8a ll3PdiVΫk}~{<~6RU!ffpfffrpg7嚨];hh=J-fgfffpZff}-d?g/ 沝C04'ţ[^=MY 33333333333d+\@#3333333333333o)Ĥ 3333333333331Lۘ 333333333338-3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333338R-33333333333335$3333333333333,-333333333333^fqfffffffffg$ag"affffffffg+fffffffffffgfffffffffffpl4`ia!$Zg&afffffffff04 L 823333333333v04L L LSL4CL4L3L#Lͽ04CL෫404qYv̐ 333333333333ŝ/ͺ8i`iȔi+-<T#1B[nfffpZffff:>g.}܇6 "5Z1Z"ffv"`ثm]e^%E2C([ٙ3:H' 331ńܬ 333o U0*=f)cfYmasڳ([lX`iuZ(T6+8o!8*)uӦvg,M333233o q<\{$02i+M'+ AIFa3B{44)$K 446NN J<*N8RZ㤚Nq"4`i, b<㦺|2$&{jdufiLO5214675CL[o3ATX@xbZq'Cx9Lr33w + 331ܖdgl#)3ۛ> 8M?#*9 XܸJRR1 RHd -38-=33͘XNsxQ(14\MC L`#LF_-Y$UZŁgqffgĔVj&`iijlFI)Q6iiFMH333338WSM-3v@4 Lv%C4f $L&}˓,L7L͸Q% 333%)L 333338,M33382-33333330, 333330383M3330 333;LR-38M333##)0M333(333330ӂ333@3333333333338338-338-L 3331)3333338-331ӁD 333338333-3339 33#-#, 333s,38R333333< 33033\#@04F([݄ 338x'"Y 3s/ 8M1^ffm|/YX`iKY`i& fp܉h`6SIffghNF-4&ᕪ%g }Xfpa##}m$eFW_&-%qޗZg&1ybm3/IbUN M= 31ω=o8j$m&R$#38\,Ϥ-嚱L |[44184YF,HLV; 'ibT`Fh|cy}֧Ddl , KNaȴNlFԓfr'2"% WoioYfJ܏Un/.,YEko6bFØ,Mf`aiiȹmk"BXZfR%YDnێW{.8[(6Lv!L&Ǐ{ BS2Ō\WG5~0M<>>Ѵ, 38Xv M3']a(6zYkh}sdlDQCefbi{!ro90#.9Fz.`Re0+L K#LRibl*ѱ%(9?Nn_akHQqHTt LL45ʔa-s\ڵy)ƮilԃI7H71&ƜV@b(.\ˡ2TNML0I4wYt}Yr~<:Р 39 333331+lm3|YP2pZfffpZfffgkgH]EnZpfffp!fpp6Pɏ#f:&ͥ6a fg&ff6zC%3+'b<Ֆ 2;؈Sb04JLJ4HCry1C~E8Pv$9NTYHȘ>)ml^3dփѕ%'%kqfff:dffgr^<+N d"De\8Ji`Vn6y=ryﷳ5Ng#- XѸ٬ 33828H33<{? 21q 'n13,,J‘L46"pd$> Sd44J;l24tjcA LNC,# 04LbMsVc:N) 8Q?//u' `0I4t3G$t06#`r'34By2N {9U˽ޫ_i%N bttђ 8Mb{L2&272s*i) 8X#m L 8;46T]b1 @0aD}M7v}$p(dF= ӑ+.3Xsy'Ȃ _o A~받ڔ< YXfy`LY,՘*a <hVsnqʰ0L>3LdnLM(Il_$|׽\Aˇ-5ZȚcPi2Lt244JTL,Z\nsV(rc.L1Kl|/"|F2vZ9 O:cFifs"zv5t҄C33333333, 1\ pN b!j `i ;{^M3F{v>dH`ĔiƇiCHr1 333333338-3m~:& 33333333333333Zoh&%ahL6k2 @除YAgƚAffg/! RY.S: lؖ8MYY.6jcfff9kjLB &aPm'mڡ71Zmʙr`iZZME&qj?jm'!fd"&Dhʉ`i¾9KEM[/`bz;:Q#C,0H44MW9o ,+[td=# 1+L04\s0nL,)tYmSTHx()6&64i20L?s?nL0$#0"@$df&ffffx&;䈶RS&%%$!fffgёYrY, 33333"ʌS 3$M33335 39 sQM"38M33333n@44N4L4I4LHD04;L3 Ld44H+L2L4CLȶCL4L,L44 L44 L L44SL44L aH6 a4L NLJ4L4$L#b47ctLݓ%"9 332338- 3%/0 M33$338i>3M0ؐ 3K)M%'ffffcNs)f o[ nXQfa pbn&F^~rmXŁAZI4*{n9e&˜fďu5#$S!0Ht6(7=FT$&, , 3333KZ4`2C$l`,hcapdZgjZjZ>V/ߚ׷휝t٠EUN$!le$FB*$"b%D<g!gddZVy>]& >1p 0|#VI. +/\c^ռ+BC0444qH7lw/r\9533KElQFK(cNKsj_vd=Zb`hiY.7 fB|ɘHM)X^wk yBM`ikrw zmqΣ)&ilJKj![8DhialF]2k<`Ć +s fm"`i" &.JSȲсffffffpVSƄjB\haFlni)\j[di)&)viiiiiFii&FiiibiiFi)IfVFil,jiiɂQffffffp%ffr0IeIfffffffgap[#!Ifffffffqp!fgtVF1f`ii`^giq'ffffffp[jEz00bnΡ%cffffgFI!-~7e;4giI)`knykzD7&D`ibiliFĨHn&ʭL щ!XgffffgB)N 4xӂ؍333333$Ӎk[ 9&&0ٔfffffffffgAKneov`ii&ûr~&b̍ffg!fffffffm0effz ffffffg UZffgIffffgfolj`i&řV&i)FiIFiiY69&iiiiIi&&dirg &1affffffffg!pZ%affffffg&& yeEfrffffgl̆`ic-P!pffffq-xuh@` 6m r{cdai.Y i"FD`+蛚)fB!i`1I|sɐZ G+tueqd eS(摁+qk5r&:]7A&f(C&5R `ꕪLշXbhL%ӷNfٌсgq&bM&@`i~nm 5 3mVdu4y C04$J34W }/lLQؚp!;U ɀ!fg`[ffבMfIlb:7fH@`l+k[jq^95£033903oKُ55-NHn',M3ns[Zx/#5ffpfff:*|}9g آ:aFțyk1٧dF6Xfg'fxnᅳ[!%[n4e1`i镦m g&p;񴷲UR<݆ffffgg+a1ff={Mfffffffnϖn.`i,Hhidi`i`iiliii))Fi&`lđl)⑖6qffffffff:ZffvJdkZcFL4`iži>2Bffqp!fffffffpY ffpZfffffrffni`i)eiiF蔖FFĒii&iiiiFii&l)&Qffffffffffg#s Xfgffffpfp#fxXqpсfffggZ e%V&I OQ`xI&Rhin'Yͳ\X)POffffLΒL-<86ؒw4+LsFvmffff8癁hynDYf K3`+,F`ix٩15`lF겛,ʙ ihL*͡if(>|yb` }`c864wZ24>iT:6#N ŭˮ<141 147BC04[-u2M8\feen70J4L#CLJ2L ]ҋ433a6146@04}nbرJ4DL64#[s 31%8S ӄRM3333L3=R  33R333S$33s333333)43#+*333333333338M333383333ح3383 333333333383333333333333333333333333$3333333333339 33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333338-333333333333339333333333333333339 33333333338333333333338-3333333333333333(33333393M8-3333333L-3389 ,2-333338r3338-333m333Z,3@"3332 33E*m,(885- 333139xC&Ȍ ͌< 333M8PFٌ~bP =X  33931ŊtyIrZ fjӃ#o[y+4()F) lik;~-w)gD 8v|o@δ`fffcfR֭$dԺ~`\Mfffpqf9??w罭TYm+ A4݌  #MPBx03 q&04 L=Ë4\L6/ٚb3338233<.LӉ"dd̔2#L4FԘLH044Ka`D04qMsNLK4HL4 LCLCL LCL L LLCL#L44LCLCLCL44244Ld 04̶ LqL*,,ӄ33333,3ؘR[" 333333331Ն 8S<=Ȥ+R24#L+ Ӄ ܘK녴,KD 04SLƶCLWʮ~de`FZ`FjɗTdaFiaߐ2@ 8--0333323=8DXΐڢĬ 333333339 38xϐČ333 33338s33333(333383 3880%(3333333383314 3338M333333335 333333333333333333333333338R 333333333833333333333333338-3333333333333333333333333333333333333333333338-33333333333333333333333333333333333333333333333333333333833333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333331339 333333333833333333333333؍33333333333338339 33333؍333333333/5(333Y (333333=2. 33Z( 3 3333o95 39fC76L4 ·L 33̆$338KfC04eC14ik-ǚjL 1%X, 333}}( >4 ;1@`irafffnq&r-36SpH2Fg䁡ffg 2[ !pH{z'eAc6IZ9fffgv6&`i>x$]k8͆P`i&&k6}籉AcHdgL剦gzQffg 'b`&ě9IZs$ZfpZffff:pg2)f8iXAgQfffpc%f8(ᝩ-fg ffg GpEfoǑffR`iiFjliiʒiZfgN#)ZffgffgJrafprbdXffp[ffqg fpf&ffgffq%:ZffppYfqpfffg ffgRqffffffpZpx`iƙi&iil&i&iiȑlƙiiFiii)IFilH`iii&iFĕilFœfF&i֙\feiƜilB6qhiCƙ~dk FĔG 333Ӑ387>=3 2L&3H0LL4[Uqy6#CLL󼈳"S04142јy+ zG,R3}59p0LʳN Fpn=,؞0L4׵A2Km,&`04FH24q+^#f3pΌC 04.f2mffffpeef+<<|me"iN?O&nǀ8Qdiși+yg%flF ֹI5]ۉS,Frffpe&>-5nCcIdF•.{k3gLk = 3398+d%fffffclF`lFɕֆH`F)Y`i&Viii&iFi&&YFF,Q`ilLb`&|Z|Ch`ņ~JUj`iGᆧLsDr 333333L 33XşU ˊyB44VHfffrrˋ.-kֽU$2Tf18 v;ޔj9e vޛ(Qa3VkݲJc0Lvp߸SUGe8wsBP $3333333z]x`i,fOVˆ33333;z,&YDh0$1_߹ (uJ\oF  N3333333^G#~kB> Hn,)Wn6~7$0D&333331y@% !3f~JɌawcFN%ДsQ 333335ΔK³+S $SXc#XS)IBifyH2dIal%FQ`ĉcl1YiۍA~fȖQla&%bo:˞i $`lLZ`ifoi),eVCli!VFYdi,hilfiIil bil‘iiF&&&iFiiIIVi&Ȕiiii&’hbi˜iVF@`i, nf\&)앚顐`i<k\!ia`iiI&Ǟ\s9Yt`i aaF|QFĔĦim `},3lmђ *SҔ=@ffffffx[/fo9XI0Yv0[9[nf4;fPaa9=7(kr&B4 jM4`izuv^ZVk=CͥrR]:Y!6<dNy 333331_~Ο,&Rv dEdiF`@`isKPM333333s[g6qcKY-w&gneX9mT>(pfffffgWt܄ʬ!ɲk;KԱLmћ3GL'3E*3([Y@ Lr1@`ix6 `ik),F6mQVffs, `333333ŎG01,338#h4tʶ`;JCL>h04K04KL^@044KLLL4 La44 LCLL. 40L 04>>S 044k04} 046 Y1x33333;u) 4^Ffffffffv[b @`i~۷b8fG0)ffff92~fffffff+M L `(Is]ffffgw͞^#:a>_[{;6{ d56 ffgfrvXffffc⧲JM$آpp&ǺNI333336 ! #Gnil&mVd͏I4 &b fffn$8V⧟y֙Cefff:Wfffffffk\t 8f `in,mY`iyh`ȒZL33333C*C4d404ߟ*333333333373DL!44L@04$LH#L4$L4Cf+L4J, L4L[(3333310 M33+2{aL*7LL 3XY,ѐS.;+21 33333yCLۘR<&7a04vs38D)LV>qZlFSuQW,fC& `l\}|m.fP[6: m330\ؓ p 5[1j,Jxgɝ^6<m333333Ik(9\#CbM?[v6^~72Iqi'hlvAJc/a[ͲӎƓ22"9fffffo12Y KDT,Od0f+f04qmfڳ,4DfJJu,8^"4ީ b``f Jd ƿ.lwkLJ3 1K7l#=dolz 3333308nՒM2ӒcV`042N 04NH4?4J2AH;J ͹ 4S 6ZnΨ 333333=;+%5>7]5[#L @36 d6&/L#L 06 LCL @0JI4HCSLKaI4]R3333333-/(33MR33333338M3338RS3333338M8m3339r33333338R3M33%'#(333333333382M3333333333393 33333339 33334m33333338M8M333%033333333333(3333333(3333n44 ed L,LCL6CbJ41b6,04D0I4.ʼ`3cL͹,Ʉ 37>2?-8aM3333332βӑSϙL*, 3333331$Zی c6V1-͍W6̄#333m{\Q04m|O$rKK24d fffffe-2Ƒɚ$h]u^&4`i fffffff=ak_J&ٙaMXfp{`iWA `F`im橄4biiŻ!L؀ffg5ffffffcq%eIfffrfffffffpgffffgffffffg"EffffffffffffffffffffffffffffffffffffffffffffffffffffffffffrfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffpZffffffffffffffffffffg"Qffffffffffffffffffffg fffffffffffffffffffg!ffffffffffffgQfffffffrffffg fffffffffffff8fffffffffffffg!ffffffpZfffg0'$fffffgQffffc1FaAfffffgfffs2Wlfffffg|`ițf]Afffffy摁ffg q[%M333333<|n338X$g%{Ifffffg#Affq$^`iifg0 IafffffzB`ffgJ.ӓ+́a,33331[5Y!L&4IIGa-Lڣ 33333O3n(jM3-8Qr*<3L 6` 33o-Ɩ&ϧ#wq 9 33j]g%Ăil^j&$b&º6Wcy Hd-338]Lf 333331ՋάC= M 38e@0MH4 333333p 3333y",33333o).8ʭ2M3333 333333 Xffff8ffffffyA ffffffffffffrfffffffffffffpf%fffffqffffffffpZfffg affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff:ffffffgEffffffffffffffffffg-ffffffffffffg%fffffg!fffcIdcffffffq&fffr"d!fffffpfg1Skfffffmdrv5Fcw) сffffgfS qqSf5Gb3333333;堁 3'ْKXiG`pffffffffffffk7fffffffffffffe~T%ffffffffffffg֧ۋ"Hpjffffffffffff8hm*fffffffffffffcf ffffffffffffpyQo-Gp04̿JX(`ijyBfffffffffffffvq)=S/^l1ffffffffffffvfW74h333333333333U9cs 044Y֢4Ww4)OűzmϾGfffffffffffc{%^b$C04?^yY1b04K2Ei.s/ID`漁Vbg.fffffffffffffgnLZ>fffffffffffz6fm3333333333331Fg3LVShrG 333333333333U?o "iyY@`i` l>=CVa$O9h Q ̿׾[B"A4qkcfffffffffffgg(M333333333333313333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333/l333333333333EL-c33333333333333^Yw ۡDHffffffffffffff=wK^'I`ivi.q,qffffffffffffm_U1XfffffffffffgmnŶ<_A,˜i]\Pb 333333333338v\3^|2C M`iͻIf 333333333336n]{"i22ffffffffffffmXgF333333333332{sl-+L̿'&Vݎsf2 333333333336ױ]g .V4üY04wznֆoPє5`&wAgξ#&@`i>OH\jh3333333333333 "sȆ04 Ʋd0C04qfC 04ǯ싙%2Lv|me(#LWgy$!SF٨333333333333338 333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333326o!o*J~+n~)ãn[qPkIVj-hm6I%Y &`F$q13(&i%V忚Hf"c61Z~1ùqrlmtzұqd bƷ0umvn+1W{fiU[}ONo2yNpŷ6eEA&rcn\frAMfsfffff:f$gGm/ ,[tIé@Se(8ٽDŽnkC>7;Ǎw`IHoٞC={ŷ7k̞5L l Vj3Ziffvi =d)flf̖ĩ9fyj2fqD2PjۚdX*a.v'K" &m8&JpN} ok؝U ƳK -o]̰nJQ6kmIRV)UFfiF9JVنi[̝c*ďZҚLju|CM(boW#˞kמwnAo:y~m(ntxg5jRixg#b``i6hindf1bb^.f3#z1ZW1u&bfp:q&SGe'{8'zhY҇dBchOg rR|3da[uR&=͛{ݎl%ڕfbYUQ^FYjVi%rZM%X )f 6tnSS &3UwHnK:p{ 51Ifa;\&rG1w`Q>Ygqm{1PTAo/N)Ʒy||m֩K]=n3jMF{tXxiVofȁienirAZM2Y0N%q_ R^Fi"2$T1 a`1X&ӑ2fjgLΫ~P맞 o*}7cP'IicaD 񑿘R`)aY"a&=efjdzJZ?$fg ٦e7#"91BVgM[qZ:f 'L憵2c$/h<9r|#`"!JbRa"6!&7meY av ilؖfMӸU-kIy͞ fuZBmfe+%ٿe[>d/ŅZ3#NH6i_]}n[l3fg#Yq1;gf/rf՜6~sNj Tfkfkjb²&۸*n+ouV܋!AIل`gɕigi\oF ƜlƜyƜr9hl: -̏fjTo;Lg+/+.BmYؠُuÇ Gp&l!]Moo)ɐ&ujql:7n݉f_nRuW:.ivmƙi6fl<#iFB9ũLmƭYAsjؽEvl lwBdCl̠flYiZfƙiY~_c(iY9z-) er\Mn%TRn ;ٍ`HiSgIffug&Rka d`i96iÑĩ`l|J\ ɉƖĭlY1ƗXHfx\{#6T̖9^qnO. GRd**k vOFVpbmZ l뙇o[h aii`i6Ñ~R|i8ionmlzx)Gq)nZƛypkZʛ&&9 n׳KWo?ɯH&R++IIXjv\ad aFÜnial'Zd2M2NMfl|4ĥ1[ㅬ>Bå:*˰+l+9՛|nưxG&}c67\i jbcad lq6`ilٙyc<fiiiYo4[TiliQ(Y +|\6x܈ќC uf'Bо=o1עekvkI8>uy"6zo֛=oysoskclƙl959w-"i weeFfI(l&I)Ʌ̑6BgAFffffmqaliY$e2.G"PJc,dFlhhYd&,V`lٛ{s FffffpN1ɷ0c4L|LW6%"Ӊ1r3؍3333<9(ؓm(3333333"ӊݓф 33303333233؍338-33339S 8R-9 3333333383$33333333333338-3333333333L 9 33333333338M3333333333333333333333333338S 333333333339M33333333333339 33333333333333139 333333333383333333333333333333333833333333388@03393333333=R!- 3339q33333393333239 8-888,333s, 3333333xL388ز9381X۬3-3"؍33"L;o 333+#"ӄ)1%5\?'5Q06 NCM@Ӆ0.,2:וd MVҬC 06$L٨LX='&иXؔj0|t0L ?,ɏInJK+D5[+?ND 3338rM3M6F!~YȤ2L7)L<24O4aEL04cuɵSLL4+L0DS 046$LI`6HxMc#L LOTCL6CLL4 L6+LL#LCL4KL4ʹ4aL 4ݘ3333382333336R04 `LfNB!L C04}%d^! 3333133338QW9ƙ9`ih1j6@`i`ffffgۏXSL!ffffsfffffp+$!ffpffffffpzcdHa9)9&YhLfI`i&`ilQ`i,`ll&l)&&i&ii’iii`iiiFZQffffg!fffgfffffs!ffffmcaFęG)`iLø& 6@`i)9Hy{h`lmunV,(\4͖@`i6 Z fg!Oшk_,"et%WPjNTdi)9&HySJ(QU x NZNl9@Yqpe슮wfffmm'_>Hb2V` X n~1vrffeκ{ɵɇ5hci!`)X܈"fٙ*4[["S"fy ق X2S{VrP^jMfffc]YgMeGevkM[rgC&M/> S9SI0ϚxP(\rt 33~wND4TIa22@D$ .K,J6d04͹-1RT%R31s,K&2Hщ)T3338ق&L81 ,2˄ ͉# 3333Y0c2Ғ! 2- 1##0333838ӌMǁH1)(38333336䄐ILLL0L46CLLNdN$Lt04] 33339 9 333338S 339M333333333333383333333333*؍333339333333833333333333333"333339 33333333333333333333333333333333333333333338M333333338-33338-333338333333333333333333333333338333333333333338333333333338-3339 3333333333$3339 333333339m339 3333333338M033338-3$33331, 8M39R388&,M33336@30 3''u0 3333n84Hc_%2C"XM(333706KdIddȶ`KfBVLJjC04V[4fL(SeT2eV6Q 04s[L2f$~,lSbf6$bc 3cky1B0#L E%cbCf hn2r' "_[ gw71Yff_[UX[RI$JppޚIʉ0q)%w [:EŁZffxu,8ll ӂS%WJM,ͣ.Xx7C5e/F fS 04)҄I-8!2kd6,/IɽɄ9gvLs+VS!4ͷ|ӎ,L ,ߌbl^VӔ~-,-y, 333cGC(3HLsT`fr5:T- 333Li2 OX#a7]mXV34$В -333Y 91 31ŋmY쨨Ԅ 33336M8R381q)2h,K,3339 0ӄ339t *2L,L+L4Wd YVɆjiiFȒiiiƙiiFȘii`i) `iǗzp&`iŔVI`$ga F`i).YpZfcfffffgɮNXg&&pz̷#f㌂93bHa6&hn;jE`if-PFX8Zf:cv2ffffffgBeȽ&"zRQf:;B>ffffpɉEZfpez%\ffffff9ٰ!FGgbۖS\сffff{xh"Zf8!+ylg#,b3fiv,(`qVVqXfffffg7ffr$1"FQffffgRSfffc&Affffgffffg G!fffffpZrffffqefffffg fffffr%ffffgafffffpfffffffffffffg!ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffg!ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffqffffpdZfffffffffffffffffffffg %ffr0efffg9!ff8ZpZffffffxHfg!v{fhZffffpXgZg pfRfIfAfffpgq([IqfcdZYftXAfff"}dclV%ۧ1\em d&Ye)pe&m&f$ff0"R3331(јp8!,"0Ni13s%42F 3/o S1$X1%j&ZqIdM33337s=-وA-$5#ؖ39'ׂY6533333;_d_M;[cCM#4@EHmd*hXMM3@33333or6;lNS0H,aJqL 5)L [ wjؤp"bygqړ2^ffffcWgeZZsdgf2*fffmrZ}֦W$& MYAGg١ffffmw ZZe*aZrRU&gXqfff6 M%&%1# a!ffn<&r FYei&Fm2Fa&fe gfffg&J`Zfq 0[ afffg $afqffgfffff܀fiiiiiii&iiiiii˜iF&Iii)fƕi`Fɑi’il&`ihhiH&`iț)fiلeFz`aF fpfffgneGذjz&@P'Łffg"bZ2fgT&I"f&W3&qz.HڢffgReZ 4hnf2dc ]qn"] gqg"{$Kz)&5X#nƕFo,'ǘƌPl#VW"Vd&RZ8cIɒQM5lgYrcăYɣ}di fg:dc`^/1q%+bXUI/ d#3^f+m]403333}3, _jaQӜOs%³084 K]ڟ6 Lr̫i$Sdn^^tKR"!Dc.w}yu:,3ǖlf-333͑ϕ,mWxB3',,ft))a(̿N1SmJ40 Kc .c"RhSlgSBi2C"JC B"0$~"a:D&ۣ!qX&e%Hf0Ŧ_@fffffffo%YdcVXffffgn5n enсfffffceiX&%i!&\mfffffp[%1bQ aZffffffcqfg$iffffffpfg)fseZffffffg dfffprffffffq$ffp[ fffffffg!fffrffffffgffffpZffffffffffffffqfffffffgffffpZffffffgFafffgffffffffffffgffffffffqffffqfffffffgffffqfffffffg ffffpZffffffg ffffffffffffgffffgaffffffgaffgSZffffffgfffq0 fffffff܀biiii6lilY 5̀`晜&`i&ySȑe)Z&%$Zqq_ÊIj`=`YA Sd4cg1ၦfffff_Aa"[FKbՉ4ffffe3y:XsJZZdp({ay06ffffgorp&wAֱ hctFۯƍ y8f'|aaEYHQEIefXQKfhʤs04g{MlseXfUd 3nFƎfKX5odŌ`lfgVf,26b#'tdafߡQLѳoN疒ẶYNb hyr`iyN[dsD333331קWx;2T14#5( L׷,d﵃ }UJ6 S4H#RJ8 0r?1EPLu{eJ҅ɨ 31j9\YX1 33338[9(d`FX鷋fffffc'7.[4%Qeffy#(M3333331k׬+@I4?=4d0LͼDċKL͸Ɏ@ 333333~h7`CLI+L1$L͸@33338M333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333833333338M333383333333333382M33333338rM33339h3333313333333333=S 3338310 333333oVʌ 33337X h333335ߒF 33339V 33333;tI`04#L( 333333_lF 333X?9ݾN#083%֯.S~i2Tf0!4 LrbƤ3333333dy9innY墛zfffffccl$8 `qm 33333t sXxd8 `lr fffff86lÆ@`l鳮{ -C04Ͷަ8ok8i$338RtMyDC+Lm˽%nK,"3386h0Lwu]gԀ 333=8L 33333_TsK3L0f404Oܽ zIJ4OLt̃CLv04 LLC`#LL4#LL L b4DL4J`#LL4M4LsNDLH`a5+L04&HN&$04zɐ`i.Ruj|&3k`i3YDe L v.*KR(( 333333fd,uG'e`im҃ig "V f7{u-01`itòtĝRd){l3/z`i\n_Uȧ˜8Y$$r6diȒ,U"ʋq4#Ư=fffffff׎E$`dlHW~+qW`L'5a( b&Ah_*f}0nxD`iR C'&%r#e'/SfF8,fuQ,2^dɣe쇌әTHߡ`A1&pD-^4t&tHfffffff8w&4&. 2J/ 2&\HŁffffg 2bPi0&Vɔq^fb&9Xfffffk˄3 3b`+GK%80LE6SdLK4IvQK0LJI L4ICLbCt0JLL4|ᄲLJ6$L4bkL dHDLJJd L44ċL444 L L4dL L44J L !244 L44#Ld4 b#LLCL gb3LL$0LCLې, 3383C!h3333338L""ӈ)3{&333331$GB -#L,5\Ĭ04{-=Lm,Y2B3Mɋ04W4/#Y4JJCLmMcԻMC\C04̿F4\ɫ#CE6N&4 5M +D6-ɞmjkVFieE9#hsr,z{fffffxl%溙A61fcä9e:hg>\^uq3RatͨqY*^]f"X&]yfr̶~9 rь33333]& qi6e`eZ&%CBTbY~sgG0L@@@00k$ H9`eFXAܚT0`i̞;ۊɒ{^KgfI&^tCdI`I0LR[]%3nNL ) ͰѮ3` 337r4~q Vc^tY&Ѳ$ Aqӳ{3WrfQPt`A`+{333333LL)6Y8rEM7mL_6Ĉs5CZFI Ѐ 33Lͻr.+}Bif5DAfg8ffffffkc=n3E$2Lz)/\geZhcaF)ai™iiF&&F)نF&,`irfffpdya`i̎6`iYfffpxI욅jigqALBn!{MffffffmHM`i’[ۗ\eYM333333\H6).]L͏H 338 Kw]FPfffffLDH5#F?F"~\RL04qH7BsQcLvlrWPՙ%gpe1/b~ufffff8bYGF &ƞ& ^333333gE80L4MN4W761 ffffff䃲ģL%\Xh0L熴4 @6Lͼ.4j047SF\K04ۖ3333333ƢYȵ(fhJ8v)7NY]blYrYeLڶbKojV9< )hi$1O-Z0ed2e _WmTqZp>[8 _"H[ "4ot9/[sI.ɤlv)Ø.i[8LfmioImilk֙}Be lillǘٹ|CȒŅYދWY3ǑeWhȬK@f#EW[ў6cJ;onxpl3">oignhg9ol9ldciY`f™Jgʩ ģ%eߜ[|InNUŗh(Z\\[8MB],GZ'ߖT^LDOhy kXgor Wqkn*~3e^ʗhyhmR\nFÓi/|Rnƨ header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define if you have POSIX threads libraries and header files. */ #undef HAVE_PTHREAD /* Have PTHREAD_PRIO_INHERIT. */ #undef HAVE_PTHREAD_PRIO_INHERIT /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if ZEEP is found */ #undef HAVE_ZEEP /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to necessary symbol if this constant uses a non-standard name on your system. */ #undef PTHREAD_CREATE_JOINABLE /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Use mrc to store resources */ #undef USE_RSRC tortoize-2.0.5/src/tortoize.cpp0000664000175000017500000010633214177415663016434 0ustar maartenmaarten/*- * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2020 NKI/AVL, Netherlands Cancer Institute * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include "cif++/Secondary.hpp" // #include "cif++/Statistics.hpp" #include "cif++/CifUtils.hpp" #include "cif++/Cif++.hpp" #include "cif++/Structure.hpp" #include "cif++/Compound.hpp" #include #include "revision.hpp" #ifdef _MSC_VER //MSVC stdlib.h definitions #define STDIN_FILENO 0 #define STDOUT_FILENO 1 #define STDERR_FILENO 2 #endif namespace po = boost::program_options; namespace fs = std::filesystem; namespace ba = boost::algorithm; using mmcif::Atom; using mmcif::Point; using mmcif::Structure; using mmcif::Monomer; using mmcif::Polymer; using json = zeep::json::element; // -------------------------------------------------------------------- // simple integer compression, based somewhat on MRS code class OBitStream { public: OBitStream(std::vector& buffer) : m_buffer(buffer) { m_buffer.push_back(0); } OBitStream(const OBitStream&) = delete; OBitStream& operator=(const OBitStream&) = delete; void writebit(bool bit) { if (bit) m_buffer.back() |= 1 << m_bitOffset; if (--m_bitOffset < 0) { m_buffer.push_back(0); m_bitOffset = 7; } } // write fixed size void write(uint32_t value, int bits) { while (bits-- > 0) { if (value & (1UL << bits)) m_buffer.back() |= 1 << m_bitOffset; if (--m_bitOffset < 0) { m_buffer.push_back(0); m_bitOffset = 7; } } } void sync() { writebit(0); while (m_bitOffset != 7) writebit(1); } const uint8_t* data() const { return m_buffer.data(); } size_t size() const { return m_buffer.size(); } friend void WriteArray(OBitStream& bs, const std::vector& data); private: std::vector& m_buffer; int m_bitOffset = 7; }; class IBitStream { public: IBitStream(const uint8_t* data) : m_data(data), m_byte(*m_data++), m_bitOffset(7) {} IBitStream(const OBitStream& bits) : IBitStream(bits.data()) {} IBitStream(const IBitStream&) = delete; IBitStream& operator=(const IBitStream&) = delete; uint32_t read(int bc) { uint32_t result = 0; while (bc > 0) { static const uint8_t kM[] = { 0x00, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF }; int bw = m_bitOffset + 1; if (bw > bc) bw = bc; m_bitOffset -= bw; result = result << bw | (kM[bw] & (m_byte >> (m_bitOffset + 1))); if (m_bitOffset < 0) { m_byte = *m_data++; m_bitOffset = 7; } bc -= bw; } return result; } friend std::vector ReadArray(IBitStream& bs); private: const uint8_t* m_data; uint8_t m_byte; int m_bitOffset; }; // -------------------------------------------------------------------- // Arrays // This is a simplified version of the array compression routines in MRS // Only supported datatype is uint32_t and only supported width it 24 bit. struct Selector { int32_t databits; uint32_t span; } const kSelectors[16] = { { 0, 1 }, { -4, 1 }, { -2, 1 }, { -2, 2 }, { -1, 1 }, { -1, 2 }, { -1, 4 }, { 0, 1 }, { 0, 2 }, { 0, 4 }, { 1, 1 }, { 1, 2 }, { 1, 4 }, { 2, 1 }, { 2, 2 }, { 4, 1 } }; // store ints of at most 24 bits, should be enough. const uint32_t kStartWidth = 8, kMaxWidth = 24; inline uint32_t bitWidth(uint32_t v) { uint32_t result = 0; while (v > 0) { v >>= 1; ++result; } return result; } void CompressSimpleArraySelector(OBitStream& inBits, const std::vector& inArray) { int32_t width = kStartWidth; int32_t bn[4]; uint32_t dv[4]; uint32_t bc = 0; auto a = inArray.begin(), e = inArray.end(); while (a != e or bc > 0) { while (bc < 4 and a != e) { dv[bc] = *a++; bn[bc] = bitWidth(dv[bc]); ++bc; } uint32_t s = 0; int32_t c = bn[0] - kMaxWidth; for (uint32_t i = 1; i < 16; ++i) { if (kSelectors[i].span > bc) continue; int32_t w = width + kSelectors[i].databits; if (static_cast(w) > kMaxWidth) continue; bool fits = true; int32_t waste = 0; switch (kSelectors[i].span) { case 4: fits = fits and bn[3] <= w; waste += w - bn[3]; [[fallthrough]]; case 3: fits = fits and bn[2] <= w; waste += w - bn[2]; [[fallthrough]]; case 2: fits = fits and bn[1] <= w; waste += w - bn[1]; [[fallthrough]]; case 1: fits = fits and bn[0] <= w; waste += w - bn[0]; } if (fits == false) continue; int32_t n = (kSelectors[i].span - 1) * 4 - waste; if (n > c) { s = i; c = n; } } if (s == 0) width = kMaxWidth; else width += kSelectors[s].databits; uint32_t n = kSelectors[s].span; inBits.write(s, 4); if (width > 0) { for (uint32_t i = 0; i < n; ++i) inBits.write(dv[i], width); } bc -= n; if (bc > 0) { for (uint32_t i = 0; i < (4 - n); ++i) { bn[i] = bn[i + n]; dv[i] = dv[i + n]; } } } } void DecompressSimpleArraySelector(IBitStream& inBits, std::vector& outArray) { uint32_t width = kStartWidth; uint32_t span = 0; // The array should be initilialized to the expected size! auto size = outArray.size(); auto a = outArray.begin(); while (size-- > 0) { if (span == 0) { uint32_t selector = inBits.read(4); span = kSelectors[selector].span; if (selector == 0) width = kMaxWidth; else width += kSelectors[selector].databits; } if (width > 0) *a++ = inBits.read(width); else *a++ = 0; --span; } } // -------------------------------------------------------------------- enum class SecStrType : char { helix = 'H', strand = 'E', other = '.', cis = 'c', prepro = 'p' }; std::ostream& operator<<(std::ostream& os, SecStrType ss) { switch (ss) { case SecStrType::helix: os << "helix"; break; case SecStrType::strand: os << "strand"; break; case SecStrType::other: os << "other"; break; case SecStrType::cis: os << "cis"; break; case SecStrType::prepro: os << "prepro"; break; } return os; } // -------------------------------------------------------------------- // The header for the data blocks as written in de resource struct StoredData { char aa[3]; SecStrType ss; float mean, mean_vs_random, sd, sd_vs_random, binSpacing; uint32_t offset; // offset into compressed data area }; class Data { friend class DataTable; public: Data(Data&& d) : aa(d.aa), ss(d.ss), mean(d.mean), sd(d.sd) , mean_vs_random(d.mean_vs_random), sd_vs_random(d.sd_vs_random) , binSpacing(d.binSpacing), counts(move(d.counts)) , dim(d.dim), d2(d.d2) { } Data(const Data&) = delete; Data& operator=(const Data&) = delete; Data(const char* type, const std::string& aa, SecStrType ss, std::istream& is); Data(bool torsion, const StoredData& data, const uint8_t* bits); void store(StoredData& data, std::vector& databits); float interpolatedCount(float phi, float a2) const; float zscore(float a1, float a2) const { return (interpolatedCount(a1, a2) - mean) / sd; } void dump() const { for (size_t i = 0; i < counts.size(); ++i) { float a1, a2; std::tie(a1, a2) = angles(i); std::cout << a1 << ' ' << a2 << ' ' << counts[i] << std::endl; } } private: std::string aa; SecStrType ss; float mean, sd, mean_vs_random, sd_vs_random; float binSpacing; std::vector counts; // calculated size_t dim; bool d2; float count(size_t a1Ix, size_t a2Ix) const { a1Ix %= dim; a2Ix %= dim; return d2 ? counts.at(a1Ix * dim + a2Ix) : counts.at(a1Ix); } size_t index(float a1, float a2 = 0) const { size_t x = 0, y = 0; if (d2) { x = static_cast((a1 + 180) / binSpacing); y = static_cast((a2 + 180) / binSpacing); } else y = static_cast((a1 + 180) / binSpacing); return x * (360 / binSpacing) + y; } std::tuple angles(size_t index) const { size_t x = index / dim; size_t y = index % dim; return std::make_tuple(x * binSpacing - 180, y * binSpacing - 180); } }; Data::Data(const char* type, const std::string& aa, SecStrType ss, std::istream& is) : aa(aa), ss(ss) { // example: // 14400 bins, aver 19.2878, sd 15.4453, binspacing 3 // torsion vs random: 2.0553 2.8287 static const std::regex kRX1(R"((\d+) bins, aver ([-+]?\d+(?:\.\d+)?(?:[eE][-+]?\d+)?), sd ([-+]?\d+(?:\.\d+)?(?:[eE][-+]?\d+)?), binspacing ([-+]?\d+(?:\.\d+)?(?:[eE][-+]?\d+)?))"), kRX2(R"((torsion|rama) vs random: ([-+]?\d+(?:\.\d+)?(?:[eE][-+]?\d+)?) ([-+]?\d+(?:\.\d+)?(?:[eE][-+]?\d+)?))"); std::string line; getline(is, line); d2 = strcmp(type, "torsion") != 0 or std::set{"CYS", "SER", "THR", "VAL"}.count(aa) == 0; std::smatch m; if (not std::regex_match(line, m, kRX1)) throw std::runtime_error("Invalid file"); size_t nBins = stoi(m[1]); mean = stof(m[2]); sd = stof(m[3]); binSpacing = stof(m[4]); dim = static_cast(360 / binSpacing); if ((d2 and nBins != dim * dim) or (not d2 and nBins != dim)) throw std::runtime_error("Unexpected number of bins"); counts.resize(nBins); getline(is, line); if (not std::regex_match(line, m, kRX2) or m[1] != type) throw std::runtime_error("Invalid file"); mean_vs_random = stof(m[2]); sd_vs_random = stof(m[3]); for (size_t i = 0; i < nBins; ++i) { float a1, a2; uint32_t count; if (d2) is >> a1 >> a2 >> count; else is >> a1 >> count; if (is.eof()) throw std::runtime_error("truncated file?"); counts.at(index(a1, a2)) = count; } } Data::Data(bool torsion, const StoredData& data, const uint8_t* databits) { aa.assign(data.aa, data.aa + 3); ss = data.ss; mean = data.mean; mean_vs_random = data.mean_vs_random; sd = data.sd; sd_vs_random = data.sd_vs_random; binSpacing = data.binSpacing; d2 = not torsion or std::set{"CYS", "SER", "THR", "VAL"}.count(aa) == 0; size_t nBins = static_cast(360 / binSpacing); dim = nBins; if (d2) nBins *= nBins; counts.insert(counts.begin(), nBins, 0); IBitStream bits(databits + data.offset); DecompressSimpleArraySelector(bits, counts); } void Data::store(StoredData& data, std::vector& databits) { assert(aa.length() == 3); copy(aa.begin(), aa.end(), data.aa); data.ss = ss; data.mean = mean; data.sd = sd; data.mean_vs_random = mean_vs_random; data.sd_vs_random = sd_vs_random; data.offset = databits.size(); data.binSpacing = binSpacing; OBitStream bits(databits); CompressSimpleArraySelector(bits, counts); bits.sync(); } float Data::interpolatedCount(float a1, float a2) const { const size_t N = dim; float result; if (d2) { size_t a1FloorIx = static_cast(N * (a1 + 180) / 360); size_t a2FloorIx = static_cast(N * (a2 + 180) / 360); size_t a1CeilIx = (a1FloorIx + 1); size_t a2CeilIx = (a2FloorIx + 1); float a1FloorAngle = (a1FloorIx * 360.0f) / N - 180; float a2FloorAngle = (a2FloorIx * 360.0f) / N - 180; float a1CeilAngle = (a1CeilIx * 360.0f) / N - 180; float a2CeilAngle = (a2CeilIx * 360.0f) / N - 180; float a1Factor = a1CeilIx > a1FloorIx ? (a1 - a1FloorAngle) / (a1CeilAngle - a1FloorAngle) : 1; float a2Factor = a2CeilIx > a2FloorIx ? (a2 - a2FloorAngle) / (a2CeilAngle - a2FloorAngle) : 1; float c1 = count(a1FloorIx, a2FloorIx) + (count(a1CeilIx, a2FloorIx) - count(a1FloorIx, a2FloorIx)) * a1Factor; float c2 = count(a1FloorIx, a2CeilIx) + (count(a1CeilIx, a2CeilIx) - count(a1FloorIx, a2CeilIx)) * a1Factor; result = c1 + (c2 - c1) * a2Factor; } else { size_t a1FloorIx = static_cast(N * (a1 + 180) / 360); size_t a1CeilIx = (a1FloorIx + 1); float a1FloorAngle = (a1FloorIx * 360.0f) / N - 180; float a1CeilAngle = (a1CeilIx * 360.0f) / N - 180; float a1Factor = a1CeilIx > a1FloorIx ? (a1 - a1FloorAngle) / (a1CeilAngle - a1FloorAngle) : 1; result = count(a1FloorIx, 0) + (count(a1CeilIx, 0) - count(a1FloorIx, 0)) * a1Factor; } return result; } void buildDataFile(fs::path dir) { using namespace std::literals; // first read the global mean and sd float mean_torsion, sd_torsion, mean_ramachandran, sd_ramachandran; std::ifstream in(dir / "zscores_proteins.txt"); std::string line; const std::regex krx(R"((Rama|Rota): average ([-+]?\d+(?:\.\d+)?(?:[eE][-+]?\d+)?), sd ([-+]?\d+(?:\.\d+)?(?:[eE][-+]?\d+)?))"); while (getline(in, line)) { std::smatch m; if (not std::regex_match(line, m, krx)) continue; if (m[1] == "Rama") { mean_ramachandran = stof(m[2]); sd_ramachandran = stof(m[3]); } else { mean_torsion = stof(m[2]); sd_torsion = stof(m[3]); } } std::vector data; std::vector bits; // first ramachandran counts for (auto aa: mmcif::kAAMap) { for (std::pair ss: { std::make_pair(SecStrType::helix, "helix"), std::make_pair(SecStrType::strand, "strand"), std::make_pair(SecStrType::other, "other") }) { auto p = dir / ("rama_count_"s + ss.second + '_' + aa.first + ".txt"); if (not fs::exists(p)) continue; std::ifstream f(p); Data d("rama", aa.first, ss.first, f); StoredData sd = { }; d.store(sd, bits); data.push_back(sd); } } for (std::tuple ss: { std::make_tuple(SecStrType::cis, "PRO", "cis_PRO"), std::make_tuple(SecStrType::prepro, "***", "prepro_all_noGIV"), std::make_tuple(SecStrType::prepro, "GLY", "prepro_GLY"), std::make_tuple(SecStrType::prepro, "IV_", "prepro_ILEVAL") }) { auto p = dir / ("rama_count_"s + std::get<2>(ss) + ".txt"); if (not fs::exists(p)) continue; std::ifstream f(p); Data d("rama", std::get<1>(ss), std::get<0>(ss), f); StoredData sd = { }; d.store(sd, bits); data.push_back(sd); } data.push_back({}); if (fs::exists("rama-data.bin")) fs::remove("rama-data.bin"); std::ofstream out("rama-data.bin", std::ios::binary); if (not out.is_open()) throw std::runtime_error("Could not create rama-data.bin file"); out.write(reinterpret_cast(&mean_ramachandran), sizeof(mean_ramachandran)); out.write(reinterpret_cast(&sd_ramachandran), sizeof(sd_ramachandran)); out.write(reinterpret_cast(data.data()), data.size() * sizeof(StoredData)); out.write(reinterpret_cast(bits.data()), bits.size()); out.close(); data.clear(); bits.clear(); // next torsion counts for (auto aa: mmcif::kAAMap) { for (std::pair ss: { std::make_pair(SecStrType::helix, "helix"), std::make_pair(SecStrType::strand, "strand"), std::make_pair(SecStrType::other, "other") }) { auto p = dir / ("torsion_count_"s + ss.second + '_' + aa.first + ".txt"); if (not fs::exists(p)) continue; std::ifstream f(p); Data d("torsion", aa.first, ss.first, f); StoredData sd = { }; d.store(sd, bits); data.push_back(sd); } } data.push_back({}); if (fs::exists("torsion-data.bin")) fs::remove("torsion-data.bin"); out.open("torsion-data.bin", std::ios::binary); if (not out.is_open()) throw std::runtime_error("Could not create torsion-data.bin file"); out.write(reinterpret_cast(&mean_torsion), sizeof(mean_torsion)); out.write(reinterpret_cast(&sd_torsion), sizeof(sd_torsion)); out.write(reinterpret_cast(data.data()), data.size() * sizeof(StoredData)); out.write(reinterpret_cast(bits.data()), bits.size()); out.close(); } // -------------------------------------------------------------------- class DataTable { public: static DataTable& instance() { static DataTable sInstance; return sInstance; } const Data& loadTorsionData(const std::string& aa, SecStrType ss) const; const Data& loadRamachandranData(const std::string& aa, SecStrType ss) const; float mean_torsion() const { return m_mean_torsion; } float sd_torsion() const { return m_sd_torsion; } float mean_ramachandran() const { return m_mean_ramachandran; } float sd_ramachandran() const { return m_sd_ramachandran; } private: DataTable(const DataTable& ) = delete; DataTable& operator=(const DataTable&) = delete; DataTable(); void load(const char* name, std::vector& table, float& mean, float& sd); std::vector m_torsion, m_ramachandran; float m_mean_torsion, m_sd_torsion, m_mean_ramachandran, m_sd_ramachandran; }; DataTable::DataTable() { load("torsion-data.bin", m_torsion, m_mean_torsion, m_sd_torsion); load("rama-data.bin", m_ramachandran, m_mean_ramachandran, m_sd_ramachandran); } const Data& DataTable::loadTorsionData(const std::string& aa, SecStrType ss) const { auto i = find_if(m_torsion.begin(), m_torsion.end(), [aa, ss](auto& d) { return d.aa == aa and d.ss == ss; }); if (i == m_torsion.end()) throw std::runtime_error("Data missing for aa = " + aa + " and ss = '" + static_cast(ss) + '\''); return *i; } const Data& DataTable::loadRamachandranData(const std::string& aa, SecStrType ss) const { std::vector::const_iterator i; switch (ss) { case SecStrType::cis: i = find_if(m_ramachandran.begin(), m_ramachandran.end(), [](auto& d) { return d.ss == SecStrType::cis and d.aa == "PRO"; }); break; case SecStrType::prepro: i = find_if(m_ramachandran.begin(), m_ramachandran.end(), [aa](auto& d) { bool result = false; if (d.ss == SecStrType::prepro) { if (aa == "GLY") result = d.aa == "GLY"; else if (aa == "ILE" or aa == "VAL") result = d.aa == "IV_"; else result = d.aa == "***"; } return result; }); break; default: i = find_if(m_ramachandran.begin(), m_ramachandran.end(), [aa, ss](auto& d) { return d.aa == aa and d.ss == ss; }); break; } if (i == m_ramachandran.end()) throw std::runtime_error("Data missing for aa= " + aa + " and ss = '" + static_cast(ss) + '\''); return *i; } void DataTable::load(const char* name, std::vector& table, float& mean, float& sd) { using namespace std::literals; auto rfd = cif::loadResource(name); if (not rfd) throw std::runtime_error("Missing resource "s + name); rfd->seekg(0, rfd->end); auto size = rfd->tellg(); rfd->seekg(0, rfd->beg); const float* fv = new float[size / sizeof(float) + 1]; rfd->read(reinterpret_cast(const_cast(fv)), size); mean = fv[0]; sd = fv[1]; const StoredData* data = reinterpret_cast(fv + 2); size_t ix = 0; while (data[ix].aa[0] != 0) ++ix; size_t n = ix; const uint8_t* bits = reinterpret_cast(fv + 2) + (n + 1) * sizeof(StoredData); for (ix = 0; ix < n; ++ix) table.emplace_back(strcmp(name, "torsion-data.bin") == 0, data[ix], bits); } // -------------------------------------------------------------------- float jackknife(const std::vector& zScorePerResidue) { // jackknife variance estimate, see: https://en.wikipedia.org/wiki/Jackknife_resampling const size_t N = zScorePerResidue.size(); double zScoreSum = accumulate(zScorePerResidue.begin(), zScorePerResidue.end(), 0.0); std::vector scores(N); DataTable& tbl = DataTable::instance(); double scoreSum = 0; for (size_t i = 0; i < zScorePerResidue.size(); ++i) { double score = (zScoreSum - zScorePerResidue[i]) / (N - 1); score = (score - tbl.mean_ramachandran()) / tbl.sd_ramachandran(); scores[i] = score; scoreSum += score; } double avg = scoreSum / N; double sumD = accumulate(scores.begin(), scores.end(), 0.0, [avg](double a, double z) { return a + (z - avg) * (z - avg); }); return sqrt((N - 1) * sumD / N); } // -------------------------------------------------------------------- json calculateZScores(const Structure& structure) { mmcif::DSSP dssp(structure, 3, false); auto& tbl = DataTable::instance(); double ramaZScoreSum = 0; size_t ramaZScoreCount = 0; double torsZScoreSum = 0; size_t torsZScoreCount = 0; json residues; std::vector ramaZScorePerResidue, torsZScorePerResidue; for (auto& poly: structure.polymers()) { for (size_t i = 1; i + 1 < poly.size(); ++i) { auto& res = poly[i]; auto phi = res.phi(); auto psi = res.psi(); if (phi == 360 or psi == 360) continue; std::tuple pdbID = structure.MapLabelToPDB(res.asymID(), res.seqID(), res.compoundID(), res.authSeqID()); json residue = { { "asymID", res.asymID() }, { "seqID", res.seqID() }, { "compID", res.compoundID() }, { "pdb", { { "strandID", std::get<0>(pdbID) }, { "seqNum", std::get<1>(pdbID) }, { "compID", std::get<2>(pdbID) }, { "insCode", std::get<3>(pdbID) } }} }; std::string aa = res.compoundID(); // remap some common modified amino acids if (aa == "MSE") { if (cif::VERBOSE > 1) std::cerr << "Replacing MSE with MET" << std::endl; aa = "MET"; } else if (aa == "HYP") { if (cif::VERBOSE > 1) std::cerr << "Replacing HYP with PRO" << std::endl; aa = "PRO"; } else if (aa == "ASX") { if (cif::VERBOSE > 1) std::cerr << "Replacing ASX with ASP" << std::endl; aa = "ASP"; } else if (aa == "GLX") { if (cif::VERBOSE > 1) std::cerr << "Replacing GLX with GLU" << std::endl; aa = "GLU"; } else if (mmcif::kAAMap.find(aa) == mmcif::kAAMap.end()) { if (cif::VERBOSE) std::cerr << "Replacing " << aa << " with ALA" << std::endl; aa = "ALA"; } SecStrType tors_ss, rama_ss; switch (dssp(res)) { case mmcif::ssAlphahelix: tors_ss = SecStrType::helix; break; case mmcif::ssStrand: tors_ss = SecStrType::strand; break; default: tors_ss = SecStrType::other; break; } if (aa != "PRO" and poly[i + 1].compoundID() == "PRO") rama_ss = SecStrType::prepro; else if (aa == "PRO" && res.isCis()) rama_ss = SecStrType::cis; else rama_ss = tors_ss; #pragma warning "todo" auto& rd = tbl.loadRamachandranData(aa, rama_ss); auto zr = rd.zscore(phi, psi); residue["ramachandran"] = { { "ss-type", boost::lexical_cast(rama_ss) }, { "z-score", zr } }; ramaZScorePerResidue.push_back(zr); ramaZScoreSum += zr; ++ramaZScoreCount; try { float zt = nan("1"); auto chiCount = res.nrOfChis(); if (chiCount) { float chi1 = res.chi(0); float chi2 = chiCount > 1 ? res.chi(1) : 0; auto& td = tbl.loadTorsionData(aa, tors_ss); zt = td.zscore(chi1, chi2); torsZScoreSum += zt; ++torsZScoreCount; torsZScorePerResidue.push_back(zt); residue["torsion"] = { { "ss-type", boost::lexical_cast(tors_ss) }, { "z-score", zt } }; } } catch (const std::exception& e) { if (cif::VERBOSE) std::cerr << e.what() << '\n'; } residues.push_back(residue); } } float ramaVsRand = ramaZScoreSum / ramaZScoreCount; float torsVsRand = torsZScoreSum / torsZScoreCount; float jackknifeRama = jackknife(ramaZScorePerResidue); float jackknifeTors = jackknife(torsZScorePerResidue); return { { "ramachandran-z", ((ramaVsRand - tbl.mean_ramachandran()) / tbl.sd_ramachandran()) }, { "ramachandran-jackknife-sd", jackknifeRama }, { "torsion-z", ((torsVsRand - tbl.mean_torsion()) / tbl.sd_torsion()) }, { "torsion-jackknife-sd", jackknifeTors }, { "residues", residues }, }; } // -------------------------------------------------------------------- #if WEBSERVICE class tortoize_html_controller : public zeep::http::html_controller { public: tortoize_html_controller() : zeep::http::html_controller("tortoize") { mount("{css,scripts,fonts,images,favicon}/", &tortoize_html_controller::handle_file); mount("{favicon.ico,browserconfig.xml,manifest.json}", &tortoize_html_controller::handle_file); mount("", &tortoize_html_controller::index); } void index(const zeep::http::request& request, const zeep::http::scope& scope, zeep::http::reply& reply) { get_template_processor().create_reply_from_template("index", scope, reply); } }; // -------------------------------------------------------------------- class tortoize_rest_controller : public zeep::http::rest_controller { public: tortoize_rest_controller() : zeep::http::rest_controller("") , m_tempdir(fs::temp_directory_path() / "tortoize-ws") { fs::create_directories(m_tempdir); map_post_request("tortoize", &tortoize_rest_controller::calculate, "data", "dict"); } json calculate(const std::string& file, const std::string& dict) { // First store dictionary, just in case fs::path dictFile; if (not dict.empty())\ { dictFile = m_tempdir / ("dict-" + std::to_string(m_next_dict_nr++)); std::ofstream tmpFile(dictFile); tmpFile << dict; mmcif::CompoundFactory::instance().pushDictionary(dictFile); } try { // -------------------------------------------------------------------- json data{ { "software", { { "name", "tortoize" }, { "version", kVersionNumber }, { "reference", "Sobolev et al. A Global Ramachandran Score Identifies Protein Structures with Unlikely Stereochemistry, Structure (2020)" }, { "reference-doi", "https://doi.org/10.1016/j.str.2020.08.005" } } } }; // -------------------------------------------------------------------- mmcif::File f(file.data(), file.length()); std::set models; for (auto r: f.data()["atom_site"]) { if (not r["pdbx_PDB_model_num"].empty()) models.insert(r["pdbx_PDB_model_num"].as()); } if (models.empty()) models.insert(0); for (auto model: models) { Structure structure(f, model); data["model"][std::to_string(model)] = calculateZScores(structure); } if (not dictFile.empty()) { mmcif::CompoundFactory::instance().popDictionary(); fs::remove(dictFile); } return data; } catch (...) { std::error_code ec; if (not dictFile.empty()) { mmcif::CompoundFactory::instance().popDictionary(); fs::remove(dictFile); } throw; } } fs::path m_tempdir; size_t m_next_dict_nr = 1; }; int start_server(int argc, char* argv[]) { using namespace std::literals; namespace zh = zeep::http; mmcif::CompoundFactory::init(true); int result = 0; po::options_description visible_options(PACKAGE_NAME " [options] input [output]"); visible_options.add_options() ("log", po::value(), "Write log to this file") ("help,h", "Display help message") ("version", "Print version") ("address", po::value()->default_value("0.0.0.0"), "External address") ("port", po::value()->default_value(10350), "Port to listen to") ("user,u", po::value()->default_value("www-data"), "User to run the daemon") ("no-daemon,F", "Do not fork into background" ) ("verbose,v", "verbose output") ; po::options_description hidden_options("hidden options"); hidden_options.add_options() ("command", po::value(), "The command to execute") ("debug,d", po::value(), "Debug level (for even more verbose output)") ; po::options_description cmdline_options; cmdline_options.add(visible_options).add(hidden_options); po::positional_options_description p; p.add("command", 1); po::variables_map vm; po::store(po::command_line_parser(argc, argv).options(cmdline_options).positional(p).run(), vm); po::notify(vm); // -------------------------------------------------------------------- std::string secret; if (vm.count("secret")) secret = vm["secret"].as(); else { secret = zeep::encode_base64(zeep::random_hash()); std::cerr << "starting with created secret " << secret << std::endl; } std::string user = vm["user"].as(); std::string address = vm["address"].as(); uint16_t port = vm["port"].as(); zh::daemon server([&]() { auto s = new zeep::http::server(); #if DEBUG s->set_template_processor(new zeep::http::file_based_html_template_processor("docroot")); #else s->set_template_processor(new zeep::http::rsrc_based_html_template_processor()); #endif s->add_controller(new tortoize_rest_controller()); s->add_controller(new tortoize_html_controller()); return s; }, PACKAGE_NAME ); std::string command = vm["command"].as(); if (command == "start") { std::cout << "starting server at http://" << address << ':' << port << '/' << std::endl; if (vm.count("no-daemon")) result = server.run_foreground(address, port); else result = server.start(address, port, 2, 2, user); // server.start(vm.count("no-daemon"), address, port, 2, user); // // result = daemon::start(vm.count("no-daemon"), port, user); } else if (command == "stop") result = server.stop(); else if (command == "status") result = server.status(); else if (command == "reload") result = server.reload(); else { std::cerr << "Invalid command" << std::endl; result = 1; } return result; } #endif // -------------------------------------------------------------------- int pr_main(int argc, char* argv[]) { using namespace std::literals; #if WEBSERVICE if (argc > 2 and argv[1] == "server"s) return start_server(argc - 1, argv + 1); #endif po::options_description visible_options(fs::path(argv[0]).filename().string() + " [options] input [output]"); visible_options.add_options() ("log", po::value(), "Write log to this file") ("dict", po::value>(), "Dictionary file containing restraints for residues in this specific target, can be specified multiple times.") ("help,h", "Display help message") ("version", "Print version") ("verbose,v", "verbose output") ; po::options_description hidden_options("hidden options"); hidden_options.add_options() ("xyzin", po::value(), "coordinates file") ("output", po::value(), "Output to this file") ("debug,d", po::value(), "Debug level (for even more verbose output)") ("build", po::value(), "Build a binary data table") ; po::options_description cmdline_options; cmdline_options.add(visible_options).add(hidden_options); po::positional_options_description p; p.add("xyzin", 1); p.add("output", 1); po::variables_map vm; po::store(po::command_line_parser(argc, argv).options(cmdline_options).positional(p).run(), vm); po::notify(vm); // -------------------------------------------------------------------- if (vm.count("version")) { write_version_string(std::cout, vm.count("verbose")); exit(0); } if (vm.count("help")) { std::cout << visible_options << std::endl << std::endl << R"(Tortoize validates protein structure models by checking the Ramachandran plot and side-chain rotamer distributions. Quality Z-scores are given at the residue level and at the model level (ramachandran-z and torsions-z). Higher scores are better. To compare models or to describe the reliability of the model Z-scores jackknife- based standard deviations are also reported (ramachandran-jackknife-sd and torsion-jackknife-sd). References: - Sobolev et al. A Global Ramachandran Score Identifies Protein Structures with Unlikely Stereochemistry, Structure (2020), DOI: https://doi.org/10.1016/j.str.2020.08.005 - Van Beusekom et al. Homology-based loop modeling yields more complete crystallographic protein structures, IUCrJ (2018), DOI: https://doi.org/10.1107/S2052252518010552 - Hooft et al. Objectively judging the quality of a protein structure from a Ramachandran plot, CABIOS (1993), DOI: https://doi.org/10.1093/bioinformatics/13.4.425 )" << std::endl << std::endl; exit(0); } if (vm.count("build")) { buildDataFile(vm["build"].as()); exit(0); } if (vm.count("xyzin") == 0) { std::cerr << "Input file not specified" << std::endl; exit(1); } cif::VERBOSE = vm.count("verbose") != 0; if (vm.count("debug")) cif::VERBOSE = vm["debug"].as(); if (vm.count("log")) { if (not vm.count("output")) { std::cerr << "If you specify a log file, you should also specify an output file" << std::endl; exit(1); } std::string logFile = vm["log"].as(); // open the log file int fd = open(logFile.c_str(), O_CREAT|O_RDWR, 0644); if (fd < 0) throw std::runtime_error("Opening log file " + logFile + " failed: " + strerror(errno)); // redirect stdout and stderr to the log file dup2(fd, STDOUT_FILENO); dup2(fd, STDERR_FILENO); close(fd); } if (vm.count("dict")) { for (auto dict: vm["dict"].as>()) mmcif::CompoundFactory::instance().pushDictionary(dict); } // -------------------------------------------------------------------- json data{ { "software", { { "name", "tortoize" }, { "version", kVersionNumber }, { "reference", "Sobolev et al. A Global Ramachandran Score Identifies Protein Structures with Unlikely Stereochemistry, Structure (2020)" }, { "reference-doi", "https://doi.org/10.1016/j.str.2020.08.005" } } } }; // -------------------------------------------------------------------- mmcif::File f(vm["xyzin"].as()); std::set models; for (auto r: f.data()["atom_site"]) { if (not r["pdbx_PDB_model_num"].empty()) models.insert(r["pdbx_PDB_model_num"].as()); } if (models.empty()) models.insert(0); for (auto model: models) { Structure structure(f, model); data["model"][std::to_string(model)] = calculateZScores(structure); } if (vm.count("output")) { std::ofstream of(vm["output"].as()); if (not of.is_open()) { std::cerr << "Could not open output file" << std::endl; exit(1); } of << data; } else std::cout << data << std::endl; return 0; } // -------------------------------------------------------------------- // recursively print exception whats: void print_what (const std::exception& e) { std::cerr << e.what() << std::endl; try { std::rethrow_if_nested(e); } catch (const std::exception& nested) { std::cerr << " >> "; print_what(nested); } } #if not defined(TORTOIZE_TEST_NO_MAIN) int main(int argc, char* argv[]) { int result = -1; try { result = pr_main(argc, argv); } catch (std::exception& ex) { print_what(ex); exit(1); } return result; } #endiftortoize-2.0.5/test/0000775000175000017500000000000014177415663014234 5ustar maartenmaartentortoize-2.0.5/test/unit-test.cpp0000664000175000017500000000003114177415663016666 0ustar maartenmaartenint main() { return 0; }tortoize-2.0.5/webapp/0000775000175000017500000000000014177415663014533 5ustar maartenmaartentortoize-2.0.5/webapp/index.js0000664000175000017500000000347514177415663016211 0ustar maartenmaartenimport "core-js/stable"; import "regenerator-runtime/runtime"; import bsCustomFileInput from 'bs-custom-file-input'; class Tortoize { constructor(form) { this.form = document.forms['tortoize-form']; this.table = document.getElementById('tortoize-table'); this.alert = document.getElementById('tortoize-alert'); this.form.addEventListener('submit', (evt) => this.handleSubmit(evt)); this.alert.classList.add('invisible'); } handleSubmit(event) { if (event) event.preventDefault(); const data = new FormData(this.form); this.table.style.display = 'none'; this.alert.classList.add('invisible'); let wasOK; fetch('tortoize', { credentials: 'include', method: 'post', body: data }).then(r => { wasOK = r.ok; return r.json(); }).then(r => { // console.log(r); if (r.model) this.process(r.model); else if (r.error) throw r.error; else throw 'Reply does not contain data'; }).catch(err => { console.log(err); this.alert.textContent = `Could not calculate rama z-score: ${err}`; this.alert.classList.remove('invisible'); }); } process(model) { const tbody = this.table.querySelector('tbody'); [...tbody.querySelectorAll('tr')].forEach(row => tbody.removeChild(row)); for (const [id, data] of Object.entries(model)) { const row = document.createElement("tr"); const tdid = document.createElement("td"); tdid.textContent = id; row.appendChild(tdid); for (const f of ['ramachandran', 'torsion']) { const td = document.createElement('td'); td.textContent = (+data[`${f}-z`]).toFixed(2) + " ± " + (+data[`${f}-jackknife-sd`]).toFixed(2); row.appendChild(td); } tbody.appendChild(row); } this.table.style.display = 'unset'; } } window.addEventListener('load', () => { bsCustomFileInput.init(); new Tortoize(); });tortoize-2.0.5/webpack.config.js0000664000175000017500000000374714177415663016506 0ustar maartenmaartenconst MiniCssExtractPlugin = require('mini-css-extract-plugin'); const { CleanWebpackPlugin } = require('clean-webpack-plugin'); const UglifyJsPlugin = require('uglify-js-plugin'); const webpack = require("webpack"); const SCRIPTS = __dirname + "/webapp/"; const SCSS = __dirname + "/scss/"; const DEST = __dirname + "/docroot/scripts/"; module.exports = (env) => { const webpackConf = { entry: { 'pdb-redo-style': SCSS + "pdb-redo-bootstrap.scss", 'index': SCRIPTS + 'index.js' }, module: { rules: [ { test: /\.js$/, exclude: /node_modules/, use: { loader: "babel-loader", options: { presets: ['@babel/preset-env'] } } }, { test: /\.(eot|svg|ttf|woff(2)?)(\?v=\d+\.\d+\.\d+)?/, loader: 'file-loader', options: { name: '[name].[ext]', outputPath: 'fonts/', publicPath: '../fonts/' } }, { test: /\.(png)/, loader: 'file-loader', options: { name: '[name].[ext]', outputPath: 'images/', publicPath: '../images/' } }, { test: /\.s[ac]ss$/i, use: [ MiniCssExtractPlugin.loader, 'css-loader', 'sass-loader' ] } ] }, output: { path: DEST, filename: "./[name].js" }, plugins: [ new CleanWebpackPlugin({ cleanOnceBeforeBuildPatterns: [ 'css/**/*', 'scripts/**/*', 'fonts/**/*', '!images*' ] }), new webpack.ProvidePlugin({ $: 'jquery', jQuery: 'jquery', CodeMirror: 'codemirror' }), new MiniCssExtractPlugin({ filename: '../css/[name].css', chunkFilename: '../css/[id].css' }) ] }; const PRODUCTIE = env != null && env.PRODUCTIE; if (PRODUCTIE) { webpackConf.mode = "production"; webpackConf.plugins.push(new UglifyJsPlugin({parallel: 4})) } else { webpackConf.mode = "development"; webpackConf.devtool = 'source-map'; webpackConf.plugins.push(new webpack.optimize.AggressiveMergingPlugin()) } return webpackConf; }; tortoize-2.0.5/yarn.lock0000664000175000017500000037021314177415663015106 0ustar maartenmaarten# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. # yarn lockfile v1 "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== dependencies: "@babel/highlight" "^7.10.4" "@babel/compat-data@^7.12.5", "@babel/compat-data@^7.12.7": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.7.tgz#9329b4782a7d6bbd7eef57e11addf91ee3ef1e41" integrity sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw== "@babel/core@^7.12.10": version "7.12.10" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd" integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w== dependencies: "@babel/code-frame" "^7.10.4" "@babel/generator" "^7.12.10" "@babel/helper-module-transforms" "^7.12.1" "@babel/helpers" "^7.12.5" "@babel/parser" "^7.12.10" "@babel/template" "^7.12.7" "@babel/traverse" "^7.12.10" "@babel/types" "^7.12.10" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.1" json5 "^2.1.2" lodash "^4.17.19" semver "^5.4.1" source-map "^0.5.0" "@babel/generator@^7.12.10", "@babel/generator@^7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.11.tgz#98a7df7b8c358c9a37ab07a24056853016aba3af" integrity sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA== dependencies: "@babel/types" "^7.12.11" jsesc "^2.5.1" source-map "^0.5.0" "@babel/helper-annotate-as-pure@^7.10.4": version "7.12.10" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.10.tgz#54ab9b000e60a93644ce17b3f37d313aaf1d115d" integrity sha512-XplmVbC1n+KY6jL8/fgLVXXUauDIB+lD5+GsQEh6F6GBF1dq1qy4DP4yXWzDKcoqXB3X58t61e85Fitoww4JVQ== dependencies: "@babel/types" "^7.12.10" "@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3" integrity sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg== dependencies: "@babel/helper-explode-assignable-expression" "^7.10.4" "@babel/types" "^7.10.4" "@babel/helper-compilation-targets@^7.12.5": version "7.12.5" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz#cb470c76198db6a24e9dbc8987275631e5d29831" integrity sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw== dependencies: "@babel/compat-data" "^7.12.5" "@babel/helper-validator-option" "^7.12.1" browserslist "^4.14.5" semver "^5.5.0" "@babel/helper-create-class-features-plugin@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz#3c45998f431edd4a9214c5f1d3ad1448a6137f6e" integrity sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w== dependencies: "@babel/helper-function-name" "^7.10.4" "@babel/helper-member-expression-to-functions" "^7.12.1" "@babel/helper-optimise-call-expression" "^7.10.4" "@babel/helper-replace-supers" "^7.12.1" "@babel/helper-split-export-declaration" "^7.10.4" "@babel/helper-create-regexp-features-plugin@^7.12.1": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.7.tgz#2084172e95443fa0a09214ba1bb328f9aea1278f" integrity sha512-idnutvQPdpbduutvi3JVfEgcVIHooQnhvhx0Nk9isOINOIGYkZea1Pk2JlJRiUnMefrlvr0vkByATBY/mB4vjQ== dependencies: "@babel/helper-annotate-as-pure" "^7.10.4" regexpu-core "^4.7.1" "@babel/helper-define-map@^7.10.4": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz#b53c10db78a640800152692b13393147acb9bb30" integrity sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ== dependencies: "@babel/helper-function-name" "^7.10.4" "@babel/types" "^7.10.5" lodash "^4.17.19" "@babel/helper-explode-assignable-expression@^7.10.4": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz#8006a466695c4ad86a2a5f2fb15b5f2c31ad5633" integrity sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA== dependencies: "@babel/types" "^7.12.1" "@babel/helper-function-name@^7.10.4", "@babel/helper-function-name@^7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz#1fd7738aee5dcf53c3ecff24f1da9c511ec47b42" integrity sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA== dependencies: "@babel/helper-get-function-arity" "^7.12.10" "@babel/template" "^7.12.7" "@babel/types" "^7.12.11" "@babel/helper-get-function-arity@^7.12.10": version "7.12.10" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz#b158817a3165b5faa2047825dfa61970ddcc16cf" integrity sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag== dependencies: "@babel/types" "^7.12.10" "@babel/helper-hoist-variables@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz#d49b001d1d5a68ca5e6604dda01a6297f7c9381e" integrity sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA== dependencies: "@babel/types" "^7.10.4" "@babel/helper-member-expression-to-functions@^7.12.1", "@babel/helper-member-expression-to-functions@^7.12.7": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz#aa77bd0396ec8114e5e30787efa78599d874a855" integrity sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw== dependencies: "@babel/types" "^7.12.7" "@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.5": version "7.12.5" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb" integrity sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA== dependencies: "@babel/types" "^7.12.5" "@babel/helper-module-transforms@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c" integrity sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w== dependencies: "@babel/helper-module-imports" "^7.12.1" "@babel/helper-replace-supers" "^7.12.1" "@babel/helper-simple-access" "^7.12.1" "@babel/helper-split-export-declaration" "^7.11.0" "@babel/helper-validator-identifier" "^7.10.4" "@babel/template" "^7.10.4" "@babel/traverse" "^7.12.1" "@babel/types" "^7.12.1" lodash "^4.17.19" "@babel/helper-optimise-call-expression@^7.10.4", "@babel/helper-optimise-call-expression@^7.12.10": version "7.12.10" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz#94ca4e306ee11a7dd6e9f42823e2ac6b49881e2d" integrity sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ== dependencies: "@babel/types" "^7.12.10" "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== "@babel/helper-remap-async-to-generator@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz#8c4dbbf916314f6047dc05e6a2217074238347fd" integrity sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A== dependencies: "@babel/helper-annotate-as-pure" "^7.10.4" "@babel/helper-wrap-function" "^7.10.4" "@babel/types" "^7.12.1" "@babel/helper-replace-supers@^7.12.1": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.11.tgz#ea511658fc66c7908f923106dd88e08d1997d60d" integrity sha512-q+w1cqmhL7R0FNzth/PLLp2N+scXEK/L2AHbXUyydxp828F4FEa5WcVoqui9vFRiHDQErj9Zof8azP32uGVTRA== dependencies: "@babel/helper-member-expression-to-functions" "^7.12.7" "@babel/helper-optimise-call-expression" "^7.12.10" "@babel/traverse" "^7.12.10" "@babel/types" "^7.12.11" "@babel/helper-simple-access@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz#32427e5aa61547d38eb1e6eaf5fd1426fdad9136" integrity sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA== dependencies: "@babel/types" "^7.12.1" "@babel/helper-skip-transparent-expression-wrappers@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA== dependencies: "@babel/types" "^7.12.1" "@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0", "@babel/helper-split-export-declaration@^7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz#1b4cc424458643c47d37022223da33d76ea4603a" integrity sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g== dependencies: "@babel/types" "^7.12.11" "@babel/helper-validator-identifier@^7.10.4", "@babel/helper-validator-identifier@^7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== "@babel/helper-validator-option@^7.12.1", "@babel/helper-validator-option@^7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.11.tgz#d66cb8b7a3e7fe4c6962b32020a131ecf0847f4f" integrity sha512-TBFCyj939mFSdeX7U7DDj32WtzYY7fDcalgq8v3fBZMNOJQNn7nOYzMaUCiPxPYfCup69mtIpqlKgMZLvQ8Xhw== "@babel/helper-wrap-function@^7.10.4": version "7.12.3" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz#3332339fc4d1fbbf1c27d7958c27d34708e990d9" integrity sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow== dependencies: "@babel/helper-function-name" "^7.10.4" "@babel/template" "^7.10.4" "@babel/traverse" "^7.10.4" "@babel/types" "^7.10.4" "@babel/helpers@^7.12.5": version "7.12.5" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.5.tgz#1a1ba4a768d9b58310eda516c449913fe647116e" integrity sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA== dependencies: "@babel/template" "^7.10.4" "@babel/traverse" "^7.12.5" "@babel/types" "^7.12.5" "@babel/highlight@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== dependencies: "@babel/helper-validator-identifier" "^7.10.4" chalk "^2.0.0" js-tokens "^4.0.0" "@babel/parser@^7.12.10", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.11.tgz#9ce3595bcd74bc5c466905e86c535b8b25011e79" integrity sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg== "@babel/plugin-proposal-async-generator-functions@^7.12.1": version "7.12.12" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.12.tgz#04b8f24fd4532008ab4e79f788468fd5a8476566" integrity sha512-nrz9y0a4xmUrRq51bYkWJIO5SBZyG2ys2qinHsN0zHDHVsUaModrkpyWWWXfGqYQmOL3x9sQIcTNN/pBGpo09A== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-remap-async-to-generator" "^7.12.1" "@babel/plugin-syntax-async-generators" "^7.8.0" "@babel/plugin-proposal-class-properties@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de" integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w== dependencies: "@babel/helper-create-class-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-proposal-dynamic-import@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz#43eb5c2a3487ecd98c5c8ea8b5fdb69a2749b2dc" integrity sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-dynamic-import" "^7.8.0" "@babel/plugin-proposal-export-namespace-from@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz#8b9b8f376b2d88f5dd774e4d24a5cc2e3679b6d4" integrity sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" "@babel/plugin-proposal-json-strings@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz#d45423b517714eedd5621a9dfdc03fa9f4eb241c" integrity sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings" "^7.8.0" "@babel/plugin-proposal-logical-assignment-operators@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz#f2c490d36e1b3c9659241034a5d2cd50263a2751" integrity sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz#3ed4fff31c015e7f3f1467f190dbe545cd7b046c" integrity sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" "@babel/plugin-proposal-numeric-separator@^7.12.7": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.7.tgz#8bf253de8139099fea193b297d23a9d406ef056b" integrity sha512-8c+uy0qmnRTeukiGsjLGy6uVs/TFjJchGXUeBqlG4VWYOdJWkhhVPdQ3uHwbmalfJwv2JsV0qffXP4asRfL2SQ== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-numeric-separator" "^7.10.4" "@babel/plugin-proposal-object-rest-spread@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069" integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-object-rest-spread" "^7.8.0" "@babel/plugin-transform-parameters" "^7.12.1" "@babel/plugin-proposal-optional-catch-binding@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz#ccc2421af64d3aae50b558a71cede929a5ab2942" integrity sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" "@babel/plugin-proposal-optional-chaining@^7.12.7": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.7.tgz#e02f0ea1b5dc59d401ec16fb824679f683d3303c" integrity sha512-4ovylXZ0PWmwoOvhU2vhnzVNnm88/Sm9nx7V8BPgMvAzn5zDou3/Awy0EjglyubVHasJj+XCEkr/r1X3P5elCA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" "@babel/plugin-syntax-optional-chaining" "^7.8.0" "@babel/plugin-proposal-private-methods@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz#86814f6e7a21374c980c10d38b4493e703f4a389" integrity sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w== dependencies: "@babel/helper-create-class-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-proposal-unicode-property-regex@^7.12.1", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz#2a183958d417765b9eae334f47758e5d6a82e072" integrity sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-async-generators@^7.8.0": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-class-properties@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz#bcb297c5366e79bebadef509549cd93b04f19978" integrity sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-dynamic-import@^7.8.0": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-export-namespace-from@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== dependencies: "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-json-strings@^7.8.0": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-logical-assignment-operators@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-numeric-separator@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-object-rest-spread@^7.8.0": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-catch-binding@^7.8.0": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-chaining@^7.8.0": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-top-level-await@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz#dd6c0b357ac1bb142d98537450a319625d13d2a0" integrity sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-arrow-functions@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz#8083ffc86ac8e777fbe24b5967c4b2521f3cb2b3" integrity sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-async-to-generator@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz#3849a49cc2a22e9743cbd6b52926d30337229af1" integrity sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A== dependencies: "@babel/helper-module-imports" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-remap-async-to-generator" "^7.12.1" "@babel/plugin-transform-block-scoped-functions@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz#f2a1a365bde2b7112e0a6ded9067fdd7c07905d9" integrity sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-block-scoping@^7.12.11": version "7.12.12" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.12.tgz#d93a567a152c22aea3b1929bb118d1d0a175cdca" integrity sha512-VOEPQ/ExOVqbukuP7BYJtI5ZxxsmegTwzZ04j1aF0dkSypGo9XpDHuOrABsJu+ie+penpSJheDJ11x1BEZNiyQ== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-classes@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz#65e650fcaddd3d88ddce67c0f834a3d436a32db6" integrity sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog== dependencies: "@babel/helper-annotate-as-pure" "^7.10.4" "@babel/helper-define-map" "^7.10.4" "@babel/helper-function-name" "^7.10.4" "@babel/helper-optimise-call-expression" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-replace-supers" "^7.12.1" "@babel/helper-split-export-declaration" "^7.10.4" globals "^11.1.0" "@babel/plugin-transform-computed-properties@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz#d68cf6c9b7f838a8a4144badbe97541ea0904852" integrity sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-destructuring@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz#b9a570fe0d0a8d460116413cb4f97e8e08b2f847" integrity sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-dotall-regex@^7.12.1", "@babel/plugin-transform-dotall-regex@^7.4.4": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz#a1d16c14862817b6409c0a678d6f9373ca9cd975" integrity sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-duplicate-keys@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz#745661baba295ac06e686822797a69fbaa2ca228" integrity sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-exponentiation-operator@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz#b0f2ed356ba1be1428ecaf128ff8a24f02830ae0" integrity sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug== dependencies: "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-for-of@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz#07640f28867ed16f9511c99c888291f560921cfa" integrity sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-function-name@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz#2ec76258c70fe08c6d7da154003a480620eba667" integrity sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw== dependencies: "@babel/helper-function-name" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-literals@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz#d73b803a26b37017ddf9d3bb8f4dc58bfb806f57" integrity sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-member-expression-literals@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz#496038602daf1514a64d43d8e17cbb2755e0c3ad" integrity sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-modules-amd@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz#3154300b026185666eebb0c0ed7f8415fefcf6f9" integrity sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ== dependencies: "@babel/helper-module-transforms" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" "@babel/plugin-transform-modules-commonjs@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz#fa403124542636c786cf9b460a0ffbb48a86e648" integrity sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag== dependencies: "@babel/helper-module-transforms" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-simple-access" "^7.12.1" babel-plugin-dynamic-import-node "^2.3.3" "@babel/plugin-transform-modules-systemjs@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz#663fea620d593c93f214a464cd399bf6dc683086" integrity sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q== dependencies: "@babel/helper-hoist-variables" "^7.10.4" "@babel/helper-module-transforms" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-validator-identifier" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" "@babel/plugin-transform-modules-umd@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz#eb5a218d6b1c68f3d6217b8fa2cc82fec6547902" integrity sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q== dependencies: "@babel/helper-module-transforms" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-named-capturing-groups-regex@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz#b407f5c96be0d9f5f88467497fa82b30ac3e8753" integrity sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.12.1" "@babel/plugin-transform-new-target@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz#80073f02ee1bb2d365c3416490e085c95759dec0" integrity sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-object-super@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz#4ea08696b8d2e65841d0c7706482b048bed1066e" integrity sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-replace-supers" "^7.12.1" "@babel/plugin-transform-parameters@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz#d2e963b038771650c922eff593799c96d853255d" integrity sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-property-literals@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz#41bc81200d730abb4456ab8b3fbd5537b59adecd" integrity sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-regenerator@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz#5f0a28d842f6462281f06a964e88ba8d7ab49753" integrity sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng== dependencies: regenerator-transform "^0.14.2" "@babel/plugin-transform-reserved-words@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz#6fdfc8cc7edcc42b36a7c12188c6787c873adcd8" integrity sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-shorthand-properties@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz#0bf9cac5550fce0cfdf043420f661d645fdc75e3" integrity sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-spread@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz#527f9f311be4ec7fdc2b79bb89f7bf884b3e1e1e" integrity sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" "@babel/plugin-transform-sticky-regex@^7.12.7": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.7.tgz#560224613ab23987453948ed21d0b0b193fa7fad" integrity sha512-VEiqZL5N/QvDbdjfYQBhruN0HYjSPjC4XkeqW4ny/jNtH9gcbgaqBIXYEZCNnESMAGs0/K/R7oFGMhOyu/eIxg== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-template-literals@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz#b43ece6ed9a79c0c71119f576d299ef09d942843" integrity sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-typeof-symbol@^7.12.10": version "7.12.10" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.10.tgz#de01c4c8f96580bd00f183072b0d0ecdcf0dec4b" integrity sha512-JQ6H8Rnsogh//ijxspCjc21YPd3VLVoYtAwv3zQmqAt8YGYUtdo5usNhdl4b9/Vir2kPFZl6n1h0PfUz4hJhaA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-unicode-escapes@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz#5232b9f81ccb07070b7c3c36c67a1b78f1845709" integrity sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-unicode-regex@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz#cc9661f61390db5c65e3febaccefd5c6ac3faecb" integrity sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" "@babel/preset-env@^7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.11.tgz#55d5f7981487365c93dbbc84507b1c7215e857f9" integrity sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw== dependencies: "@babel/compat-data" "^7.12.7" "@babel/helper-compilation-targets" "^7.12.5" "@babel/helper-module-imports" "^7.12.5" "@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-validator-option" "^7.12.11" "@babel/plugin-proposal-async-generator-functions" "^7.12.1" "@babel/plugin-proposal-class-properties" "^7.12.1" "@babel/plugin-proposal-dynamic-import" "^7.12.1" "@babel/plugin-proposal-export-namespace-from" "^7.12.1" "@babel/plugin-proposal-json-strings" "^7.12.1" "@babel/plugin-proposal-logical-assignment-operators" "^7.12.1" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" "@babel/plugin-proposal-numeric-separator" "^7.12.7" "@babel/plugin-proposal-object-rest-spread" "^7.12.1" "@babel/plugin-proposal-optional-catch-binding" "^7.12.1" "@babel/plugin-proposal-optional-chaining" "^7.12.7" "@babel/plugin-proposal-private-methods" "^7.12.1" "@babel/plugin-proposal-unicode-property-regex" "^7.12.1" "@babel/plugin-syntax-async-generators" "^7.8.0" "@babel/plugin-syntax-class-properties" "^7.12.1" "@babel/plugin-syntax-dynamic-import" "^7.8.0" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" "@babel/plugin-syntax-json-strings" "^7.8.0" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" "@babel/plugin-syntax-numeric-separator" "^7.10.4" "@babel/plugin-syntax-object-rest-spread" "^7.8.0" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" "@babel/plugin-syntax-optional-chaining" "^7.8.0" "@babel/plugin-syntax-top-level-await" "^7.12.1" "@babel/plugin-transform-arrow-functions" "^7.12.1" "@babel/plugin-transform-async-to-generator" "^7.12.1" "@babel/plugin-transform-block-scoped-functions" "^7.12.1" "@babel/plugin-transform-block-scoping" "^7.12.11" "@babel/plugin-transform-classes" "^7.12.1" "@babel/plugin-transform-computed-properties" "^7.12.1" "@babel/plugin-transform-destructuring" "^7.12.1" "@babel/plugin-transform-dotall-regex" "^7.12.1" "@babel/plugin-transform-duplicate-keys" "^7.12.1" "@babel/plugin-transform-exponentiation-operator" "^7.12.1" "@babel/plugin-transform-for-of" "^7.12.1" "@babel/plugin-transform-function-name" "^7.12.1" "@babel/plugin-transform-literals" "^7.12.1" "@babel/plugin-transform-member-expression-literals" "^7.12.1" "@babel/plugin-transform-modules-amd" "^7.12.1" "@babel/plugin-transform-modules-commonjs" "^7.12.1" "@babel/plugin-transform-modules-systemjs" "^7.12.1" "@babel/plugin-transform-modules-umd" "^7.12.1" "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.1" "@babel/plugin-transform-new-target" "^7.12.1" "@babel/plugin-transform-object-super" "^7.12.1" "@babel/plugin-transform-parameters" "^7.12.1" "@babel/plugin-transform-property-literals" "^7.12.1" "@babel/plugin-transform-regenerator" "^7.12.1" "@babel/plugin-transform-reserved-words" "^7.12.1" "@babel/plugin-transform-shorthand-properties" "^7.12.1" "@babel/plugin-transform-spread" "^7.12.1" "@babel/plugin-transform-sticky-regex" "^7.12.7" "@babel/plugin-transform-template-literals" "^7.12.1" "@babel/plugin-transform-typeof-symbol" "^7.12.10" "@babel/plugin-transform-unicode-escapes" "^7.12.1" "@babel/plugin-transform-unicode-regex" "^7.12.1" "@babel/preset-modules" "^0.1.3" "@babel/types" "^7.12.11" core-js-compat "^3.8.0" semver "^5.5.0" "@babel/preset-modules@^0.1.3": version "0.1.4" resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" "@babel/plugin-transform-dotall-regex" "^7.4.4" "@babel/types" "^7.4.4" esutils "^2.0.2" "@babel/runtime@^7.8.4": version "7.12.5" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e" integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg== dependencies: regenerator-runtime "^0.13.4" "@babel/template@^7.10.4", "@babel/template@^7.12.7": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.7.tgz#c817233696018e39fbb6c491d2fb684e05ed43bc" integrity sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow== dependencies: "@babel/code-frame" "^7.10.4" "@babel/parser" "^7.12.7" "@babel/types" "^7.12.7" "@babel/traverse@^7.10.4", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.10", "@babel/traverse@^7.12.5": version "7.12.12" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.12.tgz#d0cd87892704edd8da002d674bc811ce64743376" integrity sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w== dependencies: "@babel/code-frame" "^7.12.11" "@babel/generator" "^7.12.11" "@babel/helper-function-name" "^7.12.11" "@babel/helper-split-export-declaration" "^7.12.11" "@babel/parser" "^7.12.11" "@babel/types" "^7.12.12" debug "^4.1.0" globals "^11.1.0" lodash "^4.17.19" "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.11", "@babel/types@^7.12.12", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.4.4": version "7.12.12" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.12.tgz#4608a6ec313abbd87afa55004d373ad04a96c299" integrity sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ== dependencies: "@babel/helper-validator-identifier" "^7.12.11" lodash "^4.17.19" to-fast-properties "^2.0.0" "@discoveryjs/json-ext@^0.5.0": version "0.5.2" resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz#8f03a22a04de437254e8ce8cc84ba39689288752" integrity sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg== "@types/anymatch@*": version "1.3.1" resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA== "@types/eslint-scope@^3.7.0": version "3.7.0" resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.0.tgz#4792816e31119ebd506902a482caec4951fabd86" integrity sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw== dependencies: "@types/eslint" "*" "@types/estree" "*" "@types/eslint@*": version "7.2.6" resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.6.tgz#5e9aff555a975596c03a98b59ecd103decc70c3c" integrity sha512-I+1sYH+NPQ3/tVqCeUSBwTE/0heyvtXqpIopUUArlBm0Kpocb8FbMa3AZ/ASKIFpN3rnEx932TTXDbt9OXsNDw== dependencies: "@types/estree" "*" "@types/json-schema" "*" "@types/estree@*": version "0.0.46" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.46.tgz#0fb6bfbbeabd7a30880504993369c4bf1deab1fe" integrity sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg== "@types/estree@^0.0.45": version "0.0.45" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884" integrity sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g== "@types/glob@^7.1.1": version "7.1.3" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== dependencies: "@types/minimatch" "*" "@types/node" "*" "@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6": version "7.0.6" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== "@types/minimatch@*": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== "@types/node@*": version "14.14.21" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.21.tgz#d934aacc22424fe9622ebf6857370c052eae464e" integrity sha512-cHYfKsnwllYhjOzuC5q1VpguABBeecUp24yFluHpn/BQaVxB1CuQ1FSRZCzrPxrkIfWISXV2LbeoBthLWg0+0A== "@types/source-list-map@*": version "0.1.2" resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== "@types/tapable@*": version "1.0.6" resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.6.tgz#a9ca4b70a18b270ccb2bc0aaafefd1d486b7ea74" integrity sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA== "@types/uglify-js@*": version "3.11.1" resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.11.1.tgz#97ff30e61a0aa6876c270b5f538737e2d6ab8ceb" integrity sha512-7npvPKV+jINLu1SpSYVWG8KvyJBhBa8tmzMMdDoVc2pWUYHN8KIXlPJhjJ4LT97c4dXJA2SHL/q6ADbDriZN+Q== dependencies: source-map "^0.6.1" "@types/webpack-sources@*": version "2.1.0" resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-2.1.0.tgz#8882b0bd62d1e0ce62f183d0d01b72e6e82e8c10" integrity sha512-LXn/oYIpBeucgP1EIJbKQ2/4ZmpvRl+dlrFdX7+94SKRUV3Evy3FsfMZY318vGhkWUS5MPhtOM3w1/hCOAOXcg== dependencies: "@types/node" "*" "@types/source-list-map" "*" source-map "^0.7.3" "@types/webpack@^4.4.31": version "4.41.26" resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.26.tgz#27a30d7d531e16489f9c7607c747be6bc1a459ef" integrity sha512-7ZyTfxjCRwexh+EJFwRUM+CDB2XvgHl4vfuqf1ZKrgGvcS5BrNvPQqJh3tsZ0P6h6Aa1qClVHaJZszLPzpqHeA== dependencies: "@types/anymatch" "*" "@types/node" "*" "@types/tapable" "*" "@types/uglify-js" "*" "@types/webpack-sources" "*" source-map "^0.6.0" "@webassemblyjs/ast@1.11.0": version "1.11.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.0.tgz#a5aa679efdc9e51707a4207139da57920555961f" integrity sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg== dependencies: "@webassemblyjs/helper-numbers" "1.11.0" "@webassemblyjs/helper-wasm-bytecode" "1.11.0" "@webassemblyjs/floating-point-hex-parser@1.11.0": version "1.11.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz#34d62052f453cd43101d72eab4966a022587947c" integrity sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA== "@webassemblyjs/helper-api-error@1.11.0": version "1.11.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz#aaea8fb3b923f4aaa9b512ff541b013ffb68d2d4" integrity sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w== "@webassemblyjs/helper-buffer@1.11.0": version "1.11.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz#d026c25d175e388a7dbda9694e91e743cbe9b642" integrity sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA== "@webassemblyjs/helper-numbers@1.11.0": version "1.11.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz#7ab04172d54e312cc6ea4286d7d9fa27c88cd4f9" integrity sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ== dependencies: "@webassemblyjs/floating-point-hex-parser" "1.11.0" "@webassemblyjs/helper-api-error" "1.11.0" "@xtuc/long" "4.2.2" "@webassemblyjs/helper-wasm-bytecode@1.11.0": version "1.11.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz#85fdcda4129902fe86f81abf7e7236953ec5a4e1" integrity sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA== "@webassemblyjs/helper-wasm-section@1.11.0": version "1.11.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz#9ce2cc89300262509c801b4af113d1ca25c1a75b" integrity sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew== dependencies: "@webassemblyjs/ast" "1.11.0" "@webassemblyjs/helper-buffer" "1.11.0" "@webassemblyjs/helper-wasm-bytecode" "1.11.0" "@webassemblyjs/wasm-gen" "1.11.0" "@webassemblyjs/ieee754@1.11.0": version "1.11.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz#46975d583f9828f5d094ac210e219441c4e6f5cf" integrity sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA== dependencies: "@xtuc/ieee754" "^1.2.0" "@webassemblyjs/leb128@1.11.0": version "1.11.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.0.tgz#f7353de1df38aa201cba9fb88b43f41f75ff403b" integrity sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g== dependencies: "@xtuc/long" "4.2.2" "@webassemblyjs/utf8@1.11.0": version "1.11.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.0.tgz#86e48f959cf49e0e5091f069a709b862f5a2cadf" integrity sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw== "@webassemblyjs/wasm-edit@1.11.0": version "1.11.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz#ee4a5c9f677046a210542ae63897094c2027cb78" integrity sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ== dependencies: "@webassemblyjs/ast" "1.11.0" "@webassemblyjs/helper-buffer" "1.11.0" "@webassemblyjs/helper-wasm-bytecode" "1.11.0" "@webassemblyjs/helper-wasm-section" "1.11.0" "@webassemblyjs/wasm-gen" "1.11.0" "@webassemblyjs/wasm-opt" "1.11.0" "@webassemblyjs/wasm-parser" "1.11.0" "@webassemblyjs/wast-printer" "1.11.0" "@webassemblyjs/wasm-gen@1.11.0": version "1.11.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz#3cdb35e70082d42a35166988dda64f24ceb97abe" integrity sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ== dependencies: "@webassemblyjs/ast" "1.11.0" "@webassemblyjs/helper-wasm-bytecode" "1.11.0" "@webassemblyjs/ieee754" "1.11.0" "@webassemblyjs/leb128" "1.11.0" "@webassemblyjs/utf8" "1.11.0" "@webassemblyjs/wasm-opt@1.11.0": version "1.11.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz#1638ae188137f4bb031f568a413cd24d32f92978" integrity sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg== dependencies: "@webassemblyjs/ast" "1.11.0" "@webassemblyjs/helper-buffer" "1.11.0" "@webassemblyjs/wasm-gen" "1.11.0" "@webassemblyjs/wasm-parser" "1.11.0" "@webassemblyjs/wasm-parser@1.11.0": version "1.11.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz#3e680b8830d5b13d1ec86cc42f38f3d4a7700754" integrity sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw== dependencies: "@webassemblyjs/ast" "1.11.0" "@webassemblyjs/helper-api-error" "1.11.0" "@webassemblyjs/helper-wasm-bytecode" "1.11.0" "@webassemblyjs/ieee754" "1.11.0" "@webassemblyjs/leb128" "1.11.0" "@webassemblyjs/utf8" "1.11.0" "@webassemblyjs/wast-printer@1.11.0": version "1.11.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz#680d1f6a5365d6d401974a8e949e05474e1fab7e" integrity sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ== dependencies: "@webassemblyjs/ast" "1.11.0" "@xtuc/long" "4.2.2" "@webpack-cli/info@^1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.2.1.tgz#af98311f983d0b9fce7284cfcf1acaf1e9f4879c" integrity sha512-fLnDML5HZ5AEKzHul8xLAksoKN2cibu6MgonkUj8R9V7bbeVRkd1XbGEGWrAUNYHbX1jcqCsDEpBviE5StPMzQ== dependencies: envinfo "^7.7.3" "@webpack-cli/serve@^1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.2.1.tgz#7513d7a769e3f97958de799b5b49874425ae3396" integrity sha512-Zj1z6AyS+vqV6Hfi7ngCjFGdHV5EwZNIHo6QfFTNe9PyW+zBU1zJ9BiOW1pmUEq950RC4+Dym6flyA/61/vhyw== "@xtuc/ieee754@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== "@xtuc/long@4.2.2": version "4.2.2" resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== acorn@^8.0.4: version "8.0.4" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.0.4.tgz#7a3ae4191466a6984eee0fe3407a4f3aa9db8354" integrity sha512-XNP0PqF1XD19ZlLKvB7cMmnZswW4C/03pRHgirB30uSJTaS3A3V1/P4sS3HPvFmjoriPCJQs+JDSbm4bL1TxGQ== ajv-keywords@^3.5.2: version "3.5.2" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.4.1" uri-js "^4.2.2" align-text@^0.1.1, align-text@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" integrity sha1-DNkKVhCT810KmSVsIrcGlDP60Rc= dependencies: kind-of "^3.0.2" longest "^1.0.1" repeat-string "^1.5.2" ansi-colors@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" anymatch@~3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= dependencies: array-uniq "^1.0.1" array-uniq@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= babel-loader@^8.2.2: version "8.2.2" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81" integrity sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g== dependencies: find-cache-dir "^3.3.1" loader-utils "^1.4.0" make-dir "^3.1.0" schema-utils "^2.6.5" babel-plugin-dynamic-import-node@^2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== dependencies: object.assign "^4.1.0" balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== bootstrap@^4.5.3: version "4.5.3" resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.5.3.tgz#c6a72b355aaf323920be800246a6e4ef30997fe6" integrity sha512-o9ppKQioXGqhw8Z7mah6KdTYpNQY//tipnkxppWhPbiSWdD+1raYsnhwEZjkTHYbGee4cVQ0Rx65EhOY/HNLcQ== brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" browserslist@^4.14.5, browserslist@^4.16.0: version "4.16.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.1.tgz#bf757a2da376b3447b800a16f0f1c96358138766" integrity sha512-UXhDrwqsNcpTYJBTZsbGATDxZbiVDsx6UjpmRUmtnP10pr8wAYr5LgFoEFw9ixriQH2mv/NX2SfGzE/o8GndLA== dependencies: caniuse-lite "^1.0.30001173" colorette "^1.2.1" electron-to-chromium "^1.3.634" escalade "^3.1.1" node-releases "^1.1.69" bs-custom-file-input@^1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/bs-custom-file-input/-/bs-custom-file-input-1.3.4.tgz#c275cb8d4f1c02ba026324292509fa9a747dbda8" integrity sha512-NBsQzTnef3OW1MvdKBbMHAYHssCd613MSeJV7z2McXznWtVMnJCy7Ckyc+PwxV6Pk16cu6YBcYWh/ZE0XWNKCA== buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== call-bind@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== dependencies: function-bind "^1.1.1" get-intrinsic "^1.0.2" camelcase@^1.0.2: version "1.2.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk= camelcase@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== caniuse-lite@^1.0.30001173: version "1.0.30001178" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001178.tgz#3ad813b2b2c7d585b0be0a2440e1e233c6eabdbc" integrity sha512-VtdZLC0vsXykKni8Uztx45xynytOi71Ufx9T8kHptSw9AL4dpqailUJJHavttuzUe1KYuBYtChiWv+BAb7mPmQ== center-align@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" integrity sha1-qg0yYptu6XIgBBHL1EYckHvCt60= dependencies: align-text "^0.1.3" lazy-cache "^1.0.3" chalk@^2.0.0: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: ansi-styles "^3.2.1" escape-string-regexp "^1.0.5" supports-color "^5.3.0" "chokidar@>=2.0.0 <4.0.0": version "3.5.1" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== dependencies: anymatch "~3.1.1" braces "~3.0.2" glob-parent "~5.1.0" is-binary-path "~2.1.0" is-glob "~4.0.1" normalize-path "~3.0.0" readdirp "~3.5.0" optionalDependencies: fsevents "~2.3.1" chrome-trace-event@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== dependencies: tslib "^1.9.0" clean-webpack-plugin@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/clean-webpack-plugin/-/clean-webpack-plugin-3.0.0.tgz#a99d8ec34c1c628a4541567aa7b457446460c62b" integrity sha512-MciirUH5r+cYLGCOL5JX/ZLzOZbVr1ot3Fw+KcvbhUb6PM+yycqd9ZhIlcigQ5gl+XhppNmw3bEFuaaMNyLj3A== dependencies: "@types/webpack" "^4.4.31" del "^4.1.1" cliui@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" integrity sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE= dependencies: center-align "^0.1.1" right-align "^0.1.1" wordwrap "0.0.2" color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= colorette@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== colors@^1.1.2: version "1.4.0" resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== commander@^6.2.0: version "6.2.1" resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== dependencies: safe-buffer "~5.1.1" core-js-compat@^3.8.0: version "3.8.2" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.8.2.tgz#3717f51f6c3d2ebba8cbf27619b57160029d1d4c" integrity sha512-LO8uL9lOIyRRrQmZxHZFl1RV+ZbcsAkFWTktn5SmH40WgLtSNYN4m4W2v9ONT147PxBY/XrRhrWq8TlvObyUjQ== dependencies: browserslist "^4.16.0" semver "7.0.0" core-js@^3.8.2: version "3.8.2" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.8.2.tgz#0a1fd6709246da9ca8eff5bb0cbd15fba9ac7044" integrity sha512-FfApuSRgrR6G5s58casCBd9M2k+4ikuu4wbW6pJyYU7bd9zvFc9qf7vr5xmrZOhT9nn+8uwlH1oRR9jTnFoA3A== cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: path-key "^3.1.0" shebang-command "^2.0.0" which "^2.0.1" css-loader@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-5.0.1.tgz#9e4de0d6636a6266a585bd0900b422c85539d25f" integrity sha512-cXc2ti9V234cq7rJzFKhirb2L2iPy8ZjALeVJAozXYz9te3r4eqLSixNAbMDJSgJEQywqXzs8gonxaboeKqwiw== dependencies: camelcase "^6.2.0" cssesc "^3.0.0" icss-utils "^5.0.0" loader-utils "^2.0.0" postcss "^8.1.4" postcss-modules-extract-imports "^3.0.0" postcss-modules-local-by-default "^4.0.0" postcss-modules-scope "^3.0.0" postcss-modules-values "^4.0.0" postcss-value-parser "^4.1.0" schema-utils "^3.0.0" semver "^7.3.2" cssesc@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== debug@^4.1.0: version "4.3.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== dependencies: ms "2.1.2" decamelize@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== dependencies: object-keys "^1.0.12" del@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== dependencies: "@types/glob" "^7.1.1" globby "^6.1.0" is-path-cwd "^2.0.0" is-path-in-cwd "^2.0.0" p-map "^2.0.0" pify "^4.0.1" rimraf "^2.6.3" electron-to-chromium@^1.3.634: version "1.3.641" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.641.tgz#03f14efd70a7971eff2efc947b3c1d0f717c82b9" integrity sha512-b0DLhsHSHESC1I+Nx6n4w4Lr61chMd3m/av1rZQhS2IXTzaS5BMM5N+ldWdMIlni9CITMRM09m8He4+YV/92TA== emojis-list@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== enhanced-resolve@^5.7.0: version "5.7.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.7.0.tgz#525c5d856680fbd5052de453ac83e32049958b5c" integrity sha512-6njwt/NsZFUKhM6j9U8hzVyD4E4r0x7NQzhTCbcWOJ0IQjNSAoalWmb0AE51Wn+fwan5qVESWi7t2ToBxs9vrw== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" enquirer@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== dependencies: ansi-colors "^4.1.1" envinfo@^7.7.3: version "7.7.3" resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.7.3.tgz#4b2d8622e3e7366afb8091b23ed95569ea0208cc" integrity sha512-46+j5QxbPWza0PB1i15nZx0xQ4I/EfQxg9J8Had3b408SV63nEtor2e+oiY63amTo9KTuh2a3XLObNwduxYwwA== es-module-lexer@^0.3.26: version "0.3.26" resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.3.26.tgz#7b507044e97d5b03b01d4392c74ffeb9c177a83b" integrity sha512-Va0Q/xqtrss45hWzP8CZJwzGSZJjDM5/MJRE3IXXnUCcVLElR9BRaE9F62BopysASyc4nM3uwhSW7FFB9nlWAA== escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== dependencies: esrecurse "^4.3.0" estraverse "^4.1.1" esrecurse@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: estraverse "^5.2.0" estraverse@^4.1.1: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== estraverse@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== events@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379" integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg== execa@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-5.0.0.tgz#4029b0007998a841fbd1032e5f4de86a3c1e3376" integrity sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ== dependencies: cross-spawn "^7.0.3" get-stream "^6.0.0" human-signals "^2.1.0" is-stream "^2.0.0" merge-stream "^2.0.0" npm-run-path "^4.0.1" onetime "^5.1.2" signal-exit "^3.0.3" strip-final-newline "^2.0.0" fast-deep-equal@^3.1.1: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fastest-levenshtein@^1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2" integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== dependencies: to-regex-range "^5.0.1" find-cache-dir@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== dependencies: commondir "^1.0.1" make-dir "^3.0.2" pkg-dir "^4.1.0" find-up@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== dependencies: locate-path "^5.0.0" path-exists "^4.0.0" find-up@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: locate-path "^6.0.0" path-exists "^4.0.0" fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= fsevents@~2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.1.tgz#b209ab14c61012636c8863507edf7fb68cc54e9f" integrity sha512-YR47Eg4hChJGAB1O3yEAOkGO+rlzutoICGqGo9EZ4lKWokzZRSyIW1QmTzqjtw8MJdj9srP869CuWw/hyzSiBw== function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== gensync@^1.0.0-beta.1: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== get-intrinsic@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.2.tgz#6820da226e50b24894e08859469dc68361545d49" integrity sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg== dependencies: function-bind "^1.1.1" has "^1.0.3" has-symbols "^1.0.1" get-stream@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718" integrity sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg== glob-parent@~5.1.0: version "5.1.1" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== dependencies: is-glob "^4.0.1" glob-to-regexp@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== glob@^7.0.3, glob@^7.1.3: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" minimatch "^3.0.4" once "^1.3.0" path-is-absolute "^1.0.0" globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globby@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= dependencies: array-union "^1.0.1" glob "^7.0.3" object-assign "^4.0.1" pify "^2.0.0" pinkie-promise "^2.0.0" graceful-fs@^4.1.2, graceful-fs@^4.2.4: version "4.2.4" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= has-flag@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has-symbols@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: function-bind "^1.1.1" human-signals@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== icss-utils@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== import-local@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== dependencies: pkg-dir "^4.2.0" resolve-cwd "^3.0.0" indexes-of@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= dependencies: once "^1.3.0" wrappy "1" inherits@2: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== interpret@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: binary-extensions "^2.0.0" is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== is-core-module@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== dependencies: has "^1.0.3" is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== dependencies: is-extglob "^2.1.1" is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== is-path-cwd@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== is-path-in-cwd@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== dependencies: is-path-inside "^2.1.0" is-path-inside@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== dependencies: path-is-inside "^1.0.2" is-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= jest-worker@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== dependencies: "@types/node" "*" merge-stream "^2.0.0" supports-color "^7.0.0" js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== json5@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== dependencies: minimist "^1.2.0" json5@^2.1.2: version "2.1.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== dependencies: minimist "^1.2.5" kind-of@^3.0.2: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= dependencies: is-buffer "^1.1.5" klona@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0" integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA== lazy-cache@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= loader-runner@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== loader-utils@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== dependencies: big.js "^5.2.2" emojis-list "^3.0.0" json5 "^1.0.1" loader-utils@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== dependencies: big.js "^5.2.2" emojis-list "^3.0.0" json5 "^2.1.2" locate-path@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== dependencies: p-locate "^4.1.0" locate-path@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== dependencies: p-locate "^5.0.0" lodash@^4.17.15, lodash@^4.17.19: version "4.17.20" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== longest@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== dependencies: yallist "^4.0.0" make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== dependencies: semver "^6.0.0" merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== mime-db@1.45.0: version "1.45.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea" integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w== mime-types@^2.1.27: version "2.1.28" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.28.tgz#1160c4757eab2c5363888e005273ecf79d2a0ecd" integrity sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ== dependencies: mime-db "1.45.0" mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== mini-css-extract-plugin@^1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-1.3.4.tgz#706e69632cdcdb8b15bf8e638442a0dba304a9c8" integrity sha512-dNjqyeogUd8ucUgw5sxm1ahvSfSUgef7smbmATRSbDm4EmNx5kQA6VdUEhEeCKSjX6CTYjb5vxgMUvRjqP3uHg== dependencies: loader-utils "^2.0.0" schema-utils "^3.0.0" webpack-sources "^1.1.0" minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" minimist@^1.2.0, minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== nanoid@^3.1.20: version "3.1.20" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== node-releases@^1.1.69: version "1.1.69" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.69.tgz#3149dbde53b781610cd8b486d62d86e26c3725f6" integrity sha512-DGIjo79VDEyAnRlfSqYTsy+yoHd2IOjJiKUozD2MV2D85Vso6Bug56mb9tT/fY5Urt0iqk01H7x+llAruDR2zA== normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== dependencies: path-key "^3.0.0" object-assign@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== object.assign@^4.1.0: version "4.1.2" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== dependencies: call-bind "^1.0.0" define-properties "^1.1.3" has-symbols "^1.0.1" object-keys "^1.1.1" once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= dependencies: wrappy "1" onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" p-limit@^3.0.2, p-limit@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: yocto-queue "^0.1.0" p-locate@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== dependencies: p-limit "^2.2.0" p-locate@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== dependencies: p-limit "^3.0.2" p-map@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== path-exists@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== path-parse@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== picomatch@^2.0.4, picomatch@^2.2.1: version "2.2.2" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= pify@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== pinkie-promise@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= dependencies: pinkie "^2.0.0" pinkie@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= pkg-dir@^4.1.0, pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== dependencies: find-up "^4.0.0" pkg-dir@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760" integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA== dependencies: find-up "^5.0.0" postcss-modules-extract-imports@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== postcss-modules-local-by-default@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c" integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ== dependencies: icss-utils "^5.0.0" postcss-selector-parser "^6.0.2" postcss-value-parser "^4.1.0" postcss-modules-scope@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== dependencies: postcss-selector-parser "^6.0.4" postcss-modules-values@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== dependencies: icss-utils "^5.0.0" postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: version "6.0.4" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3" integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw== dependencies: cssesc "^3.0.0" indexes-of "^1.0.1" uniq "^1.0.1" util-deprecate "^1.0.2" postcss-value-parser@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== postcss@^8.1.4: version "8.2.4" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.4.tgz#20a98a39cf303d15129c2865a9ec37eda0031d04" integrity sha512-kRFftRoExRVXZlwUuay9iC824qmXPcQQVzAjbCCgjpXnkdMCJYBu2gTwAaFBzv8ewND6O8xFb3aELmEkh9zTzg== dependencies: colorette "^1.2.1" nanoid "^3.1.20" source-map "^0.6.1" punycode@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" readdirp@~3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== dependencies: picomatch "^2.2.1" rechoir@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.0.tgz#32650fd52c21ab252aa5d65b19310441c7e03aca" integrity sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q== dependencies: resolve "^1.9.0" regenerate-unicode-properties@^8.2.0: version "8.2.0" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== dependencies: regenerate "^1.4.0" regenerate@^1.4.0: version "1.4.2" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== regenerator-runtime@^0.13.4: version "0.13.7" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== regenerator-transform@^0.14.2: version "0.14.5" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== dependencies: "@babel/runtime" "^7.8.4" regexpu-core@^4.7.1: version "4.7.1" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== dependencies: regenerate "^1.4.0" regenerate-unicode-properties "^8.2.0" regjsgen "^0.5.1" regjsparser "^0.6.4" unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.2.0" regjsgen@^0.5.1: version "0.5.2" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== regjsparser@^0.6.4: version "0.6.6" resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.6.tgz#6d8c939d1a654f78859b08ddcc4aa777f3fa800a" integrity sha512-jjyuCp+IEMIm3N1H1LLTJW1EISEJV9+5oHdEyrt43Pg9cDSb6rrLZei2cVWpl0xTjmmlpec/lEQGYgM7xfpGCQ== dependencies: jsesc "~0.5.0" repeat-string@^1.5.2: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= resolve-cwd@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== dependencies: resolve-from "^5.0.0" resolve-from@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== resolve@^1.9.0: version "1.19.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== dependencies: is-core-module "^2.1.0" path-parse "^1.0.6" right-align@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" integrity sha1-YTObci/mo1FWiSENJOFMlhSGE+8= dependencies: align-text "^0.1.1" rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== dependencies: glob "^7.1.3" safe-buffer@^5.1.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== sass-loader@^10.1.1: version "10.1.1" resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.1.1.tgz#4ddd5a3d7638e7949065dd6e9c7c04037f7e663d" integrity sha512-W6gVDXAd5hR/WHsPicvZdjAWHBcEJ44UahgxcIE196fW2ong0ZHMPO1kZuI5q0VlvMQZh32gpv69PLWQm70qrw== dependencies: klona "^2.0.4" loader-utils "^2.0.0" neo-async "^2.6.2" schema-utils "^3.0.0" semver "^7.3.2" sass@^1.32.4: version "1.32.4" resolved "https://registry.yarnpkg.com/sass/-/sass-1.32.4.tgz#308bf29dd7f53d44ae4f06580e9a910ad9aa411e" integrity sha512-N0BT0PI/t3+gD8jKa83zJJUb7ssfQnRRfqN+GIErokW6U4guBpfYl8qYB+OFLEho+QvnV5ZH1R9qhUC/Z2Ch9w== dependencies: chokidar ">=2.0.0 <4.0.0" schema-utils@^2.6.5: version "2.7.1" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== dependencies: "@types/json-schema" "^7.0.5" ajv "^6.12.4" ajv-keywords "^3.5.2" schema-utils@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.0.0.tgz#67502f6aa2b66a2d4032b4279a2944978a0913ef" integrity sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA== dependencies: "@types/json-schema" "^7.0.6" ajv "^6.12.5" ajv-keywords "^3.5.2" semver@7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== semver@^5.4.1, semver@^5.5.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== semver@^6.0.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== semver@^7.3.2: version "7.3.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== dependencies: lru-cache "^6.0.0" serialize-javascript@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== dependencies: randombytes "^2.1.0" shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: shebang-regex "^3.0.0" shebang-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== signal-exit@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== source-list-map@^2.0.0, source-list-map@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== source-map-support@~0.5.19: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" source-map@^0.5.0, source-map@~0.5.1: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== source-map@^0.7.3, source-map@~0.7.2: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== strip-final-newline@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== style-loader@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-2.0.0.tgz#9669602fd4690740eaaec137799a03addbbc393c" integrity sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ== dependencies: loader-utils "^2.0.0" schema-utils "^3.0.0" supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" supports-color@^7.0.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" tapable@^2.1.1, tapable@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.0.tgz#5c373d281d9c672848213d0e037d1c4165ab426b" integrity sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw== terser-webpack-plugin@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.1.1.tgz#7effadee06f7ecfa093dbbd3e9ab23f5f3ed8673" integrity sha512-5XNNXZiR8YO6X6KhSGXfY0QrGrCRlSwAEjIIrlRQR4W8nP69TaJUlh3bkuac6zzgspiGPfKEHcY295MMVExl5Q== dependencies: jest-worker "^26.6.2" p-limit "^3.1.0" schema-utils "^3.0.0" serialize-javascript "^5.0.1" source-map "^0.6.1" terser "^5.5.1" terser@^5.5.1: version "5.5.1" resolved "https://registry.yarnpkg.com/terser/-/terser-5.5.1.tgz#540caa25139d6f496fdea056e414284886fb2289" integrity sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ== dependencies: commander "^2.20.0" source-map "~0.7.2" source-map-support "~0.5.19" to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: is-number "^7.0.0" tslib@^1.9.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== uglify-js-plugin@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/uglify-js-plugin/-/uglify-js-plugin-0.0.6.tgz#ea52368fea73b2043b1cbeadb0e0f11c3c822c18" integrity sha1-6lI2j+pzsgQ7HL6tsODxHDyCLBg= dependencies: colors "^1.1.2" uglify-js "^2.7.3" uglify-js@^2.7.3: version "2.8.29" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" integrity sha1-KcVzMUgFe7Th913zW3qcty5qWd0= dependencies: source-map "~0.5.1" yargs "~3.10.0" optionalDependencies: uglify-to-browserify "~1.0.0" uglify-to-browserify@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc= unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== unicode-match-property-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== dependencies: unicode-canonical-property-names-ecmascript "^1.0.4" unicode-property-aliases-ecmascript "^1.0.4" unicode-match-property-value-ecmascript@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== unicode-property-aliases-ecmascript@^1.0.4: version "1.1.0" resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== uniq@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" util-deprecate@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= v8-compile-cache@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== watchpack@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.1.0.tgz#e63194736bf3aa22026f7b191cd57907b0f9f696" integrity sha512-UjgD1mqjkG99+3lgG36at4wPnUXNvis2v1utwTgQ43C22c4LD71LsYMExdWXh4HZ+RmW+B0t1Vrg2GpXAkTOQw== dependencies: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" webpack-cli@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.3.1.tgz#87a7873bc9c6a4708aa657759274b691e72a04a8" integrity sha512-/F4+9QNZM/qKzzL9/06Am8NXIkGV+/NqQ62Dx7DSqudxxpAgBqYn6V7+zp+0Y7JuWksKUbczRY3wMTd+7Uj6OA== dependencies: "@discoveryjs/json-ext" "^0.5.0" "@webpack-cli/info" "^1.2.1" "@webpack-cli/serve" "^1.2.1" colorette "^1.2.1" commander "^6.2.0" enquirer "^2.3.6" execa "^5.0.0" fastest-levenshtein "^1.0.12" import-local "^3.0.2" interpret "^2.2.0" rechoir "^0.7.0" v8-compile-cache "^2.2.0" webpack-merge "^4.2.2" webpack-merge@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== dependencies: lodash "^4.17.15" webpack-sources@^1.1.0: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== dependencies: source-list-map "^2.0.0" source-map "~0.6.1" webpack-sources@^2.1.1: version "2.2.0" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-2.2.0.tgz#058926f39e3d443193b6c31547229806ffd02bac" integrity sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w== dependencies: source-list-map "^2.0.1" source-map "^0.6.1" webpack@^5.15.0: version "5.15.0" resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.15.0.tgz#63d7b6228a4e15ee8c89899c2cfdd993e809bdd2" integrity sha512-y/xG+ONDz78yn3VvP6gAvGr1/gkxOgitvHSXBmquyN8KDtrGEyE3K9WkXOPB7QmfcOBCpO4ELXwNcCYQnEmexA== dependencies: "@types/eslint-scope" "^3.7.0" "@types/estree" "^0.0.45" "@webassemblyjs/ast" "1.11.0" "@webassemblyjs/wasm-edit" "1.11.0" "@webassemblyjs/wasm-parser" "1.11.0" acorn "^8.0.4" browserslist "^4.14.5" chrome-trace-event "^1.0.2" enhanced-resolve "^5.7.0" es-module-lexer "^0.3.26" eslint-scope "^5.1.1" events "^3.2.0" glob-to-regexp "^0.4.1" graceful-fs "^4.2.4" json-parse-better-errors "^1.0.2" loader-runner "^4.2.0" mime-types "^2.1.27" neo-async "^2.6.2" pkg-dir "^5.0.0" schema-utils "^3.0.0" tapable "^2.1.1" terser-webpack-plugin "^5.1.1" watchpack "^2.0.0" webpack-sources "^2.1.1" which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" window-size@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0= wordwrap@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8= wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== yargs@~3.10.0: version "3.10.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" integrity sha1-9+572FfdfB0tOMDnTvvWgdFDH9E= dependencies: camelcase "^1.0.2" cliui "^2.1.0" decamelize "^1.0.0" window-size "0.1.0" yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==