diff --git a/.gitignore b/.gitignore index a1c2a23..8ed101f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +# IDE +.idea + # Compiled class file *.class @@ -21,3 +24,13 @@ # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* + +# Python # +__pycache__ +mock_provider_endpoint.log + +# Docusaurus 2 +website/.docusaurus/ +website/node_modules/ +website/blog/ +website/build/ diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..d228749 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,84 @@ + +pipeline { + agent none + options { + checkoutToSubdirectory('gr.grnet.eseal') + newContainerPerStage() + } + environment { + PROJECT_DIR='gr.grnet.eseal' + GH_USER = 'newgrnetci' + GH_EMAIL = '' + } + stages { + stage('E-seal API Packaging & Testing') { + agent { + docker { + image 'argo.registry:5000/epel-7-java18-mvn36' + args '-u jenkins:jenkins' + } + } + steps { + echo 'E-seal API Packaging & Testing' + sh """ + mvn clean install -f ${PROJECT_DIR}/eseal/pom.xml + mvn clean package cobertura:cobertura -Dcobertura.report.format=xml -f ${PROJECT_DIR}/eseal/pom.xml + """ + junit '**/target/surefire-reports/*.xml' + cobertura coberturaReportFile: '**/target/site/cobertura/coverage.xml' + archiveArtifacts artifacts: '**/target/*.jar' + } + post { + always { + cleanWs() + } + } + } + stage ('Deploy Docs') { + when { + anyOf { + changeset 'website/**' + } + } + agent { + docker { + image 'node:buster' + } + } + steps { + echo 'Publish gr.grnet.eseal docs...' + sh ''' + cd $WORKSPACE/$PROJECT_DIR + cd website + npm install + npm audit fix + ''' + sshagent (credentials: ['jenkins-master']) { + sh ''' + cd $WORKSPACE/$PROJECT_DIR/website + mkdir ~/.ssh && ssh-keyscan -H github.com > ~/.ssh/known_hosts + git config --global user.email ${GH_EMAIL} + git config --global user.name ${GH_USER} + GIT_USER=${GH_USER} USE_SSH=true npm run deploy + ''' + } + } + } + } + post { + success { + script{ + if ( env.BRANCH_NAME == 'master' || env.BRANCH_NAME == 'devel' ) { + slackSend( message: ":rocket: New version for <$BUILD_URL|$PROJECT_DIR>:$BRANCH_NAME Job: $JOB_NAME !") + } + } + } + failure { + script{ + if ( env.BRANCH_NAME == 'master' || env.BRANCH_NAME == 'devel' ) { + slackSend( message: ":rain_cloud: Build Failed for <$BUILD_URL|$PROJECT_DIR>:$BRANCH_NAME Job: $JOB_NAME") + } + } + } + } +} diff --git a/README.md b/README.md index 204d37b..dff0905 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,24 @@ -# gr.grnet.eseal -E-signature library +# Eseal + +E-signature Rest API. + + +Signing, timestamping and validation of PDF documents. + +### Code format +```bash +mvn spotless:apply +``` + +## Funding +Co-financed by the European Union, the Innovation and Networks Executive Agency and CEF Telecom + +Τhis api was developed during the eThemisID project. + +_Full Title_: eThemisID: Integrating the Greek Justice System with eIDAS and e-signature services + +_Duration_: 01/01/2020- 31/07/2021 + +_Project ID_: [2019-el-ia-0026](https://ec.europa.eu/inea/en/connecting-europe-facility/cef-telecom/2019-el-ia-0026) + +_Results can be found_: [here](https://www.adjustice.gr/ethemis/?lang=en) diff --git a/eseal.service b/eseal.service new file mode 100644 index 0000000..ef942c6 --- /dev/null +++ b/eseal.service @@ -0,0 +1,16 @@ +[Unit] +Description=E-seal API for signing,validating and timestamping documents. +Documentation=https://argoeu.github.io/gr.grnet.eseal/ + +[Service] +User=eseal +Group=eseal +WorkingDirectory=/var/www/eseal +ExecStart=/var/www/eseal/eseal.jar +SyslogIdentifier=eseal +Restart=on-failure +RestartSec=5s +SuccessExitStatus=143 + +[Install] +WantedBy=multi-user.target diff --git a/eseal/.gitignore b/eseal/.gitignore new file mode 100644 index 0000000..ce38345 --- /dev/null +++ b/eseal/.gitignore @@ -0,0 +1,34 @@ +HELP.md +.DS_Store +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/eseal/.mvn/wrapper/MavenWrapperDownloader.java b/eseal/.mvn/wrapper/MavenWrapperDownloader.java new file mode 100644 index 0000000..d6d1381 --- /dev/null +++ b/eseal/.mvn/wrapper/MavenWrapperDownloader.java @@ -0,0 +1,115 @@ +/* + * Copyright 2007-present the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import java.util.Properties; + +public class MavenWrapperDownloader { + + private static final String WRAPPER_VERSION = "0.5.6"; + /** + * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. + */ + private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/" + + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar"; + + /** + * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to + * use instead of the default one. + */ + private static final String MAVEN_WRAPPER_PROPERTIES_PATH = + ".mvn/wrapper/maven-wrapper.properties"; + + /** + * Path where the maven-wrapper.jar will be saved to. + */ + private static final String MAVEN_WRAPPER_JAR_PATH = + ".mvn/wrapper/maven-wrapper.jar"; + + /** + * Name of the property which should be used to override the default download url for the wrapper. + */ + private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl"; + + public static void main(String args[]) { + System.out.println("- Downloader started"); + File baseDirectory = new File(args[0]); + System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath()); + + // If the maven-wrapper.properties exists, read it and check if it contains a custom + // wrapperUrl parameter. + File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH); + String url = DEFAULT_DOWNLOAD_URL; + if (mavenWrapperPropertyFile.exists()) { + FileInputStream mavenWrapperPropertyFileInputStream = null; + try { + mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile); + Properties mavenWrapperProperties = new Properties(); + mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream); + url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url); + } catch (IOException e) { + System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'"); + } finally { + try { + if (mavenWrapperPropertyFileInputStream != null) { + mavenWrapperPropertyFileInputStream.close(); + } + } catch (IOException e) { + // Ignore ... + } + } + } + System.out.println("- Downloading from: " + url); + + File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH); + if (!outputFile.getParentFile().exists()) { + if (!outputFile.getParentFile().mkdirs()) { + System.out.println( + "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'"); + } + } + System.out.println("- Downloading to: " + outputFile.getAbsolutePath()); + try { + downloadFileFromURL(url, outputFile); + System.out.println("Done"); + System.exit(0); + } catch (Throwable e) { + System.out.println("- Error downloading"); + e.printStackTrace(); + System.exit(1); + } + } + + private static void downloadFileFromURL(String urlString, File destination) throws Exception { + if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) { + String username = System.getenv("MVNW_USERNAME"); + char[] password = System.getenv("MVNW_PASSWORD").toCharArray(); + Authenticator.setDefault(new Authenticator() { + @Override + protected PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication(username, password); + } + }); + } + URL website = new URL(urlString); + ReadableByteChannel rbc; + rbc = Channels.newChannel(website.openStream()); + FileOutputStream fos = new FileOutputStream(destination); + fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); + fos.close(); + rbc.close(); + } + +} diff --git a/eseal/.mvn/wrapper/maven-wrapper.jar b/eseal/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000..2cc7d4a Binary files /dev/null and b/eseal/.mvn/wrapper/maven-wrapper.jar differ diff --git a/eseal/.mvn/wrapper/maven-wrapper.properties b/eseal/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..642d572 --- /dev/null +++ b/eseal/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,2 @@ +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar diff --git a/eseal/mvnw b/eseal/mvnw new file mode 100755 index 0000000..00d86d2 --- /dev/null +++ b/eseal/mvnw @@ -0,0 +1,310 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + fi + while IFS="=" read key value; do + case "$key" in (wrapperUrl) jarUrl="$value"; break ;; + esac + done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` + fi + + if command -v wget > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=`cygpath --path --windows "$javaClass"` + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.gr.grnet.eseal.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/eseal/mvnw.cmd b/eseal/mvnw.cmd new file mode 100644 index 0000000..9a028a1 --- /dev/null +++ b/eseal/mvnw.cmd @@ -0,0 +1,182 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.gr.grnet.eseal.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.gr.grnet.eseal.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + +FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause + +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% + +exit /B %ERROR_CODE% diff --git a/eseal/pom.xml b/eseal/pom.xml new file mode 100644 index 0000000..2315baa --- /dev/null +++ b/eseal/pom.xml @@ -0,0 +1,220 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.4.2 + + + gr.grnet + eseal + 0.0.1-SNAPSHOT + eseal + Eseal module for eThemisID responsible for signing, timestamping and validating PDF documents + + + 1.8 + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-test + test + + + org.springframework.boot + spring-boot-configuration-processor + true + + + org.springframework.boot + spring-boot-starter-aop + + + net.logstash.logback + logstash-logback-encoder + 6.6 + + + dev.samstevens.totp + totp + 1.7.1 + + + + org.apache.httpcomponents + httpclient + 4.5.13 + + + org.projectlombok + lombok + 1.18.16 + provided + + + + org.apache.commons + commons-lang3 + 3.0 + + + org.hibernate + hibernate-validator + 6.0.13.Final + + + + + org.hibernate + hibernate-validator-annotation-processor + 6.0.13.Final + + + + + eu.europa.ec.joinup.sd-dss + dss-service + 5.7 + + + commons-logging + commons-logging + + + + + eu.europa.ec.joinup.sd-dss + dss-tsl-validation + 5.7 + + + eu.europa.ec.joinup.sd-dss + dss-crl-parser-stream + 5.7 + + + eu.europa.ec.joinup.sd-dss + dss-validation-rest + 5.7 + compile + + + eu.europa.ec.joinup.sd-dss + dss-pades-pdfbox + 5.7 + + + commons-logging + commons-logging + + + + + + eu.europa.ec.joinup.sd-dss + dss-utils-google-guava + 5.7 + + + + com.fasterxml.jackson.jaxrs + jackson-jaxrs-json-provider + 2.11.0 + + + io.vavr + vavr + 0.10.3 + + + + + + + + cefdigital + cefdigital + https://ec.europa.eu/cefdigital/artifact/content/repositories/esignaturedss/ + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + true + + + + + + com.diffplug.spotless + spotless-maven-plugin + 2.9.0 + + + + check + + validate + + + + + + + + + 1.7 + + + + + + + + + + org.apache.maven.plugins + maven-checkstyle-plugin + 3.1.2 + + + com.puppycrawl.tools + checkstyle + 8.40 + + + + src/main/resources/checkstyle.xml + UTF-8 + true + true + false + + + + validate-sources + validate + + check + + + + + + + + + diff --git a/eseal/src/main/java/gr/grnet/eseal/EsealApplication.java b/eseal/src/main/java/gr/grnet/eseal/EsealApplication.java new file mode 100644 index 0000000..655efcc --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/EsealApplication.java @@ -0,0 +1,12 @@ +package gr.grnet.eseal; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class EsealApplication { + + public static void main(String[] args) { + SpringApplication.run(EsealApplication.class, args); + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/aop/AspectComponent.java b/eseal/src/main/java/gr/grnet/eseal/aop/AspectComponent.java new file mode 100644 index 0000000..f8e2aef --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/aop/AspectComponent.java @@ -0,0 +1,125 @@ +package gr.grnet.eseal.aop; + +import static net.logstash.logback.argument.StructuredArguments.f; + +import gr.grnet.eseal.exception.APIError; +import gr.grnet.eseal.logging.RequestLogField; +import gr.grnet.eseal.utils.Utils; +import java.util.Objects; +import java.util.Optional; +import java.util.UUID; +import javax.servlet.http.HttpServletRequest; +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.AfterReturning; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Pointcut; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.slf4j.MDC; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.EnableAspectJAutoProxy; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Component; + +/** + * Around advice can perform custom behavior before and after the method invocation. The {@link + * #log} Around counts the incoming request processing time and logs info about it. This aspect + * component is triggered for each method under the RestController annotation. + */ +@Aspect +@Component +@EnableAspectJAutoProxy(proxyTargetClass = true) +public class AspectComponent { + @Autowired private HttpServletRequest request; + + @Pointcut("within(@org.springframework.web.bind.annotation.RestController *)") + public void restController() {} + + @Around("restController()") + public Object log(ProceedingJoinPoint joinPoint) throws Throwable { + + MDC.put("request_id", String.valueOf(UUID.randomUUID())); + + RequestLogField f = + RequestLogField.builder() + .path(request.getServletPath()) + .method(request.getMethod()) + .build(); + + getLogger(joinPoint).info("New Request", f(f)); + + long start = System.currentTimeMillis(); + + request.setAttribute("start_time", start); + + Object object = joinPoint.proceed(); + + RequestLogField field = + RequestLogField.builder() + .path(request.getServletPath()) + .method(request.getMethod()) + .processingTime(Utils.formatTimePeriod(start)) + .status(HttpStatus.OK.toString()) + .documentName(request.getSession().getAttribute("document_name").toString()) + .build(); + + getLogger(joinPoint).info("Request completed", f(field)); + + MDC.remove("request_id"); + + return object; + } + + @Pointcut("within(@org.springframework.web.bind.annotation.ControllerAdvice *)") + public void beanAnnotatedWithControllerAdvice() {} + + @Pointcut("execution(public * *(..))") + public void publicMethod() {} + + @Pointcut("publicMethod() && beanAnnotatedWithControllerAdvice()") + public void publicMethodInsideAClassMarkedWithAtBeanAnnotatedWithControllerAdvice() {} + + @AfterReturning( + pointcut = "publicMethodInsideAClassMarkedWithAtBeanAnnotatedWithControllerAdvice()", + returning = "response") + public void logAfterReturningException(JoinPoint joinPoint, Object response) throws Throwable { + + if (Objects.isNull(MDC.get("request_id"))) { + MDC.put("request_id", String.valueOf(UUID.randomUUID())); + } + + ResponseEntity error = (ResponseEntity) response; + + RequestLogField field = + RequestLogField.builder() + .path(request.getServletPath()) + .method(request.getMethod()) + .processingTime( + Utils.formatTimePeriod( + Optional.ofNullable((Long) request.getAttribute("start_time")) + .orElse(System.currentTimeMillis()))) + .status(error.getStatusCode().toString()) + .documentName( + Optional.ofNullable(request.getSession().getAttribute("document_name")) + .orElse("null-document") + .toString()) + .build(); + + getLogger(joinPoint) + .error( + Optional.ofNullable(error.getBody().getApiErrorBody().getMessage()) + .orElse("Internal server error"), + f(field)); + + MDC.remove("request_id"); + } + + private Logger getLogger(JoinPoint jp) { + + Class clazz = jp.getTarget().getClass(); + return LoggerFactory.getLogger(clazz); + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/api/v1/DocumentSignController.java b/eseal/src/main/java/gr/grnet/eseal/api/v1/DocumentSignController.java new file mode 100644 index 0000000..6fd5cb4 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/api/v1/DocumentSignController.java @@ -0,0 +1,110 @@ +package gr.grnet.eseal.api.v1; + +import gr.grnet.eseal.config.RemoteProviderProperties; +import gr.grnet.eseal.dto.SignDocumentDetachedRequestDto; +import gr.grnet.eseal.dto.SignDocumentDto; +import gr.grnet.eseal.dto.SignDocumentRequestDto; +import gr.grnet.eseal.dto.SignDocumentResponseDto; +import gr.grnet.eseal.enums.Sign; +import gr.grnet.eseal.enums.VisibleSignatureText; +import gr.grnet.eseal.service.SignDocumentService; +import gr.grnet.eseal.service.SignDocumentServiceFactory; +import gr.grnet.eseal.sign.RemoteProviderCertificates; +import gr.grnet.eseal.sign.response.RemoteProviderCertificatesResponse; +import gr.grnet.eseal.utils.validation.Base64RequestFieldCheckGroup; +import gr.grnet.eseal.utils.validation.NotEmptySignDocumentRequestFieldsCheckGroup; +import gr.grnet.eseal.utils.validation.ValueOfEnumRequestFieldCheckGroup; +import java.util.Date; +import javax.servlet.http.HttpSession; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/api/v1/signing/") +public class DocumentSignController { + + private final SignDocumentServiceFactory signDocumentServiceFactory; + private final RemoteProviderProperties remoteProviderProperties; + private final RemoteProviderCertificates remoteProviderCertificates; + + @Autowired + public DocumentSignController( + SignDocumentServiceFactory signDocumentServiceFactory, + RemoteProviderProperties remoteProviderProperties, + RemoteProviderCertificates remoteProviderCertificates) { + this.signDocumentServiceFactory = signDocumentServiceFactory; + this.remoteProviderProperties = remoteProviderProperties; + this.remoteProviderCertificates = remoteProviderCertificates; + } + + @PostMapping("/remoteSignDocument") + public SignDocumentResponseDto signDocument( + @Validated( + value = { + NotEmptySignDocumentRequestFieldsCheckGroup.class, + Base64RequestFieldCheckGroup.class + }) + @RequestBody + SignDocumentRequestDto signDocumentRequestDto, + HttpSession session) { + + session.setAttribute("document_name", signDocumentRequestDto.getToSignDocument().getName()); + + return new SignDocumentResponseDto( + this.signDocumentServiceFactory + .create(Sign.REMOTE_SIGN) + .signDocument( + SignDocumentDto.builder() + .bytes(signDocumentRequestDto.getToSignDocument().getBytes()) + .username(signDocumentRequestDto.getUsername()) + .password(signDocumentRequestDto.getPassword()) + .key(signDocumentRequestDto.getKey()) + .build())); + } + + @PostMapping("/remoteSignDocumentDetached") + public SignDocumentResponseDto signDocumentDetached( + @Validated( + value = { + NotEmptySignDocumentRequestFieldsCheckGroup.class, + Base64RequestFieldCheckGroup.class, + ValueOfEnumRequestFieldCheckGroup.class + }) + @RequestBody + SignDocumentDetachedRequestDto signDocumentDetachedRequestDto, + HttpSession session) { + + session.setAttribute( + "document_name", signDocumentDetachedRequestDto.getToSignDocument().getName()); + + RemoteProviderCertificatesResponse userCertificates = + SignDocumentService.getUserCertificates( + signDocumentDetachedRequestDto.getUsername(), + signDocumentDetachedRequestDto.getPassword(), + this.remoteProviderProperties.getEndpoint(), + this.remoteProviderCertificates); + + return new SignDocumentResponseDto( + this.signDocumentServiceFactory + .create(Sign.PKCS1) + .signDocument( + SignDocumentDto.builder() + .key(signDocumentDetachedRequestDto.getKey()) + .username(signDocumentDetachedRequestDto.getUsername()) + .password(signDocumentDetachedRequestDto.getPassword()) + .bytes(signDocumentDetachedRequestDto.getToSignDocument().getBytes()) + .imageBytes(signDocumentDetachedRequestDto.getImageBytes()) + .signingDate(new Date()) + .signerInfo( + SignDocumentService.getSignerInfo( + userCertificates, + VisibleSignatureText.valueOf( + signDocumentDetachedRequestDto.getVisibleSignatureText()))) + .certificateList(SignDocumentService.getCertificatesToken(userCertificates)) + .build())); + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/api/v1/DocumentTimestampController.java b/eseal/src/main/java/gr/grnet/eseal/api/v1/DocumentTimestampController.java new file mode 100644 index 0000000..497e10f --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/api/v1/DocumentTimestampController.java @@ -0,0 +1,47 @@ +package gr.grnet.eseal.api.v1; + +import gr.grnet.eseal.dto.TimestampDocumentRequestDto; +import gr.grnet.eseal.dto.TimestampDocumentResponseDto; +import gr.grnet.eseal.enums.TSASourceEnum; +import gr.grnet.eseal.service.TimestampDocumentService; +import gr.grnet.eseal.utils.validation.Base64RequestFieldCheckGroup; +import gr.grnet.eseal.utils.validation.NotEmptyTimestampDocumentRequestFieldsCheckGroup; +import gr.grnet.eseal.utils.validation.ValueOfEnumRequestFieldCheckGroup; +import javax.servlet.http.HttpSession; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/api/v1/timestamping") +public class DocumentTimestampController { + + private final TimestampDocumentService timestampDocumentService; + + public DocumentTimestampController(TimestampDocumentService timestampDocumentService) { + this.timestampDocumentService = timestampDocumentService; + } + + @PostMapping("/remoteTimestampDocument") + public TimestampDocumentResponseDto timestampDocument( + @Validated( + value = { + NotEmptyTimestampDocumentRequestFieldsCheckGroup.class, + Base64RequestFieldCheckGroup.class, + ValueOfEnumRequestFieldCheckGroup.class + }) + @RequestBody + TimestampDocumentRequestDto timestampDocumentRequestDto, + HttpSession session) { + + session.setAttribute( + "document_name", timestampDocumentRequestDto.getToTimestampDocument().getName()); + + return new TimestampDocumentResponseDto( + timestampDocumentService.timestampDocument( + timestampDocumentRequestDto.getToTimestampDocument().getBytes(), + TSASourceEnum.valueOf(timestampDocumentRequestDto.getTsaSource()))); + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/api/v1/DocumentValidateController.java b/eseal/src/main/java/gr/grnet/eseal/api/v1/DocumentValidateController.java new file mode 100644 index 0000000..2ad7b37 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/api/v1/DocumentValidateController.java @@ -0,0 +1,44 @@ +package gr.grnet.eseal.api.v1; + +import eu.europa.esig.dss.ws.validation.dto.WSReportsDTO; +import gr.grnet.eseal.dto.ValidateDocumentRequestDto; +import gr.grnet.eseal.service.ValidateDocumentService; +import gr.grnet.eseal.utils.validation.Base64RequestFieldCheckGroup; +import gr.grnet.eseal.utils.validation.NotEmptyValidateDocumentRequestFieldsCheckGroup; +import javax.servlet.http.HttpSession; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/api/v1/validation/") +public class DocumentValidateController { + + private final ValidateDocumentService validateDocumentService; + + @Autowired + public DocumentValidateController(ValidateDocumentService validateDocumentService) { + this.validateDocumentService = validateDocumentService; + } + + @PostMapping("/validateDocument") + public WSReportsDTO validateDocument( + @Validated( + value = { + NotEmptyValidateDocumentRequestFieldsCheckGroup.class, + Base64RequestFieldCheckGroup.class + }) + @RequestBody + ValidateDocumentRequestDto validateDocumentRequestDto, + HttpSession session) { + + session.setAttribute("document_name", validateDocumentRequestDto.getSignedDocument().getName()); + + return this.validateDocumentService.validateDocument( + validateDocumentRequestDto.getSignedDocument().getBytes(), + validateDocumentRequestDto.getSignedDocument().getName()); + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/config/ApedTSASourceProperties.java b/eseal/src/main/java/gr/grnet/eseal/config/ApedTSASourceProperties.java new file mode 100644 index 0000000..d25623f --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/config/ApedTSASourceProperties.java @@ -0,0 +1,9 @@ +package gr.grnet.eseal.config; + +import gr.grnet.eseal.timestamp.DefaultTSASourceProperties; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Component +@ConfigurationProperties(prefix = "eseal.tsa.aped") +public class ApedTSASourceProperties extends DefaultTSASourceProperties {} diff --git a/eseal/src/main/java/gr/grnet/eseal/config/DocumentValidatorLOTLBean.java b/eseal/src/main/java/gr/grnet/eseal/config/DocumentValidatorLOTLBean.java new file mode 100644 index 0000000..a259d7d --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/config/DocumentValidatorLOTLBean.java @@ -0,0 +1,68 @@ +package gr.grnet.eseal.config; + +import static net.logstash.logback.argument.StructuredArguments.f; + +import gr.grnet.eseal.logging.ServiceLogField; +import gr.grnet.eseal.validation.DocumentValidatorLOTL; +import lombok.Getter; +import lombok.Setter; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; + +/** + * DocumentValidatorLOTLBean is a {@link Bean} responsible for the exposure of the + * DocumentValidatorLOTL that will be used by the validation service + */ +@Setter +@Getter +@Configuration +@EnableScheduling +public class DocumentValidatorLOTLBean { + + private static final Logger LOGGER = LoggerFactory.getLogger(DocumentValidatorLOTLBean.class); + + private DocumentValidatorLOTL lotlValidator; + + private int refreshCounter = 1; + + /** Enable online refresh on intervals */ + @Value("${eseal.validation.lotl.refresh.enable}") + private Boolean lotlRefreshEnable; + + @Value("${eseal.validation.lotl.refresh.initial.delay}") + private int refreshInitialDelay; + + @Value("${eseal.validation.lotl.refresh.interval}") + private int refreshInterval; + + @Autowired + public DocumentValidatorLOTLBean(ValidationProperties validationProperties) throws Exception { + this.lotlValidator = new DocumentValidatorLOTL(validationProperties); + this.lotlValidator.initialize(); + } + + @Bean + public DocumentValidatorLOTL lotlValidator() { + return this.lotlValidator; + } + + @Scheduled( + initialDelayString = "${eseal.validation.lotl.refresh.initial.delay}", + fixedDelayString = "${eseal.validation.lotl.refresh.interval}") + public void refreshLOTL() { + if (this.lotlRefreshEnable) { + LOGGER.info( + "Running online refresh for the {} time . . .", + refreshCounter, + f(ServiceLogField.builder().build())); + this.lotlValidator().onlineLOTLRefresh(); + refreshCounter++; + } + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/config/HaricaTSASourceProperties.java b/eseal/src/main/java/gr/grnet/eseal/config/HaricaTSASourceProperties.java new file mode 100644 index 0000000..3b2232d --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/config/HaricaTSASourceProperties.java @@ -0,0 +1,15 @@ +package gr.grnet.eseal.config; + +import gr.grnet.eseal.timestamp.TSASourcePropertiesWithBasicAuth; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@NoArgsConstructor +@Getter +@Setter +@Component +@ConfigurationProperties(prefix = "eseal.tsa.harica") +public class HaricaTSASourceProperties extends TSASourcePropertiesWithBasicAuth {} diff --git a/eseal/src/main/java/gr/grnet/eseal/config/HibernateValidatorConfig.java b/eseal/src/main/java/gr/grnet/eseal/config/HibernateValidatorConfig.java new file mode 100644 index 0000000..9dcf813 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/config/HibernateValidatorConfig.java @@ -0,0 +1,22 @@ +package gr.grnet.eseal.config; + +import javax.validation.Validation; +import javax.validation.Validator; +import javax.validation.ValidatorFactory; +import org.hibernate.validator.HibernateValidator; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class HibernateValidatorConfig { + + @Bean + public Validator validator() { + ValidatorFactory validatorFactory = + Validation.byProvider(HibernateValidator.class) + .configure() + .failFast(true) + .buildValidatorFactory(); + return validatorFactory.getValidator(); + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/config/ObjectMapperWithJaxbAndDefaultSupportBean.java b/eseal/src/main/java/gr/grnet/eseal/config/ObjectMapperWithJaxbAndDefaultSupportBean.java new file mode 100644 index 0000000..866f99d --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/config/ObjectMapperWithJaxbAndDefaultSupportBean.java @@ -0,0 +1,48 @@ +package gr.grnet.eseal.config; + +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.databind.introspect.AnnotationIntrospectorPair; +import com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector; +import com.fasterxml.jackson.databind.type.TypeFactory; +import com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; + +/** + * Exposes an {@link ObjectMapper} {@link Bean} in order to override Spring's default. The new + * mapper supports both, {@link JacksonAnnotationIntrospector} as a primary and {@link + * JaxbAnnotationIntrospector} as a secondary. + */ +@Configuration +public class ObjectMapperWithJaxbAndDefaultSupportBean { + + @Bean + @Primary + public ObjectMapper objectMapperWithJaxbAndDefaultSupport() { + + ObjectMapper objectMapper = new ObjectMapper(); + + // initialize the jaxb annotation introspector + JaxbAnnotationIntrospector jaxbAnnotationIntrospector = + new JaxbAnnotationIntrospector(TypeFactory.defaultInstance()); + + // initialize the default jackson annotation introspector + JacksonAnnotationIntrospector jacksonAnnotationIntrospector = + new JacksonAnnotationIntrospector(); + + // set up the annotation introspector pair with primary + // being the default jackson introspector + AnnotationIntrospectorPair annotationIntrospectorPair = + new AnnotationIntrospectorPair(jacksonAnnotationIntrospector, jaxbAnnotationIntrospector); + + objectMapper.setAnnotationIntrospector(annotationIntrospectorPair); + + objectMapper.configure(SerializationFeature.INDENT_OUTPUT, true); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + + return objectMapper; + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/config/RemoteHttpEsealClientBean.java b/eseal/src/main/java/gr/grnet/eseal/config/RemoteHttpEsealClientBean.java new file mode 100644 index 0000000..fbd7e2e --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/config/RemoteHttpEsealClientBean.java @@ -0,0 +1,108 @@ +package gr.grnet.eseal.config; + +import java.io.IOException; +import java.io.InputStream; +import java.security.KeyManagementException; +import java.security.KeyStore; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.security.SecureRandom; +import java.security.cert.CertificateException; +import java.security.cert.X509Certificate; +import javax.net.ssl.SSLContext; +import javax.net.ssl.TrustManager; +import javax.net.ssl.TrustManagerFactory; +import javax.net.ssl.X509TrustManager; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.config.SocketConfig; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * RemoteHttpEsealClientBean is a {@link Bean} responsible for the exposure of the http client that + * will take care of signing and timestamping documents, using a remote provider + */ +@Configuration +public class RemoteHttpEsealClientBean { + + private final RemoteProviderProperties remoteProviderProperties; + private static final int SOCKET_TIMEOUT = 30000; + private static final int CONNECTION_TIMEOUT = 30000; + private static final int CONNECTION_REQUEST_TIMEOUT = 30000; + + @Autowired + public RemoteHttpEsealClientBean(RemoteProviderProperties remoteProviderProperties) { + this.remoteProviderProperties = remoteProviderProperties; + } + + @Bean + public CloseableHttpClient httpClient() + throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException, IOException, + CertificateException { + // socket config + SocketConfig socketCfg = SocketConfig.custom().setSoTimeout(SOCKET_TIMEOUT).build(); + + RequestConfig reqCfg = + RequestConfig.custom() + .setConnectTimeout(CONNECTION_TIMEOUT) + .setConnectionRequestTimeout(CONNECTION_REQUEST_TIMEOUT) + .build(); + + // ssl context + SSLContext sslContext = SSLContext.getInstance("SSL"); + + // set up a TrustManager that trusts everything + if (!this.remoteProviderProperties.isTlsVerifyEnabled()) { + sslContext.init( + null, + new TrustManager[] { + new X509TrustManager() { + public X509Certificate[] getAcceptedIssuers() { + return null; + } + + public void checkClientTrusted(X509Certificate[] certs, String authType) {} + + public void checkServerTrusted(X509Certificate[] certs, String authType) {} + } + }, + new SecureRandom()); + } else { + + // set up a trust manager with the appropriate client truststore + // in order to verify the remote provider api + + /* Load client truststore. */ + KeyStore theClientTruststore = + KeyStore.getInstance(this.remoteProviderProperties.getTruststoreType()); + + InputStream clientTruststoreIS = + this.getClass() + .getResourceAsStream("/".concat(this.remoteProviderProperties.getTruststoreFile())); + + theClientTruststore.load( + clientTruststoreIS, this.remoteProviderProperties.getTruststorePassword().toCharArray()); + + /* Create a trust manager factory using the client truststore. */ + final TrustManagerFactory theTrustManagerFactory = + TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); + theTrustManagerFactory.init(theClientTruststore); + + /* + * Create a SSL context with a trust manager that uses the + * client truststore. + */ + sslContext.init(null, theTrustManagerFactory.getTrustManagers(), new SecureRandom()); + } + + // build the client + return HttpClients.custom() + .setSSLContext(sslContext) + .setDefaultRequestConfig(reqCfg) + .setDefaultSocketConfig(socketCfg) + .build(); + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/config/RemoteProviderProperties.java b/eseal/src/main/java/gr/grnet/eseal/config/RemoteProviderProperties.java new file mode 100644 index 0000000..c86d223 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/config/RemoteProviderProperties.java @@ -0,0 +1,61 @@ +package gr.grnet.eseal.config; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +/** + * RemoteProviderProperties holds the configuration properties regarding the interaction of the API + * with the Provider's rest api for signing and timestamping documents + */ +@Setter +@Getter +@NoArgsConstructor +@Configuration +@ConfigurationProperties(prefix = "eseal.remote.provider") +public class RemoteProviderProperties { + + /** Remote provider's rest api endpoint this value will map to eseal.remote.provider.endpoint */ + private String endpoint; + + /** Retry requests on the remove provider if an error occurs */ + @Value("${eseal.remote.provider.retry.enabled}") + private boolean retryEnabled; + + /** Request retry counter */ + @Value("${eseal.remote.provider.retry.counter}") + private int retryCounter; + + /** Time in seconds between retry attempts */ + @Value("${eseal.remote.provider.retry.interval}") + private int retryInterval; + + /** + * Time in seconds that indicate for what time values should we wait for a new token to get + * generated rather than using the already created one which near expiration + */ + @Value("${eseal.remote.provider.totp.refresh.seconds.wait}") + private int totpWaitForRefreshSeconds; + + /** + * Try to verify the remote API certs using a client truststore, otherwise use a TRUST_ALL + * strategy + */ + @Value("${eseal.remote.provider.tls.verify}") + private boolean tlsVerifyEnabled; + + /** Keystore file containing the needed certs to verify the remote API(client truststore) */ + @Value("${eseal.remote.provider.truststore.file}") + private String truststoreFile; + + /** Password to access the client truststore */ + @Value("${eseal.remote.provider.truststore.password}") + private String truststorePassword; + + /** Type of the client truststore */ + @Value("${eseal.remote.provider.truststore.type}") + private String truststoreType; +} diff --git a/eseal/src/main/java/gr/grnet/eseal/config/TSASourceRegistryBean.java b/eseal/src/main/java/gr/grnet/eseal/config/TSASourceRegistryBean.java new file mode 100644 index 0000000..b2fd290 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/config/TSASourceRegistryBean.java @@ -0,0 +1,30 @@ +package gr.grnet.eseal.config; + +import gr.grnet.eseal.timestamp.TSASourcePropertiesFactory; +import gr.grnet.eseal.timestamp.TSASourceRegistry; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class TSASourceRegistryBean { + + private HaricaTSASourceProperties haricaTSASourceProperties; + + private ApedTSASourceProperties apedTSASourceProperties; + + @Autowired + public TSASourceRegistryBean( + HaricaTSASourceProperties haricaTSASourceProperties, + ApedTSASourceProperties apedTSASourceProperties) { + this.haricaTSASourceProperties = haricaTSASourceProperties; + this.apedTSASourceProperties = apedTSASourceProperties; + } + + @Bean + public TSASourceRegistry tsaSourceRegistry() { + return new TSASourceRegistry( + new TSASourcePropertiesFactory( + this.apedTSASourceProperties, this.haricaTSASourceProperties)); + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/config/ValidationProperties.java b/eseal/src/main/java/gr/grnet/eseal/config/ValidationProperties.java new file mode 100644 index 0000000..388c227 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/config/ValidationProperties.java @@ -0,0 +1,54 @@ +package gr.grnet.eseal.config; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; + +/** + * ValidationProperties holds all configuration information needed for the initialization of the + * {@link gr.grnet.eseal.validation.DocumentValidatorLOTL} + */ +@Getter +@Setter +@NoArgsConstructor +@Configuration +public class ValidationProperties { + + /** Keystore to be used to access the lotl source */ + @Value("${eseal.validation.oj.keystore.filename}") + private String officialJournalKeystoreFile; + + /** Official journal keystore type */ + @Value("${eseal.validation.oj.keystore.type}") + private String officialJournalKeystoreType; + + /** Official journal keystore password */ + @Value("${eseal.validation.oj.keystore.password}") + private String officialJournalKeystorePassword; + + /** Official journal url */ + @Value("${eseal.validation.oj.url}") + private String officialJournalUrl; + + /** European lotl url */ + @Value("${eseal.validation.lotl.url}") + private String lotlUrl; + + /** LOTL trust sources file system cache directory */ + @Value("${eseal.validation.lotl.cache.dir}") + private String lotlCacheDir; + + /** Extra trust material in order to access LOTL sources */ + @Value("${eseal.validation.lotl.extra.truststore.file}") + private String extraTrustStoreFile; + + /** Extra truststore password */ + @Value("${eseal.validation.lotl.extra.truststore.password}") + private String extraTrustStorePassword; + + /** Extra truststore type */ + @Value("${eseal.validation.lotl.extra.truststore.type}") + private String extraTrustStoreType; +} diff --git a/eseal/src/main/java/gr/grnet/eseal/config/VisibleSignatureProperties.java b/eseal/src/main/java/gr/grnet/eseal/config/VisibleSignatureProperties.java new file mode 100644 index 0000000..7a82521 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/config/VisibleSignatureProperties.java @@ -0,0 +1,24 @@ +package gr.grnet.eseal.config; + +import eu.europa.esig.dss.model.DSSDocument; +import eu.europa.esig.dss.pades.DSSFont; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class VisibleSignatureProperties { + + private DSSFont font; + + private DSSDocument imageDocument; + + private DateTimeFormatter dateTimeFormatter = + DateTimeFormatter.ofPattern("yyyy.MM.dd HH:mm:ss z"); + + private ZoneId zoneId = ZoneId.of("Europe/Athens"); +} diff --git a/eseal/src/main/java/gr/grnet/eseal/config/VisibleSignaturePropertiesBean.java b/eseal/src/main/java/gr/grnet/eseal/config/VisibleSignaturePropertiesBean.java new file mode 100644 index 0000000..ef3f9e6 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/config/VisibleSignaturePropertiesBean.java @@ -0,0 +1,42 @@ +package gr.grnet.eseal.config; + +import eu.europa.esig.dss.model.DSSDocument; +import eu.europa.esig.dss.model.InMemoryDocument; +import eu.europa.esig.dss.model.MimeType; +import eu.europa.esig.dss.pades.DSSFileFont; +import eu.europa.esig.dss.pades.DSSFont; +import lombok.NoArgsConstructor; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +@NoArgsConstructor +public class VisibleSignaturePropertiesBean { + + @Bean + public VisibleSignatureProperties visibleSignatureProperties() { + + VisibleSignatureProperties visibleSignatureProperties = new VisibleSignatureProperties(); + + // load the default image + DSSDocument imageDocument = + new InMemoryDocument( + VisibleSignaturePropertiesBean.class.getResourceAsStream( + "/visible-signature/".concat("ste.jpg"))); + imageDocument.setMimeType(MimeType.JPEG); + imageDocument.setName("ste.jpg"); + + visibleSignatureProperties.setImageDocument(imageDocument); + + // load the DejaVuSans font + DSSFont font = + new DSSFileFont( + VisibleSignaturePropertiesBean.class.getResourceAsStream( + "/visible-signature/".concat("DejaVuSans.ttf"))); + font.setSize(6); + + visibleSignatureProperties.setFont(font); + + return visibleSignatureProperties; + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/dto/SignDocumentDetachedRequestDto.java b/eseal/src/main/java/gr/grnet/eseal/dto/SignDocumentDetachedRequestDto.java new file mode 100644 index 0000000..0eb5620 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/dto/SignDocumentDetachedRequestDto.java @@ -0,0 +1,21 @@ +package gr.grnet.eseal.dto; + +import gr.grnet.eseal.enums.VisibleSignatureText; +import gr.grnet.eseal.utils.ValueOfEnum; +import gr.grnet.eseal.utils.validation.ValueOfEnumRequestFieldCheckGroup; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class SignDocumentDetachedRequestDto extends SignDocumentRequestDto { + private String imageBytes = ""; + + @ValueOfEnum( + groups = ValueOfEnumRequestFieldCheckGroup.class, + enumClass = VisibleSignatureText.class, + message = "Possible values of property visibleSignatureText are [CN, OU, CN_OU, TEXT]") + private String visibleSignatureText = VisibleSignatureText.OU.name(); +} diff --git a/eseal/src/main/java/gr/grnet/eseal/dto/SignDocumentDto.java b/eseal/src/main/java/gr/grnet/eseal/dto/SignDocumentDto.java new file mode 100644 index 0000000..436c670 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/dto/SignDocumentDto.java @@ -0,0 +1,26 @@ +package gr.grnet.eseal.dto; + +import eu.europa.esig.dss.model.x509.CertificateToken; +import gr.grnet.eseal.enums.VisibleSignatureText; +import java.util.Date; +import java.util.List; +import lombok.Builder; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@Builder +public class SignDocumentDto { + + private String username; + private String password; + private String key; + private String bytes; + private String name; + private String imageBytes = ""; + private Date signingDate; + private String signerInfo; + List certificateList; + private VisibleSignatureText visibleSignatureText; +} diff --git a/eseal/src/main/java/gr/grnet/eseal/dto/SignDocumentRequestDto.java b/eseal/src/main/java/gr/grnet/eseal/dto/SignDocumentRequestDto.java new file mode 100644 index 0000000..3bdeaf0 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/dto/SignDocumentRequestDto.java @@ -0,0 +1,39 @@ +package gr.grnet.eseal.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; +import gr.grnet.eseal.utils.validation.NotEmptySignDocumentRequestFieldsCheckGroup; +import javax.validation.Valid; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +/** SignDocumentRequestDto represents an incoming signing request. */ +@Setter +@Getter +@NoArgsConstructor +public class SignDocumentRequestDto { + + @NotEmpty( + groups = NotEmptySignDocumentRequestFieldsCheckGroup.class, + message = "Field username cannot be empty") + private String username; + + @NotEmpty( + groups = NotEmptySignDocumentRequestFieldsCheckGroup.class, + message = "Field password cannot be empty") + private String password; + + @NotEmpty( + groups = NotEmptySignDocumentRequestFieldsCheckGroup.class, + message = "Field key cannot be empty") + private String key; + + @NotNull( + groups = NotEmptySignDocumentRequestFieldsCheckGroup.class, + message = "Field toSignDocument cannot be empty") + @JsonProperty("toSignDocument") + @Valid + private ToSignDocument toSignDocument; +} diff --git a/eseal/src/main/java/gr/grnet/eseal/dto/SignDocumentResponseDto.java b/eseal/src/main/java/gr/grnet/eseal/dto/SignDocumentResponseDto.java new file mode 100644 index 0000000..8c8b37b --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/dto/SignDocumentResponseDto.java @@ -0,0 +1,20 @@ +package gr.grnet.eseal.dto; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +/** + * SignDocumentResponseDto represents a response containing the signed document in base64 encoded. + */ +@Setter +@Getter +@NoArgsConstructor +public class SignDocumentResponseDto { + + private String signedDocumentBytes; + + public SignDocumentResponseDto(final String signedDocumentBytes) { + this.signedDocumentBytes = signedDocumentBytes; + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/dto/SignedDocument.java b/eseal/src/main/java/gr/grnet/eseal/dto/SignedDocument.java new file mode 100644 index 0000000..5a493fa --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/dto/SignedDocument.java @@ -0,0 +1,28 @@ +package gr.grnet.eseal.dto; + +import gr.grnet.eseal.utils.validation.Base64; +import gr.grnet.eseal.utils.validation.Base64RequestFieldCheckGroup; +import gr.grnet.eseal.utils.validation.NotEmptyValidateDocumentRequestFieldsCheckGroup; +import javax.validation.constraints.NotEmpty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class SignedDocument { + + @NotEmpty( + groups = NotEmptyValidateDocumentRequestFieldsCheckGroup.class, + message = "Field signedDocument.bytes cannot be empty") + @Base64( + groups = Base64RequestFieldCheckGroup.class, + message = "Field toSignDocument.bytes should be encoded in base64 format") + private String bytes; + + @NotEmpty( + groups = NotEmptyValidateDocumentRequestFieldsCheckGroup.class, + message = "Field signedDocument.name cannot be empty") + private String name; +} diff --git a/eseal/src/main/java/gr/grnet/eseal/dto/TimestampDocumentRequestDto.java b/eseal/src/main/java/gr/grnet/eseal/dto/TimestampDocumentRequestDto.java new file mode 100644 index 0000000..9fb9522 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/dto/TimestampDocumentRequestDto.java @@ -0,0 +1,54 @@ +package gr.grnet.eseal.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; +import gr.grnet.eseal.enums.TSASourceEnum; +import gr.grnet.eseal.utils.ValueOfEnum; +import gr.grnet.eseal.utils.validation.Base64; +import gr.grnet.eseal.utils.validation.Base64RequestFieldCheckGroup; +import gr.grnet.eseal.utils.validation.NotEmptyTimestampDocumentRequestFieldsCheckGroup; +import gr.grnet.eseal.utils.validation.ValueOfEnumRequestFieldCheckGroup; +import javax.validation.Valid; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Setter +@Getter +@NoArgsConstructor +public class TimestampDocumentRequestDto { + + @NotNull( + groups = NotEmptyTimestampDocumentRequestFieldsCheckGroup.class, + message = "Field toTimestampDocument cannot be empty") + @JsonProperty("toTimestampDocument") + @Valid + private TimestampDocumentRequestDto.ToTimestampDocument toTimestampDocument; + + @ValueOfEnum( + groups = ValueOfEnumRequestFieldCheckGroup.class, + enumClass = TSASourceEnum.class, + message = "Possible values of property tsaSource are [APED, HARICA]") + @JsonProperty("tsaSource") + private String tsaSource = TSASourceEnum.HARICA.name(); + + @Getter + @Setter + @NoArgsConstructor + public static class ToTimestampDocument { + + @NotEmpty( + groups = NotEmptyTimestampDocumentRequestFieldsCheckGroup.class, + message = "Field toTimestampDocument.bytes cannot be empty") + @Base64( + groups = Base64RequestFieldCheckGroup.class, + message = "Field toTimestampDocument.bytes should be encoded in base64 format") + private String bytes; + + @NotEmpty( + groups = NotEmptyTimestampDocumentRequestFieldsCheckGroup.class, + message = "Field toTimestampDocument.name cannot be empty") + private String name; + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/dto/TimestampDocumentResponseDto.java b/eseal/src/main/java/gr/grnet/eseal/dto/TimestampDocumentResponseDto.java new file mode 100644 index 0000000..8a8452f --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/dto/TimestampDocumentResponseDto.java @@ -0,0 +1,17 @@ +package gr.grnet.eseal.dto; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Setter +@Getter +@NoArgsConstructor +public class TimestampDocumentResponseDto { + + private String timestampedDocumentBytes; + + public TimestampDocumentResponseDto(String timestampedDocumentBytes) { + this.timestampedDocumentBytes = timestampedDocumentBytes; + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/dto/ToSignDocument.java b/eseal/src/main/java/gr/grnet/eseal/dto/ToSignDocument.java new file mode 100644 index 0000000..ff65fcc --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/dto/ToSignDocument.java @@ -0,0 +1,28 @@ +package gr.grnet.eseal.dto; + +import gr.grnet.eseal.utils.validation.Base64; +import gr.grnet.eseal.utils.validation.Base64RequestFieldCheckGroup; +import gr.grnet.eseal.utils.validation.NotEmptySignDocumentRequestFieldsCheckGroup; +import javax.validation.constraints.NotEmpty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class ToSignDocument { + + @NotEmpty( + groups = NotEmptySignDocumentRequestFieldsCheckGroup.class, + message = "Field toSignDocument.bytes cannot be empty") + @Base64( + groups = Base64RequestFieldCheckGroup.class, + message = "Field toSignDocument.bytes should be encoded in base64 format") + private String bytes; + + @NotEmpty( + groups = NotEmptySignDocumentRequestFieldsCheckGroup.class, + message = "Field toSignDocument.name cannot be empty") + private String name; +} diff --git a/eseal/src/main/java/gr/grnet/eseal/dto/ValidateDocumentRequestDto.java b/eseal/src/main/java/gr/grnet/eseal/dto/ValidateDocumentRequestDto.java new file mode 100644 index 0000000..c3329f1 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/dto/ValidateDocumentRequestDto.java @@ -0,0 +1,23 @@ +package gr.grnet.eseal.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; +import gr.grnet.eseal.utils.validation.NotEmptyValidateDocumentRequestFieldsCheckGroup; +import javax.validation.Valid; +import javax.validation.constraints.NotNull; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +/** ValidateDocumentRequestDto represents an incoming document validation request */ +@Setter +@Getter +@NoArgsConstructor +public class ValidateDocumentRequestDto { + + @NotNull( + groups = NotEmptyValidateDocumentRequestFieldsCheckGroup.class, + message = "Field signedDocument cannot be empty") + @JsonProperty("signedDocument") + @Valid + private SignedDocument signedDocument; +} diff --git a/eseal/src/main/java/gr/grnet/eseal/enums/LogType.java b/eseal/src/main/java/gr/grnet/eseal/enums/LogType.java new file mode 100644 index 0000000..3fba158 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/enums/LogType.java @@ -0,0 +1,20 @@ +package gr.grnet.eseal.enums; + +import com.fasterxml.jackson.annotation.JsonValue; + +public enum LogType { + REQUEST_LOG("request_log"), + BACKEND_LOG("backend_log"), + SERVICE_LOG("service_log"); + + private final String type; + + LogType(String type) { + this.type = type; + } + + @JsonValue + public String getType() { + return type; + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/enums/Path.java b/eseal/src/main/java/gr/grnet/eseal/enums/Path.java new file mode 100644 index 0000000..8d36a16 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/enums/Path.java @@ -0,0 +1,18 @@ +package gr.grnet.eseal.enums; + +public enum Path { + REMOTE_SIGNING("dsa/v1/sign"), + REMOTE_SIGNING_BUFFER("dsa/v1/SignBuffer"), + REMOTE_CERTIFICATES("dsa/v1/Certificates"); + + public final String path; + + Path(String endpoint) { + this.path = endpoint; + } + + @Override + public String toString() { + return path; + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/enums/Sign.java b/eseal/src/main/java/gr/grnet/eseal/enums/Sign.java new file mode 100644 index 0000000..13c0684 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/enums/Sign.java @@ -0,0 +1,7 @@ +package gr.grnet.eseal.enums; + +public enum Sign { + REMOTE_SIGN, + PKCS7, + PKCS1; +} diff --git a/eseal/src/main/java/gr/grnet/eseal/enums/TSASourceEnum.java b/eseal/src/main/java/gr/grnet/eseal/enums/TSASourceEnum.java new file mode 100644 index 0000000..a7aa708 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/enums/TSASourceEnum.java @@ -0,0 +1,6 @@ +package gr.grnet.eseal.enums; + +public enum TSASourceEnum { + APED, + HARICA +} diff --git a/eseal/src/main/java/gr/grnet/eseal/enums/VisibleSignatureText.java b/eseal/src/main/java/gr/grnet/eseal/enums/VisibleSignatureText.java new file mode 100644 index 0000000..1aa1173 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/enums/VisibleSignatureText.java @@ -0,0 +1,8 @@ +package gr.grnet.eseal.enums; + +public enum VisibleSignatureText { + CN, + OU, + CN_OU, + TEXT; +} diff --git a/eseal/src/main/java/gr/grnet/eseal/exception/APIError.java b/eseal/src/main/java/gr/grnet/eseal/exception/APIError.java new file mode 100644 index 0000000..7af5f07 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/exception/APIError.java @@ -0,0 +1,39 @@ +package gr.grnet.eseal.exception; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.springframework.http.HttpStatus; + +/** + * APIError encapsulates all needed information that should return as a response to the API client + * when an error has occurred. + */ +@Getter +@Setter +@NoArgsConstructor +public class APIError { + + @JsonProperty("error") + private APIErrorBody apiErrorBody; + + APIError(int code, String message, HttpStatus status) { + this.apiErrorBody = new APIErrorBody(code, message, status); + } + + @Getter + @Setter + @NoArgsConstructor + public final class APIErrorBody { + private int code; + private String message; + private HttpStatus status; + + private APIErrorBody(int code, String message, HttpStatus status) { + this.code = code; + this.message = message; + this.status = status; + } + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/exception/APIException.java b/eseal/src/main/java/gr/grnet/eseal/exception/APIException.java new file mode 100644 index 0000000..51e983f --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/exception/APIException.java @@ -0,0 +1,33 @@ +package gr.grnet.eseal.exception; + +import org.springframework.http.HttpStatus; + +/** + * APIException holds information about the exceptions that can take place during any of the API + * calls. + */ +public class APIException extends RuntimeException { + + private int code; + private String message; + private HttpStatus status; + + public APIException(int code, String message, HttpStatus status) { + this.code = code; + this.message = message; + this.status = status; + } + + public int getCode() { + return code; + } + + @Override + public String getMessage() { + return message; + } + + public HttpStatus getStatus() { + return status; + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/exception/GlobalExceptionHandler.java b/eseal/src/main/java/gr/grnet/eseal/exception/GlobalExceptionHandler.java new file mode 100644 index 0000000..19d1ba0 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/exception/GlobalExceptionHandler.java @@ -0,0 +1,75 @@ +package gr.grnet.eseal.exception; + +import static net.logstash.logback.argument.StructuredArguments.f; + +import gr.grnet.eseal.logging.ServiceLogField; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.http.converter.HttpMessageNotReadableException; +import org.springframework.web.HttpMediaTypeNotSupportedException; +import org.springframework.web.bind.MethodArgumentNotValidException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.context.request.WebRequest; + +@ControllerAdvice +public class GlobalExceptionHandler { + + private static final Logger LOGGER = LoggerFactory.getLogger(GlobalExceptionHandler.class); + + // Handle errors regrading the validation of request fields + @ExceptionHandler(MethodArgumentNotValidException.class) + public ResponseEntity handleWrongInput( + MethodArgumentNotValidException apiEx, WebRequest request) { + APIError errorResponse = + new APIError( + HttpStatus.BAD_REQUEST.value(), + apiEx.getFieldError().getDefaultMessage(), + HttpStatus.BAD_REQUEST); + return new ResponseEntity<>(errorResponse, HttpStatus.BAD_REQUEST); + } + + // Handle errors regarding malformed json in the request body + @ExceptionHandler(HttpMessageNotReadableException.class) + public ResponseEntity handleMalformedJSONException( + HttpMessageNotReadableException apiEx, WebRequest request) { + APIError errorResponse = + new APIError(HttpStatus.BAD_REQUEST.value(), "Malformed JSON body", HttpStatus.BAD_REQUEST); + return new ResponseEntity<>(errorResponse, HttpStatus.BAD_REQUEST); + } + + // Handle errors regarding the media types that are not supported + @ExceptionHandler(HttpMediaTypeNotSupportedException.class) + public ResponseEntity handleMediaTypeNotSupportedException( + HttpMediaTypeNotSupportedException apiEx, WebRequest request) { + APIError errorResponse = + new APIError( + HttpStatus.BAD_REQUEST.value(), + apiEx.getMessage() + ". Using Content Type 'application/json' instead.", + HttpStatus.BAD_REQUEST); + return new ResponseEntity<>(errorResponse, HttpStatus.BAD_REQUEST); + } + + // Handle all APIErrors that have been generated in the API + @ExceptionHandler(APIException.class) + public ResponseEntity handleAPIException(APIException apiEx, WebRequest request) { + APIError errorResponse = new APIError(apiEx.getCode(), apiEx.getMessage(), apiEx.getStatus()); + return new ResponseEntity<>(errorResponse, apiEx.getStatus()); + } + + // Generic handler for any request that isn't being handled by the rest of the handlers + @ExceptionHandler(Exception.class) + public ResponseEntity handleGenericException(Exception apiEx, WebRequest request) { + LOGGER.error( + "Internal error occurred", + f(ServiceLogField.builder().details(apiEx.getMessage()).build())); + APIError errorResponse = + new APIError( + HttpStatus.INTERNAL_SERVER_ERROR.value(), + "Internal server error", + HttpStatus.INTERNAL_SERVER_ERROR); + return new ResponseEntity<>(errorResponse, HttpStatus.INTERNAL_SERVER_ERROR); + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/exception/InternalServerErrorException.java b/eseal/src/main/java/gr/grnet/eseal/exception/InternalServerErrorException.java new file mode 100644 index 0000000..0d3c47c --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/exception/InternalServerErrorException.java @@ -0,0 +1,14 @@ +package gr.grnet.eseal.exception; + +import org.springframework.http.HttpStatus; + +/** + * InternalServerErrorException extends {@link APIException} and represents all 500 or + * INTERNAL_SERVER_ERROR exceptions that can take place in the API. + */ +public class InternalServerErrorException extends APIException { + + public InternalServerErrorException(String message) { + super(HttpStatus.INTERNAL_SERVER_ERROR.value(), message, HttpStatus.INTERNAL_SERVER_ERROR); + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/exception/InvalidTOTPException.java b/eseal/src/main/java/gr/grnet/eseal/exception/InvalidTOTPException.java new file mode 100644 index 0000000..fee2fe4 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/exception/InvalidTOTPException.java @@ -0,0 +1,12 @@ +package gr.grnet.eseal.exception; + +/** + * InvalidTOTPException extends {@link UnprocessableEntityException} and represents the case of a + * totp generated with the wrong key or a TOTP that has expired. + */ +public class InvalidTOTPException extends UnprocessableEntityException { + + public InvalidTOTPException() { + super("Invalid key or expired TOTP"); + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/exception/UnprocessableEntityException.java b/eseal/src/main/java/gr/grnet/eseal/exception/UnprocessableEntityException.java new file mode 100644 index 0000000..f240224 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/exception/UnprocessableEntityException.java @@ -0,0 +1,14 @@ +package gr.grnet.eseal.exception; + +import org.springframework.http.HttpStatus; + +/** + * UnprocessableEntityException extends {@link APIException} and represents all 422 or + * UNPROCESSABLE_ENTITY exceptions that can take place in the API. + */ +public class UnprocessableEntityException extends APIException { + + public UnprocessableEntityException(String message) { + super(HttpStatus.UNPROCESSABLE_ENTITY.value(), message, HttpStatus.UNPROCESSABLE_ENTITY); + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/logging/BackEndLogField.java b/eseal/src/main/java/gr/grnet/eseal/logging/BackEndLogField.java new file mode 100644 index 0000000..fbbd0da --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/logging/BackEndLogField.java @@ -0,0 +1,29 @@ +package gr.grnet.eseal.logging; + +import com.fasterxml.jackson.annotation.JsonProperty; +import gr.grnet.eseal.enums.LogType; +import lombok.Builder; +import lombok.Getter; +import lombok.Setter; + +/** The {@link BackEndLogField} holds the backend info to be logged. */ +@Getter +@Setter +public class BackEndLogField extends LogField { + + @JsonProperty("backend_host") + private String backendHost; + + @JsonProperty("execution_time") + private String executionTime; + + private String details; + + @Builder + public BackEndLogField(String backendHost, String details, String executionTime) { + super(LogType.BACKEND_LOG); + this.backendHost = backendHost; + this.details = details; + this.executionTime = executionTime; + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/logging/LogField.java b/eseal/src/main/java/gr/grnet/eseal/logging/LogField.java new file mode 100644 index 0000000..ca23ae8 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/logging/LogField.java @@ -0,0 +1,17 @@ +package gr.grnet.eseal.logging; + +import com.fasterxml.jackson.annotation.JsonInclude; +import gr.grnet.eseal.enums.LogType; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.Setter; + +/** The {@link LogField} holds the generic info to be logged. */ +@Getter +@Setter +@AllArgsConstructor +@JsonInclude(JsonInclude.Include.NON_NULL) +public class LogField { + + private LogType type; +} diff --git a/eseal/src/main/java/gr/grnet/eseal/logging/RequestLogField.java b/eseal/src/main/java/gr/grnet/eseal/logging/RequestLogField.java new file mode 100644 index 0000000..7348f21 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/logging/RequestLogField.java @@ -0,0 +1,35 @@ +package gr.grnet.eseal.logging; + +import com.fasterxml.jackson.annotation.JsonProperty; +import gr.grnet.eseal.enums.LogType; +import lombok.Builder; +import lombok.Getter; +import lombok.Setter; + +/** The {@link RequestLogField} holds the request info to be logged. */ +@Getter +@Setter +public class RequestLogField extends LogField { + + private String method; + private String path; + + @JsonProperty("processing_time") + private String processingTime; + + private String status; + + @JsonProperty("document_name") + private String documentName; + + @Builder + public RequestLogField( + String processingTime, String method, String path, String status, String documentName) { + super(LogType.REQUEST_LOG); + this.processingTime = processingTime; + this.method = method; + this.path = path; + this.status = status; + this.documentName = documentName; + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/logging/ServiceLogField.java b/eseal/src/main/java/gr/grnet/eseal/logging/ServiceLogField.java new file mode 100644 index 0000000..d140910 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/logging/ServiceLogField.java @@ -0,0 +1,20 @@ +package gr.grnet.eseal.logging; + +import gr.grnet.eseal.enums.LogType; +import lombok.Builder; +import lombok.Getter; +import lombok.Setter; + +/** The {@link ServiceLogField} holds the service info to be logged. */ +@Getter +@Setter +public class ServiceLogField extends LogField { + + private String details; + + @Builder + public ServiceLogField(String details) { + super(LogType.SERVICE_LOG); + this.details = details; + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/service/RemoteSignDocumentService.java b/eseal/src/main/java/gr/grnet/eseal/service/RemoteSignDocumentService.java new file mode 100644 index 0000000..34d5bb0 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/service/RemoteSignDocumentService.java @@ -0,0 +1,50 @@ +package gr.grnet.eseal.service; + +import gr.grnet.eseal.config.RemoteProviderProperties; +import gr.grnet.eseal.dto.SignDocumentDto; +import gr.grnet.eseal.enums.Path; +import gr.grnet.eseal.sign.RemoteProviderSignDocument; +import gr.grnet.eseal.sign.request.RemoteProviderSignDocumentRequest; +import gr.grnet.eseal.sign.response.RemoteProviderSignDocumentResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service(value = "remoteSignDocumentService") +public class RemoteSignDocumentService implements SignDocumentService { + + private final RemoteProviderProperties remoteProviderProperties; + + public void setRemoteProviderSignDocument(RemoteProviderSignDocument remoteProviderSignDocument) { + this.remoteProviderSignDocument = remoteProviderSignDocument; + } + + private RemoteProviderSignDocument remoteProviderSignDocument; + + @Autowired + public RemoteSignDocumentService( + RemoteProviderProperties remoteProviderProperties, + RemoteProviderSignDocument remoteProviderSignDocument) { + this.remoteProviderProperties = remoteProviderProperties; + this.remoteProviderSignDocument = remoteProviderSignDocument; + } + + @Override + public String signDocument(SignDocumentDto signDocumentDto) { + RemoteProviderSignDocumentRequest request = new RemoteProviderSignDocumentRequest(); + request.setKey(signDocumentDto.getKey()); + request.setFileData(signDocumentDto.getBytes()); + request.setUsername(signDocumentDto.getUsername()); + request.setPassword(signDocumentDto.getPassword()); + request.setUrl( + String.format( + "%s://%s/%s", "https", remoteProviderProperties.getEndpoint(), Path.REMOTE_SIGNING)); + + RemoteProviderSignDocumentResponse response = + remoteProviderSignDocument.executeRemoteProviderRequestResponse( + request, + RemoteProviderSignDocumentResponse.class, + SignDocumentService.errorResponseFunction()); + + return response.getSignedFileData(); + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/service/RemoteSignDocumentServicePKCS1.java b/eseal/src/main/java/gr/grnet/eseal/service/RemoteSignDocumentServicePKCS1.java new file mode 100644 index 0000000..cba610a --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/service/RemoteSignDocumentServicePKCS1.java @@ -0,0 +1,152 @@ +package gr.grnet.eseal.service; + +import static net.logstash.logback.argument.StructuredArguments.f; + +import eu.europa.esig.dss.alert.ExceptionOnStatusAlert; +import eu.europa.esig.dss.enumerations.DigestAlgorithm; +import eu.europa.esig.dss.enumerations.SignatureAlgorithm; +import eu.europa.esig.dss.enumerations.SignatureLevel; +import eu.europa.esig.dss.model.BLevelParameters; +import eu.europa.esig.dss.model.DSSDocument; +import eu.europa.esig.dss.model.InMemoryDocument; +import eu.europa.esig.dss.model.SignatureValue; +import eu.europa.esig.dss.model.ToBeSigned; +import eu.europa.esig.dss.pades.PAdESSignatureParameters; +import eu.europa.esig.dss.pades.SignatureImageParameters; +import eu.europa.esig.dss.pades.signature.PAdESService; +import eu.europa.esig.dss.service.crl.OnlineCRLSource; +import eu.europa.esig.dss.service.http.commons.CommonsDataLoader; +import eu.europa.esig.dss.service.http.commons.OCSPDataLoader; +import eu.europa.esig.dss.service.ocsp.OnlineOCSPSource; +import eu.europa.esig.dss.utils.Utils; +import eu.europa.esig.dss.validation.CommonCertificateVerifier; +import gr.grnet.eseal.config.RemoteProviderProperties; +import gr.grnet.eseal.config.VisibleSignatureProperties; +import gr.grnet.eseal.dto.SignDocumentDto; +import gr.grnet.eseal.enums.Path; +import gr.grnet.eseal.enums.TSASourceEnum; +import gr.grnet.eseal.exception.InternalServerErrorException; +import gr.grnet.eseal.logging.ServiceLogField; +import gr.grnet.eseal.sign.RemoteProviderCertificates; +import gr.grnet.eseal.sign.RemoteProviderSignBuffer; +import gr.grnet.eseal.sign.request.RemoteProviderSignBufferPKCS1Request; +import gr.grnet.eseal.sign.response.RemoteProviderSignBufferResponse; +import gr.grnet.eseal.timestamp.TSASourceRegistry; +import java.security.MessageDigest; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service(value = "remoteSignDocumentServicePKCS1") +public class RemoteSignDocumentServicePKCS1 implements SignDocumentService { + + private static final Logger LOGGER = + LoggerFactory.getLogger(RemoteSignDocumentServicePKCS1.class); + + private final VisibleSignatureProperties visibleSignatureProperties; + private final TSASourceRegistry tsaSourceRegistry; + private final RemoteProviderProperties remoteProviderProperties; + private final RemoteProviderCertificates remoteProviderCertificates; + private final RemoteProviderSignBuffer remoteProviderSignBuffer; + + @Autowired + public RemoteSignDocumentServicePKCS1( + VisibleSignatureProperties visibleSignatureProperties, + TSASourceRegistry tsaSourceRegistry, + RemoteProviderProperties remoteProviderProperties, + RemoteProviderCertificates remoteProviderCertificates, + RemoteProviderSignBuffer remoteProviderSignBuffer) { + this.visibleSignatureProperties = visibleSignatureProperties; + this.tsaSourceRegistry = tsaSourceRegistry; + this.remoteProviderProperties = remoteProviderProperties; + this.remoteProviderCertificates = remoteProviderCertificates; + this.remoteProviderSignBuffer = remoteProviderSignBuffer; + } + + @Override + public String signDocument(SignDocumentDto signDocumentDto) { + try { + + SignatureImageParameters signatureImageParameters = + getSignatureImageParameters( + signDocumentDto.getSigningDate(), + visibleSignatureProperties, + signDocumentDto.getSignerInfo(), + signDocumentDto.getImageBytes()); + + PAdESSignatureParameters padesSignatureParameters = new PAdESSignatureParameters(); + padesSignatureParameters.setSignatureLevel(SignatureLevel.PAdES_BASELINE_LTA); + padesSignatureParameters.setDigestAlgorithm(DigestAlgorithm.SHA256); + padesSignatureParameters.setContentSize(3 * 9472); + BLevelParameters blevelParameters = new BLevelParameters(); + blevelParameters.setSigningDate(signDocumentDto.getSigningDate()); + padesSignatureParameters.setBLevelParams(blevelParameters); + padesSignatureParameters.setImageParameters(signatureImageParameters); + padesSignatureParameters.setSigningCertificate(signDocumentDto.getCertificateList().get(0)); + padesSignatureParameters.setCertificateChain(signDocumentDto.getCertificateList()); + + CommonCertificateVerifier commonCertificateVerifier = new CommonCertificateVerifier(); + commonCertificateVerifier.setCheckRevocationForUntrustedChains(true); + commonCertificateVerifier.setAlertOnMissingRevocationData(new ExceptionOnStatusAlert()); + + // CRLSource + OnlineCRLSource onlineCRLSource = new OnlineCRLSource(); + CommonsDataLoader commonsHttpDataLoader = new CommonsDataLoader(); + onlineCRLSource.setDataLoader(commonsHttpDataLoader); + commonCertificateVerifier.setCrlSource(onlineCRLSource); + + // OCSPSource + OnlineOCSPSource onlineOCSPSource = new OnlineOCSPSource(); + OCSPDataLoader ocspDataLoader = new OCSPDataLoader(); + onlineOCSPSource.setDataLoader(ocspDataLoader); + commonCertificateVerifier.setOcspSource(onlineOCSPSource); + + PAdESService padesService = new PAdESService(commonCertificateVerifier); + padesService.setTspSource(tsaSourceRegistry.getTSASource(TSASourceEnum.HARICA)); + + DSSDocument toBeSignedDocument = + new InMemoryDocument(Utils.fromBase64(signDocumentDto.getBytes())); + + ToBeSigned dataToSign = + padesService.getDataToSign(toBeSignedDocument, padesSignatureParameters); + + MessageDigest messageDigest = MessageDigest.getInstance("SHA-256"); + + messageDigest.update(dataToSign.getBytes()); + + byte[] digestBytes = messageDigest.digest(); + + RemoteProviderSignBufferPKCS1Request request = new RemoteProviderSignBufferPKCS1Request(); + request.setKey(signDocumentDto.getKey()); + request.setBufferToSign(Utils.toBase64(digestBytes)); + request.setUsername(signDocumentDto.getUsername()); + request.setPassword(signDocumentDto.getPassword()); + request.setUrl( + String.format( + "%s://%s/%s", + "https", remoteProviderProperties.getEndpoint(), Path.REMOTE_SIGNING_BUFFER)); + + RemoteProviderSignBufferResponse response = + remoteProviderSignBuffer.executeRemoteProviderRequestResponse( + request, + RemoteProviderSignBufferResponse.class, + SignDocumentService.errorResponseFunction()); + + SignatureValue signatureValue = + new SignatureValue( + SignatureAlgorithm.RSA_SHA256, Utils.fromBase64(response.getSignature())); + + DSSDocument signedDocument = + padesService.signDocument(toBeSignedDocument, padesSignatureParameters, signatureValue); + + return Utils.toBase64(Utils.toByteArray(signedDocument.openStream())); + + } catch (Exception e) { + LOGGER.error( + "Could not produce signed document", + f(ServiceLogField.builder().details(e.getMessage()).build())); + throw new InternalServerErrorException("Could not produce signed document"); + } + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/service/RemoteSignDocumentServicePKCS7.java b/eseal/src/main/java/gr/grnet/eseal/service/RemoteSignDocumentServicePKCS7.java new file mode 100644 index 0000000..a6ed635 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/service/RemoteSignDocumentServicePKCS7.java @@ -0,0 +1,134 @@ +package gr.grnet.eseal.service; + +import static net.logstash.logback.argument.StructuredArguments.f; + +import eu.europa.esig.dss.enumerations.DigestAlgorithm; +import eu.europa.esig.dss.enumerations.SignatureLevel; +import eu.europa.esig.dss.model.BLevelParameters; +import eu.europa.esig.dss.model.DSSDocument; +import eu.europa.esig.dss.model.DSSException; +import eu.europa.esig.dss.model.InMemoryDocument; +import eu.europa.esig.dss.pades.PAdESSignatureParameters; +import eu.europa.esig.dss.pades.SignatureImageParameters; +import eu.europa.esig.dss.pdf.PDFSignatureService; +import eu.europa.esig.dss.pdf.pdfbox.PdfBoxNativeObjectFactory; +import eu.europa.esig.dss.utils.Utils; +import gr.grnet.eseal.config.RemoteProviderProperties; +import gr.grnet.eseal.config.VisibleSignatureProperties; +import gr.grnet.eseal.dto.SignDocumentDto; +import gr.grnet.eseal.enums.Path; +import gr.grnet.eseal.exception.InternalServerErrorException; +import gr.grnet.eseal.logging.ServiceLogField; +import gr.grnet.eseal.sign.RemoteProviderCertificates; +import gr.grnet.eseal.sign.RemoteProviderSignBuffer; +import gr.grnet.eseal.sign.request.RemoteProviderSignBufferPKCS7Request; +import gr.grnet.eseal.sign.response.RemoteProviderSignBufferResponse; +import java.io.IOException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service(value = "remoteSignDocumentServiceDetachedPKCS7") +public class RemoteSignDocumentServicePKCS7 implements SignDocumentService { + + private static final Logger LOGGER = + LoggerFactory.getLogger(RemoteSignDocumentServicePKCS7.class); + + private final PDFSignatureService pdfSignatureService; + private final VisibleSignatureProperties visibleSignatureProperties; + private final RemoteProviderProperties remoteProviderProperties; + private final RemoteProviderSignBuffer remoteProviderSignBuffer; + private final RemoteProviderCertificates remoteProviderCertificates; + + @Autowired + public RemoteSignDocumentServicePKCS7( + VisibleSignatureProperties visibleSignatureProperties, + RemoteProviderProperties remoteProviderProperties, + RemoteProviderSignBuffer remoteProviderSignBuffer, + RemoteProviderCertificates remoteProviderCertificates) { + this.visibleSignatureProperties = visibleSignatureProperties; + this.remoteProviderProperties = remoteProviderProperties; + this.remoteProviderSignBuffer = remoteProviderSignBuffer; + this.remoteProviderCertificates = remoteProviderCertificates; + PdfBoxNativeObjectFactory factory = new PdfBoxNativeObjectFactory(); + this.pdfSignatureService = factory.newPAdESSignatureService(); + } + + @Override + public String signDocument(SignDocumentDto signDocumentDto) { + DSSDocument toBeSignedDocument = + new InMemoryDocument(Utils.fromBase64(signDocumentDto.getBytes())); + DSSDocument signedDocument; + + SignatureImageParameters signatureImageParameters = + getSignatureImageParameters( + signDocumentDto.getSigningDate(), + visibleSignatureProperties, + signDocumentDto.getSignerInfo(), + signDocumentDto.getImageBytes()); + + // Initialize the PaDES parameters + PAdESSignatureParameters padesSignatureParameters = new PAdESSignatureParameters(); + padesSignatureParameters.setImageParameters(signatureImageParameters); + padesSignatureParameters.setSignatureLevel(SignatureLevel.PAdES_BASELINE_B); + padesSignatureParameters.setDigestAlgorithm(DigestAlgorithm.SHA256); + padesSignatureParameters.setContentSize(3 * 9472); + BLevelParameters blevelParameters = new BLevelParameters(); + blevelParameters.setSigningDate(signDocumentDto.getSigningDate()); + padesSignatureParameters.setBLevelParams(blevelParameters); + + byte[] digestBytes; + // compute the digest of the PDF document + try { + digestBytes = this.pdfSignatureService.digest(toBeSignedDocument, padesSignatureParameters); + } catch (DSSException de) { + LOGGER.error( + "DSS Error while computing digest", + f(ServiceLogField.builder().details(de.getMessage()).build())); + throw new InternalServerErrorException("Could not compute document digest"); + } + RemoteProviderSignBufferPKCS7Request request = new RemoteProviderSignBufferPKCS7Request(); + request.setKey(signDocumentDto.getKey()); + request.setBufferToSign(Utils.toBase64(digestBytes)); + request.setUsername(signDocumentDto.getUsername()); + request.setPassword(signDocumentDto.getPassword()); + request.setUrl( + String.format( + "%s://%s/%s", + "https", remoteProviderProperties.getEndpoint(), Path.REMOTE_SIGNING_BUFFER)); + + RemoteProviderSignBufferResponse response = + remoteProviderSignBuffer.executeRemoteProviderRequestResponse( + request, + RemoteProviderSignBufferResponse.class, + SignDocumentService.errorResponseFunction()); + + // combine signature with original document + try { + signedDocument = + this.pdfSignatureService.sign( + toBeSignedDocument, + Utils.fromBase64(response.getSignature()), + padesSignatureParameters); + } catch (DSSException de) { + LOGGER.error( + "DSS Error while combining signature to original document", + f(ServiceLogField.builder().details(de.getMessage()).build())); + throw new InternalServerErrorException("Could not combine signature to original document"); + } + + String signedDocumentB64; + + try { + signedDocumentB64 = Utils.toBase64(Utils.toByteArray(signedDocument.openStream())); + } catch (IOException e) { + LOGGER.error( + "Error converting signed pdf to base64", + f(ServiceLogField.builder().details(e.getMessage()).build())); + throw new InternalServerErrorException("Could not produce signed document"); + } + + return signedDocumentB64; + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/service/SignDocumentService.java b/eseal/src/main/java/gr/grnet/eseal/service/SignDocumentService.java new file mode 100644 index 0000000..d860934 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/service/SignDocumentService.java @@ -0,0 +1,229 @@ +package gr.grnet.eseal.service; + +import eu.europa.esig.dss.enumerations.SignerTextHorizontalAlignment; +import eu.europa.esig.dss.enumerations.VisualSignatureAlignmentHorizontal; +import eu.europa.esig.dss.enumerations.VisualSignatureAlignmentVertical; +import eu.europa.esig.dss.model.InMemoryDocument; +import eu.europa.esig.dss.model.x509.CertificateToken; +import eu.europa.esig.dss.pades.SignatureImageParameters; +import eu.europa.esig.dss.pades.SignatureImageTextParameters; +import eu.europa.esig.dss.utils.Utils; +import gr.grnet.eseal.config.VisibleSignatureProperties; +import gr.grnet.eseal.dto.SignDocumentDto; +import gr.grnet.eseal.enums.Path; +import gr.grnet.eseal.enums.VisibleSignatureText; +import gr.grnet.eseal.exception.InternalServerErrorException; +import gr.grnet.eseal.exception.InvalidTOTPException; +import gr.grnet.eseal.exception.UnprocessableEntityException; +import gr.grnet.eseal.logging.BackEndLogField; +import gr.grnet.eseal.sign.RemoteHttpEsealClient; +import gr.grnet.eseal.sign.RemoteProviderCertificates; +import gr.grnet.eseal.sign.request.RemoteProviderCertificatesRequest; +import gr.grnet.eseal.sign.response.AbstractRemoteProviderResponse; +import gr.grnet.eseal.sign.response.RemoteProviderCertificatesResponse; +import io.vavr.CheckedFunction1; +import io.vavr.control.Try; +import java.io.ByteArrayInputStream; +import java.security.cert.CertificateFactory; +import java.security.cert.X509Certificate; +import java.time.ZonedDateTime; +import java.util.Arrays; +import java.util.Date; +import java.util.List; +import java.util.function.BiFunction; +import java.util.function.Predicate; +import java.util.function.Supplier; +import java.util.stream.Collectors; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; + +public interface SignDocumentService { + + String signDocument(SignDocumentDto signDocumentDto); + + static BiFunction>> + errorResponseFunction() { + return (field, logger) -> + () -> + RemoteHttpEsealClient.errorResponsePredicate( + "The user is locked", + field, + (r) -> r.getErrorMessage().contains("The user is locked"), + new InternalServerErrorException("The user is locked and cannot logon"), + logger) + .or( + RemoteHttpEsealClient.errorResponsePredicate( + "Connection to Time Stamping service problem", + field, + (r) -> + r.getErrorMessage() + .contains("Connection to Time Stamping service problem"), + new InternalServerErrorException( + "Connection to Time Stamping service problem"), + logger)) + .or( + RemoteHttpEsealClient.errorResponsePredicate( + "Failed to login", + field, + (r) -> r.getErrorMessage().contains("Failed to Logon"), + new UnprocessableEntityException("Wrong user credentials"), + logger)) + .or( + RemoteHttpEsealClient.errorResponsePredicate( + "Failed to login", + field, + (r) -> + r.getErrorMessage() + .contains( + "(0X90020133)-Failed to allocated resources" + + " for a new SAPI-LOGIN session (dynamic slot)."), + new UnprocessableEntityException("Wrong user credentials"), + logger)) + .or( + RemoteHttpEsealClient.errorResponsePredicate( + "Failed to get the URL of the OCSP server", + field, + (r) -> + r.getErrorMessage() + .contains( + "Failed to Sign, Error (0X90030233)-" + + "Failed to get the URL of the OCSP server."), + new InternalServerErrorException( + "Failed to get the URL of the OCSP server"), + logger)) + .or( + RemoteHttpEsealClient.errorResponsePredicate( + "Invalid TOTP", + field, + (r) -> + r.getErrorMessage() + .contains( + "Failed to Sign, Error (0X900201E0)-" + + "Failed to verify the user password. " + + "Passwords should be in wide character representation. " + + "Password length in bytes includes " + + "the null terminator " + + "(two bytes in wide char representation)."), + new InvalidTOTPException(), + logger)) + .or( + RemoteHttpEsealClient.errorResponsePredicate( + "Error response from provider", + field, + (r) -> true, + new InternalServerErrorException("Error with signing backend"), + logger)); + } + + static RemoteProviderCertificatesResponse getUserCertificates( + String username, + String password, + String endpoint, + RemoteProviderCertificates remoteProviderCertificates) { + + RemoteProviderCertificatesRequest remoteProviderCertificatesRequest = + new RemoteProviderCertificatesRequest(); + remoteProviderCertificatesRequest.setUsername(username); + remoteProviderCertificatesRequest.setPassword(password); + remoteProviderCertificatesRequest.setUrl( + String.format("%s://%s/%s", "https", endpoint, Path.REMOTE_CERTIFICATES)); + + return remoteProviderCertificates.executeRemoteProviderRequestResponse( + remoteProviderCertificatesRequest, + RemoteProviderCertificatesResponse.class, + errorResponseFunction()); + } + + static String getSignerInfo( + RemoteProviderCertificatesResponse certificates, VisibleSignatureText visibleSignatureText) { + + switch (visibleSignatureText) { + case CN_OU: + return Try.of( + () -> + gr.grnet.eseal.utils.Utils.extractCNFromSubject(certificates.getSubject()) + + "/" + + gr.grnet.eseal.utils.Utils.extractOUFromSubject( + certificates.getSubject())) + .getOrElseThrow( + (e) -> { + throw new InternalServerErrorException("Error with Signer's Certificate Subject"); + }); + case CN: + return Try.of( + () -> gr.grnet.eseal.utils.Utils.extractCNFromSubject(certificates.getSubject())) + .getOrElseThrow( + (e) -> { + throw new InternalServerErrorException("Error with Signer's Certificate Subject"); + }); + case TEXT: + throw new InternalServerErrorException( + "Using plain text on visible signature currently is not supported"); + + default: + return Try.of( + () -> gr.grnet.eseal.utils.Utils.extractOUFromSubject(certificates.getSubject())) + .getOrElseThrow( + (e) -> { + throw new InternalServerErrorException("Error with Signer's Certificate Subject"); + }); + } + } + + static List getCertificatesToken( + RemoteProviderCertificatesResponse certificates) { + + return Arrays.stream(certificates.getCertificates()) + .map(Utils::fromBase64) + .map(ByteArrayInputStream::new) + .map( + CheckedFunction1.liftTry( + inputStream -> { + CertificateFactory certFactory = CertificateFactory.getInstance("X.509"); + return (X509Certificate) certFactory.generateCertificate(inputStream); + })) + .map( + tryCert -> + tryCert.getOrElseThrow( + (e) -> { + throw new InternalServerErrorException("Error during Certificate parsing"); + })) + .map(CertificateToken::new) + .collect(Collectors.toList()); + } + + default SignatureImageParameters getSignatureImageParameters( + Date signingDate, + VisibleSignatureProperties visibleSignatureProperties, + String signerInfo, + String imageBytes) { + + // visible signature text + ZonedDateTime z = + ZonedDateTime.ofInstant(signingDate.toInstant(), visibleSignatureProperties.getZoneId()); + + SignatureImageTextParameters signatureImageTextParameters = new SignatureImageTextParameters(); + signatureImageTextParameters.setText( + gr.grnet.eseal.utils.Utils.formatVisibleSignatureText( + signerInfo, z.format(visibleSignatureProperties.getDateTimeFormatter()))); + + signatureImageTextParameters.setFont(visibleSignatureProperties.getFont()); + signatureImageTextParameters.setSignerTextHorizontalAlignment( + SignerTextHorizontalAlignment.LEFT); + + // visible signature image + SignatureImageParameters signatureImageParameters = new SignatureImageParameters(); + signatureImageParameters.setTextParameters(signatureImageTextParameters); + + // check if an image has been provided, otherwise use the default + if (StringUtils.isNotEmpty(imageBytes)) { + signatureImageParameters.setImage(new InMemoryDocument(Utils.fromBase64(imageBytes))); + } else { + signatureImageParameters.setImage(visibleSignatureProperties.getImageDocument()); + } + signatureImageParameters.setAlignmentHorizontal(VisualSignatureAlignmentHorizontal.LEFT); + signatureImageParameters.setAlignmentVertical(VisualSignatureAlignmentVertical.TOP); + + return signatureImageParameters; + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/service/SignDocumentServiceFactory.java b/eseal/src/main/java/gr/grnet/eseal/service/SignDocumentServiceFactory.java new file mode 100644 index 0000000..1738c03 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/service/SignDocumentServiceFactory.java @@ -0,0 +1,38 @@ +package gr.grnet.eseal.service; + +import gr.grnet.eseal.enums.Sign; +import gr.grnet.eseal.exception.InternalServerErrorException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class SignDocumentServiceFactory { + + private final RemoteSignDocumentServicePKCS7 remoteSignDocumentServicePKCS7; + private final RemoteSignDocumentService remoteSignDocumentService; + private final RemoteSignDocumentServicePKCS1 remoteSignDocumentServicePKCS1; + + @Autowired + public SignDocumentServiceFactory( + RemoteSignDocumentServicePKCS7 remoteSignDocumentServicePKCS7, + RemoteSignDocumentService remoteSignDocumentService, + RemoteSignDocumentServicePKCS1 remoteSignDocumentServicePKCS1) { + this.remoteSignDocumentServicePKCS7 = remoteSignDocumentServicePKCS7; + this.remoteSignDocumentService = remoteSignDocumentService; + this.remoteSignDocumentServicePKCS1 = remoteSignDocumentServicePKCS1; + } + + public SignDocumentService create(Sign sign) { + + switch (sign) { + case REMOTE_SIGN: + return remoteSignDocumentService; + case PKCS7: + return remoteSignDocumentServicePKCS7; + case PKCS1: + return remoteSignDocumentServicePKCS1; + default: + throw new InternalServerErrorException("Unable to sign the document"); + } + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/service/TimestampDocumentService.java b/eseal/src/main/java/gr/grnet/eseal/service/TimestampDocumentService.java new file mode 100644 index 0000000..48e3688 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/service/TimestampDocumentService.java @@ -0,0 +1,79 @@ +package gr.grnet.eseal.service; + +import static net.logstash.logback.argument.StructuredArguments.f; + +import eu.europa.esig.dss.alert.ExceptionOnStatusAlert; +import eu.europa.esig.dss.enumerations.DigestAlgorithm; +import eu.europa.esig.dss.model.DSSDocument; +import eu.europa.esig.dss.model.DSSException; +import eu.europa.esig.dss.model.InMemoryDocument; +import eu.europa.esig.dss.pades.PAdESTimestampParameters; +import eu.europa.esig.dss.pades.signature.PAdESService; +import eu.europa.esig.dss.service.crl.OnlineCRLSource; +import eu.europa.esig.dss.service.http.commons.TimestampDataLoader; +import eu.europa.esig.dss.service.ocsp.OnlineOCSPSource; +import eu.europa.esig.dss.utils.Utils; +import eu.europa.esig.dss.validation.CommonCertificateVerifier; +import gr.grnet.eseal.enums.TSASourceEnum; +import gr.grnet.eseal.exception.InternalServerErrorException; +import gr.grnet.eseal.logging.ServiceLogField; +import gr.grnet.eseal.timestamp.TSASourceRegistry; +import java.io.IOException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class TimestampDocumentService { + + private static final Logger LOGGER = LoggerFactory.getLogger(TimestampDocumentService.class); + + private final TSASourceRegistry tsaSourceRegistry; + + @Autowired + public TimestampDocumentService(TSASourceRegistry tsaSourceRegistry) { + this.tsaSourceRegistry = tsaSourceRegistry; + } + + public String timestampDocument(String document, TSASourceEnum tsaSourceEnum) { + + DSSDocument documentToTimestamp = new InMemoryDocument(Utils.fromBase64(document)); + + CommonCertificateVerifier certificateVerifier = new CommonCertificateVerifier(); + + // Default configs + certificateVerifier.setAlertOnMissingRevocationData(new ExceptionOnStatusAlert()); + certificateVerifier.setCheckRevocationForUntrustedChains(false); + certificateVerifier.setDataLoader(new TimestampDataLoader()); + certificateVerifier.setCrlSource(new OnlineCRLSource()); + certificateVerifier.setOcspSource(new OnlineOCSPSource()); + + // Configure a PAdES service for PDF timestamping + PAdESService service = new PAdESService(certificateVerifier); + service.setTspSource(tsaSourceRegistry.getTSASource(tsaSourceEnum)); + + String timestampedDocumentB64; + + // Execute the timestamp method + try { + DSSDocument timestampedDoc = + service.timestamp( + documentToTimestamp, new PAdESTimestampParameters(DigestAlgorithm.SHA256)); + timestampedDocumentB64 = Utils.toBase64(Utils.toByteArray(timestampedDoc.openStream())); + } catch (IOException e) { + LOGGER.error( + "Error converting timestamped pdf to base64", + f(ServiceLogField.builder().details(e.getMessage()).build())); + throw new InternalServerErrorException("Could not produce timestamped document"); + + } catch (DSSException de) { + LOGGER.error( + "DSS Error while timestamping document", + f(ServiceLogField.builder().details(de.getMessage()).build())); + throw new InternalServerErrorException("Could not timestamp document"); + } + + return timestampedDocumentB64; + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/service/ValidateDocumentService.java b/eseal/src/main/java/gr/grnet/eseal/service/ValidateDocumentService.java new file mode 100644 index 0000000..ea8066f --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/service/ValidateDocumentService.java @@ -0,0 +1,31 @@ +package gr.grnet.eseal.service; + +import eu.europa.esig.dss.utils.Utils; +import eu.europa.esig.dss.ws.dto.RemoteDocument; +import eu.europa.esig.dss.ws.validation.common.RemoteDocumentValidationService; +import eu.europa.esig.dss.ws.validation.dto.DataToValidateDTO; +import eu.europa.esig.dss.ws.validation.dto.WSReportsDTO; +import gr.grnet.eseal.validation.DocumentValidatorLOTL; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class ValidateDocumentService { + + private RemoteDocumentValidationService remoteDocumentValidationService; + + @Autowired + public ValidateDocumentService(DocumentValidatorLOTL lotlValidator) { + this.remoteDocumentValidationService = new RemoteDocumentValidationService(); + this.remoteDocumentValidationService.setVerifier(lotlValidator.getCertificateVerifier()); + } + + public WSReportsDTO validateDocument(String documentBytes, String documentName) { + + DataToValidateDTO dataToValidateDTO = new DataToValidateDTO(); + + dataToValidateDTO.setSignedDocument( + new RemoteDocument(Utils.fromBase64(documentBytes), documentName)); + return this.remoteDocumentValidationService.validateDocument(dataToValidateDTO); + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/sign/AbstractRemoteHttpEsealClient.java b/eseal/src/main/java/gr/grnet/eseal/sign/AbstractRemoteHttpEsealClient.java new file mode 100644 index 0000000..fe0ce68 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/sign/AbstractRemoteHttpEsealClient.java @@ -0,0 +1,170 @@ +package gr.grnet.eseal.sign; + +import static net.logstash.logback.argument.StructuredArguments.f; + +import com.fasterxml.jackson.databind.ObjectMapper; +import gr.grnet.eseal.config.RemoteProviderProperties; +import gr.grnet.eseal.exception.InternalServerErrorException; +import gr.grnet.eseal.exception.InvalidTOTPException; +import gr.grnet.eseal.logging.BackEndLogField; +import gr.grnet.eseal.logging.ServiceLogField; +import gr.grnet.eseal.sign.request.AbstractRemoteProviderRequest; +import gr.grnet.eseal.sign.response.AbstractRemoteProviderResponse; +import gr.grnet.eseal.utils.Utils; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.function.BiFunction; +import java.util.function.Predicate; +import java.util.function.Supplier; +import org.apache.http.HttpEntity; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.util.EntityUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Implementation of {@link RemoteHttpEsealClient} to provide methods to + * executeRemoteProviderRequestResponse the content in {@link Request}. + */ +public abstract class AbstractRemoteHttpEsealClient< + Request extends AbstractRemoteProviderRequest, + Response extends AbstractRemoteProviderResponse> + implements RemoteHttpEsealClient { + + private static final Logger LOGGER = LoggerFactory.getLogger(AbstractRemoteHttpEsealClient.class); + + private final CloseableHttpClient closeableHttpClient; + private final RemoteProviderProperties remoteProviderProperties; + + protected AbstractRemoteHttpEsealClient( + CloseableHttpClient closeableHttpClient, RemoteProviderProperties remoteProviderProperties) { + this.closeableHttpClient = closeableHttpClient; + this.remoteProviderProperties = remoteProviderProperties; + } + + @Override + public Response executeRemoteProviderRequestResponse( + Request request, + Class clazz, + BiFunction>> + errorResponseFunction) { + + // check if retry is enabled + if (this.remoteProviderProperties.isRetryEnabled()) { + int retryCount = 0; + + while (retryCount < this.remoteProviderProperties.getRetryCounter()) { + + try { + return this.executePost(request, clazz, errorResponseFunction); + } catch (InvalidTOTPException | InternalServerErrorException ie) { + retryCount++; + LOGGER.warn( + "Encountered an exception while trying to execute " + request.getDescription(), + f(ServiceLogField.builder().details(ie.getMessage()).build())); + LOGGER.info( + "Retrying for the {} time in {} seconds", + retryCount, + this.remoteProviderProperties.getRetryInterval(), + f(ServiceLogField.builder().build())); + try { + Thread.sleep(this.remoteProviderProperties.getRetryInterval() * 1000); + } catch (InterruptedException e) { + // + } + } + } + } + // if the retry mechanism has been enabled, this is the last retry + // otherwise is the one and only call to the remote signing service + return this.executePost(request, clazz, errorResponseFunction); + } + + /** + * executePost takes care of the internal business logic for connecting to the provider's's remote + * http api in order to executeRemoteProviderRequestResponse the provided document + */ + private Response executePost( + Request request, + Class clazz, + BiFunction>> + errorResponseFunction) { + + long start = System.currentTimeMillis(); + + try { + // generate new TOTP password + request.setTOTP( + request.getKey(), this.remoteProviderProperties.getTotpWaitForRefreshSeconds()); + + // attempt to executeRemoteProviderRequestResponse with remote provider + Response remoteProviderPostRequestResponse = this.doPost(request, clazz); + + String executionTime = Utils.formatTimePeriod(start); + + // check if the signing was successful + if (!remoteProviderPostRequestResponse.getSuccess()) { + + BackEndLogField field = + BackEndLogField.builder() + .backendHost(this.remoteProviderProperties.getEndpoint()) + .details(remoteProviderPostRequestResponse.getErrorMessage()) + .executionTime(executionTime) + .build(); + + errorResponseFunction.apply(field, LOGGER).get().test((remoteProviderPostRequestResponse)); + } + + LOGGER.info( + "Successful " + request.getDescription(), + f( + BackEndLogField.builder() + .backendHost(this.remoteProviderProperties.getEndpoint()) + .executionTime(executionTime) + .build())); + + return remoteProviderPostRequestResponse; + } catch (IOException ioe) { + + LOGGER.error( + "Error communicating with provider's backend", + f( + BackEndLogField.builder() + .backendHost(this.remoteProviderProperties.getEndpoint()) + .details(ioe.getMessage()) + .executionTime(Utils.formatTimePeriod(start)) + .build())); + throw new InternalServerErrorException("Signing backend unavailable"); + } + } + + private Response doPost(Request request, Class clazz) throws IOException { + + StringEntity postBody = new StringEntity(request.toJSON()); + postBody.setContentType("application/json"); + + // Set up a post request + HttpPost postReq = new HttpPost(request.getUrl()); + postReq.setEntity(postBody); + CloseableHttpResponse response = this.closeableHttpClient.execute(postReq); + HttpEntity entity = response.getEntity(); + + // Read the response + String line; + BufferedReader br = new BufferedReader(new InputStreamReader(entity.getContent())); + StringBuilder currentMsg = new StringBuilder(); + while ((line = br.readLine()) != null) { + currentMsg.append(line); + } + + // Make sure that the interaction with the service has closed + EntityUtils.consume(entity); + response.close(); + ObjectMapper objectMapper = new ObjectMapper(); + return objectMapper.readValue(currentMsg.toString(), clazz); + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/sign/RemoteHttpEsealClient.java b/eseal/src/main/java/gr/grnet/eseal/sign/RemoteHttpEsealClient.java new file mode 100644 index 0000000..cf28156 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/sign/RemoteHttpEsealClient.java @@ -0,0 +1,42 @@ +package gr.grnet.eseal.sign; + +import static net.logstash.logback.argument.StructuredArguments.f; + +import gr.grnet.eseal.logging.BackEndLogField; +import gr.grnet.eseal.sign.request.AbstractRemoteProviderRequest; +import gr.grnet.eseal.sign.response.AbstractRemoteProviderResponse; +import java.util.function.BiFunction; +import java.util.function.Predicate; +import java.util.function.Supplier; +import org.slf4j.Logger; + +/** + * Interface that represents clients that can access remote qualified e-seals and use them to + * executeRemoteProviderRequestResponse the content in {@link Request} + */ +public interface RemoteHttpEsealClient< + Request extends AbstractRemoteProviderRequest, + Response extends AbstractRemoteProviderResponse> { + + Response executeRemoteProviderRequestResponse( + Request request, + Class clazz, + BiFunction>> + errorResponseFunction); + + static Predicate errorResponsePredicate( + String message, + BackEndLogField field, + Predicate predicate, + RuntimeException exc, + Logger logger) { + return t -> { + boolean r = predicate.test(t); + if (r) { + logger.error(message, f(field)); + throw exc; + } + return r; + }; + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/sign/RemoteProviderCertificates.java b/eseal/src/main/java/gr/grnet/eseal/sign/RemoteProviderCertificates.java new file mode 100644 index 0000000..fc0868c --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/sign/RemoteProviderCertificates.java @@ -0,0 +1,22 @@ +package gr.grnet.eseal.sign; + +import gr.grnet.eseal.config.RemoteProviderProperties; +import gr.grnet.eseal.sign.request.RemoteProviderCertificatesRequest; +import gr.grnet.eseal.sign.response.RemoteProviderCertificatesResponse; +import org.apache.http.impl.client.CloseableHttpClient; +import org.springframework.stereotype.Component; + +/** + * RemoteProviderCertificates extends a {@link AbstractRemoteHttpEsealClient} that allows the usage + * of a provider's remote http rest api in order to access an e-seal certificates + */ +@Component +public class RemoteProviderCertificates + extends AbstractRemoteHttpEsealClient< + RemoteProviderCertificatesRequest, RemoteProviderCertificatesResponse> { + + public RemoteProviderCertificates( + RemoteProviderProperties remoteProviderProperties, CloseableHttpClient httpClient) { + super(httpClient, remoteProviderProperties); + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/sign/RemoteProviderSignBuffer.java b/eseal/src/main/java/gr/grnet/eseal/sign/RemoteProviderSignBuffer.java new file mode 100644 index 0000000..0ff9153 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/sign/RemoteProviderSignBuffer.java @@ -0,0 +1,23 @@ +package gr.grnet.eseal.sign; + +import gr.grnet.eseal.config.RemoteProviderProperties; +import gr.grnet.eseal.sign.request.AbstractRemoteProviderSignBufferRequest; +import gr.grnet.eseal.sign.response.RemoteProviderSignBufferResponse; +import org.apache.http.impl.client.CloseableHttpClient; +import org.springframework.stereotype.Component; + +/** + * RemoteProviderSignBuffer extends a {@link AbstractRemoteHttpEsealClient} that allows the usage of + * a provider's remote http rest api in order to access e-seals and + * executeRemoteProviderRequestResponse digests(buffers) + */ +@Component +public class RemoteProviderSignBuffer + extends AbstractRemoteHttpEsealClient< + AbstractRemoteProviderSignBufferRequest, RemoteProviderSignBufferResponse> { + + public RemoteProviderSignBuffer( + RemoteProviderProperties remoteProviderProperties, CloseableHttpClient httpClient) { + super(httpClient, remoteProviderProperties); + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/sign/RemoteProviderSignDocument.java b/eseal/src/main/java/gr/grnet/eseal/sign/RemoteProviderSignDocument.java new file mode 100644 index 0000000..f24d7e9 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/sign/RemoteProviderSignDocument.java @@ -0,0 +1,23 @@ +package gr.grnet.eseal.sign; + +import gr.grnet.eseal.config.RemoteProviderProperties; +import gr.grnet.eseal.sign.request.RemoteProviderSignDocumentRequest; +import gr.grnet.eseal.sign.response.RemoteProviderSignDocumentResponse; +import org.apache.http.impl.client.CloseableHttpClient; +import org.springframework.stereotype.Component; + +/** + * RemoteProviderHttpEsealClient extends a {@link AbstractRemoteHttpEsealClient} that allows the + * usage of a provider's remote http rest api in order to access e-seals and + * executeRemoteProviderRequestResponse documents + */ +@Component +public class RemoteProviderSignDocument + extends AbstractRemoteHttpEsealClient< + RemoteProviderSignDocumentRequest, RemoteProviderSignDocumentResponse> { + + public RemoteProviderSignDocument( + RemoteProviderProperties remoteProviderProperties, CloseableHttpClient httpClient) { + super(httpClient, remoteProviderProperties); + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/sign/request/AbstractRemoteProviderRequest.java b/eseal/src/main/java/gr/grnet/eseal/sign/request/AbstractRemoteProviderRequest.java new file mode 100644 index 0000000..4b773d2 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/sign/request/AbstractRemoteProviderRequest.java @@ -0,0 +1,32 @@ +package gr.grnet.eseal.sign.request; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public abstract class AbstractRemoteProviderRequest { + + @JsonProperty("Username") + private String username; + + @JsonProperty("Password") + private String password; + + @JsonIgnore private String key; + + @JsonIgnore private String url; + + @JsonIgnore private String description; + + public void setTOTP(String key, int waitForRefreshSeconds) {} + + public String toJSON() throws JsonProcessingException { + ObjectMapper objectMapper = new ObjectMapper(); + return objectMapper.writeValueAsString(this); + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/sign/request/AbstractRemoteProviderSignBufferRequest.java b/eseal/src/main/java/gr/grnet/eseal/sign/request/AbstractRemoteProviderSignBufferRequest.java new file mode 100644 index 0000000..9becc3a --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/sign/request/AbstractRemoteProviderSignBufferRequest.java @@ -0,0 +1,14 @@ +package gr.grnet.eseal.sign.request; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public abstract class AbstractRemoteProviderSignBufferRequest + extends AbstractRemoteProviderTOTPRequest { + + @JsonProperty("BufferToSign") + private String bufferToSign; +} diff --git a/eseal/src/main/java/gr/grnet/eseal/sign/request/AbstractRemoteProviderTOTPRequest.java b/eseal/src/main/java/gr/grnet/eseal/sign/request/AbstractRemoteProviderTOTPRequest.java new file mode 100644 index 0000000..a0f3cd5 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/sign/request/AbstractRemoteProviderTOTPRequest.java @@ -0,0 +1,19 @@ +package gr.grnet.eseal.sign.request; + +import com.fasterxml.jackson.annotation.JsonProperty; +import gr.grnet.eseal.utils.TOTP; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public abstract class AbstractRemoteProviderTOTPRequest extends AbstractRemoteProviderRequest { + + @JsonProperty("SignPassword") + private String signPassword; + + @Override + public void setTOTP(String key, int waitForRefreshSeconds) { + this.signPassword = TOTP.generate(key, waitForRefreshSeconds); + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/sign/request/RemoteProviderCertificatesRequest.java b/eseal/src/main/java/gr/grnet/eseal/sign/request/RemoteProviderCertificatesRequest.java new file mode 100644 index 0000000..ebd70d1 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/sign/request/RemoteProviderCertificatesRequest.java @@ -0,0 +1,14 @@ +package gr.grnet.eseal.sign.request; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class RemoteProviderCertificatesRequest extends AbstractRemoteProviderRequest { + + @JsonIgnore private String description = "Remote Provider Certificates Request"; +} diff --git a/eseal/src/main/java/gr/grnet/eseal/sign/request/RemoteProviderSignBufferPKCS1Request.java b/eseal/src/main/java/gr/grnet/eseal/sign/request/RemoteProviderSignBufferPKCS1Request.java new file mode 100644 index 0000000..35ca3d9 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/sign/request/RemoteProviderSignBufferPKCS1Request.java @@ -0,0 +1,18 @@ +package gr.grnet.eseal.sign.request; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class RemoteProviderSignBufferPKCS1Request extends AbstractRemoteProviderSignBufferRequest { + + @JsonProperty("Flags") + private String flags = "541696"; + + @JsonIgnore private String description = "Remote Provider Sign Buffer PKCS1 Request"; +} diff --git a/eseal/src/main/java/gr/grnet/eseal/sign/request/RemoteProviderSignBufferPKCS7Request.java b/eseal/src/main/java/gr/grnet/eseal/sign/request/RemoteProviderSignBufferPKCS7Request.java new file mode 100644 index 0000000..b0e92ab --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/sign/request/RemoteProviderSignBufferPKCS7Request.java @@ -0,0 +1,18 @@ +package gr.grnet.eseal.sign.request; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class RemoteProviderSignBufferPKCS7Request extends AbstractRemoteProviderSignBufferRequest { + + @JsonProperty("Flags") + private String flags = "544792"; + + @JsonIgnore private String description = "Remote Provider Sign Buffer PKCS7 Request"; +} diff --git a/eseal/src/main/java/gr/grnet/eseal/sign/request/RemoteProviderSignDocumentRequest.java b/eseal/src/main/java/gr/grnet/eseal/sign/request/RemoteProviderSignDocumentRequest.java new file mode 100644 index 0000000..c1c617d --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/sign/request/RemoteProviderSignDocumentRequest.java @@ -0,0 +1,39 @@ +package gr.grnet.eseal.sign.request; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Setter +@Getter +@NoArgsConstructor +public class RemoteProviderSignDocumentRequest extends AbstractRemoteProviderTOTPRequest { + + @JsonProperty("FileData") + private String fileData; + + @JsonProperty("FileType") + private String fileType = "pdf"; + + @JsonProperty("Page") + private int page = 0; + + @JsonProperty("Height") + private int height = 100; + + @JsonProperty("Width") + private int width = 100; + + @JsonProperty("X") + private int xx = 140; + + @JsonProperty("Y") + private int yy = 230; + + @JsonProperty("Appearance") + private int appearance = 15; + + @JsonIgnore private String description = "Remote Provider Sign Document Request"; +} diff --git a/eseal/src/main/java/gr/grnet/eseal/sign/response/AbstractRemoteProviderResponse.java b/eseal/src/main/java/gr/grnet/eseal/sign/response/AbstractRemoteProviderResponse.java new file mode 100644 index 0000000..2f6186a --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/sign/response/AbstractRemoteProviderResponse.java @@ -0,0 +1,15 @@ +package gr.grnet.eseal.sign.response; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public abstract class AbstractRemoteProviderResponse { + + @JsonProperty("Success") + private Boolean success = true; + + public abstract String getErrorMessage(); +} diff --git a/eseal/src/main/java/gr/grnet/eseal/sign/response/RemoteProviderCertificatesResponse.java b/eseal/src/main/java/gr/grnet/eseal/sign/response/RemoteProviderCertificatesResponse.java new file mode 100644 index 0000000..645cd8d --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/sign/response/RemoteProviderCertificatesResponse.java @@ -0,0 +1,39 @@ +package gr.grnet.eseal.sign.response; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class RemoteProviderCertificatesResponse extends AbstractRemoteProviderResponse { + + @JsonProperty("Issuer") + private String issuer; + + @JsonProperty("Subject") + private String subject; + + @JsonProperty("NotBefore") + private String notBefore; + + @JsonProperty("NotAfter") + private String notAfter; + + @JsonProperty("SerialNumber") + private String serialNumber; + + @JsonProperty("Thumbprint") + private String thumbprint; + + @JsonProperty("Certificates") + private String[] certificates; + + @JsonProperty("Message") + private String message; + + @Override + public String getErrorMessage() { + return this.message; + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/sign/response/RemoteProviderSignBufferResponse.java b/eseal/src/main/java/gr/grnet/eseal/sign/response/RemoteProviderSignBufferResponse.java new file mode 100644 index 0000000..b1ae596 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/sign/response/RemoteProviderSignBufferResponse.java @@ -0,0 +1,24 @@ +package gr.grnet.eseal.sign.response; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +public class RemoteProviderSignBufferResponse extends RemoteProviderTOTPResponse { + + @JsonProperty("Data") + private SignatureField data; + + public String getSignature() { + return this.data.signature; + } + + @Getter + @Setter + @NoArgsConstructor + public static class SignatureField { + @JsonProperty("Signature") + private String signature; + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/sign/response/RemoteProviderSignDocumentResponse.java b/eseal/src/main/java/gr/grnet/eseal/sign/response/RemoteProviderSignDocumentResponse.java new file mode 100644 index 0000000..497d2e3 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/sign/response/RemoteProviderSignDocumentResponse.java @@ -0,0 +1,27 @@ +package gr.grnet.eseal.sign.response; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class RemoteProviderSignDocumentResponse extends RemoteProviderTOTPResponse { + + @JsonProperty("Data") + private DataField data; + + public String getSignedFileData() { + return this.data.signedFileData; + } + + @Getter + @Setter + @NoArgsConstructor + public static class DataField { + @JsonProperty("SignedFileData") + private String signedFileData; + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/sign/response/RemoteProviderTOTPResponse.java b/eseal/src/main/java/gr/grnet/eseal/sign/response/RemoteProviderTOTPResponse.java new file mode 100644 index 0000000..3f05cc5 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/sign/response/RemoteProviderTOTPResponse.java @@ -0,0 +1,36 @@ +package gr.grnet.eseal.sign.response; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +public class RemoteProviderTOTPResponse extends AbstractRemoteProviderResponse { + + @JsonProperty("ErrData") + private ErrorData errorData; + + @Override + public String getErrorMessage() { + return this.errorData.getMessage(); + } + + @Getter + @Setter + @NoArgsConstructor + public static class ErrorData { + @JsonProperty("Message") + private String message; + + @JsonProperty("Module") + private Object module; + + @JsonProperty("Code") + private int code; + + @JsonProperty("InnerCode") + private int innerCode; + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/timestamp/DefaultTSASourceProperties.java b/eseal/src/main/java/gr/grnet/eseal/timestamp/DefaultTSASourceProperties.java new file mode 100644 index 0000000..0840031 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/timestamp/DefaultTSASourceProperties.java @@ -0,0 +1,10 @@ +package gr.grnet.eseal.timestamp; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class DefaultTSASourceProperties extends TSASourceProperties {} diff --git a/eseal/src/main/java/gr/grnet/eseal/timestamp/TSASourceProperties.java b/eseal/src/main/java/gr/grnet/eseal/timestamp/TSASourceProperties.java new file mode 100644 index 0000000..de15567 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/timestamp/TSASourceProperties.java @@ -0,0 +1,31 @@ +package gr.grnet.eseal.timestamp; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +class TSASourceProperties { + + /** TSA url */ + private String url; + + private final Truststore truststore = new Truststore(); + + @Getter + @Setter + @NoArgsConstructor + public static class Truststore { + + /** TSA truststore type */ + private String type; + + /** TSA truststore file name */ + private String file; + + /** TSA truststore password */ + private String password; + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/timestamp/TSASourcePropertiesFactory.java b/eseal/src/main/java/gr/grnet/eseal/timestamp/TSASourcePropertiesFactory.java new file mode 100644 index 0000000..13e745c --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/timestamp/TSASourcePropertiesFactory.java @@ -0,0 +1,31 @@ +package gr.grnet.eseal.timestamp; + +import gr.grnet.eseal.enums.TSASourceEnum; +import gr.grnet.eseal.exception.APIException; +import org.springframework.http.HttpStatus; + +public class TSASourcePropertiesFactory { + + private final DefaultTSASourceProperties apedTSASourceProperties; + private final TSASourcePropertiesWithBasicAuth haricaTSASourceProperties; + + public TSASourcePropertiesFactory( + DefaultTSASourceProperties apedTSASourceProperties, + TSASourcePropertiesWithBasicAuth haricaTSASourceProperties) { + this.apedTSASourceProperties = apedTSASourceProperties; + this.haricaTSASourceProperties = haricaTSASourceProperties; + } + + public TSASourceProperties getTSASourceProperties(TSASourceEnum tsaSourceEnum) { + + switch (tsaSourceEnum) { + case APED: + return apedTSASourceProperties; + case HARICA: + return haricaTSASourceProperties; + default: + throw new APIException( + HttpStatus.BAD_REQUEST.value(), "Unknown tsa source", HttpStatus.BAD_REQUEST); + } + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/timestamp/TSASourcePropertiesWithBasicAuth.java b/eseal/src/main/java/gr/grnet/eseal/timestamp/TSASourcePropertiesWithBasicAuth.java new file mode 100644 index 0000000..999c16e --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/timestamp/TSASourcePropertiesWithBasicAuth.java @@ -0,0 +1,26 @@ +package gr.grnet.eseal.timestamp; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class TSASourcePropertiesWithBasicAuth extends TSASourceProperties { + + /** TSA scheme */ + private String scheme = "https"; + + /** TSA host */ + private String host; + + /** TSA Basic Authentication username */ + private String username; + + /** TSA Basic Authentication password */ + private String password; + + /** TSA port */ + private int port = 443; +} diff --git a/eseal/src/main/java/gr/grnet/eseal/timestamp/TSASourceRegistry.java b/eseal/src/main/java/gr/grnet/eseal/timestamp/TSASourceRegistry.java new file mode 100644 index 0000000..209ec2c --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/timestamp/TSASourceRegistry.java @@ -0,0 +1,99 @@ +package gr.grnet.eseal.timestamp; + +import static net.logstash.logback.argument.StructuredArguments.f; + +import eu.europa.esig.dss.model.DSSDocument; +import eu.europa.esig.dss.model.InMemoryDocument; +import eu.europa.esig.dss.service.SecureRandomNonceSource; +import eu.europa.esig.dss.service.http.commons.TimestampDataLoader; +import eu.europa.esig.dss.service.tsp.OnlineTSPSource; +import eu.europa.esig.dss.spi.x509.tsp.TSPSource; +import gr.grnet.eseal.enums.TSASourceEnum; +import gr.grnet.eseal.logging.ServiceLogField; +import java.util.HashMap; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class TSASourceRegistry { + + private static final Logger LOGGER = LoggerFactory.getLogger(TSASourceRegistry.class); + + private HashMap tsaSources; + + public TSASourceRegistry(TSASourcePropertiesFactory tspSourcePropertiesFactory) { + + this.tsaSources = new HashMap(); + + for (TSASourceEnum tsaSourceEnum : TSASourceEnum.values()) { + + TSASourceProperties tspSourceProperties = + tspSourcePropertiesFactory.getTSASourceProperties(tsaSourceEnum); + + LOGGER.info( + "Initializing " + tsaSourceEnum.name() + " TSA . . .", + f(ServiceLogField.builder().build())); + + this.tsaSources.put(tsaSourceEnum, createTSPSource(tspSourceProperties)); + } + } + + public TSPSource getTSASource(TSASourceEnum tsaSourceEnum) { + return this.tsaSources.get(tsaSourceEnum); + } + + private TSPSource createTSPSource(TSASourceProperties tspSourceProperties) { + + OnlineTSPSource tsp = new OnlineTSPSource(tspSourceProperties.getUrl()); + tsp.setNonceSource(new SecureRandomNonceSource()); + if (tspSourceProperties instanceof TSASourcePropertiesWithBasicAuth) { + tsp.setDataLoader( + createTimestampDataLoader((TSASourcePropertiesWithBasicAuth) tspSourceProperties)); + } else if (tspSourceProperties instanceof DefaultTSASourceProperties) { + tsp.setDataLoader( + createTimestampDataLoader((DefaultTSASourceProperties) tspSourceProperties)); + } + return tsp; + } + + private TimestampDataLoader createTimestampDataLoader( + TSASourcePropertiesWithBasicAuth tsaSourcePropertiesWithBasicAuth) { + + TimestampDataLoader timestampDataLoader = + dataLoader( + tsaSourcePropertiesWithBasicAuth.getTruststore().getFile(), + tsaSourcePropertiesWithBasicAuth.getTruststore().getPassword(), + tsaSourcePropertiesWithBasicAuth.getTruststore().getType()); + + timestampDataLoader.addAuthentication( + tsaSourcePropertiesWithBasicAuth.getHost(), + tsaSourcePropertiesWithBasicAuth.getPort(), + tsaSourcePropertiesWithBasicAuth.getScheme(), + tsaSourcePropertiesWithBasicAuth.getUsername(), + tsaSourcePropertiesWithBasicAuth.getPassword()); + + return timestampDataLoader; + } + + private TimestampDataLoader createTimestampDataLoader( + DefaultTSASourceProperties defaultTSASourceProperties) { + + return dataLoader( + defaultTSASourceProperties.getTruststore().getFile(), + defaultTSASourceProperties.getTruststore().getPassword(), + defaultTSASourceProperties.getTruststore().getType()); + } + + private TimestampDataLoader dataLoader(String truststore, String password, String type) { + TimestampDataLoader timestampDataLoader = new TimestampDataLoader(); + + LOGGER.info("Building TSA truststore . . .", f(ServiceLogField.builder().build())); + + DSSDocument tspTruststoreFile = + new InMemoryDocument(TSASourceRegistry.class.getResourceAsStream("/".concat(truststore))); + timestampDataLoader.setSslTruststore(tspTruststoreFile); + timestampDataLoader.setSslTruststorePassword(password); + timestampDataLoader.setSslTruststoreType(type); + + return timestampDataLoader; + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/utils/TOTP.java b/eseal/src/main/java/gr/grnet/eseal/utils/TOTP.java new file mode 100644 index 0000000..ec11e9d --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/utils/TOTP.java @@ -0,0 +1,102 @@ +package gr.grnet.eseal.utils; + +import static net.logstash.logback.argument.StructuredArguments.f; + +import dev.samstevens.totp.code.DefaultCodeGenerator; +import dev.samstevens.totp.code.HashingAlgorithm; +import dev.samstevens.totp.exceptions.CodeGenerationException; +import gr.grnet.eseal.exception.InternalServerErrorException; +import gr.grnet.eseal.logging.ServiceLogField; +import java.time.Instant; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public final class TOTP { + + private static final Logger LOGGER = LoggerFactory.getLogger(TOTP.class); + + // password digit size + private static final int PASSWORD_SIZE = 6; + + // password valid period + private static final long PASSWORD_PERIOD = 30L; + + // hashing algorithm + private static final HashingAlgorithm HASHING_ALGORITHM = HashingAlgorithm.SHA1; + + // code generator singleton + private static DefaultCodeGenerator defaultCodeGenerator; + + private TOTP() { + // not called + } + + /** + * @param key secret key that is being used an input to the totp generation + * @return the generated totp + * @throws CodeGenerationException when something goes wrong with the totp generation + */ + public static String generate(final String key) throws CodeGenerationException { + + // check if the generator is initialized + if (defaultCodeGenerator == null) { + defaultCodeGenerator = new DefaultCodeGenerator(HASHING_ALGORITHM, PASSWORD_SIZE); + } + + long unixTime = Instant.now().getEpochSecond(); + long currentBucket = Math.floorDiv(unixTime, PASSWORD_PERIOD); + + return defaultCodeGenerator.generate(key, currentBucket); + } + + /** + * @param key secret key that is being used an input to the totp generation + * @param totpWaitForRefreshSeconds time (in seconds) to wait in order to generate a new totp + * @return the generated totp + * @throws InternalServerErrorException when something goes wrong with the totp generation + */ + public static String generate(final String key, final long totpWaitForRefreshSeconds) { + + try { + + String totp = generate(key); + + // TODO + // Revisit this code block as it has been provided as a temporary solution for the TOTP + // timeout possibility and we need to re-evaluate it. + long timePeriodRemainingSeconds = getTimePeriodRemainingSeconds(); + if (timePeriodRemainingSeconds <= totpWaitForRefreshSeconds) { + LOGGER.info( + "TOTP remaining time period is below/at {} seconds, {} seconds.Waiting for expiration.", + totpWaitForRefreshSeconds, + timePeriodRemainingSeconds, + f(ServiceLogField.builder().build())); + Thread.sleep(timePeriodRemainingSeconds * 1000); + LOGGER.info("Generating new TOTP", f(ServiceLogField.builder().build())); + totp = generate(key); + } + + return totp; + + } catch (CodeGenerationException e) { + LOGGER.error( + "TOTP generator has encountered an error", + f(ServiceLogField.builder().details(e.getMessage()).build())); + throw new InternalServerErrorException("TOTP generator has encountered an error"); + } catch (InterruptedException ie) { + LOGGER.error( + "Internal thread error", f(ServiceLogField.builder().details(ie.getMessage()).build())); + throw new InternalServerErrorException("Internal thread error"); + } + } + + /** + * Calculate the remaining seconds of a period with a size of {@link TOTP#PASSWORD_PERIOD} with + * the assumption that it has started from the Unix start date + * + * @return remain seconds of the period + */ + private static long getTimePeriodRemainingSeconds() { + return PASSWORD_PERIOD - Instant.now().getEpochSecond() % PASSWORD_PERIOD; + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/utils/Utils.java b/eseal/src/main/java/gr/grnet/eseal/utils/Utils.java new file mode 100644 index 0000000..1456e06 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/utils/Utils.java @@ -0,0 +1,131 @@ +package gr.grnet.eseal.utils; + +import static net.logstash.logback.argument.StructuredArguments.f; + +import gr.grnet.eseal.logging.ServiceLogField; +import java.security.KeyStore; +import java.security.cert.X509Certificate; +import javax.naming.ldap.LdapName; +import javax.naming.ldap.Rdn; +import javax.net.ssl.TrustManager; +import javax.net.ssl.TrustManagerFactory; +import javax.net.ssl.X509TrustManager; +import org.apache.commons.lang3.time.DurationFormatUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public final class Utils { + + private static final Logger LOGGER = LoggerFactory.getLogger(Utils.class); + + private Utils() { + // not called + } + + /** + * {@link #formatTimePeriod(long)} accepts the beginning (unix time) of period and formats its + * duration in seconds, minutes, hours and days + * + * @param start + * @return + */ + public static String formatTimePeriod(final long start) { + long currentTime = System.currentTimeMillis(); + long timePeriod = currentTime - start; + String timePeriodToString = DurationFormatUtils.formatDuration(timePeriod, "d") + "d"; + if ("0d".equals(timePeriodToString)) { + timePeriodToString = DurationFormatUtils.formatDuration(timePeriod, "H") + "h"; + if ("0h".equals(timePeriodToString)) { + timePeriodToString = DurationFormatUtils.formatDuration(timePeriod, "m") + "m"; + if ("0m".equals(timePeriodToString)) { + timePeriodToString = DurationFormatUtils.formatDuration(timePeriod, "s") + "s"; + if ("0s".equals(timePeriodToString)) { + timePeriodToString = timePeriod + "ms"; + } + } + } + } + return timePeriodToString; + } + + /** + * * extractCNFromSubject extracts and returns the value of the common name rdn + * + * @param subject of an x509 certificate + * @return the value of the common name rdn + * @throws Exception when the subject is invalid + */ + public static String extractCNFromSubject(String subject) throws Exception { + return extractRDNFromSubject(subject, "CN"); + } + + /** + * * extractCNFromSubject extracts and returns the value of the common name rdn + * + * @param subject of an x509 certificate + * @return the value of the organizational unit rdn + * @throws Exception when the subject is invalid + */ + public static String extractOUFromSubject(String subject) throws Exception { + return extractRDNFromSubject(subject, "OU"); + } + + private static String extractRDNFromSubject(String subject, String rdn) throws Exception { + LdapName ldapName = new LdapName(subject); + for (Rdn r : ldapName.getRdns()) { + if (r.getType().equals(rdn)) { + return r.getValue().toString(); + } + } + throw new Exception("No" + rdn + "present in subject"); + } + + /** + * @param signerInfo represents the singer's info inside the signature + * @param date represents the visible date of the signature + * @return properly formatted and combined singerInfo and date + */ + public static String formatVisibleSignatureText(String signerInfo, String date) { + + String signerInfoFormatted = String.format("%1$-100s", "Digitally signed by " + signerInfo); + + String dateFormatted = String.format("%1$-100s", "Date: " + date); + + return signerInfoFormatted + "\n" + dateFormatted; + } + + /** + * Loads the default java CA certs(generally, from JAVA_HOME/lib/cacerts) into a + * keystore(truststore) + * + * @return the truststore that contains the default java CA certs + * @throws Exception during the initialization of the trust material + */ + public static KeyStore getJavaDefaultTrustStore() throws Exception { + + KeyStore trustStore = KeyStore.getInstance("JKS"); + trustStore.load(null, null); + + TrustManagerFactory trustManagerFactory = + TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); + trustManagerFactory.init((KeyStore) null); + + LOGGER.info("Loading default java truststore . . .", f(ServiceLogField.builder().build())); + + for (TrustManager trustManager : trustManagerFactory.getTrustManagers()) { + if (trustManager instanceof X509TrustManager) { + for (X509Certificate acceptedIssuer : + ((X509TrustManager) trustManager).getAcceptedIssuers()) { + trustStore.setCertificateEntry(acceptedIssuer.getSubjectDN().getName(), acceptedIssuer); + LOGGER.info( + "Loaded certificate: {}", + acceptedIssuer.getSubjectDN().getName(), + f(ServiceLogField.builder().build())); + } + } + } + + LOGGER.info("Loaded {} certificates", trustStore.size(), f(ServiceLogField.builder().build())); + return trustStore; + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/utils/ValueOfEnum.java b/eseal/src/main/java/gr/grnet/eseal/utils/ValueOfEnum.java new file mode 100644 index 0000000..334d229 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/utils/ValueOfEnum.java @@ -0,0 +1,24 @@ +package gr.grnet.eseal.utils; + +import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; +import javax.validation.Constraint; +import javax.validation.Payload; + +@Target({FIELD}) +@Retention(RUNTIME) +@Documented +@Constraint(validatedBy = ValueOfEnumValidator.class) +public @interface ValueOfEnum { + Class> enumClass(); + + String message() default ""; + + Class[] groups() default {}; + + Class[] payload() default {}; +} diff --git a/eseal/src/main/java/gr/grnet/eseal/utils/ValueOfEnumValidator.java b/eseal/src/main/java/gr/grnet/eseal/utils/ValueOfEnumValidator.java new file mode 100644 index 0000000..763b64d --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/utils/ValueOfEnumValidator.java @@ -0,0 +1,28 @@ +package gr.grnet.eseal.utils; + +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +public class ValueOfEnumValidator implements ConstraintValidator { + private List acceptedValues; + + @Override + public void initialize(ValueOfEnum annotation) { + acceptedValues = + Stream.of(annotation.enumClass().getEnumConstants()) + .map(Enum::name) + .collect(Collectors.toList()); + } + + @Override + public boolean isValid(CharSequence value, ConstraintValidatorContext context) { + if (value == null) { + return true; + } + + return acceptedValues.contains(value.toString()); + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/utils/validation/Base64.java b/eseal/src/main/java/gr/grnet/eseal/utils/validation/Base64.java new file mode 100644 index 0000000..67bf458 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/utils/validation/Base64.java @@ -0,0 +1,22 @@ +package gr.grnet.eseal.utils.validation; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +import javax.validation.Constraint; +import javax.validation.Payload; + +@Documented +@Constraint(validatedBy = Base64Validator.class) +@Target({ElementType.FIELD}) +@Retention(RetentionPolicy.RUNTIME) +public @interface Base64 { + + String message() default ""; + + Class[] groups() default {}; + + Class[] payload() default {}; +} diff --git a/eseal/src/main/java/gr/grnet/eseal/utils/validation/Base64RequestFieldCheckGroup.java b/eseal/src/main/java/gr/grnet/eseal/utils/validation/Base64RequestFieldCheckGroup.java new file mode 100644 index 0000000..c90546b --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/utils/validation/Base64RequestFieldCheckGroup.java @@ -0,0 +1,9 @@ +package gr.grnet.eseal.utils.validation; + +/** + * Base64RequestFieldCheckGroup is an empty interface, being used to group together the validation + * needed for the {@link gr.grnet.eseal.utils.validation.Base64} annotation. It is used at the + * controller level in combination with the {@link + * org.springframework.validation.annotation.Validated}. + */ +public interface Base64RequestFieldCheckGroup {} diff --git a/eseal/src/main/java/gr/grnet/eseal/utils/validation/Base64Validator.java b/eseal/src/main/java/gr/grnet/eseal/utils/validation/Base64Validator.java new file mode 100644 index 0000000..21457a9 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/utils/validation/Base64Validator.java @@ -0,0 +1,32 @@ +package gr.grnet.eseal.utils.validation; + +import java.nio.charset.StandardCharsets; +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +/** + * This validator {@link Base64Validator} is responsible to check whether a class field is Base64 + * encoded or not + */ +public class Base64Validator implements ConstraintValidator { + @Override + public void initialize(Base64 constraintAnnotation) {} + + @Override + public boolean isValid( + String base64field, ConstraintValidatorContext constraintValidatorContext) { + + try { + java.util.Base64.getDecoder().decode(base64field.getBytes(StandardCharsets.UTF_8)); + } catch (IllegalArgumentException exc) { + // // disable existing violation message + // constraintValidatorContext.disableDefaultConstraintViolation(); + // // build new violation message and add it + // constraintValidatorContext + // .buildConstraintViolationWithTemplate("message") + // .addConstraintViolation(); + return false; + } + return true; + } +} diff --git a/eseal/src/main/java/gr/grnet/eseal/utils/validation/NotEmptySignDocumentRequestFieldsCheckGroup.java b/eseal/src/main/java/gr/grnet/eseal/utils/validation/NotEmptySignDocumentRequestFieldsCheckGroup.java new file mode 100644 index 0000000..1106fc6 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/utils/validation/NotEmptySignDocumentRequestFieldsCheckGroup.java @@ -0,0 +1,10 @@ +package gr.grnet.eseal.utils.validation; + +/** + * NotEmptySignDocumentRequestFieldsCheckGroup is an empty interface, being used to group together + * the validation needed for the {@link javax.validation.constraints.NotEmpty} annotation. It is + * used for the validation of the fields for the {@link gr.grnet.eseal.dto.SignDocumentRequestDto}. + * Also used at the controller level in combination with the {@link + * org.springframework.validation.annotation.Validated}. + */ +public interface NotEmptySignDocumentRequestFieldsCheckGroup {} diff --git a/eseal/src/main/java/gr/grnet/eseal/utils/validation/NotEmptyTimestampDocumentRequestFieldsCheckGroup.java b/eseal/src/main/java/gr/grnet/eseal/utils/validation/NotEmptyTimestampDocumentRequestFieldsCheckGroup.java new file mode 100644 index 0000000..2641542 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/utils/validation/NotEmptyTimestampDocumentRequestFieldsCheckGroup.java @@ -0,0 +1,10 @@ +package gr.grnet.eseal.utils.validation; + +/** + * NotEmptyValidateDocumentRequestFieldsCheckGroup is an empty interface, being used to group + * together the validation needed for the {@link javax.validation.constraints.NotEmpty} annotation. + * It is used for the validation of the fields for the {@link + * gr.grnet.eseal.dto.TimestampDocumentRequestDto}. Also used at the controller level in combination + * with the {@link org.springframework.validation.annotation.Validated}. + */ +public interface NotEmptyTimestampDocumentRequestFieldsCheckGroup {} diff --git a/eseal/src/main/java/gr/grnet/eseal/utils/validation/NotEmptyValidateDocumentRequestFieldsCheckGroup.java b/eseal/src/main/java/gr/grnet/eseal/utils/validation/NotEmptyValidateDocumentRequestFieldsCheckGroup.java new file mode 100644 index 0000000..2f91844 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/utils/validation/NotEmptyValidateDocumentRequestFieldsCheckGroup.java @@ -0,0 +1,10 @@ +package gr.grnet.eseal.utils.validation; + +/** + * NotEmptyValidateDocumentRequestFieldsCheckGroup is an empty interface, being used to group + * together the validation needed for the {@link javax.validation.constraints.NotEmpty} annotation. + * It is used for the validation of the fields for the {@link + * gr.grnet.eseal.dto.ValidateDocumentRequestDto}. Also used at the controller level in combination + * with the {@link org.springframework.validation.annotation.Validated}. + */ +public interface NotEmptyValidateDocumentRequestFieldsCheckGroup {} diff --git a/eseal/src/main/java/gr/grnet/eseal/utils/validation/ValueOfEnumRequestFieldCheckGroup.java b/eseal/src/main/java/gr/grnet/eseal/utils/validation/ValueOfEnumRequestFieldCheckGroup.java new file mode 100644 index 0000000..ee1aa0c --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/utils/validation/ValueOfEnumRequestFieldCheckGroup.java @@ -0,0 +1,8 @@ +package gr.grnet.eseal.utils.validation; + +/** + * Base64RequestFieldCheckGroup is an empty interface, being used to group together the validation + * needed for the {@link gr.grnet.eseal.utils.ValueOfEnum} annotation. It is used at the controller + * level in combination with the {@link org.springframework.validation.annotation.Validated}. + */ +public interface ValueOfEnumRequestFieldCheckGroup {} diff --git a/eseal/src/main/java/gr/grnet/eseal/validation/DocumentValidatorLOTL.java b/eseal/src/main/java/gr/grnet/eseal/validation/DocumentValidatorLOTL.java new file mode 100644 index 0000000..beffe51 --- /dev/null +++ b/eseal/src/main/java/gr/grnet/eseal/validation/DocumentValidatorLOTL.java @@ -0,0 +1,246 @@ +package gr.grnet.eseal.validation; + +import static net.logstash.logback.argument.StructuredArguments.f; + +import eu.europa.esig.dss.alert.ExceptionOnStatusAlert; +import eu.europa.esig.dss.model.DSSException; +import eu.europa.esig.dss.model.InMemoryDocument; +import eu.europa.esig.dss.service.crl.OnlineCRLSource; +import eu.europa.esig.dss.service.http.commons.CommonsDataLoader; +import eu.europa.esig.dss.service.http.commons.FileCacheDataLoader; +import eu.europa.esig.dss.service.ocsp.OnlineOCSPSource; +import eu.europa.esig.dss.spi.client.http.DSSFileLoader; +import eu.europa.esig.dss.spi.client.http.IgnoreDataLoader; +import eu.europa.esig.dss.spi.tsl.TrustedListsCertificateSource; +import eu.europa.esig.dss.spi.x509.KeyStoreCertificateSource; +import eu.europa.esig.dss.tsl.alerts.LOTLAlert; +import eu.europa.esig.dss.tsl.alerts.TLAlert; +import eu.europa.esig.dss.tsl.alerts.detections.LOTLLocationChangeDetection; +import eu.europa.esig.dss.tsl.alerts.detections.OJUrlChangeDetection; +import eu.europa.esig.dss.tsl.alerts.detections.TLExpirationDetection; +import eu.europa.esig.dss.tsl.alerts.detections.TLSignatureErrorDetection; +import eu.europa.esig.dss.tsl.alerts.handlers.log.LogLOTLLocationChangeAlertHandler; +import eu.europa.esig.dss.tsl.alerts.handlers.log.LogOJUrlChangeAlertHandler; +import eu.europa.esig.dss.tsl.alerts.handlers.log.LogTLExpirationAlertHandler; +import eu.europa.esig.dss.tsl.alerts.handlers.log.LogTLSignatureErrorAlertHandler; +import eu.europa.esig.dss.tsl.function.OfficialJournalSchemeInformationURI; +import eu.europa.esig.dss.tsl.job.TLValidationJob; +import eu.europa.esig.dss.tsl.source.LOTLSource; +import eu.europa.esig.dss.validation.CertificateVerifier; +import eu.europa.esig.dss.validation.CommonCertificateVerifier; +import gr.grnet.eseal.config.ValidationProperties; +import gr.grnet.eseal.logging.ServiceLogField; +import gr.grnet.eseal.utils.Utils; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.InputStream; +import java.security.KeyStore; +import java.util.Arrays; +import java.util.Enumeration; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * DocumentValidatorLOTL is used in the document validation process using the european trusted list + * as trust source material + */ +public class DocumentValidatorLOTL { + + private static final Logger LOGGER = LoggerFactory.getLogger(DocumentValidatorLOTL.class); + + private final String lotlCacheFolder = "lotl-cache"; + + private ValidationProperties validationProperties; + + private CertificateVerifier certificateVerifier; + + private TLValidationJob job; + + public DocumentValidatorLOTL(ValidationProperties validationProperties) { + this.validationProperties = validationProperties; + } + + public CertificateVerifier getCertificateVerifier() { + return certificateVerifier; + } + + /** + * initialize sets up the internal lotl validation job(pulling and loading all the needed trusted + * material) and the certificate verifier that utilizes the trust sources to perform the document + * validation + */ + public void initialize() throws Exception { + + // initialize the the tl validation job + this.job = initializeTLValidationJob(); + /// initialize the certificate verifier + this.certificateVerifier = initializeCertificateVerifier(); + + // add to both the tl validation job and the certificate verifier + // the common trusted list source + TrustedListsCertificateSource trustedListsCertificateSource = + new TrustedListsCertificateSource(); + this.job.setTrustedListCertificateSource(trustedListsCertificateSource); + this.certificateVerifier.setTrustedCertSources(trustedListsCertificateSource); + + // use the offline loader + this.job.offlineRefresh(); + } + + /** + * onlineLOTLRefresh refreshes the content of the lotl trust source by pulling new material from + * the online lotl url + */ + public void onlineLOTLRefresh() { + this.job.onlineRefresh(); + } + + private CertificateVerifier initializeCertificateVerifier() { + + CommonCertificateVerifier certificateVerifier = new CommonCertificateVerifier(); + + // Default configs + certificateVerifier.setAlertOnMissingRevocationData(new ExceptionOnStatusAlert()); + certificateVerifier.setCheckRevocationForUntrustedChains(false); + certificateVerifier.setDataLoader(new CommonsDataLoader()); + certificateVerifier.setCrlSource(new OnlineCRLSource()); + certificateVerifier.setOcspSource(new OnlineOCSPSource()); + + return certificateVerifier; + } + + private TLValidationJob initializeTLValidationJob() throws Exception { + TLValidationJob job = new TLValidationJob(); + job.setListOfTrustedListSources(europeanLOTL()); + job.setOfflineDataLoader(offlineLoader()); + job.setOnlineDataLoader(onlineLoader()); + + // set alerts + job.setLOTLAlerts(Arrays.asList(ojUrlAlert(europeanLOTL()), lotlLocationAlert(europeanLOTL()))); + job.setTLAlerts(Arrays.asList(tlSigningAlert(), tlExpirationDetection())); + + return job; + } + + private DSSFileLoader onlineLoader() throws Exception { + + FileCacheDataLoader onlineFileLoader = new FileCacheDataLoader(); + onlineFileLoader.setCacheExpirationTime(0); + onlineFileLoader.setFileCacheDirectory(tlCacheDirectory()); + onlineFileLoader.setDataLoader(onlineLOTLDataLoader()); + + return onlineFileLoader; + } + + public CommonsDataLoader onlineLOTLDataLoader() throws Exception { + + // load the default java truststore + KeyStore javaDefaultTruststore = Utils.getJavaDefaultTrustStore(); + + // load the extra trust material truststore + KeyStore extraKeystore = + KeyStore.getInstance(this.validationProperties.getExtraTrustStoreType()); + InputStream extraIs = + DocumentValidatorLOTL.class.getResourceAsStream( + "/".concat(this.validationProperties.getExtraTrustStoreFile())); + if (extraIs == null) { + throw new FileNotFoundException( + "Extra truststore " + + this.validationProperties.getExtraTrustStoreFile() + + " could not be loaded"); + } + extraKeystore.load( + extraIs, this.validationProperties.getExtraTrustStorePassword().toCharArray()); + // add the extra trust material to the java default one + Enumeration e = extraKeystore.aliases(); + while (e.hasMoreElements()) { + String a = e.nextElement(); + javaDefaultTruststore.setEntry(a, extraKeystore.getEntry(a, null), null); + } + + // convert the truststore to a byte output stream + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + javaDefaultTruststore.store(baos, "combined".toCharArray()); + + // load the combined truststore to the online data loader used by the validation job + CommonsDataLoader dataLoader = new CommonsDataLoader(); + dataLoader.setSslTruststore(new InMemoryDocument(new ByteArrayInputStream(baos.toByteArray()))); + dataLoader.setSslTruststoreType("JKS"); + dataLoader.setSslTruststorePassword("combined"); + + return dataLoader; + } + + private LOTLSource europeanLOTL() { + LOTLSource lotlSource = new LOTLSource(); + lotlSource.setUrl(this.validationProperties.getLotlUrl()); + lotlSource.setCertificateSource(officialJournalKeystore()); + lotlSource.setSigningCertificatesAnnouncementPredicate( + new OfficialJournalSchemeInformationURI(this.validationProperties.getOfficialJournalUrl())); + lotlSource.setPivotSupport(true); + return lotlSource; + } + + private DSSFileLoader offlineLoader() { + FileCacheDataLoader offlineFileLoader = new FileCacheDataLoader(); + offlineFileLoader.setCacheExpirationTime(Long.MAX_VALUE); + offlineFileLoader.setDataLoader(new IgnoreDataLoader()); + offlineFileLoader.setFileCacheDirectory(tlCacheDirectory()); + return offlineFileLoader; + } + + private File tlCacheDirectory() { + File lotlCache = new File(this.validationProperties.getLotlCacheDir(), lotlCacheFolder); + if (!lotlCache.exists()) { + LOGGER.info( + "LOTL cache {} doesn't exist.", + lotlCache.getAbsolutePath(), + f(ServiceLogField.builder().build())); + } + return lotlCache; + } + + private KeyStoreCertificateSource officialJournalKeystore() { + + try { + return new KeyStoreCertificateSource( + this.getClass() + .getResourceAsStream( + "/".concat(this.validationProperties.getOfficialJournalKeystoreFile())), + this.validationProperties.getOfficialJournalKeystoreType(), + this.validationProperties.getOfficialJournalKeystorePassword()); + } catch (Exception e) { + throw new DSSException( + "Unable to load the file " + this.validationProperties.getOfficialJournalKeystoreFile(), + e); + } + } + + // LOTL Alerts + + private TLAlert tlSigningAlert() { + TLSignatureErrorDetection signingDetection = new TLSignatureErrorDetection(); + LogTLSignatureErrorAlertHandler handler = new LogTLSignatureErrorAlertHandler(); + return new TLAlert(signingDetection, handler); + } + + private TLAlert tlExpirationDetection() { + TLExpirationDetection expirationDetection = new TLExpirationDetection(); + LogTLExpirationAlertHandler handler = new LogTLExpirationAlertHandler(); + return new TLAlert(expirationDetection, handler); + } + + private LOTLAlert ojUrlAlert(LOTLSource source) { + OJUrlChangeDetection ojUrlDetection = new OJUrlChangeDetection(source); + LogOJUrlChangeAlertHandler handler = new LogOJUrlChangeAlertHandler(); + return new LOTLAlert(ojUrlDetection, handler); + } + + private LOTLAlert lotlLocationAlert(LOTLSource source) { + LOTLLocationChangeDetection lotlLocationDetection = new LOTLLocationChangeDetection(source); + LogLOTLLocationChangeAlertHandler handler = new LogLOTLLocationChangeAlertHandler(); + return new LOTLAlert(lotlLocationDetection, handler); + } +} diff --git a/eseal/src/main/resources/aped.truststore.jks b/eseal/src/main/resources/aped.truststore.jks new file mode 100644 index 0000000..3ef898c Binary files /dev/null and b/eseal/src/main/resources/aped.truststore.jks differ diff --git a/eseal/src/main/resources/application.properties b/eseal/src/main/resources/application.properties new file mode 100644 index 0000000..b17bcef --- /dev/null +++ b/eseal/src/main/resources/application.properties @@ -0,0 +1,77 @@ +# Filesystem configuration path, for the application properties file +spring.config.import=optional:file:/etc/eseal/conf.d/application.properties + +# Configuration values that are needed for the remote provider's http client +# remote provider rest api endpoint +eseal.remote.provider.endpoint=test.provider.com +# remote provider enable retry on failed requests +eseal.remote.provider.retry.enabled=true +# remote provider how many times we should retry failed requests +eseal.remote.provider.retry.counter=3 +# remote provider how much time should the client wait before the next retry in seconds +eseal.remote.provider.retry.interval=5 +# remote provider time threshold that indicates that we should generate a new totp token +# for time values lower than the threshold +eseal.remote.provider.totp.refresh.seconds.wait=5 +# remote provider verify the API certs +eseal.remote.provider.tls.verify=true +# remote provider client truststore that contains the API certs +eseal.remote.provider.truststore.file=remote_provider_http_eseal_client.truststore.jks +# remote provider client truststore password to access +eseal.remote.provider.truststore.password=providerpass +# remote provider client truststore type +eseal.remote.provider.truststore.type=JKS + +#### Validation properties ##### +# official journal client keystore +eseal.validation.oj.keystore.filename=oj.keystore.p12 +# official journal client keystore type +eseal.validation.oj.keystore.type=PKCS12 +# official journal client keystore password +eseal.validation.oj.keystore.password=dss-password +# official journal url +eseal.validation.oj.url=https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=uriserv:OJ.C_.2019.276.01.0001.01.ENG +# european list of trusted lists URL +eseal.validation.lotl.url=https://ec.europa.eu/tools/lotl/eu-lotl.xml +# keep refreshing the lotl sources on a fixed interval +eseal.validation.lotl.refresh.enable=true +# initial delay for the lotl sources online refresh in milliseconds +eseal.validation.lotl.refresh.initial.delay=0 +# online refresh interval for the lotl sources in milliseconds +eseal.validation.lotl.refresh.interval=21600000 +# lotl trust sources filesystem cache +eseal.validation.lotl.cache.dir=/etc/eseal/conf.d/ +# truststore containing extra trust certs needed during the initialization of the LOTL source +eseal.validation.lotl.extra.truststore.file=extra-lotl.truststore.jks +# extra lotl truststore password +eseal.validation.lotl.extra.truststore.password=extra-tl +# extra lotl truststore type +eseal.validation.lotl.extra.truststore.type=JKS + +### Timestamping Provider properties ### + +##### APED ##### +# aped tsa url +eseal.tsa.aped.url=https://timestamp.aped.gov.gr/qtss +# aped tsa truststore type +eseal.tsa.aped.truststore.type=JKS +# aped tsa truststore file +eseal.tsa.aped.truststore.file=aped.truststore.jks +# aped tsa truststore password +eseal.tsa.aped.truststore.password=apedts + +##### HARICA ##### +# harica tsa url +eseal.tsa.harica.url=https://qts.harica.gr +# harica tsa truststore type +eseal.tsa.harica.truststore.type=JKS +# harica tsa truststore file +eseal.tsa.harica.truststore.file=harica.truststore.jks +# harica tsa truststore password +eseal.tsa.harica.truststore.password=harica-qtsa +# harica tsa host +eseal.tsa.harica.host=qts.harica.gr +# harica tsa basic auth username +eseal.tsa.harica.username=STE +# harica tsa basic auth password +eseal.tsa.harica.password=xRJbYDn7tgP8mhIhdN6te3oDo5UUKJY7 \ No newline at end of file diff --git a/eseal/src/main/resources/checkstyle.xml b/eseal/src/main/resources/checkstyle.xml new file mode 100644 index 0000000..ff0b596 --- /dev/null +++ b/eseal/src/main/resources/checkstyle.xml @@ -0,0 +1,320 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eseal/src/main/resources/extra-lotl.truststore.jks b/eseal/src/main/resources/extra-lotl.truststore.jks new file mode 100644 index 0000000..3e4cb84 Binary files /dev/null and b/eseal/src/main/resources/extra-lotl.truststore.jks differ diff --git a/eseal/src/main/resources/harica.truststore.jks b/eseal/src/main/resources/harica.truststore.jks new file mode 100644 index 0000000..d397c84 Binary files /dev/null and b/eseal/src/main/resources/harica.truststore.jks differ diff --git a/eseal/src/main/resources/logback.xml b/eseal/src/main/resources/logback.xml new file mode 100644 index 0000000..22b8c24 --- /dev/null +++ b/eseal/src/main/resources/logback.xml @@ -0,0 +1,25 @@ + + + + + + yyyy-MM-dd'T'HH:mm:ss.SSS + + [ignore] + [ignore] + + + + + + + + + + + + + + + + diff --git a/eseal/src/main/resources/oj.keystore.p12 b/eseal/src/main/resources/oj.keystore.p12 new file mode 100644 index 0000000..7351669 Binary files /dev/null and b/eseal/src/main/resources/oj.keystore.p12 differ diff --git a/eseal/src/main/resources/remote_provider_http_eseal_client.truststore.jks b/eseal/src/main/resources/remote_provider_http_eseal_client.truststore.jks new file mode 100644 index 0000000..f164967 Binary files /dev/null and b/eseal/src/main/resources/remote_provider_http_eseal_client.truststore.jks differ diff --git a/eseal/src/main/resources/visible-signature/DejaVuSans.ttf b/eseal/src/main/resources/visible-signature/DejaVuSans.ttf new file mode 100644 index 0000000..e5f7eec Binary files /dev/null and b/eseal/src/main/resources/visible-signature/DejaVuSans.ttf differ diff --git a/eseal/src/main/resources/visible-signature/ste.jpg b/eseal/src/main/resources/visible-signature/ste.jpg new file mode 100644 index 0000000..62a841e Binary files /dev/null and b/eseal/src/main/resources/visible-signature/ste.jpg differ diff --git a/eseal/src/test/java/gr/grnet/eseal/DocumentSignControllerTests.java b/eseal/src/test/java/gr/grnet/eseal/DocumentSignControllerTests.java new file mode 100644 index 0000000..278e811 --- /dev/null +++ b/eseal/src/test/java/gr/grnet/eseal/DocumentSignControllerTests.java @@ -0,0 +1,504 @@ +package gr.grnet.eseal; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; + +import com.fasterxml.jackson.databind.ObjectMapper; +import gr.grnet.eseal.api.v1.DocumentSignController; +import gr.grnet.eseal.config.RemoteProviderProperties; +import gr.grnet.eseal.dto.SignDocumentRequestDto; +import gr.grnet.eseal.dto.SignDocumentResponseDto; +import gr.grnet.eseal.dto.ToSignDocument; +import gr.grnet.eseal.exception.APIError; +import gr.grnet.eseal.exception.InternalServerErrorException; +import gr.grnet.eseal.service.RemoteSignDocumentService; +import gr.grnet.eseal.service.SignDocumentServiceFactory; +import gr.grnet.eseal.sign.RemoteProviderCertificates; +import java.util.ArrayList; +import java.util.List; +import javax.validation.Validation; +import javax.validation.Validator; +import javax.validation.ValidatorFactory; +import org.hibernate.validator.HibernateValidator; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import org.springframework.boot.test.context.TestConfiguration; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.Bean; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.mock.web.MockHttpServletResponse; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.web.servlet.MockMvc; + +@WebMvcTest(DocumentSignController.class) +@ContextConfiguration( + classes = {EsealApplication.class, DocumentSignControllerTests.TestConfig.class}) +class DocumentSignControllerTests { + + @Autowired private MockMvc mockMvc; + + @MockBean private RemoteSignDocumentService remoteSignDocumentService; + + @MockBean private SignDocumentServiceFactory signDocumentServiceFactory; + + @MockBean private RemoteProviderProperties remoteProviderProperties; + + @MockBean private RemoteProviderCertificates remoteProviderCertificates; + + private final String signingPath = "/api/v1/signing/remoteSignDocument"; + + private ObjectMapper objectMapper = new ObjectMapper(); + + @TestConfiguration + static class TestConfig { + @Bean + public Validator validator() { + ValidatorFactory validatorFactory = + Validation.byProvider(HibernateValidator.class) + .configure() + .failFast(true) + .buildValidatorFactory(); + return validatorFactory.getValidator(); + } + } + + @Test + void SignDocumentSuccess() throws Exception { + + // Valid request body + SignDocumentRequestDto signDocumentRequestDto = new SignDocumentRequestDto(); + signDocumentRequestDto.setUsername("u1"); + signDocumentRequestDto.setPassword("p1"); + signDocumentRequestDto.setKey("k1"); + ToSignDocument toSignDocument = new ToSignDocument(); + toSignDocument.setBytes("cmFuZG9tLWJ5dGVz"); + toSignDocument.setName("random-name"); + signDocumentRequestDto.setToSignDocument(toSignDocument); + + when(this.signDocumentServiceFactory.create(any())).thenReturn(remoteSignDocumentService); + + // mock the service response + when(this.remoteSignDocumentService.signDocument(any())).thenReturn("cmFuZG9tLWJ5dGVz"); + + MockHttpServletResponse response = + this.mockMvc + .perform( + post(this.signingPath) + .content(this.objectMapper.writeValueAsBytes(signDocumentRequestDto)) + .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON)) + .andReturn() + .getResponse(); + + SignDocumentResponseDto signDocumentResponseDto = + this.objectMapper.readValue(response.getContentAsString(), SignDocumentResponseDto.class); + assertThat(response.getStatus()).isEqualTo(HttpStatus.OK.value()); + assertThat(signDocumentResponseDto.getSignedDocumentBytes()).isEqualTo("cmFuZG9tLWJ5dGVz"); + } + + @Test + void SignDocumentInternalError() throws Exception { + + // Valid request body + SignDocumentRequestDto signDocumentRequestDto = new SignDocumentRequestDto(); + signDocumentRequestDto.setUsername("u1"); + signDocumentRequestDto.setPassword("p1"); + signDocumentRequestDto.setKey("k1"); + ToSignDocument toSignDocument = new ToSignDocument(); + toSignDocument.setBytes("cmFuZG9tLWJ5dGVz"); + toSignDocument.setName("random-name"); + signDocumentRequestDto.setToSignDocument(toSignDocument); + + when(this.signDocumentServiceFactory.create(any())).thenReturn(remoteSignDocumentService); + + // mock the service response + when(this.remoteSignDocumentService.signDocument(any())) + .thenAnswer( + invocation -> { + throw new InternalServerErrorException("Internal error"); + }); + + MockHttpServletResponse response = + this.mockMvc + .perform( + post(this.signingPath) + .content(this.objectMapper.writeValueAsBytes(signDocumentRequestDto)) + .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON)) + .andReturn() + .getResponse(); + + APIError apiError = this.objectMapper.readValue(response.getContentAsString(), APIError.class); + assertThat(response.getStatus()).isEqualTo(HttpStatus.INTERNAL_SERVER_ERROR.value()); + assertThat(apiError.getApiErrorBody()).isNotNull(); + assertThat(apiError.getApiErrorBody().getMessage()).isEqualTo("Internal error"); + assertThat(apiError.getApiErrorBody().getCode()) + .isEqualTo(HttpStatus.INTERNAL_SERVER_ERROR.value()); + assertThat(apiError.getApiErrorBody().getStatus()).isEqualTo(HttpStatus.INTERNAL_SERVER_ERROR); + } + + @Test + void SignDocumentEmptyOrMissingUsername() throws Exception { + + // Valid request body + SignDocumentRequestDto signDocumentRequestDto = new SignDocumentRequestDto(); + signDocumentRequestDto.setUsername(""); + signDocumentRequestDto.setPassword("p1"); + signDocumentRequestDto.setKey("k1"); + ToSignDocument toSignDocument = new ToSignDocument(); + toSignDocument.setBytes("cmFuZG9tLWJ5dGVz"); + toSignDocument.setName("random-name"); + signDocumentRequestDto.setToSignDocument(toSignDocument); + + List errorResponses = new ArrayList<>(); + + // case where the username field is present but empty + MockHttpServletResponse responseEmptyField = + this.mockMvc + .perform( + post(this.signingPath) + .content(this.objectMapper.writeValueAsBytes(signDocumentRequestDto)) + .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON)) + .andReturn() + .getResponse(); + errorResponses.add(responseEmptyField); + + // case where the username is not present + signDocumentRequestDto.setUsername(null); + MockHttpServletResponse responseMissingField = + this.mockMvc + .perform( + post(this.signingPath) + .content(this.objectMapper.writeValueAsBytes(signDocumentRequestDto)) + .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON)) + .andReturn() + .getResponse(); + errorResponses.add(responseMissingField); + + for (MockHttpServletResponse response : errorResponses) { + APIError apiError = + this.objectMapper.readValue(response.getContentAsString(), APIError.class); + assertThat(response.getStatus()).isEqualTo(HttpStatus.BAD_REQUEST.value()); + assertThat(apiError.getApiErrorBody()).isNotNull(); + assertThat(apiError.getApiErrorBody().getMessage()) + .isEqualTo("Field username cannot be empty"); + assertThat(apiError.getApiErrorBody().getCode()).isEqualTo(HttpStatus.BAD_REQUEST.value()); + assertThat(apiError.getApiErrorBody().getStatus()).isEqualTo(HttpStatus.BAD_REQUEST); + } + } + + @Test + void SignDocumentEmptyOrMissingPassword() throws Exception { + + // Valid request body + SignDocumentRequestDto signDocumentRequestDto = new SignDocumentRequestDto(); + signDocumentRequestDto.setUsername("u1"); + signDocumentRequestDto.setPassword(""); + signDocumentRequestDto.setKey("k1"); + ToSignDocument toSignDocument = new ToSignDocument(); + toSignDocument.setBytes("cmFuZG9tLWJ5dGVz"); + toSignDocument.setName("random-name"); + signDocumentRequestDto.setToSignDocument(toSignDocument); + + List errorResponses = new ArrayList<>(); + + // case where the password field is present but empty + MockHttpServletResponse responseEmptyField = + this.mockMvc + .perform( + post(this.signingPath) + .content(this.objectMapper.writeValueAsBytes(signDocumentRequestDto)) + .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON)) + .andReturn() + .getResponse(); + errorResponses.add(responseEmptyField); + + // case where the password is not present + signDocumentRequestDto.setPassword(null); + MockHttpServletResponse responseMissingField = + this.mockMvc + .perform( + post(this.signingPath) + .content(this.objectMapper.writeValueAsBytes(signDocumentRequestDto)) + .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON)) + .andReturn() + .getResponse(); + errorResponses.add(responseMissingField); + + for (MockHttpServletResponse response : errorResponses) { + APIError apiError = + this.objectMapper.readValue(response.getContentAsString(), APIError.class); + assertThat(response.getStatus()).isEqualTo(HttpStatus.BAD_REQUEST.value()); + assertThat(apiError.getApiErrorBody()).isNotNull(); + assertThat(apiError.getApiErrorBody().getMessage()) + .isEqualTo("Field password cannot be empty"); + assertThat(apiError.getApiErrorBody().getCode()).isEqualTo(HttpStatus.BAD_REQUEST.value()); + assertThat(apiError.getApiErrorBody().getStatus()).isEqualTo(HttpStatus.BAD_REQUEST); + } + } + + @Test + void SignDocumentEmptyOrMissingKey() throws Exception { + + // Valid request body + SignDocumentRequestDto signDocumentRequestDto = new SignDocumentRequestDto(); + signDocumentRequestDto.setUsername("u1"); + signDocumentRequestDto.setPassword("p1"); + signDocumentRequestDto.setKey(""); + ToSignDocument toSignDocument = new ToSignDocument(); + toSignDocument.setBytes("cmFuZG9tLWJ5dGVz"); + toSignDocument.setName("random-name"); + signDocumentRequestDto.setToSignDocument(toSignDocument); + + List errorResponses = new ArrayList<>(); + + // case where the key field is present but empty + MockHttpServletResponse responseEmptyField = + this.mockMvc + .perform( + post(this.signingPath) + .content(this.objectMapper.writeValueAsBytes(signDocumentRequestDto)) + .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON)) + .andReturn() + .getResponse(); + errorResponses.add(responseEmptyField); + + // case where the key is not present + signDocumentRequestDto.setKey(null); + MockHttpServletResponse responseMissingField = + this.mockMvc + .perform( + post(this.signingPath) + .content(this.objectMapper.writeValueAsBytes(signDocumentRequestDto)) + .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON)) + .andReturn() + .getResponse(); + errorResponses.add(responseMissingField); + + for (MockHttpServletResponse response : errorResponses) { + APIError apiError = + this.objectMapper.readValue(response.getContentAsString(), APIError.class); + assertThat(response.getStatus()).isEqualTo(HttpStatus.BAD_REQUEST.value()); + assertThat(apiError.getApiErrorBody()).isNotNull(); + assertThat(apiError.getApiErrorBody().getMessage()).isEqualTo("Field key cannot be empty"); + assertThat(apiError.getApiErrorBody().getCode()).isEqualTo(HttpStatus.BAD_REQUEST.value()); + assertThat(apiError.getApiErrorBody().getStatus()).isEqualTo(HttpStatus.BAD_REQUEST); + } + } + + @Test + void SignDocumentEmptyOrMissingBytes() throws Exception { + + // Valid request body + SignDocumentRequestDto signDocumentRequestDto = new SignDocumentRequestDto(); + signDocumentRequestDto.setUsername("u1"); + signDocumentRequestDto.setPassword("p1"); + signDocumentRequestDto.setKey("k1"); + ToSignDocument toSignDocument = new ToSignDocument(); + toSignDocument.setBytes(""); + toSignDocument.setName("random-name"); + signDocumentRequestDto.setToSignDocument(toSignDocument); + + List errorResponses = new ArrayList<>(); + + // case where the bytes field is present but empty + MockHttpServletResponse responseEmptyField = + this.mockMvc + .perform( + post(this.signingPath) + .content(this.objectMapper.writeValueAsBytes(signDocumentRequestDto)) + .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON)) + .andReturn() + .getResponse(); + errorResponses.add(responseEmptyField); + + // case where the bytes is not present + toSignDocument.setBytes(null); + MockHttpServletResponse responseMissingField = + this.mockMvc + .perform( + post(this.signingPath) + .content(this.objectMapper.writeValueAsBytes(signDocumentRequestDto)) + .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON)) + .andReturn() + .getResponse(); + errorResponses.add(responseMissingField); + + for (MockHttpServletResponse response : errorResponses) { + APIError apiError = + this.objectMapper.readValue(response.getContentAsString(), APIError.class); + assertThat(response.getStatus()).isEqualTo(HttpStatus.BAD_REQUEST.value()); + assertThat(apiError.getApiErrorBody()).isNotNull(); + assertThat(apiError.getApiErrorBody().getMessage()) + .isEqualTo("Field toSignDocument.bytes cannot be empty"); + assertThat(apiError.getApiErrorBody().getCode()).isEqualTo(HttpStatus.BAD_REQUEST.value()); + assertThat(apiError.getApiErrorBody().getStatus()).isEqualTo(HttpStatus.BAD_REQUEST); + } + } + + @Test + void SignDocumentEmptyOrMissingName() throws Exception { + + // Valid request body + SignDocumentRequestDto signDocumentRequestDto = new SignDocumentRequestDto(); + signDocumentRequestDto.setUsername("u1"); + signDocumentRequestDto.setPassword("p1"); + signDocumentRequestDto.setKey("k1"); + ToSignDocument toSignDocument = new ToSignDocument(); + toSignDocument.setBytes("cmFuZG9tLWJ5dGVz"); + toSignDocument.setName(""); + signDocumentRequestDto.setToSignDocument(toSignDocument); + + List errorResponses = new ArrayList<>(); + + // case where the name field is present but empty + MockHttpServletResponse responseEmptyField = + this.mockMvc + .perform( + post(this.signingPath) + .content(this.objectMapper.writeValueAsBytes(signDocumentRequestDto)) + .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON)) + .andReturn() + .getResponse(); + errorResponses.add(responseEmptyField); + + // case where the name is not present + toSignDocument.setName(null); + MockHttpServletResponse responseMissingField = + this.mockMvc + .perform( + post(this.signingPath) + .content(this.objectMapper.writeValueAsBytes(signDocumentRequestDto)) + .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON)) + .andReturn() + .getResponse(); + errorResponses.add(responseMissingField); + + for (MockHttpServletResponse response : errorResponses) { + APIError apiError = + this.objectMapper.readValue(response.getContentAsString(), APIError.class); + assertThat(response.getStatus()).isEqualTo(HttpStatus.BAD_REQUEST.value()); + assertThat(apiError.getApiErrorBody()).isNotNull(); + assertThat(apiError.getApiErrorBody().getMessage()) + .isEqualTo("Field toSignDocument.name cannot be empty"); + assertThat(apiError.getApiErrorBody().getCode()).isEqualTo(HttpStatus.BAD_REQUEST.value()); + assertThat(apiError.getApiErrorBody().getStatus()).isEqualTo(HttpStatus.BAD_REQUEST); + } + } + + @Test + void SignDocumentMissingToSignDocument() throws Exception { + + // Valid request body + SignDocumentRequestDto signDocumentRequestDto = new SignDocumentRequestDto(); + signDocumentRequestDto.setUsername("u1"); + signDocumentRequestDto.setPassword("p1"); + signDocumentRequestDto.setKey("k1"); + signDocumentRequestDto.setToSignDocument(null); + + MockHttpServletResponse responseMissingField = + this.mockMvc + .perform( + post(this.signingPath) + .content(this.objectMapper.writeValueAsBytes(signDocumentRequestDto)) + .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON)) + .andReturn() + .getResponse(); + + APIError apiError = + this.objectMapper.readValue(responseMissingField.getContentAsString(), APIError.class); + assertThat(responseMissingField.getStatus()).isEqualTo(HttpStatus.BAD_REQUEST.value()); + assertThat(apiError.getApiErrorBody()).isNotNull(); + assertThat(apiError.getApiErrorBody().getMessage()) + .isEqualTo("Field toSignDocument cannot be empty"); + assertThat(apiError.getApiErrorBody().getCode()).isEqualTo(HttpStatus.BAD_REQUEST.value()); + assertThat(apiError.getApiErrorBody().getStatus()).isEqualTo(HttpStatus.BAD_REQUEST); + } + + @Test + void SignDocumentNotEncodedToSignDocument() throws Exception { + + // case where the bytes field is not base64 encoded + SignDocumentRequestDto signDocumentRequestDto = new SignDocumentRequestDto(); + signDocumentRequestDto.setUsername("u1"); + signDocumentRequestDto.setPassword("p1"); + signDocumentRequestDto.setKey("k1"); + ToSignDocument toSignDocument = new ToSignDocument(); + toSignDocument.setBytes("random-bytes"); + toSignDocument.setName("notBase64"); + signDocumentRequestDto.setToSignDocument(toSignDocument); + + MockHttpServletResponse responseMissingField = + this.mockMvc + .perform( + post(this.signingPath) + .content(this.objectMapper.writeValueAsBytes(signDocumentRequestDto)) + .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON)) + .andReturn() + .getResponse(); + + APIError apiError = + this.objectMapper.readValue(responseMissingField.getContentAsString(), APIError.class); + assertThat(responseMissingField.getStatus()).isEqualTo(HttpStatus.BAD_REQUEST.value()); + assertThat(apiError.getApiErrorBody()).isNotNull(); + assertThat(apiError.getApiErrorBody().getMessage()) + .isEqualTo("Field toSignDocument.bytes should be encoded in base64 format"); + assertThat(apiError.getApiErrorBody().getCode()).isEqualTo(HttpStatus.BAD_REQUEST.value()); + assertThat(apiError.getApiErrorBody().getStatus()).isEqualTo(HttpStatus.BAD_REQUEST); + } + + @Test + void SignDocumentMalformedJSONBody() throws Exception { + + MockHttpServletResponse response = + this.mockMvc + .perform( + post(this.signingPath) + .content("{") + .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON)) + .andReturn() + .getResponse(); + + APIError apiError = this.objectMapper.readValue(response.getContentAsString(), APIError.class); + assertThat(response.getStatus()).isEqualTo(HttpStatus.BAD_REQUEST.value()); + assertThat(apiError.getApiErrorBody()).isNotNull(); + assertThat(apiError.getApiErrorBody().getMessage()).isEqualTo("Malformed JSON body"); + assertThat(apiError.getApiErrorBody().getCode()).isEqualTo(HttpStatus.BAD_REQUEST.value()); + assertThat(apiError.getApiErrorBody().getStatus()).isEqualTo(HttpStatus.BAD_REQUEST); + } + + @Test + void SignDocumentNoContentTypeHeader() throws Exception { + + MockHttpServletResponse response = + this.mockMvc.perform(post(this.signingPath).content("{}")).andReturn().getResponse(); + + APIError apiError = this.objectMapper.readValue(response.getContentAsString(), APIError.class); + assertThat(response.getStatus()).isEqualTo(HttpStatus.BAD_REQUEST.value()); + assertThat(apiError.getApiErrorBody()).isNotNull(); + assertThat(apiError.getApiErrorBody().getMessage()) + .isEqualTo( + "Content type 'application/octet-stream' " + + "not supported. Using Content Type 'application/json' instead."); + assertThat(apiError.getApiErrorBody().getCode()).isEqualTo(HttpStatus.BAD_REQUEST.value()); + assertThat(apiError.getApiErrorBody().getStatus()).isEqualTo(HttpStatus.BAD_REQUEST); + } +} diff --git a/eseal/src/test/java/gr/grnet/eseal/DocumentTimestampControllerTests.java b/eseal/src/test/java/gr/grnet/eseal/DocumentTimestampControllerTests.java new file mode 100644 index 0000000..2b7f446 --- /dev/null +++ b/eseal/src/test/java/gr/grnet/eseal/DocumentTimestampControllerTests.java @@ -0,0 +1,336 @@ +package gr.grnet.eseal; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.when; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; + +import com.fasterxml.jackson.databind.ObjectMapper; +import gr.grnet.eseal.api.v1.DocumentTimestampController; +import gr.grnet.eseal.dto.TimestampDocumentRequestDto; +import gr.grnet.eseal.dto.TimestampDocumentResponseDto; +import gr.grnet.eseal.enums.TSASourceEnum; +import gr.grnet.eseal.exception.APIError; +import gr.grnet.eseal.exception.InternalServerErrorException; +import gr.grnet.eseal.service.TimestampDocumentService; +import java.util.ArrayList; +import java.util.List; +import javax.validation.Validation; +import javax.validation.Validator; +import javax.validation.ValidatorFactory; +import org.hibernate.validator.HibernateValidator; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import org.springframework.boot.test.context.TestConfiguration; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.Bean; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.mock.web.MockHttpServletResponse; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.web.servlet.MockMvc; + +@WebMvcTest(DocumentTimestampController.class) +@ContextConfiguration( + classes = {EsealApplication.class, DocumentTimestampControllerTests.TestConfig.class}) +public class DocumentTimestampControllerTests { + + @Autowired private MockMvc mockMvc; + + @MockBean private TimestampDocumentService timestampDocumentService; + + private final String timestampingPath = "/api/v1/timestamping/remoteTimestampDocument"; + + private ObjectMapper objectMapper = new ObjectMapper(); + + @TestConfiguration + static class TestConfig { + @Bean + public Validator validator() { + ValidatorFactory validatorFactory = + Validation.byProvider(HibernateValidator.class) + .configure() + .failFast(true) + .buildValidatorFactory(); + return validatorFactory.getValidator(); + } + } + + @Test + void TimestampDocumentSuccess() throws Exception { + + TimestampDocumentRequestDto timestampDocumentRequestDto = new TimestampDocumentRequestDto(); + + TimestampDocumentRequestDto.ToTimestampDocument toTimestampDocument = + new TimestampDocumentRequestDto.ToTimestampDocument(); + toTimestampDocument.setName("random-name"); + toTimestampDocument.setBytes("cmFuZG9tLWJ5dGVz"); + + timestampDocumentRequestDto.setToTimestampDocument(toTimestampDocument); + + // mock the service response + when(this.timestampDocumentService.timestampDocument( + "cmFuZG9tLWJ5dGVz", TSASourceEnum.valueOf(timestampDocumentRequestDto.getTsaSource()))) + .thenReturn("cmFuZG9tLWJ5dGVz"); + + MockHttpServletResponse response = + this.mockMvc + .perform( + post(this.timestampingPath) + .content(this.objectMapper.writeValueAsBytes(timestampDocumentRequestDto)) + .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON)) + .andReturn() + .getResponse(); + + TimestampDocumentResponseDto timestampDocumentResponseDto = + this.objectMapper.readValue( + response.getContentAsString(), TimestampDocumentResponseDto.class); + assertThat(response.getStatus()).isEqualTo(HttpStatus.OK.value()); + assertThat(timestampDocumentResponseDto.getTimestampedDocumentBytes()) + .isEqualTo("cmFuZG9tLWJ5dGVz"); + } + + @Test + void TimestampDocumentInternalError() throws Exception { + + TimestampDocumentRequestDto timestampDocumentRequestDto = new TimestampDocumentRequestDto(); + + TimestampDocumentRequestDto.ToTimestampDocument toTimestampDocument = + new TimestampDocumentRequestDto.ToTimestampDocument(); + toTimestampDocument.setName("random-name"); + toTimestampDocument.setBytes("cmFuZG9tLWJ5dGVz"); + + timestampDocumentRequestDto.setToTimestampDocument(toTimestampDocument); + + // mock the service response + when(this.timestampDocumentService.timestampDocument( + "cmFuZG9tLWJ5dGVz", TSASourceEnum.valueOf(timestampDocumentRequestDto.getTsaSource()))) + .thenAnswer( + invocation -> { + throw new InternalServerErrorException("Internal error"); + }); + + MockHttpServletResponse response = + this.mockMvc + .perform( + post(this.timestampingPath) + .content(this.objectMapper.writeValueAsBytes(timestampDocumentRequestDto)) + .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON)) + .andReturn() + .getResponse(); + + APIError apiError = this.objectMapper.readValue(response.getContentAsString(), APIError.class); + assertThat(response.getStatus()).isEqualTo(HttpStatus.INTERNAL_SERVER_ERROR.value()); + assertThat(apiError.getApiErrorBody()).isNotNull(); + assertThat(apiError.getApiErrorBody().getMessage()).isEqualTo("Internal error"); + assertThat(apiError.getApiErrorBody().getCode()) + .isEqualTo(HttpStatus.INTERNAL_SERVER_ERROR.value()); + assertThat(apiError.getApiErrorBody().getStatus()).isEqualTo(HttpStatus.INTERNAL_SERVER_ERROR); + } + + @Test + void TimestampDocumentEmptyOrMissingBytes() throws Exception { + + List errorResponses = new ArrayList<>(); + + TimestampDocumentRequestDto timestampDocumentRequestDto = new TimestampDocumentRequestDto(); + + TimestampDocumentRequestDto.ToTimestampDocument toTimestampDocument = + new TimestampDocumentRequestDto.ToTimestampDocument(); + toTimestampDocument.setName("random-name"); + toTimestampDocument.setBytes(""); + + timestampDocumentRequestDto.setToTimestampDocument(toTimestampDocument); + + MockHttpServletResponse responseEmptyField = + this.mockMvc + .perform( + post(this.timestampingPath) + .content(this.objectMapper.writeValueAsBytes(timestampDocumentRequestDto)) + .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON)) + .andReturn() + .getResponse(); + + errorResponses.add(responseEmptyField); + + toTimestampDocument.setBytes(null); + + MockHttpServletResponse responseMissingField = + this.mockMvc + .perform( + post(this.timestampingPath) + .content(this.objectMapper.writeValueAsBytes(timestampDocumentRequestDto)) + .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON)) + .andReturn() + .getResponse(); + + errorResponses.add(responseMissingField); + + for (MockHttpServletResponse response : errorResponses) { + APIError apiError = + this.objectMapper.readValue(response.getContentAsString(), APIError.class); + assertThat(response.getStatus()).isEqualTo(HttpStatus.BAD_REQUEST.value()); + assertThat(apiError.getApiErrorBody()).isNotNull(); + assertThat(apiError.getApiErrorBody().getMessage()) + .isEqualTo("Field toTimestampDocument.bytes cannot be empty"); + assertThat(apiError.getApiErrorBody().getCode()).isEqualTo(HttpStatus.BAD_REQUEST.value()); + assertThat(apiError.getApiErrorBody().getStatus()).isEqualTo(HttpStatus.BAD_REQUEST); + } + } + + @Test + void TimestampDocumentEmptyOrMissingName() throws Exception { + + List errorResponses = new ArrayList<>(); + + TimestampDocumentRequestDto timestampDocumentRequestDto = new TimestampDocumentRequestDto(); + + TimestampDocumentRequestDto.ToTimestampDocument toTimestampDocument = + new TimestampDocumentRequestDto.ToTimestampDocument(); + toTimestampDocument.setName(""); + toTimestampDocument.setBytes("cmFuZG9tLWJ5dGVz"); + + timestampDocumentRequestDto.setToTimestampDocument(toTimestampDocument); + + // mock the service response + when(this.timestampDocumentService.timestampDocument( + "cmFuZG9tLWJ5dGVz", TSASourceEnum.valueOf(timestampDocumentRequestDto.getTsaSource()))) + .thenReturn("cmFuZG9tLWJ5dGVz"); + + MockHttpServletResponse responseEmptyField = + this.mockMvc + .perform( + post(this.timestampingPath) + .content(this.objectMapper.writeValueAsBytes(timestampDocumentRequestDto)) + .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON)) + .andReturn() + .getResponse(); + + errorResponses.add(responseEmptyField); + + toTimestampDocument.setName(null); + + MockHttpServletResponse responseMissingField = + this.mockMvc + .perform( + post(this.timestampingPath) + .content(this.objectMapper.writeValueAsBytes(timestampDocumentRequestDto)) + .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON)) + .andReturn() + .getResponse(); + + errorResponses.add(responseMissingField); + + for (MockHttpServletResponse response : errorResponses) { + APIError apiError = + this.objectMapper.readValue(response.getContentAsString(), APIError.class); + assertThat(response.getStatus()).isEqualTo(HttpStatus.BAD_REQUEST.value()); + assertThat(apiError.getApiErrorBody()).isNotNull(); + assertThat(apiError.getApiErrorBody().getMessage()) + .isEqualTo("Field toTimestampDocument.name cannot be empty"); + assertThat(apiError.getApiErrorBody().getCode()).isEqualTo(HttpStatus.BAD_REQUEST.value()); + assertThat(apiError.getApiErrorBody().getStatus()).isEqualTo(HttpStatus.BAD_REQUEST); + } + } + + @Test + void TimestampDocumentMissingToTimestampDocument() throws Exception { + + TimestampDocumentRequestDto timestampDocumentRequestDto = new TimestampDocumentRequestDto(); + + MockHttpServletResponse responseMissingToTimestampDocument = + this.mockMvc + .perform( + post(this.timestampingPath) + .content(this.objectMapper.writeValueAsBytes(timestampDocumentRequestDto)) + .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON)) + .andReturn() + .getResponse(); + + APIError apiError = + this.objectMapper.readValue( + responseMissingToTimestampDocument.getContentAsString(), APIError.class); + assertThat(responseMissingToTimestampDocument.getStatus()) + .isEqualTo(HttpStatus.BAD_REQUEST.value()); + assertThat(apiError.getApiErrorBody()).isNotNull(); + assertThat(apiError.getApiErrorBody().getMessage()) + .isEqualTo("Field toTimestampDocument cannot be empty"); + assertThat(apiError.getApiErrorBody().getCode()).isEqualTo(HttpStatus.BAD_REQUEST.value()); + assertThat(apiError.getApiErrorBody().getStatus()).isEqualTo(HttpStatus.BAD_REQUEST); + } + + @Test + void TimestampDocumentNotEncodedToSignDocument() throws Exception { + + // case where the bytes field is not base64 encoded + TimestampDocumentRequestDto timestampDocumentRequestDto = new TimestampDocumentRequestDto(); + + TimestampDocumentRequestDto.ToTimestampDocument toTimestampDocument = + new TimestampDocumentRequestDto.ToTimestampDocument(); + toTimestampDocument.setName("random-name"); + toTimestampDocument.setBytes("random-bytes"); + + timestampDocumentRequestDto.setToTimestampDocument(toTimestampDocument); + + MockHttpServletResponse responseMissingField = + this.mockMvc + .perform( + post(this.timestampingPath) + .content(this.objectMapper.writeValueAsBytes(timestampDocumentRequestDto)) + .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON)) + .andReturn() + .getResponse(); + + APIError apiError = + this.objectMapper.readValue(responseMissingField.getContentAsString(), APIError.class); + assertThat(responseMissingField.getStatus()).isEqualTo(HttpStatus.BAD_REQUEST.value()); + assertThat(apiError.getApiErrorBody()).isNotNull(); + assertThat(apiError.getApiErrorBody().getMessage()) + .isEqualTo("Field toTimestampDocument.bytes should be encoded in base64 format"); + assertThat(apiError.getApiErrorBody().getCode()).isEqualTo(HttpStatus.BAD_REQUEST.value()); + assertThat(apiError.getApiErrorBody().getStatus()).isEqualTo(HttpStatus.BAD_REQUEST); + } + + @Test + void TimestampDocumentInvalidTSPSource() throws Exception { + + TimestampDocumentRequestDto timestampDocumentRequestDto = new TimestampDocumentRequestDto(); + + TimestampDocumentRequestDto.ToTimestampDocument toTimestampDocument = + new TimestampDocumentRequestDto.ToTimestampDocument(); + toTimestampDocument.setName("name"); + toTimestampDocument.setBytes("cmFuZG9tLWJ5dGVz"); + + timestampDocumentRequestDto.setTsaSource("test"); + + timestampDocumentRequestDto.setToTimestampDocument(toTimestampDocument); + + MockHttpServletResponse responseInvalidTSPSouce = + this.mockMvc + .perform( + post(this.timestampingPath) + .content(this.objectMapper.writeValueAsBytes(timestampDocumentRequestDto)) + .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON)) + .andReturn() + .getResponse(); + + APIError apiError = + this.objectMapper.readValue(responseInvalidTSPSouce.getContentAsString(), APIError.class); + assertThat(responseInvalidTSPSouce.getStatus()).isEqualTo(HttpStatus.BAD_REQUEST.value()); + assertThat(apiError.getApiErrorBody()).isNotNull(); + assertThat(apiError.getApiErrorBody().getMessage()) + .isEqualTo("Possible values of property tsaSource are [APED, HARICA]"); + assertThat(apiError.getApiErrorBody().getCode()).isEqualTo(HttpStatus.BAD_REQUEST.value()); + assertThat(apiError.getApiErrorBody().getStatus()).isEqualTo(HttpStatus.BAD_REQUEST); + } +} diff --git a/eseal/src/test/java/gr/grnet/eseal/DocumentValidationTests.java b/eseal/src/test/java/gr/grnet/eseal/DocumentValidationTests.java new file mode 100644 index 0000000..17ca2f2 --- /dev/null +++ b/eseal/src/test/java/gr/grnet/eseal/DocumentValidationTests.java @@ -0,0 +1,237 @@ +package gr.grnet.eseal; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; + +import com.fasterxml.jackson.databind.ObjectMapper; +import gr.grnet.eseal.dto.SignedDocument; +import gr.grnet.eseal.dto.ValidateDocumentRequestDto; +import gr.grnet.eseal.exception.APIError; +import gr.grnet.eseal.service.ValidateDocumentService; +import gr.grnet.eseal.validation.DocumentValidatorLOTL; +import java.util.ArrayList; +import java.util.List; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.mock.web.MockHttpServletResponse; +import org.springframework.test.web.servlet.MockMvc; + +@SpringBootTest +@AutoConfigureMockMvc +class DocumentValidationTests { + + @Autowired private MockMvc mockMvc; + + private final String validationPath = "/api/v1/validation/validateDocument"; + + private ObjectMapper objectMapper = new ObjectMapper(); + + @Autowired ValidateDocumentService validateDocumentService; + + @Autowired DocumentValidatorLOTL documentValidatorLOTL; + + // @Test + // void ValidateDocumentSuccess() throws Exception { + // + // InputStream isSignedPDF = + // DocumentValidationTests.class.getResourceAsStream( + // "/validation/".concat("signed-lta-b64-pdf.txt")); + // + // String signedLTAPDF = + // new BufferedReader(new InputStreamReader(isSignedPDF, StandardCharsets.UTF_8)) + // .lines() + // .collect(Collectors.joining("\n")); + // + // // Valid request body but with empty bytes field + // ValidateDocumentRequestDto validateDocumentRequestDto = new ValidateDocumentRequestDto(); + // SignedDocument signedDocument = new SignedDocument(); + // signedDocument.setBytes(signedLTAPDF); + // signedDocument.setName("random-name"); + // validateDocumentRequestDto.setSignedDocument(signedDocument); + // + // MockHttpServletResponse resp = + // this.mockMvc + // .perform( + // post(this.validationPath) + // .content(this.objectMapper.writeValueAsBytes(validateDocumentRequestDto)) + // .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON) + // .accept(MediaType.APPLICATION_JSON)) + // .andReturn() + // .getResponse(); + // + // assertThat(resp.getStatus()).isEqualTo(HttpStatus.OK.value()); + // + // WSReportsDTO wsReportsDTO = + // this.validateDocumentService.validateDocument( + // validateDocumentRequestDto.getSignedDocument().getBytes(), + // validateDocumentRequestDto.getSignedDocument().getName()); + // + // assertThat(wsReportsDTO.getSimpleReport().getSignatureOrTimestamp().size()).isEqualTo(1); + // assertThat(wsReportsDTO.getSimpleReport().getSignatureOrTimestamp().get(0).getIndication()) + // .isEqualTo(Indication.INDETERMINATE); + // + // assertThat(wsReportsDTO.getSimpleReport().getSignatureOrTimestamp().get(0).getSubIndication()) + // .isEqualTo(SubIndication.NO_CERTIFICATE_CHAIN_FOUND); + // assertThat(wsReportsDTO.getSimpleReport().getSignatureOrTimestamp().get(0).getErrors()) + // .isEqualTo( + // Arrays.asList( + // "Unable to build a certificate chain until a trusted list!", + // "The result of the LTV validation process is not acceptable to continue the + // process!", + // "The certificate chain for signature is not trusted, it does not contain a trust + // anchor.")); + // assertThat(wsReportsDTO.getSimpleReport().getSignatureOrTimestamp().get(0).getWarnings()) + // .isEqualTo(Arrays.asList("The signature/seal is an INDETERMINATE AdES digital + // signature!")); + // } + + @Test + void ValidateDocumentEmptyOrMissingBytes() throws Exception { + + // Valid request body but with empty bytes field + ValidateDocumentRequestDto validateDocumentRequestDto = new ValidateDocumentRequestDto(); + SignedDocument signedDocument = new SignedDocument(); + signedDocument.setBytes(""); + signedDocument.setName("random-name"); + validateDocumentRequestDto.setSignedDocument(signedDocument); + + List errorResponses = new ArrayList<>(); + + MockHttpServletResponse responseEmptyField = + this.mockMvc + .perform( + post(this.validationPath) + .content(this.objectMapper.writeValueAsBytes(validateDocumentRequestDto)) + .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON)) + .andReturn() + .getResponse(); + errorResponses.add(responseEmptyField); + + // case where the bytes field is not present + signedDocument.setBytes(null); + MockHttpServletResponse responseMissingField = + this.mockMvc + .perform( + post(this.validationPath) + .content(this.objectMapper.writeValueAsBytes(validateDocumentRequestDto)) + .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON)) + .andReturn() + .getResponse(); + errorResponses.add(responseMissingField); + + for (MockHttpServletResponse response : errorResponses) { + APIError apiError = + this.objectMapper.readValue(response.getContentAsString(), APIError.class); + assertThat(response.getStatus()).isEqualTo(HttpStatus.BAD_REQUEST.value()); + assertThat(apiError.getApiErrorBody()).isNotNull(); + assertThat(apiError.getApiErrorBody().getMessage()) + .isEqualTo("Field signedDocument.bytes cannot be empty"); + assertThat(apiError.getApiErrorBody().getCode()).isEqualTo(HttpStatus.BAD_REQUEST.value()); + assertThat(apiError.getApiErrorBody().getStatus()).isEqualTo(HttpStatus.BAD_REQUEST); + } + } + + @Test + void ValidateDocumentEmptyOrMissingName() throws Exception { + + // Valid request body but with empty bytes field + ValidateDocumentRequestDto validateDocumentRequestDto = new ValidateDocumentRequestDto(); + SignedDocument signedDocument = new SignedDocument(); + signedDocument.setBytes("b"); + signedDocument.setName(""); + validateDocumentRequestDto.setSignedDocument(signedDocument); + + List errorResponses = new ArrayList<>(); + + MockHttpServletResponse responseEmptyField = + this.mockMvc + .perform( + post(this.validationPath) + .content(this.objectMapper.writeValueAsBytes(validateDocumentRequestDto)) + .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON)) + .andReturn() + .getResponse(); + errorResponses.add(responseEmptyField); + + // case where the bytes field is not present + signedDocument.setName(null); + MockHttpServletResponse responseMissingField = + this.mockMvc + .perform( + post(this.validationPath) + .content(this.objectMapper.writeValueAsBytes(validateDocumentRequestDto)) + .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON)) + .andReturn() + .getResponse(); + errorResponses.add(responseMissingField); + + for (MockHttpServletResponse response : errorResponses) { + APIError apiError = + this.objectMapper.readValue(response.getContentAsString(), APIError.class); + assertThat(response.getStatus()).isEqualTo(HttpStatus.BAD_REQUEST.value()); + assertThat(apiError.getApiErrorBody()).isNotNull(); + assertThat(apiError.getApiErrorBody().getMessage()) + .isEqualTo("Field signedDocument.name cannot be empty"); + assertThat(apiError.getApiErrorBody().getCode()).isEqualTo(HttpStatus.BAD_REQUEST.value()); + assertThat(apiError.getApiErrorBody().getStatus()).isEqualTo(HttpStatus.BAD_REQUEST); + } + } + + @Test + void ValidateDocumentInvalidBASE64Bytes() throws Exception { + + // Valid request body but with empty bytes field + ValidateDocumentRequestDto validateDocumentRequestDto = new ValidateDocumentRequestDto(); + SignedDocument signedDocument = new SignedDocument(); + signedDocument.setBytes("b"); + signedDocument.setName("random-name"); + validateDocumentRequestDto.setSignedDocument(signedDocument); + + MockHttpServletResponse resp = + this.mockMvc + .perform( + post(this.validationPath) + .content(this.objectMapper.writeValueAsBytes(validateDocumentRequestDto)) + .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON)) + .andReturn() + .getResponse(); + + APIError apiError = this.objectMapper.readValue(resp.getContentAsString(), APIError.class); + assertThat(resp.getStatus()).isEqualTo(HttpStatus.BAD_REQUEST.value()); + assertThat(apiError.getApiErrorBody()).isNotNull(); + assertThat(apiError.getApiErrorBody().getMessage()) + .isEqualTo("Field toSignDocument.bytes should be encoded in base64 format"); + assertThat(apiError.getApiErrorBody().getCode()).isEqualTo(HttpStatus.BAD_REQUEST.value()); + assertThat(apiError.getApiErrorBody().getStatus()).isEqualTo(HttpStatus.BAD_REQUEST); + } + + @Test + void LOTLOnlineDataLoaderAccessSuccess() throws Exception { + + // Make sure the data loader can at least access all the following urls + + this.documentValidatorLOTL + .onlineLOTLDataLoader() + .get("https://ec.europa.eu/tools/lotl/eu-lotl.xml"); + this.documentValidatorLOTL + .onlineLOTLDataLoader() + .get("https://www.ssi.gouv.fr/eidas/TL-FR.xml"); + this.documentValidatorLOTL + .onlineLOTLDataLoader() + .get("https://sede.minetur.gob.es/Prestadores/TSL/TSL.xml"); + this.documentValidatorLOTL + .onlineLOTLDataLoader() + .get( + "https://www.agentschaptelecom.nl/binaries/agentschap-telecom/documenten/publicaties/2018/januari/01/digitale-statuslijst-van-vertrouwensdiensten/current-tsl.xml"); + } +} diff --git a/eseal/src/test/java/gr/grnet/eseal/EsealApplicationTests.java b/eseal/src/test/java/gr/grnet/eseal/EsealApplicationTests.java new file mode 100644 index 0000000..d7f0c94 --- /dev/null +++ b/eseal/src/test/java/gr/grnet/eseal/EsealApplicationTests.java @@ -0,0 +1,151 @@ +package gr.grnet.eseal; + +import static org.assertj.core.api.Assertions.assertThat; + +import eu.europa.esig.dss.enumerations.DigestAlgorithm; +import eu.europa.esig.dss.model.DSSDocument; +import eu.europa.esig.dss.model.InMemoryDocument; +import eu.europa.esig.dss.pades.DSSFileFont; +import eu.europa.esig.dss.pades.DSSFont; +import gr.grnet.eseal.config.DocumentValidatorLOTLBean; +import gr.grnet.eseal.config.RemoteProviderProperties; +import gr.grnet.eseal.config.ValidationProperties; +import gr.grnet.eseal.config.VisibleSignatureProperties; +import gr.grnet.eseal.config.VisibleSignaturePropertiesBean; +import gr.grnet.eseal.timestamp.DefaultTSASourceProperties; +import gr.grnet.eseal.timestamp.TSASourcePropertiesWithBasicAuth; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.TestPropertySource; + +@SpringBootTest +@TestPropertySource(locations = "classpath:application-test.properties") +class EsealApplicationTests { + + private RemoteProviderProperties remoteProviderProperties; + + private ValidationProperties validationProperties; + + private DocumentValidatorLOTLBean documentValidatorLOTLBean; + + private VisibleSignatureProperties visibleSignatureProperties; + + private DefaultTSASourceProperties apedTSPSourceProperties; + + private TSASourcePropertiesWithBasicAuth haricaTSPSourceProperties; + + @Autowired + EsealApplicationTests( + RemoteProviderProperties remoteProviderProperties, + ValidationProperties validationProperties, + DocumentValidatorLOTLBean documentValidatorLOTLBean, + VisibleSignatureProperties visibleSignatureProperties, + DefaultTSASourceProperties apedTSPSourceProperties, + TSASourcePropertiesWithBasicAuth haricaTSPSourceProperties) { + + this.remoteProviderProperties = remoteProviderProperties; + this.validationProperties = validationProperties; + this.documentValidatorLOTLBean = documentValidatorLOTLBean; + this.visibleSignatureProperties = visibleSignatureProperties; + this.apedTSPSourceProperties = apedTSPSourceProperties; + this.haricaTSPSourceProperties = haricaTSPSourceProperties; + } + + @Test + void testValidationProperties() { + assertThat("oj.keystore.p12") + .isEqualTo(this.validationProperties.getOfficialJournalKeystoreFile()); + assertThat("dss-password") + .isEqualTo(this.validationProperties.getOfficialJournalKeystorePassword()); + assertThat("PKCS12").isEqualTo(this.validationProperties.getOfficialJournalKeystoreType()); + assertThat( + "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=uriserv:OJ.C_.2019.276.01.0001.01.ENG") + .isEqualTo(this.validationProperties.getOfficialJournalUrl()); + assertThat("/etc/eseal/conf.d/").isEqualTo(this.validationProperties.getLotlCacheDir()); + assertThat("https://ec.europa.eu/tools/lotl/eu-lotl.xml") + .isEqualTo(this.validationProperties.getLotlUrl()); + assertThat("extra-lotl.truststore.jks") + .isEqualTo(this.validationProperties.getExtraTrustStoreFile()); + assertThat("extra-tl").isEqualTo(this.validationProperties.getExtraTrustStorePassword()); + assertThat("JKS").isEqualTo(this.validationProperties.getExtraTrustStoreType()); + } + + @Test + void testApedTSPProperties() { + assertThat("https://timestamp.aped.gov.gr/qtss") + .isEqualTo(this.apedTSPSourceProperties.getUrl()); + assertThat("aped.truststore.jks") + .isEqualTo(this.apedTSPSourceProperties.getTruststore().getFile()); + assertThat("apedts").isEqualTo(this.apedTSPSourceProperties.getTruststore().getPassword()); + assertThat("JKS").isEqualTo(this.apedTSPSourceProperties.getTruststore().getType()); + } + + @Test + void testHaricaTSPProperties() { + assertThat("https://qts.harica.gr").isEqualTo(this.haricaTSPSourceProperties.getUrl()); + assertThat("harica.truststore.jks") + .isEqualTo(this.haricaTSPSourceProperties.getTruststore().getFile()); + assertThat("harica-qtsa") + .isEqualTo(this.haricaTSPSourceProperties.getTruststore().getPassword()); + assertThat("JKS").isEqualTo(this.haricaTSPSourceProperties.getTruststore().getType()); + assertThat("qts.harica.gr").isEqualTo(this.haricaTSPSourceProperties.getHost()); + assertThat(443).isEqualTo(this.haricaTSPSourceProperties.getPort()); + assertThat("https").isEqualTo(this.haricaTSPSourceProperties.getScheme()); + assertThat("test-user").isEqualTo(this.haricaTSPSourceProperties.getUsername()); + assertThat("test-pass").isEqualTo(this.haricaTSPSourceProperties.getPassword()); + } + + @Test + void testRemoteProviderPropertiesLoad() { + assertThat("test.provider.com").isEqualTo(this.remoteProviderProperties.getEndpoint()); + assertThat(true).isEqualTo(this.remoteProviderProperties.isRetryEnabled()); + assertThat(3).isEqualTo(this.remoteProviderProperties.getRetryCounter()); + assertThat(5).isEqualTo(this.remoteProviderProperties.getRetryInterval()); + assertThat(5).isEqualTo(this.remoteProviderProperties.getTotpWaitForRefreshSeconds()); + assertThat(true).isEqualTo(this.remoteProviderProperties.isTlsVerifyEnabled()); + assertThat("remote_provider_http_eseal_client.truststore.jks") + .isEqualTo(this.remoteProviderProperties.getTruststoreFile()); + assertThat("providerpass").isEqualTo(this.remoteProviderProperties.getTruststorePassword()); + assertThat("JKS").isEqualTo(this.remoteProviderProperties.getTruststoreType()); + } + + @Test + void testDocumentValidatorLOTLBean() { + assertThat(true).isEqualTo(this.documentValidatorLOTLBean.getLotlRefreshEnable()); + assertThat(0).isEqualTo(this.documentValidatorLOTLBean.getRefreshInitialDelay()); + assertThat(21600000).isEqualTo(this.documentValidatorLOTLBean.getRefreshInterval()); + } + + @Test + void testVisibleSignaturePropertiesLoad() { + + DSSDocument imageDocument = + new InMemoryDocument( + VisibleSignaturePropertiesBean.class.getResourceAsStream( + "/visible-signature/".concat("ste.jpg"))); + + assertThat(this.visibleSignatureProperties.getImageDocument().getDigest(DigestAlgorithm.SHA256)) + .isEqualTo(imageDocument.getDigest(DigestAlgorithm.SHA256)); + + DSSFont font = + new DSSFileFont( + VisibleSignaturePropertiesBean.class.getResourceAsStream( + "/visible-signature/".concat("DejaVuSans.ttf"))); + font.setSize(6); + + assertThat(this.visibleSignatureProperties.getFont().getSize()).isEqualTo(font.getSize()); + assertThat(this.visibleSignatureProperties.getFont().getJavaFont()) + .isEqualTo(font.getJavaFont()); + + assertThat(this.visibleSignatureProperties.getZoneId()).isEqualTo(ZoneId.of("Europe/Athens")); + + assertThat(this.visibleSignatureProperties.getDateTimeFormatter().toString()) + .isEqualTo(DateTimeFormatter.ofPattern("yyyy.MM.dd HH:mm:ss z").toString()); + } + + @Test + void contextLoads() {} +} diff --git a/eseal/src/test/java/gr/grnet/eseal/RemoteProviderSignDocumentTests.java b/eseal/src/test/java/gr/grnet/eseal/RemoteProviderSignDocumentTests.java new file mode 100644 index 0000000..de194eb --- /dev/null +++ b/eseal/src/test/java/gr/grnet/eseal/RemoteProviderSignDocumentTests.java @@ -0,0 +1,801 @@ +package gr.grnet.eseal; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.ObjectMapper; +import eu.europa.esig.dss.model.DSSException; +import eu.europa.esig.dss.pdf.PDFSignatureService; +import gr.grnet.eseal.config.RemoteProviderProperties; +import gr.grnet.eseal.config.VisibleSignatureProperties; +import gr.grnet.eseal.config.VisibleSignaturePropertiesBean; +import gr.grnet.eseal.dto.SignDocumentDto; +import gr.grnet.eseal.enums.VisibleSignatureText; +import gr.grnet.eseal.exception.InternalServerErrorException; +import gr.grnet.eseal.exception.InvalidTOTPException; +import gr.grnet.eseal.exception.UnprocessableEntityException; +import gr.grnet.eseal.service.RemoteSignDocumentService; +import gr.grnet.eseal.service.RemoteSignDocumentServicePKCS7; +import gr.grnet.eseal.service.SignDocumentService; +import gr.grnet.eseal.sign.RemoteProviderCertificates; +import gr.grnet.eseal.sign.RemoteProviderSignBuffer; +import gr.grnet.eseal.sign.RemoteProviderSignDocument; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.time.Instant; +import java.util.Date; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.apache.http.HttpEntity; +import org.apache.http.HttpStatus; +import org.apache.http.HttpVersion; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.message.BasicStatusLine; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.util.ReflectionTestUtils; + +@SpringBootTest +class RemoteProviderSignDocumentTests { + + @Mock private CloseableHttpClient httpClient; + + private RemoteProviderCertificates remoteProviderCertificates; + private RemoteSignDocumentServicePKCS7 remoteSignDocumentServiceDetachedPKCS7; + private RemoteSignDocumentService remoteSignDocumentService; + private ObjectMapper objectMapper; + private RemoteProviderSignDocument remoteProviderSignDocument; + private RemoteProviderSignBuffer remoteProviderSignBuffer; + + @BeforeEach + void setUp() { + MockitoAnnotations.openMocks(this); + this.objectMapper = new ObjectMapper(); + this.objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); + RemoteProviderProperties remoteProviderProperties = new RemoteProviderProperties(); + + remoteProviderSignDocument = + new RemoteProviderSignDocument(remoteProviderProperties, httpClient); + + remoteProviderSignBuffer = new RemoteProviderSignBuffer(remoteProviderProperties, httpClient); + + remoteProviderCertificates = + new RemoteProviderCertificates(remoteProviderProperties, httpClient); + + VisibleSignatureProperties visibleSignatureProperties = + new VisibleSignaturePropertiesBean().visibleSignatureProperties(); + + remoteProviderProperties.setRetryEnabled(false); + + remoteSignDocumentService = + new RemoteSignDocumentService(remoteProviderProperties, remoteProviderSignDocument); + + remoteSignDocumentServiceDetachedPKCS7 = + new RemoteSignDocumentServicePKCS7( + visibleSignatureProperties, + remoteProviderProperties, + remoteProviderSignBuffer, + remoteProviderCertificates); + } + + @Test + void TestSignerCNOUCertificateSuccessful() throws Exception { + + String subject = "CN=test.example.com, SERIALNUMBER=879877987, OU=unit-1"; + + CloseableHttpResponse mockResponse = + buildMockSuccessfulCertificatesResponse(subject, HttpStatus.SC_OK); + + when(httpClient.execute(any())).thenReturn(mockResponse); + + assertThat( + SignDocumentService.getSignerInfo( + SignDocumentService.getUserCertificates("u", "p", "", remoteProviderCertificates), + VisibleSignatureText.CN_OU)) + .isEqualTo("test.example.com/unit-1"); + } + + @Test + void TestSignerCNCertificateSuccessful() throws Exception { + + String subject = "CN=test.example.com, SERIALNUMBER=879877987, OU=unit-1"; + + CloseableHttpResponse mockResponse = + buildMockSuccessfulCertificatesResponse(subject, HttpStatus.SC_OK); + + when(httpClient.execute(any())).thenReturn(mockResponse); + + assertThat( + SignDocumentService.getSignerInfo( + SignDocumentService.getUserCertificates("u", "p", "", remoteProviderCertificates), + VisibleSignatureText.CN)) + .isEqualTo("test.example.com"); + } + + @Test + void TestSignerOUCertificateSuccessful() throws Exception { + + String subject = "CN=test.example.com, SERIALNUMBER=879877987, OU=unit-1"; + + CloseableHttpResponse mockResponse = + buildMockSuccessfulCertificatesResponse(subject, HttpStatus.SC_OK); + + when(httpClient.execute(any())).thenReturn(mockResponse); + + assertThat( + SignDocumentService.getSignerInfo( + SignDocumentService.getUserCertificates("u", "p", "", remoteProviderCertificates), + VisibleSignatureText.OU)) + .isEqualTo("unit-1"); + } + + @Test + void TestSignerCertificateInvalidSubject() throws Exception { + + String subject = "invalid dn"; + + CloseableHttpResponse mockResponse = + buildMockSuccessfulCertificatesResponse(subject, HttpStatus.SC_OK); + + when(httpClient.execute(any())).thenReturn(mockResponse); + + InternalServerErrorException e = + Assertions.assertThrows( + InternalServerErrorException.class, + () -> + SignDocumentService.getSignerInfo( + SignDocumentService.getUserCertificates( + "u", "p", "", remoteProviderCertificates), + VisibleSignatureText.CN_OU)); + + assertThat(e.getMessage()).isEqualTo("Error with Signer's Certificate Subject"); + } + + @Test + void TestDocumentSignSuccessful() throws Exception { + + String documentData = "document-data-bytes"; + + CloseableHttpResponse mockResponse = + buildMockSuccessfulResponse(documentData, HttpStatus.SC_OK); + + when(httpClient.execute(any())).thenReturn(mockResponse); + + assertThat("document-data-bytes") + .isEqualTo( + this.remoteSignDocumentService.signDocument( + SignDocumentDto.builder() + .bytes(documentData) + .username("u") + .password("p") + .key("k") + .build())); + } + + // @TestOnlyIfTimezoneUTC + // void TestDocumentSignDetachedSuccessfulUTCWithSignerInfoAndImage() throws Exception { + // + // InputStream isSignature = + // RemoteProviderSignDocumentTests.class.getResourceAsStream( + // "/detached-sign-case/".concat("detached-signature-utc-si-img-b64.txt")); + // InputStream isOriginalPDF = + // RemoteProviderSignDocumentTests.class.getResourceAsStream( + // "/detached-sign-case/".concat("original-b64-pdf.txt")); + // InputStream isSignedPDF = + // RemoteProviderSignDocumentTests.class.getResourceAsStream( + // "/detached-sign-case/".concat("signed-detached-utc-si-img-b64-pdf.txt")); + // + // byte[] imageBytes = + // IOUtils.toByteArray( + // RemoteProviderSignDocumentTests.class.getResourceAsStream( + // "/visible-signature/".concat("ste2.jpeg"))); + // + // String signatureB64 = + // new BufferedReader(new InputStreamReader(isSignature, StandardCharsets.UTF_8)) + // .lines() + // .collect(Collectors.joining("\n")); + // + // String originalPDFB64 = + // new BufferedReader(new InputStreamReader(isOriginalPDF, StandardCharsets.UTF_8)) + // .lines() + // .collect(Collectors.joining("\n")); + // + // String signedPDFB64 = + // new BufferedReader(new InputStreamReader(isSignedPDF, StandardCharsets.UTF_8)) + // .lines() + // .collect(Collectors.joining("\n")); + // + // CloseableHttpResponse mockResponse = + // buildMockSuccessfulSignatureResponse(signatureB64, HttpStatus.SC_OK); + // + // when(httpClient.execute(any())).thenReturn(mockResponse); + // Calendar calendar = Calendar.getInstance(); + // calendar.setTimeInMillis(Long.parseLong("1617901835690")); + // + // // we have prepared a detached signature for the signing time of 1617901835690 + // assertThat( + // this.remoteSignDocumentServiceDetachedPKCS7.signDocument( + // SignDocumentDto.builder() + // .signingDate(calendar.getTime()) + // .bytes(originalPDFB64) + // .username("u") + // .password("p") + // .key("k") + // .imageBytes(Utils.toBase64(imageBytes)) + // .signerInfo("test.example.com/unit-1") + // .build())) + // .isEqualTo(signedPDFB64); + // } + // + // @TestOnlyIfTimezoneUTC + // void TestDocumentSignDetachedSuccessfulUTC() throws Exception { + // + // InputStream isSignature = + // RemoteProviderSignDocumentTests.class.getResourceAsStream( + // "/detached-sign-case/".concat("detached-signature-utc-b64.txt")); + // InputStream isOriginalPDF = + // RemoteProviderSignDocumentTests.class.getResourceAsStream( + // "/detached-sign-case/".concat("original-b64-pdf.txt")); + // InputStream isSignedPDF = + // RemoteProviderSignDocumentTests.class.getResourceAsStream( + // "/detached-sign-case/".concat("signed-detached-utc-b64-pdf.txt")); + // + // String signatureB64 = + // new BufferedReader(new InputStreamReader(isSignature, StandardCharsets.UTF_8)) + // .lines() + // .collect(Collectors.joining("\n")); + // + // String originalPDFB64 = + // new BufferedReader(new InputStreamReader(isOriginalPDF, StandardCharsets.UTF_8)) + // .lines() + // .collect(Collectors.joining("\n")); + // + // String signedPDFB64 = + // new BufferedReader(new InputStreamReader(isSignedPDF, StandardCharsets.UTF_8)) + // .lines() + // .collect(Collectors.joining("\n")); + // + // CloseableHttpResponse mockResponse = + // buildMockSuccessfulSignatureResponse(signatureB64, HttpStatus.SC_OK); + // + // when(httpClient.execute(any())).thenReturn(mockResponse); + // Calendar calendar = Calendar.getInstance(); + // calendar.setTimeInMillis(Long.parseLong("1617901835690")); + // + // // we have prepared a detached signature for the signing time of 1617901835690 + // assertThat( + // this.remoteSignDocumentServiceDetachedPKCS7.signDocument( + // SignDocumentDto.builder() + // .signingDate(calendar.getTime()) + // .bytes(originalPDFB64) + // .username("u") + // .password("p") + // .key("k") + // .signerInfo("") + // .build())) + // .isEqualTo(signedPDFB64); + // } + // + // @TestOnlyIfTimezoneEuropeAthens + // void TestDocumentSignDetachedSuccessfulAthens() throws Exception { + // + // InputStream isSignature = + // RemoteProviderSignDocumentTests.class.getResourceAsStream( + // "/detached-sign-case/".concat("detached-signature-athens-b64.txt")); + // InputStream isOriginalPDF = + // RemoteProviderSignDocumentTests.class.getResourceAsStream( + // "/detached-sign-case/".concat("original-b64-pdf.txt")); + // InputStream isSignedPDF = + // RemoteProviderSignDocumentTests.class.getResourceAsStream( + // "/detached-sign-case/".concat("signed-detached-athens-b64-pdf.txt")); + // + // String signatureB64 = + // new BufferedReader(new InputStreamReader(isSignature, StandardCharsets.UTF_8)) + // .lines() + // .collect(Collectors.joining("\n")); + // + // String originalPDFB64 = + // new BufferedReader(new InputStreamReader(isOriginalPDF, StandardCharsets.UTF_8)) + // .lines() + // .collect(Collectors.joining("\n")); + // + // String signedPDFB64 = + // new BufferedReader(new InputStreamReader(isSignedPDF, StandardCharsets.UTF_8)) + // .lines() + // .collect(Collectors.joining("\n")); + // + // CloseableHttpResponse mockResponse = + // buildMockSuccessfulSignatureResponse(signatureB64, HttpStatus.SC_OK); + // + // when(httpClient.execute(any())).thenReturn(mockResponse); + // + // Calendar calendar = Calendar.getInstance(); + // calendar.setTimeInMillis(Long.parseLong("1617901835690")); + // + // // we have prepared a detached signature for the signing time of 1617901835690 + // assertThat( + // this.remoteSignDocumentServiceDetachedPKCS7.signDocument( + // SignDocumentDto.builder() + // .signingDate(calendar.getTime()) + // .bytes(originalPDFB64) + // .username("u") + // .password("p") + // .signerInfo("") + // .key("k") + // .build())) + // .isEqualTo(signedPDFB64); + // } + // + // @TestOnlyIfTimezoneEuropeAthens + // void TestDocumentSignDetachedSuccessfulAthensWithSignerInfoAndImage() throws Exception { + // + // InputStream isSignature = + // RemoteProviderSignDocumentTests.class.getResourceAsStream( + // "/detached-sign-case/".concat("detached-signature-athens-si-img-b64.txt")); + // InputStream isOriginalPDF = + // RemoteProviderSignDocumentTests.class.getResourceAsStream( + // "/detached-sign-case/".concat("original-b64-pdf.txt")); + // InputStream isSignedPDF = + // RemoteProviderSignDocumentTests.class.getResourceAsStream( + // "/detached-sign-case/".concat("signed-detached-athens-si-img-b64-pdf.txt")); + // + // byte[] imageBytes = + // IOUtils.toByteArray( + // RemoteProviderSignDocumentTests.class.getResourceAsStream( + // "/visible-signature/".concat("ste2.jpeg"))); + // + // String signatureB64 = + // new BufferedReader(new InputStreamReader(isSignature, StandardCharsets.UTF_8)) + // .lines() + // .collect(Collectors.joining("\n")); + // + // String originalPDFB64 = + // new BufferedReader(new InputStreamReader(isOriginalPDF, StandardCharsets.UTF_8)) + // .lines() + // .collect(Collectors.joining("\n")); + // + // String signedPDFB64 = + // new BufferedReader(new InputStreamReader(isSignedPDF, StandardCharsets.UTF_8)) + // .lines() + // .collect(Collectors.joining("\n")); + // + // CloseableHttpResponse mockResponse = + // buildMockSuccessfulSignatureResponse(signatureB64, HttpStatus.SC_OK); + // + // when(httpClient.execute(any())).thenReturn(mockResponse); + // Calendar calendar = Calendar.getInstance(); + // calendar.setTimeInMillis(Long.parseLong("1617901835690")); + // + // // we have prepared a detached signature for the signing time of 1617901835690 + // assertThat( + // this.remoteSignDocumentServiceDetachedPKCS7.signDocument( + // SignDocumentDto.builder() + // .signingDate(calendar.getTime()) + // .bytes(originalPDFB64) + // .username("u") + // .password("p") + // .signerInfo("test.example.com/unit-1") + // .imageBytes(Utils.toBase64(imageBytes)) + // .key("k") + // .build())) + // .isEqualTo(signedPDFB64); + // } + + @Test + void TestDocumentSignDetachedDSSDigestError() throws Exception { + + InternalServerErrorException de = + Assertions.assertThrows( + InternalServerErrorException.class, + () -> + this.remoteSignDocumentServiceDetachedPKCS7.signDocument( + SignDocumentDto.builder() + .signingDate(new Date()) + .bytes("invalid") + .username("u") + .password("p") + .signerInfo("") + .key("k") + .build())); + + assertThat("Could not compute document digest").isEqualTo(de.getMessage()); + } + + @Test + void TestDocumentSignDetachedDSSSignError() throws Exception { + + CloseableHttpResponse mockResponse = + buildMockSuccessfulSignatureResponse("sig", HttpStatus.SC_OK); + + when(httpClient.execute(any())).thenReturn(mockResponse); + + PDFSignatureService pdfSignatureService = mock(PDFSignatureService.class); + when(pdfSignatureService.digest(any(), any())).thenReturn("random-bytes".getBytes()); + when(pdfSignatureService.sign(any(), any(), any())).thenThrow(DSSException.class); + + ReflectionTestUtils.setField( + this.remoteSignDocumentServiceDetachedPKCS7, "pdfSignatureService", pdfSignatureService); + + InternalServerErrorException de = + Assertions.assertThrows( + InternalServerErrorException.class, + () -> + this.remoteSignDocumentServiceDetachedPKCS7.signDocument( + SignDocumentDto.builder() + .signingDate(new Date()) + .bytes("doc") + .username("u") + .password("p") + .signerInfo("") + .key("k") + .build())); + assertThat("Could not combine signature to original document").isEqualTo(de.getMessage()); + } + + @Test + void TestDocumentSignFailToLogon() throws Exception { + + String errMessage = "Failed to Logon"; + + CloseableHttpResponse mockResponse = + buildMockUnSuccessfulResponse(errMessage, HttpStatus.SC_OK); + + when(httpClient.execute(any())).thenReturn(mockResponse); + + UnprocessableEntityException exc = + Assertions.assertThrows( + UnprocessableEntityException.class, + () -> + this.remoteSignDocumentService.signDocument( + SignDocumentDto.builder() + .bytes("doc") + .username("u") + .password("p") + .key("k") + .build())); + + assertThat("Wrong user credentials").isEqualTo(exc.getMessage()); + } + + @Test + void TestDocumentSignInvalidExpiredTOTP() throws Exception { + + String errMessage = + "Failed to Sign, Error (0X900201E0)-Failed to verify the user password. " + + "Passwords should be in wide character representation. " + + "Password length in bytes includes the null terminator (two bytes in wide char representation)."; + + CloseableHttpResponse mockResponse = + buildMockUnSuccessfulResponse(errMessage, HttpStatus.SC_OK); + + when(httpClient.execute(any())).thenReturn(mockResponse); + + UnprocessableEntityException exc = + Assertions.assertThrows( + InvalidTOTPException.class, + () -> + this.remoteSignDocumentService.signDocument( + SignDocumentDto.builder() + .bytes("doc") + .username("u") + .password("p") + .key("k") + .build())); + + assertThat("Invalid key or expired TOTP").isEqualTo(exc.getMessage()); + } + + @Test + void TestDocumentSignOCSPError() throws Exception { + + String errMessage = + "Failed to Sign, Error (0X90030233)-Failed to get the URL of the OCSP server."; + + CloseableHttpResponse mockResponse = + buildMockUnSuccessfulResponse(errMessage, HttpStatus.SC_OK); + + when(httpClient.execute(any())).thenReturn(mockResponse); + + InternalServerErrorException exc = + Assertions.assertThrows( + InternalServerErrorException.class, + () -> + this.remoteSignDocumentService.signDocument( + SignDocumentDto.builder() + .bytes("doc") + .username("u") + .password("p") + .key("k") + .build())); + + assertThat("Failed to get the URL of the OCSP server").isEqualTo(exc.getMessage()); + } + + @Test + void TestDocumentSignUserIsLocked() throws Exception { + + String errMessage = "Failed to Logon, Error (0X900201E2)-The user is locked and cannot logon."; + + CloseableHttpResponse mockResponse = + buildMockUnSuccessfulResponse(errMessage, HttpStatus.SC_OK); + + when(httpClient.execute(any())).thenReturn(mockResponse); + + InternalServerErrorException exc = + Assertions.assertThrows( + InternalServerErrorException.class, + () -> + this.remoteSignDocumentService.signDocument( + SignDocumentDto.builder() + .bytes("doc") + .username("u") + .password("p") + .key("k") + .build())); + + assertThat("The user is locked and cannot logon").isEqualTo(exc.getMessage()); + } + + @Test + void TestDocumentSignTimeStampingServiceProblem() throws Exception { + + String errMessage = + "Failed to Sign, Error (0X90030373)-Connection to Time Stamping service problem."; + + CloseableHttpResponse mockResponse = + buildMockUnSuccessfulResponse(errMessage, HttpStatus.SC_OK); + + when(httpClient.execute(any())).thenReturn(mockResponse); + + InternalServerErrorException exc = + Assertions.assertThrows( + InternalServerErrorException.class, + () -> + this.remoteSignDocumentService.signDocument( + SignDocumentDto.builder() + .bytes("doc") + .username("u") + .password("p") + .key("k") + .build())); + + assertThat("Connection to Time Stamping service problem").isEqualTo(exc.getMessage()); + } + + @Test + void TestDocumentSignGenericProviderError() throws Exception { + + String errMessage = "generic error"; + + CloseableHttpResponse mockResponse = + buildMockUnSuccessfulResponse(errMessage, HttpStatus.SC_INTERNAL_SERVER_ERROR); + + when(httpClient.execute(any())).thenReturn(mockResponse); + + InternalServerErrorException exc = + Assertions.assertThrows( + InternalServerErrorException.class, + () -> + this.remoteSignDocumentService.signDocument( + SignDocumentDto.builder() + .bytes("doc") + .username("u") + .password("p") + .key("k") + .build())); + + assertThat("Error with signing backend").isEqualTo(exc.getMessage()); + } + + // TODO Revisit this code test to add maybe a better way to test that the retry interval and count + // are honored + @Test + void TestDocumentSignIOExceptionRetryEnabled() throws Exception { + + // override the test case default properties + // enable retry for 3 times and 5 seconds interval + // that means that the invocation should take at least 15 seconds to complete when the IO + // exception occurs + RemoteProviderProperties remoteProviderProperties = new RemoteProviderProperties(); + remoteProviderProperties.setRetryEnabled(true); + remoteProviderProperties.setRetryCounter(3); + remoteProviderProperties.setRetryInterval(5); + + remoteProviderSignDocument = + new RemoteProviderSignDocument(remoteProviderProperties, httpClient); + + remoteSignDocumentService.setRemoteProviderSignDocument(remoteProviderSignDocument); + + when(httpClient.execute(any())).thenThrow(IOException.class); + + long start = Instant.now().getEpochSecond(); + + InternalServerErrorException exc = + Assertions.assertThrows( + InternalServerErrorException.class, + () -> + this.remoteSignDocumentService.signDocument( + SignDocumentDto.builder() + .bytes("doc") + .username("u") + .password("p") + .key("k") + .build())); + + long end = Instant.now().getEpochSecond(); + + assertThat("Signing backend unavailable").isEqualTo(exc.getMessage()); + assertThat((end - start) >= 15).isTrue(); + } + + @Test + void TestDocumentSignIOException() throws Exception { + + when(httpClient.execute(any())).thenThrow(IOException.class); + + InternalServerErrorException exc = + Assertions.assertThrows( + InternalServerErrorException.class, + () -> + this.remoteSignDocumentService.signDocument( + SignDocumentDto.builder() + .bytes("doc") + .username("u") + .password("p") + .key("k") + .build())); + + assertThat("Signing backend unavailable").isEqualTo(exc.getMessage()); + } + + // @Test + // void TestDocumentSignCodeGenerationException() throws Exception { + // + // when(httpClient.execute(any())) + // .thenAnswer( + // invocation -> { + // throw new CodeGenerationException("Code generation exception", null); + // }); + // + // InternalServerErrorException exc = + // Assertions.assertThrows( + // InternalServerErrorException.class, + // () -> this.signDocumentService.signDocument("doc", "u", "p", "k")); + // + // assertThat("TOTP generator has encountered an error").isEqualTo(exc.getMessage()); + // } + // + // @Test + // void TestDocumentSignInterruptedException() throws Exception { + // + // when(httpClient.execute(any())) + // .thenAnswer( + // invocation -> { + // throw new InterruptedException("Interruption exception"); + // }); + // InternalServerErrorException exc = + // Assertions.assertThrows( + // InternalServerErrorException.class, + // () -> this.remoteSignDocumentService.signDocument(SignDocumentDto.builder() + // .bytes("doc") + // .username("u") + // .password("p") + // .key("k") + // .build())); + // + // assertThat("Internal thread error").isEqualTo(exc.getMessage()); + // } + + private CloseableHttpResponse buildMockSuccessfulSignatureResponse( + String signature, int httpStatus) throws IOException { + + // init mock response + MockDataField mockDataField = new MockDataField(); + mockDataField.setSignature(signature); + MockRemoteProviderSignDocumentResponse mockResp = new MockRemoteProviderSignDocumentResponse(); + mockResp.setSuccess(true); + mockResp.setData(mockDataField); + + return buildMockClosableHttpResponse(this.objectMapper.writeValueAsBytes(mockResp), httpStatus); + } + + private CloseableHttpResponse buildMockSuccessfulCertificatesResponse( + String subject, int httpStatus) throws IOException { + + // init mock response + MockRemoteProviderCertificatesResponse mockCerts = new MockRemoteProviderCertificatesResponse(); + mockCerts.setSubject(subject); + + return buildMockClosableHttpResponse( + this.objectMapper.writeValueAsBytes(mockCerts), httpStatus); + } + + private CloseableHttpResponse buildMockSuccessfulResponse(String dataField, int httpStatus) + throws IOException { + + // init mock response + MockDataField mockDataField = new MockDataField(); + mockDataField.setSignedFileData(dataField); + MockRemoteProviderSignDocumentResponse mockResp = new MockRemoteProviderSignDocumentResponse(); + mockResp.setSuccess(true); + mockResp.setData(mockDataField); + + return buildMockClosableHttpResponse(this.objectMapper.writeValueAsBytes(mockResp), httpStatus); + } + + private CloseableHttpResponse buildMockUnSuccessfulResponse(String dataField, int httpStatus) + throws IOException { + + // init mock response + MockErrorData errorData = new MockErrorData(); + errorData.setMessage(dataField); + MockRemoteProviderSignDocumentResponse mockResp = new MockRemoteProviderSignDocumentResponse(); + mockResp.setSuccess(false); + mockResp.setErrorData(errorData); + + return buildMockClosableHttpResponse(this.objectMapper.writeValueAsBytes(mockResp), httpStatus); + } + + private CloseableHttpResponse buildMockClosableHttpResponse(byte[] responseBody, int httpStatus) + throws IOException { + + CloseableHttpResponse response = mock(CloseableHttpResponse.class); + HttpEntity entity = mock(HttpEntity.class); + + when(response.getStatusLine()) + .thenReturn(new BasicStatusLine(HttpVersion.HTTP_1_1, httpStatus, "")); + when(entity.getContent()).thenReturn(new ByteArrayInputStream(responseBody)); + when(response.getEntity()).thenReturn(entity); + + return response; + } + + @Setter + @NoArgsConstructor + private static class MockRemoteProviderCertificatesResponse { + @JsonProperty("Subject") + private String subject; + } + + @Setter + @NoArgsConstructor + private static class MockRemoteProviderSignDocumentResponse { + @JsonProperty("Success") + private Boolean success; + + @JsonProperty("Data") + private MockDataField data; + + @JsonProperty("ErrData") + private MockErrorData errorData; + } + + @Getter + @Setter + @NoArgsConstructor + private static class MockDataField { + @JsonProperty("SignedFileData") + private String signedFileData; + + @JsonProperty("Signature") + private String signature; + } + + @Getter + @Setter + @NoArgsConstructor + private static class MockErrorData { + @JsonProperty("Message") + private String message; + } +} diff --git a/eseal/src/test/java/gr/grnet/eseal/TestOnlyIfTimezoneEuropeAthens.java b/eseal/src/test/java/gr/grnet/eseal/TestOnlyIfTimezoneEuropeAthens.java new file mode 100644 index 0000000..a13b3ba --- /dev/null +++ b/eseal/src/test/java/gr/grnet/eseal/TestOnlyIfTimezoneEuropeAthens.java @@ -0,0 +1,14 @@ +package gr.grnet.eseal; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.EnabledIfSystemProperty; + +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +@Test +@EnabledIfSystemProperty(named = "user.timezone", matches = "Europe/Athens") +@interface TestOnlyIfTimezoneEuropeAthens {} diff --git a/eseal/src/test/java/gr/grnet/eseal/TestOnlyIfTimezoneUTC.java b/eseal/src/test/java/gr/grnet/eseal/TestOnlyIfTimezoneUTC.java new file mode 100644 index 0000000..8cc5696 --- /dev/null +++ b/eseal/src/test/java/gr/grnet/eseal/TestOnlyIfTimezoneUTC.java @@ -0,0 +1,14 @@ +package gr.grnet.eseal; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.EnabledIfSystemProperty; + +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +@Test +@EnabledIfSystemProperty(named = "user.timezone", matches = "UTC") +@interface TestOnlyIfTimezoneUTC {} diff --git a/eseal/src/test/resources/application-test.properties b/eseal/src/test/resources/application-test.properties new file mode 100644 index 0000000..a562008 --- /dev/null +++ b/eseal/src/test/resources/application-test.properties @@ -0,0 +1,61 @@ +# Configuration values that are needed for th remove provider http client +# remote provider rest api endpoint +eseal.remote.provider.endpoint=test.provider.com +# remote provider enable retry on failed requests +eseal.remote.provider.retry.enabled=true +# remote provider how many times we should retry failed requests +eseal.remote.provider.retry.counter=3 +# remote provider how much time should the client wait before the next retry in seconds +eseal.remote.provider.retry.interval=5 +# remote provider time threshold that indicates that we should generate a new totp token +# for time values lower than the threshold +eseal.remote.provider.totp.refresh.seconds.wait=5 +# remote provider client truststore that contains the API's certs +eseal.remote.provider.truststore.file=remote_provider_http_eseal_client.truststore.jks +# remote provider client truststore password to access +eseal.remote.provider.truststore.password=providerpass +# remote provider client truststore type +eseal.remote.provider.truststore.type=JKS +# remote provider verify the API certs +eseal.remote.provider.tls.verify=true +#### Validation properties ##### +# official journal client keystore +eseal.validation.oj.keystore.filename=oj.keystore.p12 +# official journal client keystore type +eseal.validation.oj.keystore.type=PKCS12 +# official journal client keystore password +eseal.validation.oj.keystore.password=dss-password +# official journal url +eseal.validation.oj.url=https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=uriserv:OJ.C_.2019.276.01.0001.01.ENG +# european list of trusted lists URL +eseal.validation.lotl.url=https://ec.europa.eu/tools/lotl/eu-lotl.xml +# keep refreshing the lotl sources on a fixed interval +eseal.validation.lotl.refresh.enable=true +# initial delay for the lotl sources online refresh in milliseconds +eseal.validation.lotl.refresh.initial.delay=0 +# online refresh interval for the lotl sources in milliseconds +eseal.validation.lotl.refresh.interval=21600000 +# lotl trust sources filesystem cache +eseal.validation.lotl.cache.dir=/etc/eseal/conf.d/ +# truststore containing extra trust certs needed during the initialization of the LOTL source +eseal.validation.lotl.extra.truststore.file=extra-lotl.truststore.jks +# extra lotl truststore password +eseal.validation.lotl.extra.truststore.password=extra-tl +# extra lotl truststore type +eseal.validation.lotl.extra.truststore.type=JKS +### Timestamping Provider properties ### + +##### APED ##### +eseal.tsp.aped.url=https://timestamp.aped.gov.gr/qtss +eseal.tsa.aped.truststore.type=JKS +eseal.tsa.aped.truststore.file=aped.truststore.jks +eseal.tsa.aped.truststore.password=apedts + +##### HARICA ##### +eseal.tsa.harica.url=https://qts.harica.gr +eseal.tsa.harica.truststore.type=JKS +eseal.tsa.harica.truststore.file=harica.truststore.jks +eseal.tsa.harica.truststore.password=harica-qtsa +eseal.tsa.harica.host=qts.harica.gr +eseal.tsa.harica.username=test-user +eseal.tsa.harica.password=test-pass diff --git a/eseal/src/test/resources/detached-sign-case/detached-signature-athens-b64.txt b/eseal/src/test/resources/detached-sign-case/detached-signature-athens-b64.txt new file mode 100644 index 0000000..8bea78e --- /dev/null +++ b/eseal/src/test/resources/detached-sign-case/detached-signature-athens-b64.txt @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/eseal/src/test/resources/detached-sign-case/detached-signature-athens-si-img-b64.txt b/eseal/src/test/resources/detached-sign-case/detached-signature-athens-si-img-b64.txt new file mode 100644 index 0000000..d3d660c --- /dev/null +++ b/eseal/src/test/resources/detached-sign-case/detached-signature-athens-si-img-b64.txt @@ -0,0 +1 @@ +MIJIpAYJKoZIhvcNAQcCoIJIlTCCSJECAQExDzANBglghkgBZQMEAgEFADALBgkqhkiG9w0BBwGgghXSMIIIMDCCBhigAwIBAgIQc39fHgbFSQtedmdbwiMyVTANBgkqhkiG9w0BAQsFADCBvDELMAkGA1UEBhMCR1IxKzApBgNVBAoMIkdyZWVrIFVuaXZlcnNpdGllcyBOZXR3b3JrIChHVW5ldCkxGDAWBgNVBGEMD1ZBVEdSLTA5OTAyODIyMDE3MDUGA1UECwwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDQTEtMCsGA1UEAwwkSEFSSUNBIEluc3RpdHV0aW9uYWwgQ2xpZW50IFN1YkNBIFIxMB4XDTIwMTExOTA3MDcxOFoXDTIxMTExOTA3MDcxOFowgdIxCzAJBgNVBAYTAkdSMRUwEwYDVQQHDAxUaGVzc2Fsb25pa2kxLTArBgNVBAoMJEFyaXN0b3RsZSBVbml2ZXJzaXR5IG9mIFRoZXNzYWxvbmlraTESMBAGA1UECwwJSVQgQ2VudGVyMRcwFQYDVQQEDA5Eb2tpbWFzdGlraWRpczEVMBMGA1UEKgwMRG9raW1hc3Rpa29zMRMwEQYDVQQFEwoyMzg5ODY2NDcxMSQwIgYDVQQDDBtEb2tpbWFzdGlrb3MgRG9raW1hc3Rpa2lkaXMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC1nsSeroJSr2IdzfCpLnG+wYEwIspaktsG2QvLjDNjNYpbv0iZgju9FHrZ5IbVvcHVDFkivdUd7ICqVm64TYl6ZqwRWQjOq7qoklNCAQR9KtKx6QlFxBF3QPh/urb2F3G5e7pbYLy7u5y/fPWpLuBWKElL9AFxOVkqsI8/Om2RM7ICqEXZ2AJp5okgM6Gvfei5jSXnJsdapu+ZsHliqE6yXH97w75PfLbJiooHB+FjaDVEecv0MH2dOApXONhmzG/cuB2VLtkPzWkQhfbdkfEKemeUaykRXAYkl/3ZxeDJqKrXWhKjOrGqX1AasYLivNTRtsw4gRHvl588c10lskF5AgMBAAGjggMUMIIDEDAfBgNVHSMEGDAWgBTD56xawV85eOAWMPHVjl1azfppTTCBhwYIKwYBBQUHAQEEezB5MFAGCCsGAQUFBzAChkRodHRwOi8vcmVwby1zdGcuaGFyaWNhLmdyL2NlcnRzL0hhcmljYUluc3RpdHV0aW9uYWxDbGllbnRTdWJDQVIxLmNlcjAlBggrBgEFBQcwAYYZaHR0cDovL29jc3Atc3RnLmhhcmljYS5ncjCB8wYDVR0gBIHrMIHoMAkGBwQAi+xAAQIwgcsGDCsGAQQBgc8RAQEEAjCBujAwBggrBgEFBQcCARYkaHR0cHM6Ly9yZXBvLmhhcmljYS5nci9kb2N1bWVudHMvQ1BTMIGFBggrBgEFBQcCAjB5DHdUaGlzIFF1YWxpZmllZCBDZXJ0aWZpY2F0ZSBoYXMgYmVlbiBJc3N1ZWQgYnkgdGhlIFFUU1AgIkdyZWVrIFVuaXZlcnNpdGllcyBOZXR3b3JrIChHVW5ldCkiIHdpdGggVkFUIG51bWJlciBFTDA5OTAyODIyMDANBgsrBgEEAYHPEQEBCDAgBgNVHSUEGTAXBgorBgEEAYI3CgMMBgkqhkiG9y8BAQUwgcsGCCsGAQUFBwEDBIG+MIG7MAgGBgQAjkYBATAIBgYEAI5GAQQwEwYGBACORgEGMAkGBwQAjkYBBgEwgY8GBgQAjkYBBTCBhDBAFjpodHRwczovL3d3dy5oYXJpY2EuZ3IvZG9jdW1lbnRzL1F1YWxpZmllZE5hdHVyYWxQRFMtRU4ucGRmEwJlbjBAFjpodHRwczovL3d3dy5oYXJpY2EuZ3IvZG9jdW1lbnRzL1F1YWxpZmllZE5hdHVyYWxQRFMtRUwucGRmEwJlbDBOBgNVHR8ERzBFMEOgQaA/hj1odHRwOi8vY3JsLXN0Zy5oYXJpY2EuZ3IvSGFyaWNhSW5zdGl0dXRpb25hbENsaWVudFN1YkNBUjEuY3JsMB0GA1UdDgQWBBQp/k/LdP/cmIQv9HYTibXvVcy9rzAOBgNVHQ8BAf8EBAMCBsAwDQYJKoZIhvcNAQELBQADggIBACEzaR+KApFVDbMaQTxCUMu3leiTOWRYwOW8ShwL1S7Q5PgSTnC1TxpEnRQ/JlASWp0U9tSmzDKqPcMhG1EDJRRg6zqCd+kOlO57Fcuvf6EtE6FfS7cSJYBMhkAOJKJjOUp6Ss7fNLwcmRa6iKcLOfOw6ghFg33bTNJHRq8+xDgRsTwVA1K0KojdIfjqhuLZXdpOoYbVDvsGQbO3OpllbnmdOp9smeT46fxYyDUQEZJpPBndLljDB1LBhiLE2OIvgkkr+6QQYw4bfrNV3Q39uSnFMCKHVRmJHppIbpaVRvpT5WhFLXyAAXCrS7zHZ++J+eybX18y+0A4YK4Ws9W2PpD0tuJLpmzCgx3LzpKZyOYmsCtVRUoSngOHKqj73zH2qsMZLSyjTgnlOVGenL9j8qWguCsOl9C8vghOdWgvCddWmsFaUd4GvfoEkPeZsph2jMgFUK/h6FiXUwdu/2gyw86eA2XQkpO7JO7DYZYFTjxi582EbHYkUamm0HpYC4hrbWLUkgpZIJuOKRG4fF456cgggusFL7aFhknRB/HwT2JEFxjvr4JH4ffaYkmSHjvVhaGDTHwB+yhCNan/PsQ9Pei8/QRa8m7KQgs80VkwvUhhSRCSGac+RUpV7OyaIzWQbuqh08pbhqM0VNse3nuJTi7pNyg+R72aSk0zP2x+8j3PMIIHVTCCBT2gAwIBAgIQWLdbzD8osIa4ck1UrLqf6DANBgkqhkiG9w0BAQsFADCBrTELMAkGA1UEBhMCR1IxDzANBgNVBAcMBkF0aGVuczFEMEIGA1UECgw7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxRzBFBgNVBAMMPkhlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIwMTUgLSBUZXN0MB4XDTIwMDcwNzA5MjA0OFoXDTM1MDcwNDA5MjA0OFowgbwxCzAJBgNVBAYTAkdSMSswKQYDVQQKDCJHcmVlayBVbml2ZXJzaXRpZXMgTmV0d29yayAoR1VuZXQpMRgwFgYDVQRhDA9WQVRHUi0wOTkwMjgyMjAxNzA1BgNVBAsMLkhlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ0ExLTArBgNVBAMMJEhBUklDQSBJbnN0aXR1dGlvbmFsIENsaWVudCBTdWJDQSBSMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALp8BOysoSGjA8OO0ZV9Tj2RNYphb95MV2QTKZD25Dd+hvfm5e3a4hz7fr3tCykedTLJJha6o9zOa7AFgfkiNRls017D/3MkD7Vc5orzTrP7j25ODW9MqGLBGsyfDabRk59H11t3zVg6sSPPIrQ/aAj1+C7STKmIeP7Tl1ABwH9RcmxWNuGWe8gofosGxT135V+JNT1h8meoSR5twifPJTeAkM2RGLVezWMl9+a0nBHJROPsr6Gw8flr/yH7YnbRaUYpWtq2HVRv1YIVXS3VF9Vdim0ZURVwJwxTzLF5LbULTVmweLihSqFMzfzpWkoBErBHOfwNLn8Q4sELnqvDin2akoYHIWQFJw1oVoZCUbPYFVgDjXN/o6p8QPyg0Ly3kVCpF2HUcSg3cTarCgPzMj6yV0TBrBZ+t5BC4t9cvRBpW66+mZlfAOAijOpYjg7NJjeaevXDVWltWkVjfGj2xtjIx4K45OoKZ7f3vwA9ClxrtLzKAY9AG+El/RJqltG6XmeFjFXcAs0YkAHRzjAbeeRyxra5h28i1Ss/vXxnZrcL/w3dsa2GoRuF8d9HeamoORyGPuzuWOwfJ42qjcFORyYXEM3ZZB8hJTZuSL8p5qisZD440u5B0PRgUvqHmxn91VNZyhszQ/iUEdXRXoLERMDje5cK+E/XSTs+vE9ST3+DAgMBAAGjggFeMIIBWjASBgNVHRMBAf8ECDAGAQH/AgEAMB8GA1UdIwQYMBaAFJhkbGu13Pchyc1lgDNJ20CpHKOcMHYGCCsGAQUFBwEBBGowaDA/BggrBgEFBQcwAoYzaHR0cDovL3d3dy5kZXYuaGFyaWNhLmdyL2NlcnRzL0hhcmljYVJvb3RDQTIwMTUuY3J0MCUGCCsGAQUFBzABhhlodHRwOi8vb2NzcC1zdGcuaGFyaWNhLmdyMBEGA1UdIAQKMAgwBgYEVR0gADApBgNVHSUEIjAgBggrBgEFBQcDAgYIKwYBBQUHAwQGCisGAQQBgjcKAwwwPgYDVR0fBDcwNTAzoDGgL4YtaHR0cDovL2NybC1zdGcuaGFyaWNhLmdyL0hhcmljYVJvb3RDQTIwMTUuY3JsMB0GA1UdDgQWBBTD56xawV85eOAWMPHVjl1azfppTTAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQADggIBAKUasi4j0VHYH7TbnRJXU/eR0+dCRbaXaXsS3wEq4/T+S+ZspFZBPSNI1C3/AH8lqtJd/kRKGUBI6DrvAm645fkUKmV93IiW37FxbSuuL3JeBy68MOIQDYsqTB1DnXfILkpq/atXDbqFHhtZNIXFBbpyvQzzQDBxcUBsqGjoTikYDHRT7uLNALmJieeGxrX+AworUeAoLjs2ZPJyb/B3R8lhWCxNp9xhZgaGcWJI8GjTtRo12cMieGC5FbnXqpgspFyrXnmxl/OlgsNzP6pq8GbcNGsRSV4WjbiwFJg3zXwt066gwiYfdGz0EtIXHauNnbxFqlchH3sYPlnZZ02tHVSwBBVxvFxE41AkHE86tmmxBpwh/peSaaNdeous+XnQQTvT4Wd104+rE0A3bLRmauwNwpijLhCnPG9+rxo0qXMrIbWRM8ebrShMqWIw7HvsyQgrrtv0L7SeM8H5UGOuEMFr94Nd2roG+/Fxj87byZbNPt7995e62HHU4PjPhlqVdd3ROZFVurB1ATpjhe5Lipl911DAn2G+d4RTOixE1lHK2ArvzqKN8phX1j4oTzZjzyIGRET5A/Piwks0gpW5+B9YiHVbIm9VhWM0ZXbtaGBjce/RnOUfmIyLadp2PbtfAHAFIU9nEj3D2Vyyt4NzNqM7NMR50m4Si6TnU3k1ClJKMIIGQTCCBCmgAwIBAgIIOffaZO6WlhcwDQYJKoZIhvcNAQELBQAwga0xCzAJBgNVBAYTAkdSMQ8wDQYDVQQHDAZBdGhlbnMxRDBCBgNVBAoMO0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5MUcwRQYDVQQDDD5IZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIFJvb3RDQSAyMDE1IC0gVGVzdDAeFw0xODA0MDIwNzM4MzdaFw00MzAzMjcwNzM4MzdaMIGtMQswCQYDVQQGEwJHUjEPMA0GA1UEBwwGQXRoZW5zMUQwQgYDVQQKDDtIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIENlcnQuIEF1dGhvcml0eTFHMEUGA1UEAww+SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBSb290Q0EgMjAxNSAtIFRlc3QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCxla+Ge7W08gGLip4VS313GIFqrt6yrtYjSYOvntfMP2hEZgVtCya8bn+dCZZvBfkkLCmdZrNaVAUcn1eC+zVdh9l6bPjXD/qIgMVIXVg8RFxIN+31Tn1l9NXepPwRDjP6IPa8cuDixRbqAC68m2wooGKVeB0HU9eFI5MznoKeD5DXSajjrb1xfQWfegXmdzjBbWgkxrLQRfv+2N8W/vz7YFgqU7zHuiNvM2A902eg0g2e7wS/sefp+nzuhe9qzq9bkPYGni1FoSg6h+tHTSGQJvosY8meNnCAbmD/chKVH3RsoKHT5hV9v8g8bZG1Jjr1Ok787dgMFRbqsxGOuIG4+nqZPv+wu5d7i5pe8FZWCap3d0U/xeQBGeEDSjwlDFDGB4PpIuWmmErLQQYhmOC/pzvd2izFmL07mnCqM9BsRY1Ejcshe7OJhTqiwhmq0L4Wxhi/DpNls/fyOq+CDoZiY/ofgohUvH8k1iRPhVIA7OMfB+xtPewCQfxHHHLsNRKXVMgcFv2yAw31CBKr8OHxrvh1GFa2DcEHYGq3N7EGULtyA1hCCDQlSVPTsrbZEsTfphyuBgQ444wLqZZLNF7vl7qBOkF5YjS5WPo89sIzz6h8izNxeH8XhA8OdLur8u5LoFEwEQP5UC9phIJ+3SDhPvvXXi7las6HxKC7du+acwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFJhkbGu13Pchyc1lgDNJ20CpHKOcMB0GA1UdDgQWBBSYZGxrtdz3IcnNZYAzSdtAqRyjnDAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggIBADHoxFVsvLkMxJ0RFGrUlPt4Zldcbei3WitksuSq/At1N1pOadAR8lIO9WF3jzM9b/TCL2qTf7GOVtYmYrx4s9NExRGd34A2uKw+4OHI6FpvNC556fgBfC++rY4qeCYMQIm02Cf24lEtLxTmacsyir9kgU06WRWLysYTLj66UnQiCTxzfGgO2GVHoO+aNcp2ZWT5rSiRNxydxCoD+AFtbnOsr9DAoXCW6XfficKJBhhjZCv3DkA1WgQ1vpLNwUHc+kwh3OrHt0pbIF7Fk7qJy3y3QOKc4W2m5jh22KW837qWRgzINFIHY2X0jSLQWYTsH+sxe++bb8eZQi/4M5iGfaRsxqKVp0ubozJHKEOB/LRkAvm5INIZBSxJ0n44iLSkRNg8fTIOQJWAVZTp5xjteHgHvU78AwCWBcbb1Tvg0vnJ2uATRYwMwUwic/uy85kuzBbJVnR6Fab0oWknoceYg5cwH49KoOu3Si9REX/euHIzQO6gWJczSjhPbUcsAnl1PD3uy3WZqpwtmHwwU9zsLaRchUnXtgoY1pPpvWzQ8CJtsqSAH4Xhw++0Z2o2iAAzA0ZoDWMa96R8hHyo4bPUnBg78Krbr4zj194ADUIalCXNiJIzkHVeyFLPqzrIWjJuQTbz1NgvjCL+XzSZmQt8n1Nz41q8C/Oy0GtgZPbmwuQVMYIyljCCMpICAQEwgdEwgbwxCzAJBgNVBAYTAkdSMSswKQYDVQQKDCJHcmVlayBVbml2ZXJzaXRpZXMgTmV0d29yayAoR1VuZXQpMRgwFgYDVQRhDA9WQVRHUi0wOTkwMjgyMjAxNzA1BgNVBAsMLkhlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ0ExLTArBgNVBAMMJEhBUklDQSBJbnN0aXR1dGlvbmFsIENsaWVudCBTdWJDQSBSMQIQc39fHgbFSQtedmdbwiMyVTANBglghkgBZQMEAgEFAKCCHYYwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAvBgkqhkiG9w0BCQQxIgQg40i77SEvAAh0P5QBT3Qrj0fS4db/ljSS59SaAwbh6XQwNwYLKoZIhvcNAQkQAi8xKDAmMCQwIgQgStMFxH0ecuEjZDAr+qacJbQ9ijxPdhxWxXHTSlDFAWwwghz+BgkqhkiG9y8BAQgxghzvMIIc66CCCvcwggrzMIIK7zCCCNcCAQEwDQYJKoZIhvcNAQELBQAwga0xCzAJBgNVBAYTAkdSMQ8wDQYDVQQHDAZBdGhlbnMxRDBCBgNVBAoMO0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5MUcwRQYDVQQDDD5IZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIFJvb3RDQSAyMDE1IC0gVGVzdBcNMjAxMDI5MDkzMzEzWhcNMjExMDI0MDkzMzEzWjCCB8IwLwIQMoDjphbNBePcnWU8BtQ86BcNMjAxMDI5MDkyNzE1WjAMMAoGA1UdFQQDCgEEMCcCCF6tNjv1A/UmFw0xOTA0MTgxMjIxNTZaMAwwCgYDVR0VBAMKAQQwLwIQU2DMFfYva06/vHMRAcwuMBcNMjAxMDI5MDkyNjIzWjAMMAoGA1UdFQQDCgEEMC8CEF6aTiI5i52p62NBTiY1ceEXDTIwMDkwMzA3NTgyM1owDDAKBgNVHRUEAwoBBDAvAhBrYXjpnfYzjpcjTLk4gD81Fw0yMDA5MDMwNzU5MDhaMAwwCgYDVR0VBAMKAQQwLwIQHmRqn7/w5UJjvuZBfyqTIRcNMjAxMDI5MDkyNzE5WjAMMAoGA1UdFQQDCgEEMCcCCGg4BRiPUzzTFw0yMDA5MDMwNzU0MzFaMAwwCgYDVR0VBAMKAQQwLwIQWJKI4xjcXdoaGL2xKu8GfhcNMjAxMDI5MDkyNjM2WjAMMAoGA1UdFQQDCgEEMC8CEFz7BCfocNr32Mw1iJCEtbIXDTIwMTAyOTA5MjcwMVowDDAKBgNVHRUEAwoBBDAvAhBoGqC272s6kZxMdRPQH5uqFw0yMDA5MDMwODAwMTZaMAwwCgYDVR0VBAMKAQQwLwIQeaqiiPdeQBCld8akw8WEvBcNMjAxMDI5MDkyNjUzWjAMMAoGA1UdFQQDCgEEMC8CEFfY4UqBGIJa2vUXFEeBZh0XDTIwMTAyOTA5MjcxMVowDDAKBgNVHRUEAwoBBDAvAhA8Ru8lJ16CuDG3S0FVTDNzFw0yMDEwMjkwOTI3MjNaMAwwCgYDVR0VBAMKAQQwJwIIW9bij1rmfkUXDTE5MDQxODEyMjIzMVowDDAKBgNVHRUEAwoBBDAvAhAMIOn0bFlJq+ejWvmIPCUsFw0yMDEwMjkwOTI3MzBaMAwwCgYDVR0VBAMKAQQwJwIIHHqGsNB7hZwXDTIwMDkwMzA3NTk1NFowDDAKBgNVHRUEAwoBBDAvAhBOcxma/AfsOXUDg5QSlfeuFw0yMDEwMjkwOTI2MTBaMAwwCgYDVR0VBAMKAQQwLwIQcvDVhUHUWf4t/gtXcJrfdBcNMjAxMDI5MDkyNjE4WjAMMAoGA1UdFQQDCgEEMC8CEGVE3SLLM9yjBrSY9qXn8ikXDTIwMDkwMzA3NTkzMlowDDAKBgNVHRUEAwoBBDAnAghunqemUsflyxcNMTkwNDE4MTIyMjMxWjAMMAoGA1UdFQQDCgEEMC8CEBKnhMjNEcs3Etwm7ZSCrDoXDTIwMTAyOTA5MjY0MFowDDAKBgNVHRUEAwoBBDAvAhAxkOfDYUo3NWU4FFkxCeHBFw0yMDEwMjkwOTI1NTZaMAwwCgYDVR0VBAMKAQQwLwIQHYpx5EwH9fTH3jp6qvKmLhcNMjAxMDI5MDkyNjI3WjAMMAoGA1UdFQQDCgEEMCcCCC3/FsdZ3vQjFw0xOTA0MTgxMjIxMTdaMAwwCgYDVR0VBAMKAQQwJwIIR0WZJNkwIQUXDTIwMDkwMzA3NTQzMVowDDAKBgNVHRUEAwoBBDAvAhBFWFYGZRhRr2rIEpMPZBEvFw0yMDA5MDMwNzU0MDFaMAwwCgYDVR0VBAMKAQQwJwIIapiIrjHDMaUXDTE5MDQxODEyMjIzMVowDDAKBgNVHRUEAwoBBDAvAhAbbbpQo3SBQGVPbYLexozzFw0yMDA5MDMwNzU3MzFaMAwwCgYDVR0VBAMKAQQwJwIIPAQxvaIC1hUXDTE4MDYxMjExNDk1OVowDDAKBgNVHRUEAwoBBDAvAhBNuDtXZmZWwS3Si3sez1MxFw0yMDEwMjkwOTI3MzVaMAwwCgYDVR0VBAMKAQQwLwIQa5sMEpwkTcyxtKf0tuQkwxcNMjAwOTAzMDc1ODAwWjAMMAoGA1UdFQQDCgEEMC8CEBAdPdrK98KFsBgDYiNSJS8XDTIwMTAyOTA5MjYwMFowDDAKBgNVHRUEAwoBBDAvAhAuVp8VNn+twKdXlmCgVT9fFw0yMDA5MDMwNzQ4NTVaMAwwCgYDVR0VBAMKAQQwLwIQUI3dc6mFeqRX0Ou+SEbNxBcNMjAxMDI5MDkyNjMyWjAMMAoGA1UdFQQDCgEEMC8CEA1+PyAy1arhCmUvbGeDHRIXDTIwMTAyOTA5MjY0OVowDDAKBgNVHRUEAwoBBDAvAhB1WBB5gt0KctqsceeNWM0EFw0yMDEwMjkwOTI2NDRaMAwwCgYDVR0VBAMKAQQwLwIQI+ykB0JAKnHiuVH2ODcMwxcNMjAxMDI5MDkyNjE0WjAMMAoGA1UdFQQDCgEEMC8CEA6jxp+M7H5WHGvJcydpphgXDTIwMDkwMzA3NTYyMFowDDAKBgNVHRUEAwoBBDAvAhAzB8j7sskbwgrg/lLVOrt6Fw0yMDEwMjkwOTI2MDVaMAwwCgYDVR0VBAMKAQQwLwIQNsx3aQzpuJqBpFz8gzhtshcNMjAxMDI5MDkyNjU3WjAMMAoGA1UdFQQDCgEEMC8CEAhCKj5FBR5CKlg8V945bhMXDTIwMDkwMzA3NTY0MlowDDAKBgNVHRUEAwoBBDAvAhBJKaztJrioTJa8yaSbFaqNFw0yMDEwMjkwOTI3MDdaMAwwCgYDVR0VBAMKAQSgLzAtMB8GA1UdIwQYMBaAFJhkbGu13Pchyc1lgDNJ20CpHKOcMAoGA1UdFAQDAgEIMA0GCSqGSIb3DQEBCwUAA4ICAQBULi5JEoOhDcFvO2JiK6cFTgQG99uNu190HUu5PttJRoViBezKY1niAleOt4VpTo1Fw/EjFvjLxPqEmaRz4CCgQQXawPexwjAQZdrIRPyDZfDzOzc+Pad7ZFP4DObIQGZ7/oS8Dj8D+sZqGUdvCfJGjStbaluDKTjOFA5FvpyewIK+tV5Rts+6jCcbkDX/3suWQe3xxgayfblDYldrkGVHqgCvTwqZXZRhDaqo5dwlim6qzJ1gGGXNp6ITpu9zVbVkzWgzgm81S472IQCbqQCoB2WVX6AzZZKXW+6sS6shO13bXei7gojNPZ477oCQOYII+gy0IPisI2SzwlhuvMnIXFMGHVS5BPdpjmRB1hPsJR/g84cG/rKFKj8Oshfu4iqjUJORbb2tvMnf8VNhw7uwOwUu/dGovyThyQTCu92QZaeXcD35l0wuz2xCNBZRyeT+dVwk/qEgH08CS1WRz8JbnFQtxUI78cFv75c2n8/TV+LDzbOG00r8Fiv3UB9vkKZ97DtALAJNjNycytwy3UzkNOnIFGNDsyGTiU6ToQ/6oKzW/AWmiTTXZzLj2TBHJQuFzvk76oeIjd+jtPotNOlELQIOrZi783HwfOpAk/xKaBNxzOufMqz/KaLF9KMEiUPNTkvovb1OB5E6mnA1N81Jr0hE0bSYo7QIrvS0SxvL3KGCEewwghHoMIIKIQoBAKCCChowggoWBgkrBgEFBQcwAQEEggoHMIIKAzCBi6IWBBTD56xawV85eOAWMPHVjl1azfppTRgPMjAyMTA0MjAyMDU0NDdaMGAwXjBJMAkGBSsOAwIaBQAEFAmWz88R+fvGpPuh2bVlelq8fZHvBBTD56xawV85eOAWMPHVjl1azfppTQIQc39fHgbFSQtedmdbwiMyVYAAGA8yMDIxMDQyMDIwNTQ0N1owDQYJKoZIhvcNAQELBQADggIBAJBwpNhvlhCd3kPQJw6gdYm6NJGJXTHM7Toksnhn9APdPRCb8Pn98m6hzUBtRE+KLn2K2vK5ryQk7jB8cWexxKE65qxJ9wOyqgkZ+FbhcwZuZDSUvyk7EKIAtjtO6UE20+wWzCHpMy9XriYBKYEmr6OGHWBL/VgtnlTab+KFs/vDBpWdM5gxRRZmZWffmSoHapoW6UjfufNWM6UqwdUbchxWxg9u00MLha4L7w6u9CtP7GVlT4nAJARMI6NQNwOzYfoQszds3KRPnXwX/EyymVxxO+OUTddVXOMf+njjAPr8NV5shSliEIQSLxghgBdcsAXcgB7G8GyklqaAvX0K74yA7rzArJfI3pBZbdlSu57WSDwNpukUUY/pVlL/oiJr70cmrvOni2rZbI5ikBte+AlwmIKrhnaDVkSRnnVqI0g9hY5beTbXg6tB58mgG6zIr3ZWo85L0zZiSU6wUZuIlOm0EditvVORDc0Ync6V73yZM4A+8I0qEALRqrviXLIUYGV2VhUfxmWT+GbMCugmLpMVn1FIi0J3CZAkwez0FtmZH0v1jvL05R+LXZYJ2/qmsNU73SZTUw/4whtpR7RzjGn3TKIJILMSu1nyUI7DzaQSCFfuCCI9HE0hp3eenTy8EyjfnuR1el1knUwL6ETyV59JRViH7o8wCvyDb7izA+6goIIHXTCCB1kwggdVMIIFPaADAgECAhBYt1vMPyiwhrhyTVSsup/oMA0GCSqGSIb3DQEBCwUAMIGtMQswCQYDVQQGEwJHUjEPMA0GA1UEBwwGQXRoZW5zMUQwQgYDVQQKDDtIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIENlcnQuIEF1dGhvcml0eTFHMEUGA1UEAww+SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBSb290Q0EgMjAxNSAtIFRlc3QwHhcNMjAwNzA3MDkyMDQ4WhcNMzUwNzA0MDkyMDQ4WjCBvDELMAkGA1UEBhMCR1IxKzApBgNVBAoMIkdyZWVrIFVuaXZlcnNpdGllcyBOZXR3b3JrIChHVW5ldCkxGDAWBgNVBGEMD1ZBVEdSLTA5OTAyODIyMDE3MDUGA1UECwwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDQTEtMCsGA1UEAwwkSEFSSUNBIEluc3RpdHV0aW9uYWwgQ2xpZW50IFN1YkNBIFIxMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAunwE7KyhIaMDw47RlX1OPZE1imFv3kxXZBMpkPbkN36G9+bl7driHPt+ve0LKR51MskmFrqj3M5rsAWB+SI1GWzTXsP/cyQPtVzmivNOs/uPbk4Nb0yoYsEazJ8NptGTn0fXW3fNWDqxI88itD9oCPX4LtJMqYh4/tOXUAHAf1FybFY24ZZ7yCh+iwbFPXflX4k1PWHyZ6hJHm3CJ88lN4CQzZEYtV7NYyX35rScEclE4+yvobDx+Wv/IftidtFpRila2rYdVG/VghVdLdUX1V2KbRlRFXAnDFPMsXkttQtNWbB4uKFKoUzN/OlaSgESsEc5/A0ufxDiwQueq8OKfZqShgchZAUnDWhWhkJRs9gVWAONc3+jqnxA/KDQvLeRUKkXYdRxKDdxNqsKA/MyPrJXRMGsFn63kELi31y9EGlbrr6ZmV8A4CKM6liODs0mN5p69cNVaW1aRWN8aPbG2MjHgrjk6gpnt/e/AD0KXGu0vMoBj0Ab4SX9EmqW0bpeZ4WMVdwCzRiQAdHOMBt55HLGtrmHbyLVKz+9fGdmtwv/Dd2xrYahG4Xx30d5qag5HIY+7O5Y7B8njaqNwU5HJhcQzdlkHyElNm5IvynmqKxkPjjS7kHQ9GBS+oebGf3VU1nKGzND+JQR1dFegsREwON7lwr4T9dJOz68T1JPf4MCAwEAAaOCAV4wggFaMBIGA1UdEwEB/wQIMAYBAf8CAQAwHwYDVR0jBBgwFoAUmGRsa7Xc9yHJzWWAM0nbQKkco5wwdgYIKwYBBQUHAQEEajBoMD8GCCsGAQUFBzAChjNodHRwOi8vd3d3LmRldi5oYXJpY2EuZ3IvY2VydHMvSGFyaWNhUm9vdENBMjAxNS5jcnQwJQYIKwYBBQUHMAGGGWh0dHA6Ly9vY3NwLXN0Zy5oYXJpY2EuZ3IwEQYDVR0gBAowCDAGBgRVHSAAMCkGA1UdJQQiMCAGCCsGAQUFBwMCBggrBgEFBQcDBAYKKwYBBAGCNwoDDDA+BgNVHR8ENzA1MDOgMaAvhi1odHRwOi8vY3JsLXN0Zy5oYXJpY2EuZ3IvSGFyaWNhUm9vdENBMjAxNS5jcmwwHQYDVR0OBBYEFMPnrFrBXzl44BYw8dWOXVrN+mlNMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEApRqyLiPRUdgftNudEldT95HT50JFtpdpexLfASrj9P5L5mykVkE9I0jULf8AfyWq0l3+REoZQEjoOu8Cbrjl+RQqZX3ciJbfsXFtK64vcl4HLrww4hANiypMHUOdd8guSmr9q1cNuoUeG1k0hcUFunK9DPNAMHFxQGyoaOhOKRgMdFPu4s0AuYmJ54bGtf4DCitR4CguOzZk8nJv8HdHyWFYLE2n3GFmBoZxYkjwaNO1GjXZwyJ4YLkVudeqmCykXKteebGX86WCw3M/qmrwZtw0axFJXhaNuLAUmDfNfC3TrqDCJh90bPQS0hcdq42dvEWqVyEfexg+WdlnTa0dVLAEFXG8XETjUCQcTzq2abEGnCH+l5Jpo116i6z5edBBO9PhZ3XTj6sTQDdstGZq7A3CmKMuEKc8b36vGjSpcyshtZEzx5utKEypYjDse+zJCCuu2/QvtJ4zwflQY64QwWv3g13augb78XGPztvJls0+3v33l7rYcdTg+M+GWpV13dE5kVW6sHUBOmOF7kuKmX3XUMCfYb53hFM6LETWUcrYCu/Ooo3ymFfWPihPNmPPIgZERPkD8+LCSzSClbn4H1iIdVsib1WFYzRldu1oYGNx79Gc5R+YjItp2nY9u18AcAUhT2cSPcPZXLK3g3M2ozs0xHnSbhKLpOdTeTUKUkowgge/CgEAoIIHuDCCB7QGCSsGAQUFBzABAQSCB6UwggehMIHEohYEFOQl6YZMZDrs8rflfHzJK8GsfrqHGA8yMDIxMDQyMDIwNTQ0N1owgZgwgZUwSTAJBgUrDgMCGgUABBQS38yEhIOjHLjFjdt5DMAqOI6yFQQUmGRsa7Xc9yHJzWWAM0nbQKkco5wCEFi3W8w/KLCGuHJNVKy6n+iAABgPMjAyMTA0MjAyMDU0NDdaoBEYDzIwMjEwNDIyMjA1NDQ3WqEiMCAwHgYJKwYBBQUHMAEGBBEYDzIwMjAwNDIwMjA1NDQ3WjANBgkqhkiG9w0BAQsFAAOCAQEAvzB4rRshYJCx/zqHcIED/Vd9+4J10FOys7vrIAVBKMYka5l4lSHTlptCLCojh5qfeBeaSnT2duBfzwGY4fi++hE7xZLGGPjQO7j4/cOSfGSnO52T5BVJ3MOTyngmJDG5WdpfioTJ6EW9zlc1KnC7H0SnCkR3p9L7HF5M2e2IyBTGXOg+5ufkin931AiqQr6MZTc909FB3GatFVr+qtXC945Y5lcF9jqM4NB1v+IhHF3Ra9PQdczLHV6RLgk/Yy+2+ffLV26qOGkxTfHZYZ94xT2oWQOLQG088XkNetZdSpyH2nkUbbX39UI+82z2MdUyHRoO98F8RoUgsjUr/lHjW6CCBcIwggW+MIIFujCCA6KgAwIBAgIQGDshBTxqdxsz0sEKEnYGCjANBgkqhkiG9w0BAQsFADCBrTELMAkGA1UEBhMCR1IxDzANBgNVBAcMBkF0aGVuczFEMEIGA1UECgw7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxRzBFBgNVBAMMPkhlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIwMTUgLSBUZXN0MB4XDTIwMDIyNTEyMTAwN1oXDTIyMDIyNDEyMTAwN1owdzELMAkGA1UEBhMCR1IxDzANBgNVBAcMBkF0aGVuczE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDQTEeMBwGA1UEAwwVSGFyaWNhUm9vdENBMjAxNSBPQ1NQMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA37IeD92ViNGNafk76Ww459mG7PKXu3xwCCD8FK7tQn7+wPFNM9BtkfckQIs7Tc6779iSN4EsAQ+vD+/SZPOY26TvcJsFHO8tJc8APLdayCE43L27yuLG34TmUqB4QtBoqmUbrSI48Kip2x3pY4E3FdUWfVST35CgqoIyfclVWhLvwhE8hjMvOxHN8rHXa8JMJOCySPDmViiSxdLNpSPVrGbw57d7lk19JXOWFmXC7HivEhf8IhXML1aFHm8njCTDUeLcb8ED6kFwhuZ9B8stg5f0p8KC1eA4caJHgv/w4fFBFy2J4GCFDkH+8zObXfgzQdWOfP1rcFbZ1V5hHWgbpwIDAQABo4IBCTCCAQUwHwYDVR0jBBgwFoAUmGRsa7Xc9yHJzWWAM0nbQKkco5wwTQYDVR0gBEYwRDBCBgwrBgEEAYHPEQEAAwcwMjAwBggrBgEFBQcCARYkaHR0cHM6Ly9yZXBvLmhhcmljYS5nci9kb2N1bWVudHMvQ1BTMA8GCSsGAQUFBzABBQQCBQAwEwYDVR0lBAwwCgYIKwYBBQUHAwkwPgYDVR0fBDcwNTAzoDGgL4YtaHR0cDovL2NybC1kZXYuaGFyaWNhLmdyL0hhcmljYVJvb3RDQTIwMTUuY3JsMB0GA1UdDgQWBBTkJemGTGQ67PK35Xx8ySvBrH66hzAOBgNVHQ8BAf8EBAMCB4AwDQYJKoZIhvcNAQELBQADggIBACLpNIB+eqgb6uJlnKwUfCXg1wuR95TnKHCgWTvEh0whGCinMVHPUuYMlgOrrvPkIeQ8rM/c84FmSdzhQDNg0bJzDdAL0JTwT48BoWTPaKSymCuwm5yIJPNDWT0Z/FZzWIUsIK53FjYWZtvyKsawrUyb0oMI5Llo9CTojhfAlbniQQ0qShi572lA2iT2vFTyAo90XlKK7kl+M4iuaoMLT92nVK/+t846St1q0LktVYUYTZRER1Kwko5OlZXRYth2YEE7gll29zmPZdGdNoyp83bMfq7wL8rJCGcAjSHIoGQ8QrVhSZLdTY2aa6rn+/llWBNltn5T2w79vIlbHBCVsZMGtkFc8z2h8/FJw2OZZ7w/rIL7aOzWrLQ6oHLsz0wS/q701NjVo9bUDEIgvziNEKeblHgelXRg4zGn8zDCkRiCCL/3JDx/m2HHp8xC9lDPyB8tqTN6ZQKOwt102JSvliAejYL1Rq9qqOzT/LWDd24jevxILIYZUoHPCfFEncIZY60he8XbXcfC5MnnvdM1b2aIm1ixnbrERczXM5CaMcWwrB9jX/tjWn+P8pewcsoqcoiLPGTIbTs+PNgNYwKaZPfzCXWUDBbruagcPPhmAeNgtIwZ65INDzFkI4A/g7EqDUWBx9N38gxjEY6dVJI32NrRHoHsN7wfhCRG8jifG0fHMA0GCSqGSIb3DQEBAQUABIIBAEcJEiFH/8hOCS2dHBcTNeZOChIaNRYX7aWOc4EYI+ny5J0i8ETJXlUxHv2ZMWA5GjsCyDS+Ae66cA6xE7EAjbQEVSkCzBrGTkaWCGcqaLQIzg6+Xuw4zRfb+9f52TWG3NaD4n/8Y3sK7deVywpljT+s8HiIuUk+wZaKvr5IyaahQOaM3aZnf4BDowALqWOL51IwvvA2N4CZrQRJH6sHWFy+mn2Bj+D40pEGjHVxUeR/Fjh8cH0glPEe0YxdX23igV4u9H7IQUbUPxZFMbKsk+0hRO2nsjvvOrpMRSLoFBh2RgaRGPoG+4TmCGIfETrC87szU0mXDX9q/YCD5SWvqdmhghMLMIITBwYLKoZIhvcNAQkQAg4xghL2MIIS8gYJKoZIhvcNAQcCoIIS4zCCEt8CAQMxDzANBglghkgBZQMEAgEFADB7BgsqhkiG9w0BCRABBKBsBGowaAIBAQYGBACPZwEBMDEwDQYJYIZIAWUDBAIBBQAEICawR6t578XRZHZHqh+HvnSOeo3+gNKVkCBmKarYPcKGAggPm0E4/bdSpRgPMjAyMTA0MjAyMDU0NDdaMAMCAQECCFEacBA33/4IoIIOgDCCBxEwggT5oAMCAQICEAoLN2JGbNCbOiueX1B37n0wDQYJKoZIhvcNAQELBQAwgcMxCzAJBgNVBAYTAkdSMSswKQYDVQQKDCJHcmVlayBVbml2ZXJzaXRpZXMgTmV0d29yayAoR1VuZXQpMRgwFgYDVQRhDA9WQVRHUi0wOTkwMjgyMjAxNzA1BgNVBAsMLkhlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ0ExNDAyBgNVBAMMK0hBUklDQSBRdWFsaWZpZWQgVGltZSBTdGFtcGluZyBSU0EgU3ViQ0EgUjEwHhcNMjAwNTIwMDgyMTU5WhcNMzAwNTE4MDgyMTU5WjCBijELMAkGA1UEBhMCR1IxDzANBgNVBAcMBkF0aGVuczE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDQTExMC8GA1UEAwwoSEFSSUNBIFF1YWxpZmllZCBUaW1lLVN0YW1waW5nIFVuaXQgMjAyMDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANvCP6Y0OsgGUkKGhFi4hSnivxGvvY5dPcw3Q59pEVpVZmy7uXJXezvnqF75Z9ae7TpdzToXfcwiqObpoxGeg9hdeOn5+TdG2Gpko9gx4ATUaIpoFSchFAY2wTy6bqpIlVMrW34b/zFpoPRz+NayK11lEMCtqugXa6kH8iZn7uHtKoIhOaxCIySY/kyWLxheFAZu0XzkpXSUOmcWdzfHYeo4h3Q+UZ5ENCDY/57ld3Y4JAYuMvKgce5VXHWa4pDbdKes93na3RgtYCu1oBFM0k255K4H7AHfGJfhXdeRa38oAy43P4RUsn7z5xC4zR8O4UtkQAEeQiDMo5PMR1RJe18CAwEAAaOCAjYwggIyMB8GA1UdIwQYMBaAFNlYPlXYp3KFAUeTYVY8KGl1LuB5MIGBBggrBgEFBQcBAQR1MHMwTgYIKwYBBQUHMAKGQmh0dHA6Ly9yZXBvLmhhcmljYS5nci9jZXJ0cy9IYXJpY2FRdWFsaWZpZWRUaW1lU3RhbXBpbmdTdWJDQVIxLmNydDAhBggrBgEFBQcwAYYVaHR0cDovL29jc3AuaGFyaWNhLmdyMFcGA1UdIARQME4wCAYGBACPZwEBMEIGDCsGAQQBgc8RAQEGAjAyMDAGCCsGAQUFBwIBFiRodHRwczovL3JlcG8uaGFyaWNhLmdyL2RvY3VtZW50cy9DUFMwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwgwgZwGCCsGAQUFBwEDBIGPMIGMMAgGBgQAjkYBATAIBgYEAI5GAQQwdgYGBACORgEFMGwwNBYuaHR0cHM6Ly9yZXBvLmhhcmljYS5nci9kb2N1bWVudHMvVFNBUERTLUVOLnBkZhMCZW4wNBYuaHR0cHM6Ly9yZXBvLmhhcmljYS5nci9kb2N1bWVudHMvVFNBUERTLUVMLnBkZhMCZWwwTAYDVR0fBEUwQzBBoD+gPYY7aHR0cDovL2NybC5oYXJpY2EuZ3IvSGFyaWNhUXVhbGlmaWVkVGltZVN0YW1waW5nU3ViQ0FSMS5jcmwwHQYDVR0OBBYEFLxgYIQf216N4vTRrMyVxcT24g0IMA4GA1UdDwEB/wQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAVPSLmwAEhKKq2jJuba2bu/w0lL7L8VjIGKgTT3KLfFf8yY8bhWbgr6dU5bBn6LJSFYKdKyFOn5fYIhKm/n6f9tS0o4utqLu0VCdCj7jFAofL5p36BUXK00kG/G3ifN3cEedlMCp5jFn5POCItM3Pl8tdhWesomCVyvuUwYXClnNm6U6AkOfGeSgMUx3KJJwDfj/L7ld3W7/5tur1qYMRZft+OIkvd9/6rEL0GvLcIcJ1s5bsr2GtD72BTWsE+y3N81yobrOiRpCNGNi3WYK5IM/W48Hnrdb8yR0bDBYOUPnO2zJT9ZGVOns2BxnswFiy50JeeSFicHZXvB804/YTO6VFGNjI2HOXbn4k2zvCU4cC3QtzMdOGcC9He2MqK5E3RJjtcZDxbU3CaPuKsokS/CgYfZyXHSW4gygJKfeWEKH4MjnUxXMp4cTgdU6rASqUrIqgvAaDxyIxXYhEtSwo5XrPyIwmLv+xhW5af7nC2nGEXDnUrFnQH2mdqFjZeyIG1gi0Lh1gnbJ1LKXiO16URmiS3TRwA6bMP+STGMSbbtiKuK1QvgYmnTGSJZNQ/iu0LoW5bCiEenh9cSZeZD6UAdchiUJLVnD/9kDaH9PbV0Qz9cT1VhsVrEWqJCrpdWgNVMbIX3biB1DkgQYn1CX433CecEpp3QE6oPZQBQtBVKAwggdnMIIFT6ADAgECAhAYQ1E4/8BkP5c9T4d3BIxxMA0GCSqGSIb3DQEBCwUAMIGmMQswCQYDVQQGEwJHUjEPMA0GA1UEBxMGQXRoZW5zMUQwQgYDVQQKEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIENlcnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBSb290Q0EgMjAxNTAeFw0yMDA1MjAwNzI2MzZaFw0zNTA1MTcwNzI2MzZaMIHDMQswCQYDVQQGEwJHUjErMCkGA1UECgwiR3JlZWsgVW5pdmVyc2l0aWVzIE5ldHdvcmsgKEdVbmV0KTEYMBYGA1UEYQwPVkFUR1ItMDk5MDI4MjIwMTcwNQYDVQQLDC5IZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIENBMTQwMgYDVQQDDCtIQVJJQ0EgUXVhbGlmaWVkIFRpbWUgU3RhbXBpbmcgUlNBIFN1YkNBIFIxMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAm+qpT4W4dihDwB81/nTpE+xYbJ/l2YgQfoIIqo2fo/smK9VUmrYVZTgfTA9x6roRIfyNzeiquPGmYvr9PrycCvlcvULt39Os/+lVHOVgURDCmhHs2inasF62nrjHL26ntmUOMMLbBP10bNnjA4VSWS0WG3lv/5ZQuz1klM3OkhWQSldLX56NtRnJAi701fHv9iBT8CHFi60sfPdWJ1chXHQAf3Pax7U4t08JH6QhpWUqW0cfKws9ldVLoI9P2yiVRn/lIpnbIvMsx5nNfjbFypIMlBWHegOHkegobxLwP7TI/RWBfawqHS4l3ixxMxHIVZ5ElKpvd4shhZ5lgWK/lAWeUNAFrXoCqc91wQiRI9LSbvbFMPwECFPtGJMCdUQhbYsGxpiZZJjYvZ+NHZQRULoeQwQtxJPd9/DauRWupbiTzeICVtNrNEzNsFIZp1bqFuzMsd3GzjhYUEl3nTUgppBRYr07WFzaaE1tionRu6ThuQE/Dq2gs6I95PZqFRATbhgcmroPlZRseh1kokK3WH7rLP/3rjw0TfL7R/Ro2ygWMwM36XvbLTH4TpTUCxkmd5uFCK3YKIhDhRGNMq1Z57XeBfIUNXoF1hT5difIJs3s2S8a6y0UoD7XUlDXpIXbEiANxAs7GytpKHN0MaeAYzuFArG1g6D5+T82UPxKDUECAwEAAaOCAXAwggFsMBIGA1UdEwEB/wQIMAYBAf8CAQAwHwYDVR0jBBgwFoAUcRVnyMjJvXVdctA4GGqd83EkVAswbwYIKwYBBQUHAQEEYzBhMDwGCCsGAQUFBzAChjBodHRwOi8vcmVwby5oYXJpY2EuZ3IvY2VydHMvSGFyaWNhUm9vdENBMjAxNS5jcnQwIQYIKwYBBQUHMAGGFWh0dHA6Ly9vY3NwLmhhcmljYS5ncjBEBgNVHSAEPTA7MDkGBFUdIAAwMTAvBggrBgEFBQcCARYjaHR0cDovL3JlcG8uaGFyaWNhLmdyL2RvY3VtZW50cy9DUFMwEwYDVR0lBAwwCgYIKwYBBQUHAwgwOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDovL2NybC5oYXJpY2EuZ3IvSGFyaWNhUm9vdENBMjAxNS5jcmwwHQYDVR0OBBYEFNlYPlXYp3KFAUeTYVY8KGl1LuB5MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAAbZTZE39tLzR9eTv/wL4Q8MKQlQGvKu18ZTrPf3CO6aLLkvSTnaOBxbj2YQ7OsMlGhKUTEfY5lfdAQcrVDsfFNFQJAYjMhNnoOj2MslKE2H+ohaVswlM+Iue22WnApu2r3eXhLtsyRHVuSNQlxfiR8NuGVwGUMthNioV18UOKXEi4GDCtfxxKu5Mv60JQTr6YVBUktIERi2rrDRsAF+RjMA5iOmY4ovsx17BF6bPR+XgDWlWfWlRDSAndiqwowFJ3j8IxbXcTwYfKsUzN6e7AoNvpD2DvlpTCZ29lvzqRhYDSwcO3lz4HV0h8wyncIeTa8lWfsdKxiGnFkmaS4+T7mLhJvatLFZrlr98b7qlgcvrJJWZHTAabqmDgjPf4R0tTF2b9JPhYuAwI0U2HUgsn1L25KrduaNT/+L7ECXpoKe+25xIUk44qSWUPfhvwLsnGsRL5TaRtmKSl33H2o+5odWHZIbhkZ/K1jVV9BA1ojvr7CA6MwtKhRoOuCE8FSnYxuNczE+Ex2tVZUMaHPFKH3mbsxddtTBsPEPBi3s0Gdkl+F2IqsxguVNXHckoGnLGfhcu9+H4wq5pva2ckZKmktchkg/Wpo1m5+jHre2URWZFwt6V7W0W9Wnehpwxp4rSkRbIsp/Hid0n54RPgt/2W8LU6TFhUMS5f7B1gvVVTkIxggPGMIIDwgIBATCB2DCBwzELMAkGA1UEBhMCR1IxKzApBgNVBAoMIkdyZWVrIFVuaXZlcnNpdGllcyBOZXR3b3JrIChHVW5ldCkxGDAWBgNVBGEMD1ZBVEdSLTA5OTAyODIyMDE3MDUGA1UECwwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDQTE0MDIGA1UEAwwrSEFSSUNBIFF1YWxpZmllZCBUaW1lIFN0YW1waW5nIFJTQSBTdWJDQSBSMQIQCgs3YkZs0Js6K55fUHfufTANBglghkgBZQMEAgEFAKCCAb4wGgYJKoZIhvcNAQkDMQ0GCyqGSIb3DQEJEAEEMBwGCSqGSIb3DQEJBTEPFw0yMTA0MjAyMDU0NDdaMC0GCSqGSIb3DQEJNDEgMB4wDQYJYIZIAWUDBAIBBQChDQYJKoZIhvcNAQELBQAwLwYJKoZIhvcNAQkEMSIEIFIj0oOK+55jrh6gSxbfgxWNuiwC6USZbAYkjdIJoO4TMIIBIAYLKoZIhvcNAQkQAi8xggEPMIIBCzCCAQcwggEDBCDKNBmLBcEbRCv6FY5EhDDbMg6uyv0/8mpyH84UjNy3ezCB3jCByaSBxjCBwzELMAkGA1UEBhMCR1IxKzApBgNVBAoMIkdyZWVrIFVuaXZlcnNpdGllcyBOZXR3b3JrIChHVW5ldCkxGDAWBgNVBGEMD1ZBVEdSLTA5OTAyODIyMDE3MDUGA1UECwwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDQTE0MDIGA1UEAwwrSEFSSUNBIFF1YWxpZmllZCBUaW1lIFN0YW1waW5nIFJTQSBTdWJDQSBSMQIQCgs3YkZs0Js6K55fUHfufTANBgkqhkiG9w0BAQsFAASCAQBuel9ZebTNE+Mwi8D6MF+TRxDaVq8j628nrKBM7OM1Xx5IL+8cglC2W63cXQT7lj8guK1hoRop4K6aoopzX08j29Drym+7O4C8iZe0IrdcbxSz4v9GwH8lNgc+ywmot7TN+031Rco+GWCyS2vmbJ0gzcUhYlCoLlbttkrE2QsL92cCVKHc8+Bmf8Hvth38MAZuI9axJc81CEjcBjWUCbSSZCCx5qD/cz/HPu4N0yCWycozMvMlwGwwBPXpu7XhMXiJfSHTcHzyjvpAgmo2dBW+I4PGHqXxBKfeX43PXolQdpALs47B5viGFkzEhDz2MOgIksa9SarB6mAUWpakn2Fz \ No newline at end of file diff --git a/eseal/src/test/resources/detached-sign-case/detached-signature-utc-b64.txt b/eseal/src/test/resources/detached-sign-case/detached-signature-utc-b64.txt new file mode 100644 index 0000000..2142ebc --- /dev/null +++ b/eseal/src/test/resources/detached-sign-case/detached-signature-utc-b64.txt @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/eseal/src/test/resources/detached-sign-case/detached-signature-utc-si-img-b64.txt b/eseal/src/test/resources/detached-sign-case/detached-signature-utc-si-img-b64.txt new file mode 100644 index 0000000..d2181ec --- /dev/null +++ b/eseal/src/test/resources/detached-sign-case/detached-signature-utc-si-img-b64.txt @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/eseal/src/test/resources/detached-sign-case/original-b64-pdf.txt b/eseal/src/test/resources/detached-sign-case/original-b64-pdf.txt new file mode 100644 index 0000000..46276d8 --- /dev/null +++ b/eseal/src/test/resources/detached-sign-case/original-b64-pdf.txt @@ -0,0 +1 @@ +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KZW5kb2JqCjE0IDAgb2JqCjMyOTYKZW5kb2JqCjE1IDAgb2JqCihoZWxsb3dvcmxkKQplbmRvYmoKMTYgMCBvYmoKKE1hYyBPUyBYIDEwLjEzLjEgUXVhcnR6IFBERkNvbnRleHQpCmVuZG9iagoxNyAwIG9iagooVGV4dEVkaXQpCmVuZG9iagoxOCAwIG9iagooRDoyMDIwMTAyNTEwMjgyMlowMCcwMCcpCmVuZG9iagoxOSAwIG9iagooKQplbmRvYmoKMjAgMCBvYmoKWyBdCmVuZG9iagoxIDAgb2JqCjw8IC9UaXRsZSAxNSAwIFIgL1Byb2R1Y2VyIDE2IDAgUiAvQ3JlYXRvciAxNyAwIFIgL0NyZWF0aW9uRGF0ZSAxOCAwIFIgL01vZERhdGUKMTggMCBSIC9LZXl3b3JkcyAxOSAwIFIgL0FBUEw6S2V5d29yZHMgMjAgMCBSID4+CmVuZG9iagp4cmVmCjAgMjEKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDA4MzE4IDAwMDAwIG4gCjAwMDAwMDAyNDIgMDAwMDAgbiAKMDAwMDAwMzk2OSAwMDAwMCBuIAowMDAwMDAwMDIyIDAwMDAwIG4gCjAwMDAwMDAyMjMgMDAwMDAgbiAKMDAwMDAwMDM0NiAwMDAwMCBuIAowMDAwMDAzOTM0IDAwMDAwIG4gCjAwMDAwMDQxMDIgMDAwMDAgbiAKMDAwMDAwMDQ0MyAwMDAwMCBuIAowMDAwMDAzOTEzIDAwMDAwIG4gCjAwMDAwMDQwNTIgMDAwMDAgbiAKMDAwMDAwNDQ2OSAwMDAwMCBuIAowMDAwMDA0NzIxIDAwMDAwIG4gCjAwMDAwMDgxMDcgMDAwMDAgbiAKMDAwMDAwODEyOCAwMDAwMCBuIAowMDAwMDA4MTU3IDAwMDAwIG4gCjAwMDAwMDgyMTAgMDAwMDAgbiAKMDAwMDAwODIzNyAwMDAwMCBuIAowMDAwMDA4Mjc5IDAwMDAwIG4gCjAwMDAwMDgyOTggMDAwMDAgbiAKdHJhaWxlcgo8PCAvU2l6ZSAyMSAvUm9vdCAxMSAwIFIgL0luZm8gMSAwIFIgL0lEIFsgPDdmMTkzYTUzZmRiMzEwYzkwMmUyNzRiODdlYjgzZGE3Pgo8N2YxOTNhNTNmZGIzMTBjOTAyZTI3NGI4N2ViODNkYTc+IF0gPj4Kc3RhcnR4cmVmCjg0NjIKJSVFT0YK \ No newline at end of file diff --git a/eseal/src/test/resources/detached-sign-case/signed-detached-athens-b64-pdf.txt b/eseal/src/test/resources/detached-sign-case/signed-detached-athens-b64-pdf.txt new file mode 100644 index 0000000..56d2c78 --- /dev/null +++ b/eseal/src/test/resources/detached-sign-case/signed-detached-athens-b64-pdf.txt @@ -0,0 +1 @@ +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KZW5kb2JqCjE0IDAgb2JqCjMyOTYKZW5kb2JqCjE1IDAgb2JqCihoZWxsb3dvcmxkKQplbmRvYmoKMTYgMCBvYmoKKE1hYyBPUyBYIDEwLjEzLjEgUXVhcnR6IFBERkNvbnRleHQpCmVuZG9iagoxNyAwIG9iagooVGV4dEVkaXQpCmVuZG9iagoxOCAwIG9iagooRDoyMDIwMTAyNTEwMjgyMlowMCcwMCcpCmVuZG9iagoxOSAwIG9iagooKQplbmRvYmoKMjAgMCBvYmoKWyBdCmVuZG9iagoxIDAgb2JqCjw8IC9UaXRsZSAxNSAwIFIgL1Byb2R1Y2VyIDE2IDAgUiAvQ3JlYXRvciAxNyAwIFIgL0NyZWF0aW9uRGF0ZSAxOCAwIFIgL01vZERhdGUKMTggMCBSIC9LZXl3b3JkcyAxOSAwIFIgL0FBUEw6S2V5d29yZHMgMjAgMCBSID4+CmVuZG9iagp4cmVmCjAgMjEKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDA4MzE4IDAwMDAwIG4gCjAwMDAwMDAyNDIgMDAwMDAgbiAKMDAwMDAwMzk2OSAwMDAwMCBuIAowMDAwMDAwMDIyIDAwMDAwIG4gCjAwMDAwMDAyMjMgMDAwMDAgbiAKMDAwMDAwMDM0NiAwMDAwMCBuIAowMDAwMDAzOTM0IDAwMDAwIG4gCjAwMDAwMDQxMDIgMDAwMDAgbiAKMDAwMDAwMDQ0MyAwMDAwMCBuIAowMDAwMDAzOTEzIDAwMDAwIG4gCjAwMDAwMDQwNTIgMDAwMDAgbiAKMDAwMDAwNDQ2OSAwMDAwMCBuIAowMDAwMDA0NzIxIDAwMDAwIG4gCjAwMDAwMDgxMDcgMDAwMDAgbiAKMDAwMDAwODEyOCAwMDAwMCBuIAowMDAwMDA4MTU3IDAwMDAwIG4gCjAwMDAwMDgyMTAgMDAwMDAgbiAKMDAwMDAwODIzNyAwMDAwMCBuIAowMDAwMDA4Mjc5IDAwMDAwIG4gCjAwMDAwMDgyOTggMDAwMDAgbiAKdHJhaWxlcgo8PCAvU2l6ZSAyMSAvUm9vdCAxMSAwIFIgL0luZm8gMSAwIFIgL0lEIFsgPDdmMTkzYTUzZmRiMzEwYzkwMmUyNzRiODdlYjgzZGE3Pgo8N2YxOTNhNTNmZGIzMTBjOTAyZTI3NGI4N2ViODNkYTc+IF0gPj4Kc3RhcnR4cmVmCjg0NjIKJSVFT0YKDQoxMSAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovUGFnZXMgMyAwIFIKL0Fjcm9Gb3JtIDw8Ci9GaWVsZHMgWzIxIDAgUl0KL1NpZ0ZsYWdzIDMKPj4KPj4KZW5kb2JqCjIxIDAgb2JqCjw8Ci9GVCAvU2lnCi9UeXBlIC9Bbm5vdAovU3VidHlwZSAvV2lkZ2V0Ci9GIDEzMgovVCAoU2lnbmF0dXJlMSkKL1YgMjIgMCBSCi9QIDIgMCBSCi9SZWN0IFswLjAgODE2LjAxMzI0IDMwMC41ODgwNyA4NDIuMF0KL0FQIDw8Ci9OIDIzIDAgUgo+Pgo+PgplbmRvYmoKMjIgMCBvYmoKPDwKL1R5cGUgL1NpZwovRmlsdGVyIC9BZG9iZS5QUEtMaXRlCi9TdWJGaWx0ZXIgL0VUU0kuQ0FkRVMuZGV0YWNoZWQKL00gKEQ6MjAyMTA0MDgyMDEwMzUrMDMnMDAnKQovQ29udGVudHMgPDMwODI0OEE0MDYwOTJBODY0ODg2RjcwRDAxMDcwMkEwODI0ODk1MzA4MjQ4OTEwMjAxMDEzMTBGMzAwRDA2MDk2MDg2NDgwMTY1MDMwNDAyMDEwNTAwMzAwQjA2MDkyQTg2NDg4NkY3MEQwMTA3MDFBMDgyMTVEMjMwODIwODMwMzA4MjA2MThBMDAzMDIwMTAyMDIxMDczN0Y1RjFFMDZDNTQ5MEI1RTc2Njc1QkMyMjMzMjU1MzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMzA4MUJDMzEwQjMwMDkwNjAzNTUwNDA2MTMwMjQ3NTIzMTJCMzAyOTA2MDM1NTA0MEEwQzIyNDc3MjY1NjU2QjIwNTU2RTY5NzY2NTcyNzM2OTc0Njk2NTczMjA0RTY1NzQ3NzZGNzI2QjIwMjg0NzU1NkU2NTc0MjkzMTE4MzAxNjA2MDM1NTA0NjEwQzBGNTY0MTU0NDc1MjJEMzAzOTM5MzAzMjM4MzIzMjMwMzEzNzMwMzUwNjAzNTUwNDBCMEMyRTQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA0MzQxMzEyRDMwMkIwNjAzNTUwNDAzMEMyNDQ4NDE1MjQ5NDM0MTIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTYxNkMyMDQzNkM2OTY1NkU3NDIwNTM3NTYyNDM0MTIwNTIzMTMwMUUxNzBEMzIzMDMxMzEzMTM5MzAzNzMwMzczMTM4NUExNzBEMzIzMTMxMzEzMTM5MzAzNzMwMzczMTM4NUEzMDgxRDIzMTBCMzAwOTA2MDM1NTA0MDYxMzAyNDc1MjMxMTUzMDEzMDYwMzU1MDQwNzBDMEM1NDY4NjU3MzczNjE2QzZGNkU2OTZCNjkzMTJEMzAyQjA2MDM1NTA0MEEwQzI0NDE3MjY5NzM3NDZGNzQ2QzY1MjA1NTZFNjk3NjY1NzI3MzY5NzQ3OTIwNkY2NjIwNTQ2ODY1NzM3MzYxNkM2RjZFNjk2QjY5MzExMjMwMTAwNjAzNTUwNDBCMEMwOTQ5NTQyMDQzNjU2RTc0NjU3MjMxMTczMDE1MDYwMzU1MDQwNDBDMEU0NDZGNkI2OTZENjE3Mzc0Njk2QjY5NjQ2OTczMzExNTMwMTMwNjAzNTUwNDJBMEMwQzQ0NkY2QjY5NkQ2MTczNzQ2OTZCNkY3MzMxMTMzMDExMDYwMzU1MDQwNTEzMEEzMjMzMzgzOTM4MzYzNjM0MzczMTMxMjQzMDIyMDYwMzU1MDQwMzBDMUI0NDZGNkI2OTZENjE3Mzc0Njk2QjZGNzMyMDQ0NkY2QjY5NkQ2MTczNzQ2OTZCNjk2NDY5NzMzMDgyMDEyMjMwMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTAxMDUwMDAzODIwMTBGMDAzMDgyMDEwQTAyODIwMTAxMDBCNTlFQzQ5RUFFODI1MkFGNjIxRENERjBBOTJFNzFCRUMxODEzMDIyQ0E1QTkyREIwNkQ5MEJDQjhDMzM2MzM1OEE1QkJGNDg5OTgyM0JCRDE0N0FEOUU0ODZENUJEQzFENTBDNTkyMkJERDUxREVDODBBQTU2NkVCODREODk3QTY2QUMxMTU5MDhDRUFCQkFBODkyNTM0MjAxMDQ3RDJBRDJCMUU5MDk0NUM0MTE3NzQwRjg3RkJBQjZGNjE3NzFCOTdCQkE1QjYwQkNCQkJCOUNCRjdDRjVBOTJFRTA1NjI4NDk0QkY0MDE3MTM5NTkyQUIwOEYzRjNBNkQ5MTMzQjIwMkE4NDVEOUQ4MDI2OUU2ODkyMDMzQTFBRjdERThCOThEMjVFNzI2Qzc1QUE2RUY5OUIwNzk2MkE4NEVCMjVDN0Y3QkMzQkU0RjdDQjZDOThBOEEwNzA3RTE2MzY4MzU0NDc5Q0JGNDMwN0Q5RDM4MEE1NzM4RDg2NkNDNkZEQ0I4MUQ5NTJFRDkwRkNENjkxMDg1RjZERDkxRjEwQTdBNjc5NDZCMjkxMTVDMDYyNDk3RkREOUM1RTBDOUE4QUFENzVBMTJBMzNBQjFBQTVGNTAxQUIxODJFMkJDRDREMUI2Q0MzODgxMTFFRjk3OUYzQzczNUQyNUIyNDE3OTAyMDMwMTAwMDFBMzgyMDMxNDMwODIwMzEwMzAxRjA2MDM1NTFEMjMwNDE4MzAxNjgwMTRDM0U3QUM1QUMxNUYzOTc4RTAxNjMwRjFENThFNUQ1QUNERkE2OTREMzA4MTg3MDYwODJCMDYwMTA1MDUwNzAxMDEwNDdCMzA3OTMwNTAwNjA4MkIwNjAxMDUwNTA3MzAwMjg2NDQ2ODc0NzQ3MDNBMkYyRjcyNjU3MDZGMkQ3Mzc0NjcyRTY4NjE3MjY5NjM2MTJFNjc3MjJGNjM2NTcyNzQ3MzJGNDg2MTcyNjk2MzYxNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTYxNkM0MzZDNjk2NTZFNzQ1Mzc1NjI0MzQxNTIzMTJFNjM2NTcyMzAyNTA2MDgyQjA2MDEwNTA1MDczMDAxODYxOTY4NzQ3NDcwM0EyRjJGNkY2MzczNzAyRDczNzQ2NzJFNjg2MTcyNjk2MzYxMkU2NzcyMzA4MUYzMDYwMzU1MUQyMDA0ODFFQjMwODFFODMwMDkwNjA3MDQwMDhCRUM0MDAxMDIzMDgxQ0IwNjBDMkIwNjAxMDQwMTgxQ0YxMTAxMDEwNDAyMzA4MUJBMzAzMDA2MDgyQjA2MDEwNTA1MDcwMjAxMTYyNDY4NzQ3NDcwNzMzQTJGMkY3MjY1NzA2RjJFNjg2MTcyNjk2MzYxMkU2NzcyMkY2NDZGNjM3NTZENjU2RTc0NzMyRjQzNTA1MzMwODE4NTA2MDgyQjA2MDEwNTA1MDcwMjAyMzA3OTBDNzc1NDY4Njk3MzIwNTE3NTYxNkM2OTY2Njk2NTY0MjA0MzY1NzI3NDY5NjY2OTYzNjE3NDY1MjA2ODYxNzMyMDYyNjU2NTZFMjA0OTczNzM3NTY1NjQyMDYyNzkyMDc0Njg2NTIwNTE1NDUzNTAyMDIyNDc3MjY1NjU2QjIwNTU2RTY5NzY2NTcyNzM2OTc0Njk2NTczMjA0RTY1NzQ3NzZGNzI2QjIwMjg0NzU1NkU2NTc0MjkyMjIwNzc2OTc0NjgyMDU2NDE1NDIwNkU3NTZENjI2NTcyMjA0NTRDMzAzOTM5MzAzMjM4MzIzMjMwMzAwRDA2MEIyQjA2MDEwNDAxODFDRjExMDEwMTA4MzAyMDA2MDM1NTFEMjUwNDE5MzAxNzA2MEEyQjA2MDEwNDAxODIzNzBBMDMwQzA2MDkyQTg2NDg4NkY3MkYwMTAxMDUzMDgxQ0IwNjA4MkIwNjAxMDUwNTA3MDEwMzA0ODFCRTMwODFCQjMwMDgwNjA2MDQwMDhFNDYwMTAxMzAwODA2MDYwNDAwOEU0NjAxMDQzMDEzMDYwNjA0MDA4RTQ2MDEwNjMwMDkwNjA3MDQwMDhFNDYwMTA2MDEzMDgxOEYwNjA2MDQwMDhFNDYwMTA1MzA4MTg0MzA0MDE2M0E2ODc0NzQ3MDczM0EyRjJGNzc3Nzc3MkU2ODYxNzI2OTYzNjEyRTY3NzIyRjY0NkY2Mzc1NkQ2NTZFNzQ3MzJGNTE3NTYxNkM2OTY2Njk2NTY0NEU2MTc0NzU3MjYxNkM1MDQ0NTMyRDQ1NEUyRTcwNjQ2NjEzMDI2NTZFMzA0MDE2M0E2ODc0NzQ3MDczM0EyRjJGNzc3Nzc3MkU2ODYxNzI2OTYzNjEyRTY3NzIyRjY0NkY2Mzc1NkQ2NTZFNzQ3MzJGNTE3NTYxNkM2OTY2Njk2NTY0NEU2MTc0NzU3MjYxNkM1MDQ0NTMyRDQ1NEMyRTcwNjQ2NjEzMDI2NTZDMzA0RTA2MDM1NTFEMUYwNDQ3MzA0NTMwNDNBMDQxQTAzRjg2M0Q2ODc0NzQ3MDNBMkYyRjYzNzI2QzJENzM3NDY3MkU2ODYxNzI2OTYzNjEyRTY3NzIyRjQ4NjE3MjY5NjM2MTQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU2MTZDNDM2QzY5NjU2RTc0NTM3NTYyNDM0MTUyMzEyRTYzNzI2QzMwMUQwNjAzNTUxRDBFMDQxNjA0MTQyOUZFNEZDQjc0RkZEQzk4ODQyRkY0NzYxMzg5QjVFRjU1Q0NCREFGMzAwRTA2MDM1NTFEMEYwMTAxRkYwNDA0MDMwMjA2QzAzMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwQjA1MDAwMzgyMDIwMTAwMjEzMzY5MUY4QTAyOTE1NTBEQjMxQTQxM0M0MjUwQ0JCNzk1RTg5MzM5NjQ1OEMwRTVCQzRBMUMwQkQ1MkVEMEU0RjgxMjRFNzBCNTRGMUE0NDlEMTQzRjI2NTAxMjVBOUQxNEY2RDRBNkNDMzJBQTNEQzMyMTFCNTEwMzI1MTQ2MEVCM0E4Mjc3RTkwRTk0RUU3QjE1Q0JBRjdGQTEyRDEzQTE1RjRCQjcxMjI1ODA0Qzg2NDAwRTI0QTI2MzM5NEE3QTRBQ0VERjM0QkMxQzk5MTZCQTg4QTcwQjM5RjNCMEVBMDg0NTgzN0REQjRDRDI0NzQ2QUYzRUM0MzgxMUIxM0MxNTAzNTJCNDJBODhERDIxRjhFQTg2RTJEOTVEREE0RUExODZENTBFRkIwNjQxQjNCNzNBOTk2NTZFNzk5RDNBOUY2Qzk5RTRGOEU5RkM1OEM4MzUxMDExOTI2OTNDMTlERDJFNThDMzA3NTJDMTg2MjJDNEQ4RTIyRjgyNDkyQkZCQTQxMDYzMEUxQjdFQjM1NUREMERGREI5MjlDNTMwMjI4NzU1MTk4OTFFOUE0ODZFOTY5NTQ2RkE1M0U1Njg0NTJEN0M4MDAxNzBBQjRCQkNDNzY3RUY4OUY5RUM5QjVGNUYzMkZCNDAzODYwQUUxNkIzRDVCNjNFOTBGNEI2RTI0QkE2NkNDMjgzMURDQkNFOTI5OUM4RTYyNkIwMkI1NTQ1NEExMjlFMDM4NzJBQThGQkRGMzFGNkFBQzMxOTJEMkNBMzRFMDlFNTM5NTE5RTlDQkY2M0YyQTVBMEI4MkIwRTk3RDBCQ0JFMDg0RTc1NjgyRjA5RDc1NjlBQzE1QTUxREUwNkJERkEwNDkwRjc5OUIyOTg3NjhDQzgwNTUwQUZFMUU4NTg5NzUzMDc2RUZGNjgzMkMzQ0U5RTAzNjVEMDkyOTNCQjI0RUVDMzYxOTYwNTRFM0M2MkU3Q0Q4NDZDNzYyNDUxQTlBNkQwN0E1ODBCODg2QjZENjJENDkyMEE1OTIwOUI4RTI5MTFCODdDNUUzOUU5QzgyMDgyRUIwNTJGQjY4NTg2NDlEMTA3RjFGMDRGNjI0NDE3MThFRkFGODI0N0UxRjdEQTYyNDk5MjFFM0JENTg1QTE4MzRDN0MwMUZCMjg0MjM1QTlGRjNFQzQzRDNERThCQ0ZEMDQ1QUYyNkVDQTQyMEIzQ0QxNTkzMEJENDg2MTQ5MTA5MjE5QTczRTQ1NEE1NUVDRUM5QTIzMzU5MDZFRUFBMUQzQ0E1Qjg2QTMzNDU0REIxRURFN0I4OTRFMkVFOTM3MjgzRTQ3QkQ5QTRBNEQzMzNGNkM3RUYyM0RDRjMwODIwNzU1MzA4MjA1M0RBMDAzMDIwMTAyMDIxMDU4Qjc1QkNDM0YyOEIwODZCODcyNEQ1NEFDQkE5RkU4MzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMzA4MUFEMzEwQjMwMDkwNjAzNTUwNDA2MTMwMjQ3NTIzMTBGMzAwRDA2MDM1NTA0MDcwQzA2NDE3NDY4NjU2RTczMzE0NDMwNDIwNjAzNTUwNDBBMEMzQjQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA0MzY1NzI3NDJFMjA0MTc1NzQ2ODZGNzI2OTc0NzkzMTQ3MzA0NTA2MDM1NTA0MDMwQzNFNDg2NTZDNkM2NTZFNjk2MzIwNDE2MzYxNjQ2NTZENjk2MzIwNjE2RTY0MjA1MjY1NzM2NTYxNzI2MzY4MjA0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNzMyMDUyNkY2Rjc0NDM0MTIwMzIzMDMxMzUyMDJEMjA1NDY1NzM3NDMwMUUxNzBEMzIzMDMwMzczMDM3MzAzOTMyMzAzNDM4NUExNzBEMzMzNTMwMzczMDM0MzAzOTMyMzAzNDM4NUEzMDgxQkMzMTBCMzAwOTA2MDM1NTA0MDYxMzAyNDc1MjMxMkIzMDI5MDYwMzU1MDQwQTBDMjI0NzcyNjU2NTZCMjA1NTZFNjk3NjY1NzI3MzY5NzQ2OTY1NzMyMDRFNjU3NDc3NkY3MjZCMjAyODQ3NTU2RTY1NzQyOTMxMTgzMDE2MDYwMzU1MDQ2MTBDMEY1NjQxNTQ0NzUyMkQzMDM5MzkzMDMyMzgzMjMyMzAzMTM3MzAzNTA2MDM1NTA0MEIwQzJFNDg2NTZDNkM2NTZFNjk2MzIwNDE2MzYxNjQ2NTZENjk2MzIwNjE2RTY0MjA1MjY1NzM2NTYxNzI2MzY4MjA0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNzMyMDQzNDEzMTJEMzAyQjA2MDM1NTA0MDMwQzI0NDg0MTUyNDk0MzQxMjA0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNjE2QzIwNDM2QzY5NjU2RTc0MjA1Mzc1NjI0MzQxMjA1MjMxMzA4MjAyMjIzMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwMTA1MDAwMzgyMDIwRjAwMzA4MjAyMEEwMjgyMDIwMTAwQkE3QzA0RUNBQ0ExMjFBMzAzQzM4RUQxOTU3RDRFM0Q5MTM1OEE2MTZGREU0QzU3NjQxMzI5OTBGNkU0Mzc3RTg2RjdFNkU1RUREQUUyMUNGQjdFQkRFRDBCMjkxRTc1MzJDOTI2MTZCQUEzRENDRTZCQjAwNTgxRjkyMjM1MTk2Q0QzNUVDM0ZGNzMyNDBGQjU1Q0U2OEFGMzRFQjNGQjhGNkU0RTBENkY0Q0E4NjJDMTFBQ0M5RjBEQTZEMTkzOUY0N0Q3NUI3N0NENTgzQUIxMjNDRjIyQjQzRjY4MDhGNUY4MkVEMjRDQTk4ODc4RkVEMzk3NTAwMUMwN0Y1MTcyNkM1NjM2RTE5NjdCQzgyODdFOEIwNkM1M0Q3N0U1NUY4OTM1M0Q2MUYyNjdBODQ5MUU2REMyMjdDRjI1Mzc4MDkwQ0Q5MTE4QjU1RUNENjMyNUY3RTZCNDlDMTFDOTQ0RTNFQ0FGQTFCMEYxRjk2QkZGMjFGQjYyNzZEMTY5NDYyOTVBREFCNjFENTQ2RkQ1ODIxNTVEMkRENTE3RDU1RDhBNkQxOTUxMTU3MDI3MEM1M0NDQjE3OTJEQjUwQjRENTlCMDc4QjhBMTRBQTE0Q0NERkNFOTVBNEEwMTEyQjA0NzM5RkMwRDJFN0YxMEUyQzEwQjlFQUJDMzhBN0Q5QTkyODYwNzIxNjQwNTI3MEQ2ODU2ODY0MjUxQjNEODE1NTgwMzhENzM3RkEzQUE3QzQwRkNBMEQwQkNCNzkxNTBBOTE3NjFENDcxMjgzNzcxMzZBQjBBMDNGMzMyM0VCMjU3NDRDMUFDMTY3RUI3OTA0MkUyREY1Q0JEMTA2OTVCQUVCRTk5OTk1RjAwRTAyMjhDRUE1ODhFMEVDRDI2Mzc5QTdBRjVDMzU1Njk2RDVBNDU2MzdDNjhGNkM2RDhDOEM3ODJCOEU0RUEwQTY3QjdGN0JGMDAzRDBBNUM2QkI0QkNDQTAxOEY0MDFCRTEyNUZEMTI2QTk2RDFCQTVFNjc4NThDNTVEQzAyQ0QxODkwMDFEMUNFMzAxQjc5RTQ3MkM2QjZCOTg3NkYyMkQ1MkIzRkJEN0M2NzY2QjcwQkZGMEREREIxQUQ4NkExMUI4NUYxREY0Nzc5QTlBODM5MUM4NjNFRUNFRTU4RUMxRjI3OERBQThEQzE0RTQ3MjYxNzEwQ0REOTY0MUYyMTI1MzY2RTQ4QkYyOUU2QThBQzY0M0UzOEQyRUU0MUQwRjQ2MDUyRkE4NzlCMTlGREQ1NTM1OUNBMUIzMzQzRjg5NDExRDVEMTVFODJDNDQ0QzBFMzdCOTcwQUY4NEZENzQ5M0IzRUJDNEY1MjRGN0Y4MzAyMDMwMTAwMDFBMzgyMDE1RTMwODIwMTVBMzAxMjA2MDM1NTFEMTMwMTAxRkYwNDA4MzAwNjAxMDFGRjAyMDEwMDMwMUYwNjAzNTUxRDIzMDQxODMwMTY4MDE0OTg2NDZDNkJCNURDRjcyMUM5Q0Q2NTgwMzM0OURCNDBBOTFDQTM5QzMwNzYwNjA4MkIwNjAxMDUwNTA3MDEwMTA0NkEzMDY4MzAzRjA2MDgyQjA2MDEwNTA1MDczMDAyODYzMzY4NzQ3NDcwM0EyRjJGNzc3Nzc3MkU2NDY1NzYyRTY4NjE3MjY5NjM2MTJFNjc3MjJGNjM2NTcyNzQ3MzJGNDg2MTcyNjk2MzYxNTI2RjZGNzQ0MzQxMzIzMDMxMzUyRTYzNzI3NDMwMjUwNjA4MkIwNjAxMDUwNTA3MzAwMTg2MTk2ODc0NzQ3MDNBMkYyRjZGNjM3MzcwMkQ3Mzc0NjcyRTY4NjE3MjY5NjM2MTJFNjc3MjMwMTEwNjAzNTUxRDIwMDQwQTMwMDgzMDA2MDYwNDU1MUQyMDAwMzAyOTA2MDM1NTFEMjUwNDIyMzAyMDA2MDgyQjA2MDEwNTA1MDcwMzAyMDYwODJCMDYwMTA1MDUwNzAzMDQwNjBBMkIwNjAxMDQwMTgyMzcwQTAzMEMzMDNFMDYwMzU1MUQxRjA0MzczMDM1MzAzM0EwMzFBMDJGODYyRDY4NzQ3NDcwM0EyRjJGNjM3MjZDMkQ3Mzc0NjcyRTY4NjE3MjY5NjM2MTJFNjc3MjJGNDg2MTcyNjk2MzYxNTI2RjZGNzQ0MzQxMzIzMDMxMzUyRTYzNzI2QzMwMUQwNjAzNTUxRDBFMDQxNjA0MTRDM0U3QUM1QUMxNUYzOTc4RTAxNjMwRjFENThFNUQ1QUNERkE2OTREMzAwRTA2MDM1NTFEMEYwMTAxRkYwNDA0MDMwMjAxODYzMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwQjA1MDAwMzgyMDIwMTAwQTUxQUIyMkUyM0QxNTFEODFGQjREQjlEMTI1NzUzRjc5MUQzRTc0MjQ1QjY5NzY5N0IxMkRGMDEyQUUzRjRGRTRCRTY2Q0E0NTY0MTNEMjM0OEQ0MkRGRjAwN0YyNUFBRDI1REZFNDQ0QTE5NDA0OEU4M0FFRjAyNkVCOEU1RjkxNDJBNjU3RERDODg5NkRGQjE3MTZEMkJBRTJGNzI1RTA3MkVCQzMwRTIxMDBEOEIyQTRDMUQ0MzlENzdDODJFNEE2QUZEQUI1NzBEQkE4NTFFMUI1OTM0ODVDNTA1QkE3MkJEMENGMzQwMzA3MTcxNDA2Q0E4NjhFODRFMjkxODBDNzQ1M0VFRTJDRDAwQjk4OTg5RTc4NkM2QjVGRTAzMEEyQjUxRTAyODJFM0IzNjY0RjI3MjZGRjA3NzQ3Qzk2MTU4MkM0REE3REM2MTY2MDY4NjcxNjI0OEYwNjhEM0I1MUEzNUQ5QzMyMjc4NjBCOTE1QjlEN0FBOTgyQ0E0NUNBQjVFNzlCMTk3RjNBNTgyQzM3MzNGQUE2QUYwNjZEQzM0NkIxMTQ5NUUxNjhEQjhCMDE0OTgzN0NEN0MyREQzQUVBMEMyMjYxRjc0NkNGNDEyRDIxNzFEQUI4RDlEQkM0NUFBNTcyMTFGN0IxODNFNTlEOTY3NERBRDFENTRCMDA0MTU3MUJDNUM0NEUzNTAyNDFDNEYzQUI2NjlCMTA2OUMyMUZFOTc5MjY5QTM1RDdBOEJBQ0Y5NzlEMDQxM0JEM0UxNjc3NUQzOEZBQjEzNDAzNzZDQjQ2NjZBRUMwREMyOThBMzJFMTBBNzNDNkY3RUFGMUEzNEE5NzMyQjIxQjU5MTMzQzc5QkFEMjg0Q0E5NjIzMEVDN0JFQ0M5MDgyQkFFREJGNDJGQjQ5RTMzQzFGOTUwNjNBRTEwQzE2QkY3ODM1RERBQkEwNkZCRjE3MThGQ0VEQkM5OTZDRDNFREVGREY3OTdCQUQ4NzFENEUwRjhDRjg2NUE5NTc1REREMTM5OTE1NUJBQjA3NTAxM0E2Mzg1RUU0QjhBOTk3REQ3NTBDMDlGNjFCRTc3ODQ1MzNBMkM0NEQ2NTFDQUQ4MEFFRkNFQTI4REYyOTg1N0Q2M0UyODRGMzY2M0NGMjIwNjQ0NDRGOTAzRjNFMkMyNEIzNDgyOTVCOUY4MUY1ODg4NzU1QjIyNkY1NTg1NjMzNDY1NzZFRDY4NjA2MzcxRUZEMTlDRTUxRjk4OEM4QjY5REE3NjNEQkI1RjAwNzAwNTIxNEY2NzEyM0RDM0Q5NUNCMkI3ODM3MzM2QTMzQjM0QzQ3OUQyNkUxMjhCQTRFNzUzNzkzNTBBNTI0QTMwODIwNjQxMzA4MjA0MjlBMDAzMDIwMTAyMDIwODM5RjdEQTY0RUU5Njk2MTczMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwQjA1MDAzMDgxQUQzMTBCMzAwOTA2MDM1NTA0MDYxMzAyNDc1MjMxMEYzMDBEMDYwMzU1MDQwNzBDMDY0MTc0Njg2NTZFNzMzMTQ0MzA0MjA2MDM1NTA0MEEwQzNCNDg2NTZDNkM2NTZFNjk2MzIwNDE2MzYxNjQ2NTZENjk2MzIwNjE2RTY0MjA1MjY1NzM2NTYxNzI2MzY4MjA0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNzMyMDQzNjU3Mjc0MkUyMDQxNzU3NDY4NkY3MjY5NzQ3OTMxNDczMDQ1MDYwMzU1MDQwMzBDM0U0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNTI2RjZGNzQ0MzQxMjAzMjMwMzEzNTIwMkQyMDU0NjU3Mzc0MzAxRTE3MEQzMTM4MzAzNDMwMzIzMDM3MzMzODMzMzc1QTE3MEQzNDMzMzAzMzMyMzczMDM3MzMzODMzMzc1QTMwODFBRDMxMEIzMDA5MDYwMzU1MDQwNjEzMDI0NzUyMzEwRjMwMEQwNjAzNTUwNDA3MEMwNjQxNzQ2ODY1NkU3MzMxNDQzMDQyMDYwMzU1MDQwQTBDM0I0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNDM2NTcyNzQyRTIwNDE3NTc0Njg2RjcyNjk3NDc5MzE0NzMwNDUwNjAzNTUwNDAzMEMzRTQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA1MjZGNkY3NDQzNDEyMDMyMzAzMTM1MjAyRDIwNTQ2NTczNzQzMDgyMDIyMjMwMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTAxMDUwMDAzODIwMjBGMDAzMDgyMDIwQTAyODIwMjAxMDBCMTk1QUY4NjdCQjVCNEYyMDE4QjhBOUUxNTRCN0Q3NzE4ODE2QUFFREVCMkFFRDYyMzQ5ODNBRjlFRDdDQzNGNjg0NDY2MDU2RDBCMjZCQzZFN0Y5RDA5OTY2RjA1RjkyNDJDMjk5RDY2QjM1QTU0MDUxQzlGNTc4MkZCMzU1RDg3RDk3QTZDRjhENzBGRkE4ODgwQzU0ODVENTgzQzQ0NUM0ODM3RURGNTRFN0Q2NUY0RDVERUE0RkMxMTBFMzNGQTIwRjZCQzcyRTBFMkM1MTZFQTAwMkVCQzlCNkMyOEEwNjI5NTc4MUQwNzUzRDc4NTIzOTMzMzlFODI5RTBGOTBENzQ5QThFM0FEQkQ3MTdEMDU5RjdBMDVFNjc3MzhDMTZENjgyNEM2QjJEMDQ1RkJGRUQ4REYxNkZFRkNGQjYwNTgyQTUzQkNDN0JBMjM2RjMzNjAzREQzNjdBMEQyMEQ5RUVGMDRCRkIxRTdFOUZBN0NFRTg1RUY2QUNFQUY1QjkwRjYwNjlFMkQ0NUExMjgzQTg3RUI0NzREMjE5MDI2RkEyQzYzQzk5RTM2NzA4MDZFNjBGRjcyMTI5NTFGNzQ2Q0EwQTFEM0U2MTU3REJGQzgzQzZEOTFCNTI2M0FGNTNBNEVGQ0VERDgwQzE1MTZFQUIzMTE4RUI4ODFCOEZBN0E5OTNFRkZCMEJCOTc3QjhCOUE1RUYwNTY1NjA5QUE3Nzc3NDUzRkM1RTQwMTE5RTEwMzRBM0MyNTBDNTBDNjA3ODNFOTIyRTVBNjk4NEFDQjQxMDYyMTk4RTBCRkE3M0JERERBMkNDNTk4QkQzQjlBNzBBQTMzRDA2QzQ1OEQ0NDhEQ0IyMTdCQjM4OTg1M0FBMkMyMTlBQUQwQkUxNkM2MThCRjBFOTM2NUIzRjdGMjNBQUY4MjBFODY2MjYzRkExRjgyODg1NEJDN0YyNEQ2MjQ0Rjg1NTIwMEVDRTMxRjA3RUM2RDNERUMwMjQxRkM0NzFDNzJFQzM1MTI5NzU0QzgxQzE2RkRCMjAzMERGNTA4MTJBQkYwRTFGMUFFRjg3NTE4NTZCNjBEQzEwNzYwNkFCNzM3QjEwNjUwQkI3MjAzNTg0MjA4MzQyNTQ5NTNEM0IyQjZEOTEyQzRERkE2MUNBRTA2MDQzOEUzOEMwQkE5OTY0QjM0NUVFRjk3QkE4MTNBNDE3OTYyMzRCOTU4RkEzQ0Y2QzIzM0NGQTg3QzhCMzM3MTc4N0YxNzg0MEYwRTc0QkJBQkYyRUU0QkEwNTEzMDExMDNGOTUwMkY2OTg0ODI3RUREMjBFMTNFRkJENzVFMkVFNTZBQ0U4N0M0QTBCQjc2RUY5QTczMDIwMzAxMDAwMUEzNjMzMDYxMzAwRjA2MDM1NTFEMTMwMTAxRkYwNDA1MzAwMzAxMDFGRjMwMUYwNjAzNTUxRDIzMDQxODMwMTY4MDE0OTg2NDZDNkJCNURDRjcyMUM5Q0Q2NTgwMzM0OURCNDBBOTFDQTM5QzMwMUQwNjAzNTUxRDBFMDQxNjA0MTQ5ODY0NkM2QkI1RENGNzIxQzlDRDY1ODAzMzQ5REI0MEE5MUNBMzlDMzAwRTA2MDM1NTFEMEYwMTAxRkYwNDA0MDMwMjAxMDYzMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwQjA1MDAwMzgyMDIwMTAwMzFFOEM0NTU2Q0JDQjkwQ0M0OUQxMTE0NkFENDk0RkI3ODY2NTc1QzZERThCNzVBMkI2NEIyRTRBQUZDMEI3NTM3NUE0RTY5RDAxMUYyNTIwRUY1NjE3NzhGMzMzRDZGRjRDMjJGNkE5MzdGQjE4RTU2RDYyNjYyQkM3OEIzRDM0NEM1MTE5RERGODAzNkI4QUMzRUUwRTFDOEU4NUE2RjM0MkU3OUU5RjgwMTdDMkZCRUFEOEUyQTc4MjYwQzQwODlCNEQ4MjdGNkUyNTEyRDJGMTRFNjY5Q0IzMjhBQkY2NDgxNEQzQTU5MTU4QkNBQzYxMzJFM0VCQTUyNzQyMjA5M0M3MzdDNjgwRUQ4NjU0N0EwRUY5QTM1Q0E3NjY1NjRGOUFEMjg5MTM3MUM5REM0MkEwM0Y4MDE2RDZFNzNBQ0FGRDBDMEExNzA5NkU5NzdERjg5QzI4OTA2MTg2MzY0MkJGNzBFNDAzNTVBMDQzNUJFOTJDREMxNDFEQ0ZBNEMyMURDRUFDN0I3NEE1QjIwNUVDNTkzQkE4OUNCN0NCNzQwRTI5Q0UxNkRBNkU2Mzg3NkQ4QTVCQ0RGQkE5NjQ2MENDODM0NTIwNzYzNjVGNDhEMjJEMDU5ODRFQzFGRUIzMTdCRUY5QjZGQzc5OTQyMkZGODMzOTg4NjdEQTQ2Q0M2QTI5NUE3NEI5QkEzMzI0NzI4NDM4MUZDQjQ2NDAyRjlCOTIwRDIxOTA1MkM0OUQyN0UzODg4QjRBNDQ0RDgzQzdEMzIwRTQwOTU4MDU1OTRFOUU3MThFRDc4NzgwN0JENEVGQzAzMDA5NjA1QzZEQkQ1M0JFMEQyRjlDOURBRTAxMzQ1OEMwQ0MxNEMyMjczRkJCMkYzOTkyRUNDMTZDOTU2NzQ3QTE1QTZGNEExNjkyN0ExQzc5ODgzOTczMDFGOEY0QUEwRUJCNzRBMkY1MTExN0ZERUI4NzIzMzQwRUVBMDU4OTczMzRBMzg0RjZENDcyQzAyNzk3NTNDM0RFRUNCNzU5OUFBOUMyRDk4N0MzMDUzRENFQzJEQTQ1Qzg1NDlEN0I2MEExOEQ2OTNFOUJENkNEMEYwMjI2REIyQTQ4MDFGODVFMUMzRUZCNDY3NkEzNjg4MDAzMzAzNDY2ODBENjMxQUY3QTQ3Qzg0N0NBOEUxQjNENDlDMTgzQkYwQUFEQkFGOENFM0Q3REUwMDBENDIxQTk0MjVDRDg4OTIzMzkwNzU1RUM4NTJDRkFCM0FDODVBMzI2RTQxMzZGM0Q0RDgyRjhDMjJGRTVGMzQ5OTk5MEI3QzlGNTM3M0UzNUFCQzBCRjNCMkQwNkI2MDY0RjZFNkMyRTQxNTMxODIzMjk2MzA4MjMyOTIwMjAxMDEzMDgxRDEzMDgxQkMzMTBCMzAwOTA2MDM1NTA0MDYxMzAyNDc1MjMxMkIzMDI5MDYwMzU1MDQwQTBDMjI0NzcyNjU2NTZCMjA1NTZFNjk3NjY1NzI3MzY5NzQ2OTY1NzMyMDRFNjU3NDc3NkY3MjZCMjAyODQ3NTU2RTY1NzQyOTMxMTgzMDE2MDYwMzU1MDQ2MTBDMEY1NjQxNTQ0NzUyMkQzMDM5MzkzMDMyMzgzMjMyMzAzMTM3MzAzNTA2MDM1NTA0MEIwQzJFNDg2NTZDNkM2NTZFNjk2MzIwNDE2MzYxNjQ2NTZENjk2MzIwNjE2RTY0MjA1MjY1NzM2NTYxNzI2MzY4MjA0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNzMyMDQzNDEzMTJEMzAyQjA2MDM1NTA0MDMwQzI0NDg0MTUyNDk0MzQxMjA0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNjE2QzIwNDM2QzY5NjU2RTc0MjA1Mzc1NjI0MzQxMjA1MjMxMDIxMDczN0Y1RjFFMDZDNTQ5MEI1RTc2Njc1QkMyMjMzMjU1MzAwRDA2MDk2MDg2NDgwMTY1MDMwNDAyMDEwNTAwQTA4MjFEODYzMDE4MDYwOTJBODY0ODg2RjcwRDAxMDkwMzMxMEIwNjA5MkE4NjQ4ODZGNzBEMDEwNzAxMzAyRjA2MDkyQTg2NDg4NkY3MEQwMTA5MDQzMTIyMDQyMDZCMjJGQjNFM0Q3QzVEREUxODlDMzJBNTU1M0VCN0RDMEY3N0U5QkZBNTRFRjcwMThEQzFFOURBODI0MEE5RDEzMDM3MDYwQjJBODY0ODg2RjcwRDAxMDkxMDAyMkYzMTI4MzAyNjMwMjQzMDIyMDQyMDRBRDMwNUM0N0QxRTcyRTEyMzY0MzAyQkZBQTY5QzI1QjQzRDhBM0M0Rjc2MUM1NkM1NzFEMzRBNTBDNTAxNkMzMDgyMUNGRTA2MDkyQTg2NDg4NkY3MkYwMTAxMDgzMTgyMUNFRjMwODIxQ0VCQTA4MjBBRjczMDgyMEFGMzMwODIwQUVGMzA4MjA4RDcwMjAxMDEzMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwQjA1MDAzMDgxQUQzMTBCMzAwOTA2MDM1NTA0MDYxMzAyNDc1MjMxMEYzMDBEMDYwMzU1MDQwNzBDMDY0MTc0Njg2NTZFNzMzMTQ0MzA0MjA2MDM1NTA0MEEwQzNCNDg2NTZDNkM2NTZFNjk2MzIwNDE2MzYxNjQ2NTZENjk2MzIwNjE2RTY0MjA1MjY1NzM2NTYxNzI2MzY4MjA0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNzMyMDQzNjU3Mjc0MkUyMDQxNzU3NDY4NkY3MjY5NzQ3OTMxNDczMDQ1MDYwMzU1MDQwMzBDM0U0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNTI2RjZGNzQ0MzQxMjAzMjMwMzEzNTIwMkQyMDU0NjU3Mzc0MTcwRDMyMzAzMTMwMzIzOTMwMzkzMzMzMzEzMzVBMTcwRDMyMzEzMTMwMzIzNDMwMzkzMzMzMzEzMzVBMzA4MjA3QzIzMDJGMDIxMDMyODBFM0E2MTZDRDA1RTNEQzlENjUzQzA2RDQzQ0U4MTcwRDMyMzAzMTMwMzIzOTMwMzkzMjM3MzEzNTVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMjcwMjA4NUVBRDM2M0JGNTAzRjUyNjE3MEQzMTM5MzAzNDMxMzgzMTMyMzIzMTM1MzY1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDJGMDIxMDUzNjBDQzE1RjYyRjZCNEVCRkJDNzMxMTAxQ0MyRTMwMTcwRDMyMzAzMTMwMzIzOTMwMzkzMjM2MzIzMzVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwNUU5QTRFMjIzOThCOURBOUVCNjM0MTRFMjYzNTcxRTExNzBEMzIzMDMwMzkzMDMzMzAzNzM1MzgzMjMzNUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTA2QjYxNzhFOTlERjYzMzhFOTcyMzRDQjkzODgwM0YzNTE3MEQzMjMwMzAzOTMwMzMzMDM3MzUzOTMwMzg1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDJGMDIxMDFFNjQ2QTlGQkZGMEU1NDI2M0JFRTY0MTdGMkE5MzIxMTcwRDMyMzAzMTMwMzIzOTMwMzkzMjM3MzEzOTVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMjcwMjA4NjgzODA1MTg4RjUzM0NEMzE3MEQzMjMwMzAzOTMwMzMzMDM3MzUzNDMzMzE1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDJGMDIxMDU4OTI4OEUzMThEQzVEREExQTE4QkRCMTJBRUYwNjdFMTcwRDMyMzAzMTMwMzIzOTMwMzkzMjM2MzMzNjVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwNUNGQjA0MjdFODcwREFGN0Q4Q0MzNTg4OTA4NEI1QjIxNzBEMzIzMDMxMzAzMjM5MzAzOTMyMzczMDMxNUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTA2ODFBQTBCNkVGNkIzQTkxOUM0Qzc1MTNEMDFGOUJBQTE3MEQzMjMwMzAzOTMwMzMzMDM4MzAzMDMxMzY1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDJGMDIxMDc5QUFBMjg4Rjc1RTQwMTBBNTc3QzZBNEMzQzU4NEJDMTcwRDMyMzAzMTMwMzIzOTMwMzkzMjM2MzUzMzVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwNTdEOEUxNEE4MTE4ODI1QURBRjUxNzE0NDc4MTY2MUQxNzBEMzIzMDMxMzAzMjM5MzAzOTMyMzczMTMxNUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTAzQzQ2RUYyNTI3NUU4MkI4MzFCNzRCNDE1NTRDMzM3MzE3MEQzMjMwMzEzMDMyMzkzMDM5MzIzNzMyMzM1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDI3MDIwODVCRDZFMjhGNUFFNjdFNDUxNzBEMzEzOTMwMzQzMTM4MzEzMjMyMzIzMzMxNUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTAwQzIwRTlGNDZDNTk0OUFCRTdBMzVBRjk4ODNDMjUyQzE3MEQzMjMwMzEzMDMyMzkzMDM5MzIzNzMzMzA1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDI3MDIwODFDN0E4NkIwRDA3Qjg1OUMxNzBEMzIzMDMwMzkzMDMzMzAzNzM1MzkzNTM0NUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTA0RTczMTk5QUZDMDdFQzM5NzUwMzgzOTQxMjk1RjdBRTE3MEQzMjMwMzEzMDMyMzkzMDM5MzIzNjMxMzA1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDJGMDIxMDcyRjBENTg1NDFENDU5RkUyREZFMEI1NzcwOUFERjc0MTcwRDMyMzAzMTMwMzIzOTMwMzkzMjM2MzEzODVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwNjU0NEREMjJDQjMzRENBMzA2QjQ5OEY2QTVFN0YyMjkxNzBEMzIzMDMwMzkzMDMzMzAzNzM1MzkzMzMyNUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyNzAyMDg2RTlFQTdBNjUyQzdFNUNCMTcwRDMxMzkzMDM0MzEzODMxMzIzMjMyMzMzMTVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwMTJBNzg0QzhDRDExQ0IzNzEyREMyNkVEOTQ4MkFDM0ExNzBEMzIzMDMxMzAzMjM5MzAzOTMyMzYzNDMwNUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTAzMTkwRTdDMzYxNEEzNzM1NjUzODE0NTkzMTA5RTFDMTE3MEQzMjMwMzEzMDMyMzkzMDM5MzIzNTM1MzY1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDJGMDIxMDFEOEE3MUU0NEMwN0Y1RjRDN0RFM0E3QUFBRjJBNjJFMTcwRDMyMzAzMTMwMzIzOTMwMzkzMjM2MzIzNzVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMjcwMjA4MkRGRjE2Qzc1OURFRjQyMzE3MEQzMTM5MzAzNDMxMzgzMTMyMzIzMTMxMzc1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDI3MDIwODQ3NDU5OTI0RDkzMDIxMDUxNzBEMzIzMDMwMzkzMDMzMzAzNzM1MzQzMzMxNUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTA0NTU4NTYwNjY1MTg1MUFGNkFDODEyOTMwRjY0MTEyRjE3MEQzMjMwMzAzOTMwMzMzMDM3MzUzNDMwMzE1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDI3MDIwODZBOTg4OEFFMzFDMzMxQTUxNzBEMzEzOTMwMzQzMTM4MzEzMjMyMzIzMzMxNUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTAxQjZEQkE1MEEzNzQ4MTQwNjU0RjZEODJERUM2OENGMzE3MEQzMjMwMzAzOTMwMzMzMDM3MzUzNzMzMzE1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDI3MDIwODNDMDQzMUJEQTIwMkQ2MTUxNzBEMzEzODMwMzYzMTMyMzEzMTM0MzkzNTM5NUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTA0REI4M0I1NzY2NjY1NkMxMkREMjhCN0IxRUNGNTMzMTE3MEQzMjMwMzEzMDMyMzkzMDM5MzIzNzMzMzU1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDJGMDIxMDZCOUIwQzEyOUMyNDREQ0NCMUI0QTdGNEI2RTQyNEMzMTcwRDMyMzAzMDM5MzAzMzMwMzczNTM4MzAzMDVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwMTAxRDNEREFDQUY3QzI4NUIwMTgwMzYyMjM1MjI1MkYxNzBEMzIzMDMxMzAzMjM5MzAzOTMyMzYzMDMwNUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTAyRTU2OUYxNTM2N0ZBREMwQTc1Nzk2NjBBMDU1M0Y1RjE3MEQzMjMwMzAzOTMwMzMzMDM3MzQzODM1MzU1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDJGMDIxMDUwOERERDczQTk4NTdBQTQ1N0QwRUJCRTQ4NDZDREM0MTcwRDMyMzAzMTMwMzIzOTMwMzkzMjM2MzMzMjVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwMEQ3RTNGMjAzMkQ1QUFFMTBBNjUyRjZDNjc4MzFEMTIxNzBEMzIzMDMxMzAzMjM5MzAzOTMyMzYzNDM5NUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTA3NTU4MTA3OTgyREQwQTcyREFBQzcxRTc4RDU4Q0QwNDE3MEQzMjMwMzEzMDMyMzkzMDM5MzIzNjM0MzQ1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDJGMDIxMDIzRUNBNDA3NDI0MDJBNzFFMkI5NTFGNjM4MzcwQ0MzMTcwRDMyMzAzMTMwMzIzOTMwMzkzMjM2MzEzNDVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwMEVBM0M2OUY4Q0VDN0U1NjFDNkJDOTczMjc2OUE2MTgxNzBEMzIzMDMwMzkzMDMzMzAzNzM1MzYzMjMwNUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTAzMzA3QzhGQkIyQzkxQkMyMEFFMEZFNTJENTNBQkI3QTE3MEQzMjMwMzEzMDMyMzkzMDM5MzIzNjMwMzU1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDJGMDIxMDM2Q0M3NzY5MENFOUI4OUE4MUE0NUNGQzgzMzg2REIyMTcwRDMyMzAzMTMwMzIzOTMwMzkzMjM2MzUzNzVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwMDg0MjJBM0U0NTA1MUU0MjJBNTgzQzU3REUzOTZFMTMxNzBEMzIzMDMwMzkzMDMzMzAzNzM1MzYzNDMyNUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTA0OTI5QUNFRDI2QjhBODRDOTZCQ0M5QTQ5QjE1QUE4RDE3MEQzMjMwMzEzMDMyMzkzMDM5MzIzNzMwMzc1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDRBMDJGMzAyRDMwMUYwNjAzNTUxRDIzMDQxODMwMTY4MDE0OTg2NDZDNkJCNURDRjcyMUM5Q0Q2NTgwMzM0OURCNDBBOTFDQTM5QzMwMEEwNjAzNTUxRDE0MDQwMzAyMDEwODMwMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTBCMDUwMDAzODIwMjAxMDA1NDJFMkU0OTEyODNBMTBEQzE2RjNCNjI2MjJCQTcwNTRFMDQwNkY3REI4REJCNUY3NDFENEJCOTNFREI0OTQ2ODU2MjA1RUNDQTYzNTlFMjAyNTc4RUI3ODU2OTRFOEQ0NUMzRjEyMzE2RjhDQkM0RkE4NDk5QTQ3M0UwMjBBMDQxMDVEQUMwRjdCMUMyMzAxMDY1REFDODQ0RkM4MzY1RjBGMzNCMzczRTNEQTc3QjY0NTNGODBDRTZDODQwNjY3QkZFODRCQzBFM0YwM0ZBQzY2QTE5NDc2RjA5RjI0NjhEMkI1QjZBNUI4MzI5MzhDRTE0MEU0NUJFOUM5RUMwODJCRUI1NUU1MUI2Q0ZCQThDMjcxQjkwMzVGRkRFQ0I5NjQxRURGMUM2MDZCMjdEQjk0MzYyNTc2QjkwNjU0N0FBMDBBRjRGMEE5OTVEOTQ2MTBEQUFBOEU1REMyNThBNkVBQUNDOUQ2MDE4NjVDREE3QTIxM0E2RUY3MzU1QjU2NENENjgzMzgyNkYzNTRCOEVGNjIxMDA5QkE5MDBBODA3NjU5NTVGQTAzMzY1OTI5NzVCRUVBQzRCQUIyMTNCNUREQjVERThCQjgyODhDRDNEOUUzQkVFODA5MDM5ODIwOEZBMENCNDIwRjhBQzIzNjRCM0MyNTg2RUJDQzlDODVDNTMwNjFENTRCOTA0Rjc2OThFNjQ0MUQ2MTNFQzI1MUZFMEYzODcwNkZFQjI4NTJBM0YwRUIyMTdFRUUyMkFBMzUwOTM5MTZEQkRBREJDQzlERkYxNTM2MUMzQkJCMDNCMDUyRUZERDFBOEJGMjRFMUM5MDRDMkJCREQ5MDY1QTc5NzcwM0RGOTk3NEMyRUNGNkM0MjM0MTY1MUM5RTRGRTc1NUMyNEZFQTEyMDFGNEYwMjRCNTU5MUNGQzI1QjlDNTQyREM1NDIzQkYxQzE2RkVGOTczNjlGQ0ZEMzU3RTJDM0NEQjM4NkQzNEFGQzE2MkJGNzUwMUY2RjkwQTY3REVDM0I0MDJDMDI0RDhDREM5Q0NBREMzMkRENENFNDM0RTlDODE0NjM0M0IzMjE5Mzg5NEU5M0ExMEZGQUEwQUNENkZDMDVBNjg5MzRENzY3MzJFM0Q5MzA0NzI1MEI4NUNFRjkzQkVBODc4ODhEREZBM0I0RkEyRDM0RTk0NDJEMDIwRUFEOThCQkYzNzFGMDdDRUE0MDkzRkM0QTY4MTM3MUNDRUI5RjMyQUNGRjI5QTJDNUY0QTMwNDg5NDNDRDRFNEJFOEJEQkQ0RTA3OTEzQTlBNzAzNTM3Q0Q0OUFGNDg0NEQxQjQ5OEEzQjQwOEFFRjRCNDRCMUJDQkRDQTE4MjExRUMzMDgyMTFFODMwODIwQTIxMEEwMTAwQTA4MjBBMUEzMDgyMEExNjA2MDkyQjA2MDEwNTA1MDczMDAxMDEwNDgyMEEwNzMwODIwQTAzMzA4MThCQTIxNjA0MTRDM0U3QUM1QUMxNUYzOTc4RTAxNjMwRjFENThFNUQ1QUNERkE2OTREMTgwRjMyMzAzMjMxMzAzNDMyMzEzMTMxMzQzODMxMzI1QTMwNjAzMDVFMzA0OTMwMDkwNjA1MkIwRTAzMDIxQTA1MDAwNDE0MDk5NkNGQ0YxMUY5RkJDNkE0RkJBMUQ5QjU2NTdBNUFCQzdEOTFFRjA0MTRDM0U3QUM1QUMxNUYzOTc4RTAxNjMwRjFENThFNUQ1QUNERkE2OTREMDIxMDczN0Y1RjFFMDZDNTQ5MEI1RTc2Njc1QkMyMjMzMjU1ODAwMDE4MEYzMjMwMzIzMTMwMzQzMjMxMzEzMTM0MzgzMTMyNUEzMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwQjA1MDAwMzgyMDIwMTAwODVERkJCNDg1Nzk4QUU0RDIwM0Y1OUFBM0U2QUU3MjlBRjRENzRFMDQyQTQ0RjJCRjc5NzZFOEI2Rjg3MkQ0ODQwOEM3MTlGQjUxRjA5NzkyMzEzOEEyQkFFNEJBNjBBN0Y4Q0I1MTZDRDc2OTc4NTU3NkQ5OUY3NzI0Q0Y3RDNEMjdDOUUxQUVEQUU2REQ1QzMyQUQ4MEU4NzI0NTk4OEVCQzJGMTI3QjJDM0U4NUZBNDMzNTlEQjREM0EyOEZCMEJBMUI2MTdENjg1MTcyQUFFQjExQ0ZCNDFDOEM2QUEwM0EwMTZEQzM0OEQzRjQ1QTIzOTJFRjQ0MzI0RkExMTU1M0EwQ0M0ODAxNTNGNzFCMzlENDMxODk5NDVBRTA0RDczRTQ4OEJGMkRDODY0NEYyOUFCMjI1ODE3OEVCRDlBQjc5RDhBNDJDRDNFQjc1MDRERkZCNTQyRDhCQTNFNURBMDM3NjFGNURFNkVFQjcxNjVFRjU1NEFERDIzRDNCRDM5NEVFQjBCREJDRkVGOUU4ODBDRkQwRTQ1MDRFQzA5QjJDOTBDMDUyRDQwRDBCREM4OEFDMjJDQjM1RjE0NEVBNjY4QUIwNjIyRDdCQzdDQ0Y3Qjk1NUYxMTA2QzFEQkE3REM3RkVGNjE1Qjc0NzU0RDE0QjJERUNCMzcwNjVFOEI5RTA3RTUwRTFDQTYwQkMyQkU4MTQ3MTVEQTA3N0UyRENEMzhGODlCQjYwRDUzNDk4Njg1NDE5RDIwM0IzQTM5NDBFNjRFNjM5Mjc3REMwNjgyOEFEQzU0N0YzMDUyNDhEREU4OTMwQ0NFOTg0OTA2OERBRkFFOTk1MDkwRUZFNUU5QkY3MTNEQkY4M0YxRTJGNUU3RUQ4QTMxM0U0RTM0MUUyOUQ0NDE3NjNCMDBDQkYyREI0MTZBNDI4MEJDNUY1RkRBNkNCODI3NjFBNjkxRjQyM0JDMzg1Mzg2MTRCNzIyQjk1NjBBMjBBNjVEQkZFQzc1NUZGNjFFQ0NCRTlERkMzMDNBODJERjQyMTAyMzkwMjVFRENEQkRERkE2QUI2NzE2MjJFNjJFNDRCREI5MDhFN0ExMDhGM0M5MTJBN0NBMDhENjE1MTlBNDYzRDJBOTdEMkU1QTYxRkU4RUMxMjkwMDA1OTAwM0U4NzI2QkZCMDg4NTQ0Mjg2OTM3MDg3NjY4NDcwNTA3RjEzQTc3RkFEM0NEQ0MyNjczOEVFN0Y3QTU3QjBBMkEyRjE1OTNEMzdBNzg5RTRERDI1MjEzNUQ3MzIxRUUxMTYxMkM0REVENkQzOUU5QTgxMTBCREE4QzdCRTgzM0FGNkNBNEIwM0U3REJENjQ4QzYzNkEwODIwNzVEMzA4MjA3NTkzMDgyMDc1NTMwODIwNTNEQTAwMzAyMDEwMjAyMTA1OEI3NUJDQzNGMjhCMDg2Qjg3MjRENTRBQ0JBOUZFODMwMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTBCMDUwMDMwODFBRDMxMEIzMDA5MDYwMzU1MDQwNjEzMDI0NzUyMzEwRjMwMEQwNjAzNTUwNDA3MEMwNjQxNzQ2ODY1NkU3MzMxNDQzMDQyMDYwMzU1MDQwQTBDM0I0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNDM2NTcyNzQyRTIwNDE3NTc0Njg2RjcyNjk3NDc5MzE0NzMwNDUwNjAzNTUwNDAzMEMzRTQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA1MjZGNkY3NDQzNDEyMDMyMzAzMTM1MjAyRDIwNTQ2NTczNzQzMDFFMTcwRDMyMzAzMDM3MzAzNzMwMzkzMjMwMzQzODVBMTcwRDMzMzUzMDM3MzAzNDMwMzkzMjMwMzQzODVBMzA4MUJDMzEwQjMwMDkwNjAzNTUwNDA2MTMwMjQ3NTIzMTJCMzAyOTA2MDM1NTA0MEEwQzIyNDc3MjY1NjU2QjIwNTU2RTY5NzY2NTcyNzM2OTc0Njk2NTczMjA0RTY1NzQ3NzZGNzI2QjIwMjg0NzU1NkU2NTc0MjkzMTE4MzAxNjA2MDM1NTA0NjEwQzBGNTY0MTU0NDc1MjJEMzAzOTM5MzAzMjM4MzIzMjMwMzEzNzMwMzUwNjAzNTUwNDBCMEMyRTQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA0MzQxMzEyRDMwMkIwNjAzNTUwNDAzMEMyNDQ4NDE1MjQ5NDM0MTIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTYxNkMyMDQzNkM2OTY1NkU3NDIwNTM3NTYyNDM0MTIwNTIzMTMwODIwMjIyMzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMDEwNTAwMDM4MjAyMEYwMDMwODIwMjBBMDI4MjAyMDEwMEJBN0MwNEVDQUNBMTIxQTMwM0MzOEVEMTk1N0Q0RTNEOTEzNThBNjE2RkRFNEM1NzY0MTMyOTkwRjZFNDM3N0U4NkY3RTZFNUVEREFFMjFDRkI3RUJERUQwQjI5MUU3NTMyQzkyNjE2QkFBM0RDQ0U2QkIwMDU4MUY5MjIzNTE5NkNEMzVFQzNGRjczMjQwRkI1NUNFNjhBRjM0RUIzRkI4RjZFNEUwRDZGNENBODYyQzExQUNDOUYwREE2RDE5MzlGNDdENzVCNzdDRDU4M0FCMTIzQ0YyMkI0M0Y2ODA4RjVGODJFRDI0Q0E5ODg3OEZFRDM5NzUwMDFDMDdGNTE3MjZDNTYzNkUxOTY3QkM4Mjg3RThCMDZDNTNENzdFNTVGODkzNTNENjFGMjY3QTg0OTFFNkRDMjI3Q0YyNTM3ODA5MENEOTExOEI1NUVDRDYzMjVGN0U2QjQ5QzExQzk0NEUzRUNBRkExQjBGMUY5NkJGRjIxRkI2Mjc2RDE2OTQ2Mjk1QURBQjYxRDU0NkZENTgyMTU1RDJERDUxN0Q1NUQ4QTZEMTk1MTE1NzAyNzBDNTNDQ0IxNzkyREI1MEI0RDU5QjA3OEI4QTE0QUExNENDREZDRTk1QTRBMDExMkIwNDczOUZDMEQyRTdGMTBFMkMxMEI5RUFCQzM4QTdEOUE5Mjg2MDcyMTY0MDUyNzBENjg1Njg2NDI1MUIzRDgxNTU4MDM4RDczN0ZBM0FBN0M0MEZDQTBEMEJDQjc5MTUwQTkxNzYxRDQ3MTI4Mzc3MTM2QUIwQTAzRjMzMjNFQjI1NzQ0QzFBQzE2N0VCNzkwNDJFMkRGNUNCRDEwNjk1QkFFQkU5OTk5NUYwMEUwMjI4Q0VBNTg4RTBFQ0QyNjM3OUE3QUY1QzM1NTY5NkQ1QTQ1NjM3QzY4RjZDNkQ4QzhDNzgyQjhFNEVBMEE2N0I3RjdCRjAwM0QwQTVDNkJCNEJDQ0EwMThGNDAxQkUxMjVGRDEyNkE5NkQxQkE1RTY3ODU4QzU1REMwMkNEMTg5MDAxRDFDRTMwMUI3OUU0NzJDNkI2Qjk4NzZGMjJENTJCM0ZCRDdDNjc2NkI3MEJGRjBERERCMUFEODZBMTFCODVGMURGNDc3OUE5QTgzOTFDODYzRUVDRUU1OEVDMUYyNzhEQUE4REMxNEU0NzI2MTcxMENERDk2NDFGMjEyNTM2NkU0OEJGMjlFNkE4QUM2NDNFMzhEMkVFNDFEMEY0NjA1MkZBODc5QjE5RkRENTUzNTlDQTFCMzM0M0Y4OTQxMUQ1RDE1RTgyQzQ0NEMwRTM3Qjk3MEFGODRGRDc0OTNCM0VCQzRGNTI0RjdGODMwMjAzMDEwMDAxQTM4MjAxNUUzMDgyMDE1QTMwMTIwNjAzNTUxRDEzMDEwMUZGMDQwODMwMDYwMTAxRkYwMjAxMDAzMDFGMDYwMzU1MUQyMzA0MTgzMDE2ODAxNDk4NjQ2QzZCQjVEQ0Y3MjFDOUNENjU4MDMzNDlEQjQwQTkxQ0EzOUMzMDc2MDYwODJCMDYwMTA1MDUwNzAxMDEwNDZBMzA2ODMwM0YwNjA4MkIwNjAxMDUwNTA3MzAwMjg2MzM2ODc0NzQ3MDNBMkYyRjc3Nzc3NzJFNjQ2NTc2MkU2ODYxNzI2OTYzNjEyRTY3NzIyRjYzNjU3Mjc0NzMyRjQ4NjE3MjY5NjM2MTUyNkY2Rjc0NDM0MTMyMzAzMTM1MkU2MzcyNzQzMDI1MDYwODJCMDYwMTA1MDUwNzMwMDE4NjE5Njg3NDc0NzAzQTJGMkY2RjYzNzM3MDJENzM3NDY3MkU2ODYxNzI2OTYzNjEyRTY3NzIzMDExMDYwMzU1MUQyMDA0MEEzMDA4MzAwNjA2MDQ1NTFEMjAwMDMwMjkwNjAzNTUxRDI1MDQyMjMwMjAwNjA4MkIwNjAxMDUwNTA3MDMwMjA2MDgyQjA2MDEwNTA1MDcwMzA0MDYwQTJCMDYwMTA0MDE4MjM3MEEwMzBDMzAzRTA2MDM1NTFEMUYwNDM3MzAzNTMwMzNBMDMxQTAyRjg2MkQ2ODc0NzQ3MDNBMkYyRjYzNzI2QzJENzM3NDY3MkU2ODYxNzI2OTYzNjEyRTY3NzIyRjQ4NjE3MjY5NjM2MTUyNkY2Rjc0NDM0MTMyMzAzMTM1MkU2MzcyNkMzMDFEMDYwMzU1MUQwRTA0MTYwNDE0QzNFN0FDNUFDMTVGMzk3OEUwMTYzMEYxRDU4RTVENUFDREZBNjk0RDMwMEUwNjAzNTUxRDBGMDEwMUZGMDQwNDAzMDIwMTg2MzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMDM4MjAyMDEwMEE1MUFCMjJFMjNEMTUxRDgxRkI0REI5RDEyNTc1M0Y3OTFEM0U3NDI0NUI2OTc2OTdCMTJERjAxMkFFM0Y0RkU0QkU2NkNBNDU2NDEzRDIzNDhENDJERkYwMDdGMjVBQUQyNURGRTQ0NEExOTQwNDhFODNBRUYwMjZFQjhFNUY5MTQyQTY1N0REQzg4OTZERkIxNzE2RDJCQUUyRjcyNUUwNzJFQkMzMEUyMTAwRDhCMkE0QzFENDM5RDc3QzgyRTRBNkFGREFCNTcwREJBODUxRTFCNTkzNDg1QzUwNUJBNzJCRDBDRjM0MDMwNzE3MTQwNkNBODY4RTg0RTI5MTgwQzc0NTNFRUUyQ0QwMEI5ODk4OUU3ODZDNkI1RkUwMzBBMkI1MUUwMjgyRTNCMzY2NEYyNzI2RkYwNzc0N0M5NjE1ODJDNERBN0RDNjE2NjA2ODY3MTYyNDhGMDY4RDNCNTFBMzVEOUMzMjI3ODYwQjkxNUI5RDdBQTk4MkNBNDVDQUI1RTc5QjE5N0YzQTU4MkMzNzMzRkFBNkFGMDY2REMzNDZCMTE0OTVFMTY4REI4QjAxNDk4MzdDRDdDMkREM0FFQTBDMjI2MUY3NDZDRjQxMkQyMTcxREFCOEQ5REJDNDVBQTU3MjExRjdCMTgzRTU5RDk2NzREQUQxRDU0QjAwNDE1NzFCQzVDNDRFMzUwMjQxQzRGM0FCNjY5QjEwNjlDMjFGRTk3OTI2OUEzNUQ3QThCQUNGOTc5RDA0MTNCRDNFMTY3NzVEMzhGQUIxMzQwMzc2Q0I0NjY2QUVDMERDMjk4QTMyRTEwQTczQzZGN0VBRjFBMzRBOTczMkIyMUI1OTEzM0M3OUJBRDI4NENBOTYyMzBFQzdCRUNDOTA4MkJBRURCRjQyRkI0OUUzM0MxRjk1MDYzQUUxMEMxNkJGNzgzNUREQUJBMDZGQkYxNzE4RkNFREJDOTk2Q0QzRURFRkRGNzk3QkFEODcxRDRFMEY4Q0Y4NjVBOTU3NURERDEzOTkxNTVCQUIwNzUwMTNBNjM4NUVFNEI4QTk5N0RENzUwQzA5RjYxQkU3Nzg0NTMzQTJDNDRENjUxQ0FEODBBRUZDRUEyOERGMjk4NTdENjNFMjg0RjM2NjNDRjIyMDY0NDQ0RjkwM0YzRTJDMjRCMzQ4Mjk1QjlGODFGNTg4ODc1NUIyMjZGNTU4NTYzMzQ2NTc2RUQ2ODYwNjM3MUVGRDE5Q0U1MUY5ODhDOEI2OURBNzYzREJCNUYwMDcwMDUyMTRGNjcxMjNEQzNEOTVDQjJCNzgzNzMzNkEzM0IzNEM0NzlEMjZFMTI4QkE0RTc1Mzc5MzUwQTUyNEEzMDgyMDdCRjBBMDEwMEEwODIwN0I4MzA4MjA3QjQwNjA5MkIwNjAxMDUwNTA3MzAwMTAxMDQ4MjA3QTUzMDgyMDdBMTMwODFDNEEyMTYwNDE0RTQyNUU5ODY0QzY0M0FFQ0YyQjdFNTdDN0NDOTJCQzFBQzdFQkE4NzE4MEYzMjMwMzIzMTMwMzQzMjMxMzEzMTM0MzgzMTMyNUEzMDgxOTgzMDgxOTUzMDQ5MzAwOTA2MDUyQjBFMDMwMjFBMDUwMDA0MTQxMkRGQ0M4NDg0ODNBMzFDQjhDNThEREI3OTBDQzAyQTM4OEVCMjE1MDQxNDk4NjQ2QzZCQjVEQ0Y3MjFDOUNENjU4MDMzNDlEQjQwQTkxQ0EzOUMwMjEwNThCNzVCQ0MzRjI4QjA4NkI4NzI0RDU0QUNCQTlGRTg4MDAwMTgwRjMyMzAzMjMxMzAzNDMyMzEzMTMxMzQzODMxMzI1QUEwMTExODBGMzIzMDMyMzEzMDM0MzIzMzMxMzEzNDM4MzEzMjVBQTEyMjMwMjAzMDFFMDYwOTJCMDYwMTA1MDUwNzMwMDEwNjA0MTExODBGMzIzMDMyMzAzMDM0MzIzMTMxMzEzNDM4MzEzMjVBMzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMDM4MjAxMDEwMDczMkJFRUU1NEY0RTExMjk1RTNENUUxNzQwRUNBRjE4RkVFN0IyOUY1MzFENDE5QkUxRkZFNEZFM0RDNkY5OEE0NjZGNjkzQzI4RDRDNDNCNzRERDcyQTBEOUMxOEZBQzREQkZDMDVEODZFQ0E5NkU3OTEzNjg5NUM3OTA5ODUzNjkyNDFDQjY2MjIzRDBCRkU0OTc0RTM4QTBEMkM0RjkxMEE3RTE4NjczQjRBMTcyODE1Qjc2MThEMDQ5NkQwOTc3MTMxRUQyMkU0MjYxQ0NBNzI0QTY3QTU2ODE2NTU0OTNBQjY1NTU1RTQ5OUVDNTdFMkE3NkJBNkMyMjMyOTgwQjlDRkUzOTI1Q0VFNjg1MkRDRUIwMTk4QUZEMDQ5RjMxMTExOTlFNkM3NTAxRUI1NzFEQzkxODVDM0M3RTQzRURBMEJCMDU2QzI5Rjg1NTU2RjREMjdBQkQ2MTY2OENFNzc1NzY5NzU4NDdFQUUyQ0NDM0QzNUYzNjRBRTVEMTUxRkYxNDIzNDY2RjVDNUZBOEM0MzVDQkI5OTU4RUQzMDFDMDg4NTg4MzZCNEVFNjA0NDUwQTc4RDUyODk2N0NENzk2OTA2QUU5OTVDNjhDRjM5MDg4MEEyMjIxNjgwMDkzRTM3MTFBRDc5OEQ0N0ZBNEM0NUE3RDAxRTFBRUU4QTA4MjA1QzIzMDgyMDVCRTMwODIwNUJBMzA4MjAzQTJBMDAzMDIwMTAyMDIxMDE4M0IyMTA1M0M2QTc3MUIzM0QyQzEwQTEyNzYwNjBBMzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMzA4MUFEMzEwQjMwMDkwNjAzNTUwNDA2MTMwMjQ3NTIzMTBGMzAwRDA2MDM1NTA0MDcwQzA2NDE3NDY4NjU2RTczMzE0NDMwNDIwNjAzNTUwNDBBMEMzQjQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA0MzY1NzI3NDJFMjA0MTc1NzQ2ODZGNzI2OTc0NzkzMTQ3MzA0NTA2MDM1NTA0MDMwQzNFNDg2NTZDNkM2NTZFNjk2MzIwNDE2MzYxNjQ2NTZENjk2MzIwNjE2RTY0MjA1MjY1NzM2NTYxNzI2MzY4MjA0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNzMyMDUyNkY2Rjc0NDM0MTIwMzIzMDMxMzUyMDJEMjA1NDY1NzM3NDMwMUUxNzBEMzIzMDMwMzIzMjM1MzEzMjMxMzAzMDM3NUExNzBEMzIzMjMwMzIzMjM0MzEzMjMxMzAzMDM3NUEzMDc3MzEwQjMwMDkwNjAzNTUwNDA2MTMwMjQ3NTIzMTBGMzAwRDA2MDM1NTA0MDcwQzA2NDE3NDY4NjU2RTczMzEzNzMwMzUwNjAzNTUwNDBBMEMyRTQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA0MzQxMzExRTMwMUMwNjAzNTUwNDAzMEMxNTQ4NjE3MjY5NjM2MTUyNkY2Rjc0NDM0MTMyMzAzMTM1MjA0RjQzNTM1MDMwODIwMTIyMzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMDEwNTAwMDM4MjAxMEYwMDMwODIwMTBBMDI4MjAxMDEwMERGQjIxRTBGREQ5NTg4RDE4RDY5RjkzQkU5NkMzOEU3RDk4NkVDRjI5N0JCN0M3MDA4MjBGQzE0QUVFRDQyN0VGRUMwRjE0RDMzRDA2RDkxRjcyNDQwOEIzQjREQ0VCQkVGRDg5MjM3ODEyQzAxMEZBRjBGRUZEMjY0RjM5OERCQTRFRjcwOUIwNTFDRUYyRDI1Q0YwMDNDQjc1QUM4MjEzOERDQkRCQkNBRTJDNkRGODRFNjUyQTA3ODQyRDA2OEFBNjUxQkFEMjIzOEYwQThBOURCMURFOTYzODEzNzE1RDUxNjdENTQ5M0RGOTBBMEFBODIzMjdEQzk1NTVBMTJFRkMyMTEzQzg2MzMyRjNCMTFDREYyQjFENzZCQzI0QzI0RTBCMjQ4RjBFNjU2Mjg5MkM1RDJDREE1MjNENUFDNjZGMEU3Qjc3Qjk2NEQ3RDI1NzM5NjE2NjVDMkVDNzhBRjEyMTdGQzIyMTVDQzJGNTY4NTFFNkYyNzhDMjRDMzUxRTJEQzZGQzEwM0VBNDE3MDg2RTY3RDA3Q0IyRDgzOTdGNEE3QzI4MkQ1RTAzODcxQTI0NzgyRkZGMEUxRjE0MTE3MkQ4OUUwNjA4NTBFNDFGRUYzMzM5QjVERjgzMzQxRDU4RTdDRkQ2QjcwNTZEOUQ1NUU2MTFENjgxQkE3MDIwMzAxMDAwMUEzODIwMTA5MzA4MjAxMDUzMDFGMDYwMzU1MUQyMzA0MTgzMDE2ODAxNDk4NjQ2QzZCQjVEQ0Y3MjFDOUNENjU4MDMzNDlEQjQwQTkxQ0EzOUMzMDREMDYwMzU1MUQyMDA0NDYzMDQ0MzA0MjA2MEMyQjA2MDEwNDAxODFDRjExMDEwMDAzMDczMDMyMzAzMDA2MDgyQjA2MDEwNTA1MDcwMjAxMTYyNDY4NzQ3NDcwNzMzQTJGMkY3MjY1NzA2RjJFNjg2MTcyNjk2MzYxMkU2NzcyMkY2NDZGNjM3NTZENjU2RTc0NzMyRjQzNTA1MzMwMEYwNjA5MkIwNjAxMDUwNTA3MzAwMTA1MDQwMjA1MDAzMDEzMDYwMzU1MUQyNTA0MEMzMDBBMDYwODJCMDYwMTA1MDUwNzAzMDkzMDNFMDYwMzU1MUQxRjA0MzczMDM1MzAzM0EwMzFBMDJGODYyRDY4NzQ3NDcwM0EyRjJGNjM3MjZDMkQ2NDY1NzYyRTY4NjE3MjY5NjM2MTJFNjc3MjJGNDg2MTcyNjk2MzYxNTI2RjZGNzQ0MzQxMzIzMDMxMzUyRTYzNzI2QzMwMUQwNjAzNTUxRDBFMDQxNjA0MTRFNDI1RTk4NjRDNjQzQUVDRjJCN0U1N0M3Q0M5MkJDMUFDN0VCQTg3MzAwRTA2MDM1NTFEMEYwMTAxRkYwNDA0MDMwMjA3ODAzMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwQjA1MDAwMzgyMDIwMTAwMjJFOTM0ODA3RTdBQTgxQkVBRTI2NTlDQUMxNDdDMjVFMEQ3MEI5MUY3OTRFNzI4NzBBMDU5M0JDNDg3NEMyMTE4MjhBNzMxNTFDRjUyRTYwQzk2MDNBQkFFRjNFNDIxRTQzQ0FDQ0ZEQ0YzODE2NjQ5RENFMTQwMzM2MEQxQjI3MzBERDAwQkQwOTRGMDRGOEYwMUExNjRDRjY4QTRCMjk4MkJCMDlCOUM4ODI0RjM0MzU5M0QxOUZDNTY3MzU4ODUyQzIwQUU3NzE2MzYxNjY2REJGMjJBQzZCMEFENEM5QkQyODMwOEU0Qjk2OEY0MjRFODhFMTdDMDk1QjlFMjQxMEQyQTRBMThCOUVGNjk0MERBMjRGNkJDNTRGMjAyOEY3NDVFNTI4QUVFNDk3RTMzODhBRTZBODMwQjRGRERBNzU0QUZGRUI3Q0UzQTRBREQ2QUQwQjkyRDU1ODUxODREOTQ0NDQ3NTJCMDkyOEU0RTk1OTVEMTYyRDg3NjYwNDEzQjgyNTk3NkY3Mzk4RjY1RDE5RDM2OENBOUYzNzZDQzdFQUVGMDJGQ0FDOTA4NjcwMDhEMjFDOEEwNjQzQzQyQjU2MTQ5OTJERDREOEQ5QTZCQUFFN0ZCRjk2NTU4MTM2NUI2N0U1M0RCMEVGREJDODk1QjFDMTA5NUIxOTMwNkI2NDE1Q0YzM0RBMUYzRjE0OUMzNjM5OTY3QkMzRkFDODJGQjY4RUNENkFDQjQzQUEwNzJFQ0NGNEMxMkZFQUVGNEQ0RDhENUEzRDZENDBDNDIyMEJGMzg4RDEwQTc5Qjk0NzgxRTk1NzQ2MEUzMzFBN0YzMzBDMjkxMTg4MjA4QkZGNzI0M0M3RjlCNjFDN0E3Q0M0MkY2NTBDRkM4MUYyREE5MzM3QTY1MDI4RUMyREQ3NEQ4OTRBRjk2MjAxRThEODJGNTQ2QUY2QUE4RUNEM0ZDQjU4Mzc3NkUyMzdBRkM0ODJDODYxOTUyODFDRjA5RjE0NDlEQzIxOTYzQUQyMTdCQzVEQjVEQzdDMkU0QzlFN0JERDMzNTZGNjY4ODlCNThCMTlEQkFDNDQ1Q0NENzMzOTA5QTMxQzVCMEFDMUY2MzVGRkI2MzVBN0Y4RkYyOTdCMDcyQ0EyQTcyODg4QjNDNjRDODZEM0IzRTNDRDgwRDYzMDI5QTY0RjdGMzA5NzU5NDBDMTZFQkI5QTgxQzNDRjg2NjAxRTM2MEI0OEMxOUVCOTIwRDBGMzE2NDIzODAzRjgzQjEyQTBENDU4MUM3RDM3N0YyMEM2MzExOEU5RDU0OTIzN0Q4REFEMTFFODFFQzM3QkMxRjg0MjQ0NkYyMzg5RjFCNDdDNzMwMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTAxMDUwMDA0ODIwMTAwOUVFNERBNjlGNUY2MDIxQzI5NkFGQjAyNTNBMzkzQjhBMDY3OUJGQ0ZGQTc5MzcxQUM3Mjc1MzdDNzVFNUUwQTIwQkQyNUEyMkIxQzA0OTFDOEI3M0FFQzU5OTAxMEU4RDEwNDNDNDcwMkU2RTMzOTI3QTY1RTI1ODQ1NzQ2MjBEMkNDNjhFMkNFQjQ3RTFGNDE0NTJGQUM4OUI3NzA1MkU3NzhDOUVCM0FDRUNGRTI4MEMwOUU4ODdBNTI5RTYwMTgzMkRGNEM0QUIzNTgwNEJBMkQ3M0ZDOTFENkMxMjVBNzdFMjVBNEMwOTAwMzdGNDJFOUZCQjQ0QjQ2MzVCNDczRjIwRkU0NTI5NEQ0NjM5NTlCRTNERjVCMUFCQTREQkE4M0MxNEQ4QzQ0OTE3QzVEOThFQkREQjAzN0I1MkVEMTMyRTQ3MTlDMzk0OUZGMkZENjFCNDIzODI1OUZBQzBEMzY3RjM1RjQ5OEREQjA0MzExMDIzMDRGOUE3NTY4RjgwMTQzRDVBMjBBNDg0MDY1QTNDMjRENEE3ODM3ODA2QkNFRDZCQjhENjYyNzdFOEZBMzlFQzQ2M0VBM0EzOEVEODAyNzhGMzJBQzQ2MDgwRUFFNjIwMTIwRDc4N0ZCNUJCMTNFQkQ1MjgzQkQ5OTE5M0JBMzJEMzY4NDNGRjdBMTgyMTMwQjMwODIxMzA3MDYwQjJBODY0ODg2RjcwRDAxMDkxMDAyMEUzMTgyMTJGNjMwODIxMkYyMDYwOTJBODY0ODg2RjcwRDAxMDcwMkEwODIxMkUzMzA4MjEyREYwMjAxMDMzMTBGMzAwRDA2MDk2MDg2NDgwMTY1MDMwNDAyMDEwNTAwMzA3QjA2MEIyQTg2NDg4NkY3MEQwMTA5MTAwMTA0QTA2QzA0NkEzMDY4MDIwMTAxMDYwNjA0MDA4RjY3MDEwMTMwMzEzMDBEMDYwOTYwODY0ODAxNjUwMzA0MDIwMTA1MDAwNDIwQkE3MTRFRjg3Mjc4Qzg5MjI2MDI4MUU1NzQ4NzI4NTYwNDJFQzZGNUEzMzZERUY1Njk4N0U5OEVERDQ5MUU0RjAyMDgyMzZBNDUxREY2RUY3REExMTgwRjMyMzAzMjMxMzAzNDMyMzEzMTMxMzQzODMxMzI1QTMwMDMwMjAxMDEwMjA4MUQ5RTNGNURCMEEyMzZBRUEwODIwRTgwMzA4MjA3MTEzMDgyMDRGOUEwMDMwMjAxMDIwMjEwMEEwQjM3NjI0NjZDRDA5QjNBMkI5RTVGNTA3N0VFN0QzMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwQjA1MDAzMDgxQzMzMTBCMzAwOTA2MDM1NTA0MDYxMzAyNDc1MjMxMkIzMDI5MDYwMzU1MDQwQTBDMjI0NzcyNjU2NTZCMjA1NTZFNjk3NjY1NzI3MzY5NzQ2OTY1NzMyMDRFNjU3NDc3NkY3MjZCMjAyODQ3NTU2RTY1NzQyOTMxMTgzMDE2MDYwMzU1MDQ2MTBDMEY1NjQxNTQ0NzUyMkQzMDM5MzkzMDMyMzgzMjMyMzAzMTM3MzAzNTA2MDM1NTA0MEIwQzJFNDg2NTZDNkM2NTZFNjk2MzIwNDE2MzYxNjQ2NTZENjk2MzIwNjE2RTY0MjA1MjY1NzM2NTYxNzI2MzY4MjA0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNzMyMDQzNDEzMTM0MzAzMjA2MDM1NTA0MDMwQzJCNDg0MTUyNDk0MzQxMjA1MTc1NjE2QzY5NjY2OTY1NjQyMDU0Njk2RDY1MjA1Mzc0NjE2RDcwNjk2RTY3MjA1MjUzNDEyMDUzNzU2MjQzNDEyMDUyMzEzMDFFMTcwRDMyMzAzMDM1MzIzMDMwMzgzMjMxMzUzOTVBMTcwRDMzMzAzMDM1MzEzODMwMzgzMjMxMzUzOTVBMzA4MThBMzEwQjMwMDkwNjAzNTUwNDA2MTMwMjQ3NTIzMTBGMzAwRDA2MDM1NTA0MDcwQzA2NDE3NDY4NjU2RTczMzEzNzMwMzUwNjAzNTUwNDBBMEMyRTQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA0MzQxMzEzMTMwMkYwNjAzNTUwNDAzMEMyODQ4NDE1MjQ5NDM0MTIwNTE3NTYxNkM2OTY2Njk2NTY0MjA1NDY5NkQ2NTJENTM3NDYxNkQ3MDY5NkU2NzIwNTU2RTY5NzQyMDMyMzAzMjMwMzA4MjAxMjIzMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwMTA1MDAwMzgyMDEwRjAwMzA4MjAxMEEwMjgyMDEwMTAwREJDMjNGQTYzNDNBQzgwNjUyNDI4Njg0NThCODg1MjlFMkJGMTFBRkJEOEU1RDNEQ0MzNzQzOUY2OTExNUE1NTY2NkNCQkI5NzI1NzdCM0JFN0E4NUVGOTY3RDY5RUVEM0E1RENEM0ExNzdEQ0MyMkE4RTZFOUEzMTE5RTgzRDg1RDc4RTlGOUY5Mzc0NkQ4NkE2NEEzRDgzMUUwMDRENDY4OEE2ODE1MjcyMTE0MDYzNkMxM0NCQTZFQUE0ODk1NTMyQjVCN0UxQkZGMzE2OUEwRjQ3M0Y4RDZCMjJCNUQ2NTEwQzBBREFBRTgxNzZCQTkwN0YyMjY2N0VFRTFFRDJBODIyMTM5QUM0MjIzMjQ5OEZFNEM5NjJGMTg1RTE0MDY2RUQxN0NFNEE1NzQ5NDNBNjcxNjc3MzdDNzYxRUEzODg3NzQzRTUxOUU0NDM0MjBEOEZGOUVFNTc3NzYzODI0MDYyRTMyRjJBMDcxRUU1NTVDNzU5QUUyOTBEQjc0QTdBQ0Y3NzlEQUREMTgyRDYwMkJCNUEwMTE0Q0QyNERCOUU0QUUwN0VDMDFERjE4OTdFMTVERDc5MTZCN0YyODAzMkUzNzNGODQ1NEIyN0VGM0U3MTBCOENEMUYwRUUxNEI2NDQwMDExRTQyMjBDQ0EzOTNDQzQ3NTQ0OTdCNUYwMjAzMDEwMDAxQTM4MjAyMzYzMDgyMDIzMjMwMUYwNjAzNTUxRDIzMDQxODMwMTY4MDE0RDk1ODNFNTVEOEE3NzI4NTAxNDc5MzYxNTYzQzI4Njk3NTJFRTA3OTMwODE4MTA2MDgyQjA2MDEwNTA1MDcwMTAxMDQ3NTMwNzMzMDRFMDYwODJCMDYwMTA1MDUwNzMwMDI4NjQyNjg3NDc0NzAzQTJGMkY3MjY1NzA2RjJFNjg2MTcyNjk2MzYxMkU2NzcyMkY2MzY1NzI3NDczMkY0ODYxNzI2OTYzNjE1MTc1NjE2QzY5NjY2OTY1NjQ1NDY5NkQ2NTUzNzQ2MTZENzA2OTZFNjc1Mzc1NjI0MzQxNTIzMTJFNjM3Mjc0MzAyMTA2MDgyQjA2MDEwNTA1MDczMDAxODYxNTY4NzQ3NDcwM0EyRjJGNkY2MzczNzAyRTY4NjE3MjY5NjM2MTJFNjc3MjMwNTcwNjAzNTUxRDIwMDQ1MDMwNEUzMDA4MDYwNjA0MDA4RjY3MDEwMTMwNDIwNjBDMkIwNjAxMDQwMTgxQ0YxMTAxMDEwNjAyMzAzMjMwMzAwNjA4MkIwNjAxMDUwNTA3MDIwMTE2MjQ2ODc0NzQ3MDczM0EyRjJGNzI2NTcwNkYyRTY4NjE3MjY5NjM2MTJFNjc3MjJGNjQ2RjYzNzU2RDY1NkU3NDczMkY0MzUwNTMzMDE2MDYwMzU1MUQyNTAxMDFGRjA0MEMzMDBBMDYwODJCMDYwMTA1MDUwNzAzMDgzMDgxOUMwNjA4MkIwNjAxMDUwNTA3MDEwMzA0ODE4RjMwODE4QzMwMDgwNjA2MDQwMDhFNDYwMTAxMzAwODA2MDYwNDAwOEU0NjAxMDQzMDc2MDYwNjA0MDA4RTQ2MDEwNTMwNkMzMDM0MTYyRTY4NzQ3NDcwNzMzQTJGMkY3MjY1NzA2RjJFNjg2MTcyNjk2MzYxMkU2NzcyMkY2NDZGNjM3NTZENjU2RTc0NzMyRjU0NTM0MTUwNDQ1MzJENDU0RTJFNzA2NDY2MTMwMjY1NkUzMDM0MTYyRTY4NzQ3NDcwNzMzQTJGMkY3MjY1NzA2RjJFNjg2MTcyNjk2MzYxMkU2NzcyMkY2NDZGNjM3NTZENjU2RTc0NzMyRjU0NTM0MTUwNDQ1MzJENDU0QzJFNzA2NDY2MTMwMjY1NkMzMDRDMDYwMzU1MUQxRjA0NDUzMDQzMzA0MUEwM0ZBMDNEODYzQjY4NzQ3NDcwM0EyRjJGNjM3MjZDMkU2ODYxNzI2OTYzNjEyRTY3NzIyRjQ4NjE3MjY5NjM2MTUxNzU2MTZDNjk2NjY5NjU2NDU0Njk2RDY1NTM3NDYxNkQ3MDY5NkU2NzUzNzU2MjQzNDE1MjMxMkU2MzcyNkMzMDFEMDYwMzU1MUQwRTA0MTYwNDE0QkM2MDYwODQxRkRCNUU4REUyRjREMUFDQ0M5NUM1QzRGNkUyMEQwODMwMEUwNjAzNTUxRDBGMDEwMUZGMDQwNDAzMDIwNkMwMzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMDM4MjAyMDEwMDU0RjQ4QjlCMDAwNDg0QTJBQURBMzI2RTZEQUQ5QkJCRkMzNDk0QkVDQkYxNThDODE4QTgxMzRGNzI4QjdDNTdGQ0M5OEYxQjg1NjZFMEFGQTc1NEU1QjA2N0U4QjI1MjE1ODI5RDJCMjE0RTlGOTdEODIyMTJBNkZFN0U5RkY2RDRCNEEzOEJBREE4QkJCNDU0Mjc0MjhGQjhDNTAyODdDQkU2OURGQTA1NDVDQUQzNDkwNkZDNkRFMjdDREREQzExRTc2NTMwMkE3OThDNTlGOTNDRTA4OEI0Q0RDRjk3Q0I1RDg1NjdBQ0EyNjA5NUNBRkI5NEMxODVDMjk2NzM2NkU5NEU4MDkwRTdDNjc5MjgwQzUzMURDQTI0OUMwMzdFM0ZDQkVFNTc3NzVCQkZGOUI2RUFGNUE5ODMxMTY1RkI3RTM4ODkyRjc3REZGQUFDNDJGNDFBRjJEQzIxQzI3NUIzOTZFQ0FGNjFBRDBGQkQ4MTRENkIwNEZCMkRDREYzNUNBODZFQjNBMjQ2OTA4RDE4RDhCNzU5ODJCOTIwQ0ZENkUzQzFFN0FERDZGQ0M5MUQxQjBDMTYwRTUwRjlDRURCMzI1M0Y1OTE5NTNBN0IzNjA3MTlFQ0MwNThCMkU3NDI1RTc5MjE2MjcwNzY1N0JDMUYzNEUzRjYxMzNCQTU0NTE4RDhDOEQ4NzM5NzZFN0UyNERCM0JDMjUzODcwMkREMEI3MzMxRDM4NjcwMkY0NzdCNjMyQTJCOTEzNzQ0OThFRDcxOTBGMTZENERDMjY4RkI4QUIyODkxMkZDMjgxODdEOUM5NzFEMjVCODgzMjgwOTI5Rjc5NjEwQTFGODMyMzlENEM1NzMyOUUxQzRFMDc1NEVBQjAxMkE5NEFDOEFBMEJDMDY4M0M3MjIzMTVEODg0NEI1MkMyOEU1N0FDRkM4OEMyNjJFRkZCMTg1NkU1QTdGQjlDMkRBNzE4NDVDMzlENEFDNTlEMDFGNjk5REE4NThEOTdCMjIwNkQ2MDhCNDJFMUQ2MDlEQjI3NTJDQTVFMjNCNUU5NDQ2Njg5MkREMzQ3MDAzQTZDQzNGRTQ5MzE4QzQ5QjZFRDg4QUI4QUQ1MEJFMDYyNjlEMzE5MjI1OTM1MEZFMkJCNDJFODVCOTZDMjg4NDdBNzg3RDcxMjY1RTY0M0U5NDAxRDcyMTg5NDI0QjU2NzBGRkY2NDBEQTFGRDNEQjU3NDQzM0Y1QzRGNTU2MUIxNUFDNDVBQTI0MkFFOTc1NjgwRDU0QzZDODVGNzZFMjA3NTBFNDgxMDYyN0Q0MjVGOERGNzA5RTcwNEE2OUREMDEzQUEwRjY1MDA1MEI0MTU0QTAzMDgyMDc2NzMwODIwNTRGQTAwMzAyMDEwMjAyMTAxODQzNTEzOEZGQzA2NDNGOTczRDRGODc3NzA0OEM3MTMwMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTBCMDUwMDMwODFBNjMxMEIzMDA5MDYwMzU1MDQwNjEzMDI0NzUyMzEwRjMwMEQwNjAzNTUwNDA3MTMwNjQxNzQ2ODY1NkU3MzMxNDQzMDQyMDYwMzU1MDQwQTEzM0I0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNDM2NTcyNzQyRTIwNDE3NTc0Njg2RjcyNjk3NDc5MzE0MDMwM0UwNjAzNTUwNDAzMTMzNzQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA1MjZGNkY3NDQzNDEyMDMyMzAzMTM1MzAxRTE3MEQzMjMwMzAzNTMyMzAzMDM3MzIzNjMzMzY1QTE3MEQzMzM1MzAzNTMxMzczMDM3MzIzNjMzMzY1QTMwODFDMzMxMEIzMDA5MDYwMzU1MDQwNjEzMDI0NzUyMzEyQjMwMjkwNjAzNTUwNDBBMEMyMjQ3NzI2NTY1NkIyMDU1NkU2OTc2NjU3MjczNjk3NDY5NjU3MzIwNEU2NTc0Nzc2RjcyNkIyMDI4NDc1NTZFNjU3NDI5MzExODMwMTYwNjAzNTUwNDYxMEMwRjU2NDE1NDQ3NTIyRDMwMzkzOTMwMzIzODMyMzIzMDMxMzczMDM1MDYwMzU1MDQwQjBDMkU0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNDM0MTMxMzQzMDMyMDYwMzU1MDQwMzBDMkI0ODQxNTI0OTQzNDEyMDUxNzU2MTZDNjk2NjY5NjU2NDIwNTQ2OTZENjUyMDUzNzQ2MTZENzA2OTZFNjcyMDUyNTM0MTIwNTM3NTYyNDM0MTIwNTIzMTMwODIwMjIyMzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMDEwNTAwMDM4MjAyMEYwMDMwODIwMjBBMDI4MjAyMDEwMDlCRUFBOTRGODVCODc2Mjg0M0MwMUYzNUZFNzRFOTEzRUM1ODZDOUZFNUQ5ODgxMDdFODIwOEFBOEQ5RkEzRkIyNjJCRDU1NDlBQjYxNTY1MzgxRjRDMEY3MUVBQkExMTIxRkM4RENERThBQUI4RjFBNjYyRkFGRDNFQkM5QzBBRjk1Q0JENDJFRERGRDNBQ0ZGRTk1NTFDRTU2MDUxMTBDMjlBMTFFQ0RBMjlEQUIwNUVCNjlFQjhDNzJGNkVBN0I2NjUwRTMwQzJEQjA0RkQ3NDZDRDlFMzAzODU1MjU5MkQxNjFCNzk2RkZGOTY1MEJCM0Q2NDk0Q0RDRTkyMTU5MDRBNTc0QjVGOUU4REI1MTlDOTAyMkVGNEQ1RjFFRkY2MjA1M0YwMjFDNThCQUQyQzdDRjc1NjI3NTcyMTVDNzQwMDdGNzNEQUM3QjUzOEI3NEYwOTFGQTQyMUE1NjUyQTVCNDcxRjJCMEIzRDk1RDU0QkEwOEY0RkRCMjg5NTQ2N0ZFNTIyOTlEQjIyRjMyQ0M3OTlDRDdFMzZDNUNBOTIwQzk0MTU4NzdBMDM4NzkxRTgyODZGMTJGMDNGQjRDOEZEMTU4MTdEQUMyQTFEMkUyNURFMkM3MTMzMTFDODU1OUU0NDk0QUE2Rjc3OEIyMTg1OUU2NTgxNjJCRjk0MDU5RTUwRDAwNUFEN0EwMkE5Q0Y3NUMxMDg5MTIzRDJEMjZFRjZDNTMwRkMwNDA4NTNFRDE4OTMwMjc1NDQyMTZEOEIwNkM2OTg5OTY0OThEOEJEOUY4RDFEOTQxMTUwQkExRTQzMDQyREM0OTNEREY3RjBEQUI5MTVBRUE1Qjg5M0NERTIwMjU2RDM2QjM0NENDREIwNTIxOUE3NTZFQTE2RUNDQ0IxRERDNkNFMzg1ODUwNDk3NzlEMzUyMEE2OTA1MTYyQkQzQjU4NUNEQTY4NEQ2RDhBODlEMUJCQTRFMUI5MDEzRjBFQURBMEIzQTIzREU0RjY2QTE1MTAxMzZFMTgxQzlBQkEwRjk1OTQ2QzdBMUQ2NEEyNDJCNzU4N0VFQjJDRkZGN0FFM0MzNDRERjJGQjQ3RjQ2OERCMjgxNjMzMDMzN0U5N0JEQjJEMzFGODRFOTRENDBCMTkyNjc3OUI4NTA4QUREODI4ODg0Mzg1MTE4RDMyQUQ1OUU3QjVERTA1RjIxNDM1N0EwNUQ2MTRGOTc2MjdDODI2Q0RFQ0Q5MkYxQUVCMkQxNEEwM0VENzUyNTBEN0E0ODVEQjEyMjAwREM0MEIzQjFCMkI2OTI4NzM3NDMxQTc4MDYzM0I4NTAyQjFCNTgzQTBGOUY5M0YzNjUwRkM0QTBENDEwMjAzMDEwMDAxQTM4MjAxNzAzMDgyMDE2QzMwMTIwNjAzNTUxRDEzMDEwMUZGMDQwODMwMDYwMTAxRkYwMjAxMDAzMDFGMDYwMzU1MUQyMzA0MTgzMDE2ODAxNDcxMTU2N0M4QzhDOUJENzU1RDcyRDAzODE4NkE5REYzNzEyNDU0MEIzMDZGMDYwODJCMDYwMTA1MDUwNzAxMDEwNDYzMzA2MTMwM0MwNjA4MkIwNjAxMDUwNTA3MzAwMjg2MzA2ODc0NzQ3MDNBMkYyRjcyNjU3MDZGMkU2ODYxNzI2OTYzNjEyRTY3NzIyRjYzNjU3Mjc0NzMyRjQ4NjE3MjY5NjM2MTUyNkY2Rjc0NDM0MTMyMzAzMTM1MkU2MzcyNzQzMDIxMDYwODJCMDYwMTA1MDUwNzMwMDE4NjE1Njg3NDc0NzAzQTJGMkY2RjYzNzM3MDJFNjg2MTcyNjk2MzYxMkU2NzcyMzA0NDA2MDM1NTFEMjAwNDNEMzAzQjMwMzkwNjA0NTUxRDIwMDAzMDMxMzAyRjA2MDgyQjA2MDEwNTA1MDcwMjAxMTYyMzY4NzQ3NDcwM0EyRjJGNzI2NTcwNkYyRTY4NjE3MjY5NjM2MTJFNjc3MjJGNjQ2RjYzNzU2RDY1NkU3NDczMkY0MzUwNTMzMDEzMDYwMzU1MUQyNTA0MEMzMDBBMDYwODJCMDYwMTA1MDUwNzAzMDgzMDNBMDYwMzU1MUQxRjA0MzMzMDMxMzAyRkEwMkRBMDJCODYyOTY4NzQ3NDcwM0EyRjJGNjM3MjZDMkU2ODYxNzI2OTYzNjEyRTY3NzIyRjQ4NjE3MjY5NjM2MTUyNkY2Rjc0NDM0MTMyMzAzMTM1MkU2MzcyNkMzMDFEMDYwMzU1MUQwRTA0MTYwNDE0RDk1ODNFNTVEOEE3NzI4NTAxNDc5MzYxNTYzQzI4Njk3NTJFRTA3OTMwMEUwNjAzNTUxRDBGMDEwMUZGMDQwNDAzMDIwMTg2MzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMDM4MjAyMDEwMDAxQjY1MzY0NERGREI0QkNEMUY1RTRFRkZGMDJGODQzQzMwQTQyNTQwNkJDQUJCNUYxOTRFQjNERkRDMjNCQTY4QjJFNEJEMjRFNzY4RTA3MTZFM0Q5ODQzQjNBQzMyNTFBMTI5NDRDNDdEOEU2NTdERDAxMDcyQjU0M0IxRjE0RDE1MDI0MDYyMzMyMTM2N0EwRThGNjMyQzk0QTEzNjFGRUEyMTY5NUIzMDk0Q0Y4OEI5RURCNjVBNzAyOUJCNkFGNzc5Nzg0QkI2Q0M5MTFENUI5MjM1MDk3MTdFMjQ3QzM2RTE5NUMwNjUwQ0I2MTM2MkExNUQ3QzUwRTI5NzEyMkUwNjBDMkI1RkM3MTJBRUU0Q0JGQUQwOTQxM0FGQTYxNTA1NDkyRDIwNDQ2MkRBQkFDMzQ2QzAwNUY5MThDQzAzOTg4RTk5OEUyOEJFQ0M3NUVDMTE3QTZDRjQ3RTVFMDBENjk1NjdENjk1MTBEMjAyNzc2MkFCMEEzMDE0OURFM0YwOEM1QjVEQzRGMDYxRjJBQzUzMzM3QTdCQjAyODM2RkE0M0Q4M0JFNUE1MzA5OURCRDk2RkNFQTQ2MTYwMzRCMDcwRURFNUNGODFENUQyMUYzMENBNzcwODc5MzZCQzk1NjdFQzc0QUM2MjFBNzE2NDk5QTRCOEY5M0VFNjJFMTI2RjZBRDJDNTY2Qjk2QkY3QzZGQkFBNTgxQ0JFQjI0OTU5OTFEMzAxQTZFQTk4MzgyMzNERkUxMUQyRDRDNUQ5QkY0OTNFMTYyRTAzMDIzNDUzNjFENDgyQzlGNTJGNkU0QUFEREI5QTM1M0ZGRTJGQjEwMjVFOUEwQTdCRURCOUM0ODUyNEUzOEE5MjU5NDNERjg2RkMwQkIyNzFBQzQ0QkU1MzY5MUI2NjI5Mjk3N0RDN0RBOEZCOUExRDU4NzY0ODZFMTkxOUZDQUQ2MzU1NUY0MTAzNUEyM0JFQkVDMjAzQTMzMEI0QTg1MUEwRUI4MjEzQzE1MjlEOEM2RTM1Q0NDNEY4NEM3NkI1NTY1NDMxQTFDRjE0QTFGNzk5QkIzMTc1REI1MzA2QzNDNDNDMThCN0IzNDE5RDkyNUY4NUQ4OEFBQ0M2MEI5NTM1NzFEQzkyODFBNzJDNjdFMTcyRUY3RTFGOEMyQUU2OUJEQUQ5QzkxOTJBNjkyRDcyMTkyMEZENkE2OEQ2NkU3RThDN0FERUQ5NDQ1NjY0NUMyREU5NUVENkQxNkY1NjlERTg2OUMzMUE3OEFEMjkxMTZDOEIyOUZDNzg5REQyN0U3ODQ0RjgyREZGNjVCQzJENEU5MzE2MTUwQzRCOTdGQjA3NTgyRjU1NTRFNDIzMTgyMDNDNjMwODIwM0MyMDIwMTAxMzA4MUQ4MzA4MUMzMzEwQjMwMDkwNjAzNTUwNDA2MTMwMjQ3NTIzMTJCMzAyOTA2MDM1NTA0MEEwQzIyNDc3MjY1NjU2QjIwNTU2RTY5NzY2NTcyNzM2OTc0Njk2NTczMjA0RTY1NzQ3NzZGNzI2QjIwMjg0NzU1NkU2NTc0MjkzMTE4MzAxNjA2MDM1NTA0NjEwQzBGNTY0MTU0NDc1MjJEMzAzOTM5MzAzMjM4MzIzMjMwMzEzNzMwMzUwNjAzNTUwNDBCMEMyRTQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA0MzQxMzEzNDMwMzIwNjAzNTUwNDAzMEMyQjQ4NDE1MjQ5NDM0MTIwNTE3NTYxNkM2OTY2Njk2NTY0MjA1NDY5NkQ2NTIwNTM3NDYxNkQ3MDY5NkU2NzIwNTI1MzQxMjA1Mzc1NjI0MzQxMjA1MjMxMDIxMDBBMEIzNzYyNDY2Q0QwOUIzQTJCOUU1RjUwNzdFRTdEMzAwRDA2MDk2MDg2NDgwMTY1MDMwNDAyMDEwNTAwQTA4MjAxQkUzMDFBMDYwOTJBODY0ODg2RjcwRDAxMDkwMzMxMEQwNjBCMkE4NjQ4ODZGNzBEMDEwOTEwMDEwNDMwMUMwNjA5MkE4NjQ4ODZGNzBEMDEwOTA1MzEwRjE3MEQzMjMxMzAzNDMyMzEzMTMxMzQzODMxMzI1QTMwMkQwNjA5MkE4NjQ4ODZGNzBEMDEwOTM0MzEyMDMwMUUzMDBEMDYwOTYwODY0ODAxNjUwMzA0MDIwMTA1MDBBMTBEMDYwOTJBODY0ODg2RjcwRDAxMDEwQjA1MDAzMDJGMDYwOTJBODY0ODg2RjcwRDAxMDkwNDMxMjIwNDIwODRGNDBCM0ExNkNFRUNBM0E0OTcwRjlBOTAwOTI0NzMxNUFCQUI1MUUyNzBBNDVDOEREMjAyQzFEMUVFNUYzRDMwODIwMTIwMDYwQjJBODY0ODg2RjcwRDAxMDkxMDAyMkYzMTgyMDEwRjMwODIwMTBCMzA4MjAxMDczMDgyMDEwMzA0MjBDQTM0MTk4QjA1QzExQjQ0MkJGQTE1OEU0NDg0MzBEQjMyMEVBRUNBRkQzRkYyNkE3MjFGQ0UxNDhDRENCNzdCMzA4MURFMzA4MUM5QTQ4MUM2MzA4MUMzMzEwQjMwMDkwNjAzNTUwNDA2MTMwMjQ3NTIzMTJCMzAyOTA2MDM1NTA0MEEwQzIyNDc3MjY1NjU2QjIwNTU2RTY5NzY2NTcyNzM2OTc0Njk2NTczMjA0RTY1NzQ3NzZGNzI2QjIwMjg0NzU1NkU2NTc0MjkzMTE4MzAxNjA2MDM1NTA0NjEwQzBGNTY0MTU0NDc1MjJEMzAzOTM5MzAzMjM4MzIzMjMwMzEzNzMwMzUwNjAzNTUwNDBCMEMyRTQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA0MzQxMzEzNDMwMzIwNjAzNTUwNDAzMEMyQjQ4NDE1MjQ5NDM0MTIwNTE3NTYxNkM2OTY2Njk2NTY0MjA1NDY5NkQ2NTIwNTM3NDYxNkQ3MDY5NkU2NzIwNTI1MzQxMjA1Mzc1NjI0MzQxMjA1MjMxMDIxMDBBMEIzNzYyNDY2Q0QwOUIzQTJCOUU1RjUwNzdFRTdEMzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMDQ4MjAxMDA1OEM0MTdCNjU3MjAzRDM5Nzg0NDNFMTczNkFCQkY5Q0U4MjYyNjQ5MkQyMjQ2NUYyMDY0NUY1QkNGNUYxRDg4Njc0REJCMTI0MTU5RDdCNDBCNDYzNDY5NzBCOTA4RDIzNUI1QjA0Qjc2QjM2MTc5Nzc4NDdGNTA3OUZFREMzMTNDMDQ0MUUyNDU4ODE5NjFGODM0MjAxMDcwQjQ0RDhBOTY0NUVBNUFFQUI0NEQ4MEI0REQyODlFNTdDMUQ5OTVBRjBGNzlFMkRCNDFCMkE0NTVGRDY1NTVFOEMwRjU3NzA0MkU3MTg4REQzOEQyMjc4Nzg4Nzc3MjU0MTAwNTQ5OEQ0RDc2MTA3NDFFRkIwMDIwNkRBQ0IxM0UzMzVGNkUxMTdFMEEwODIwODQ2QjMxRDUzQTYwRkZCMzA1NjBCMDYzQ0Q4ODkyNzgyNTVEOTJCN0YzRUNGQ0I4RDNCMThBQjkxOTA5MzM0NjMzNDcwM0RDM0NCODlDMjk1MjdBNDdFNUVBQTI0ODZDMTkyREE1RkQ3OEY3QTBBRDc1OUI0NzdCQUQ1RDc5REQ0QTdCMUU3QkQ0MTc5OTJBNEFEM0I4RjYyMTM0Q0Y4MzQzODBBRDI3OEY2M0RBRjU2MDI0QzkzRUIyNTdFNUVCNjcxQURFNTEyRUZCMUExQjBGRDRCMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD4KL0J5dGVSYW5nZSBbMCA5NDE0IDY2MjQ4IDE5MjE2XSAgICAgICAgICAgICAgICAKPj4KZW5kb2JqCjIgMCBvYmoKPDwKL1R5cGUgL1BhZ2UKL1BhcmVudCAzIDAgUgovUmVzb3VyY2VzIDYgMCBSCi9Db250ZW50cyA0IDAgUgovTWVkaWFCb3ggWzAgMCA1OTUgODQyXQovQW5ub3RzIFsyMSAwIFJdCj4+CmVuZG9iagoyMyAwIG9iago8PAovTGVuZ3RoIDYyMgovVHlwZSAvWE9iamVjdAovU3VidHlwZSAvRm9ybQovUmVzb3VyY2VzIDw8Ci9FeHRHU3RhdGUgMjQgMCBSCi9Gb250IDI1IDAgUgovWE9iamVjdCA8PAovSW0xIDI2IDAgUgo+Pgo+PgovRm9ybVR5cGUgMQovQkJveCBbMC4wIDAuMCAzMDAuNTg4MDcgMjUuOTg2NzU1XQo+PgpzdHJlYW0NCi9EZXZpY2VSR0IgY3MKMSAxIDEgc2MKMCAxLjU5MzQgMjQ0LjggMjIuOCByZQpmCi9nczEgZ3MKQlQKL0YxIDYgVGYKMCAwIDAgc2MKMTAuMTcxOSBUTAoxLjIgMTcuMTkzNCBUZAowIDAgVGQKKAM9A0wDWwNOA0YDTwNBAAMDWgNVA1QDSANKA0gDVgNGA1EDUQNCA1IDVAADA0YDVQNhAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADKSBUagpUKgowIDAgVGQKKAMtA1EDSgNWA1QDUQNMA1IDRANGAB0AAwAVABMAFQAUABEAEwAXABEAEwAbAAMAFQATAB0AFAATAB0AFgAYAAMAXCgAXCgANgA3AAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMpIFRqClQqCkVUCi9nczIgZ3MKcQpxCjU1Ljc4ODEgMCAwIDI1Ljk4NjggMjQ0LjggMCBjbQovSW0xIERvClEKMSAwIDAgMSA1NS43ODgxIDI1Ljk4NjggY20KUQoNCmVuZHN0cmVhbQplbmRvYmoKMjQgMCBvYmoKPDwKL2dzMSAyNyAwIFIKL2dzMiAyOCAwIFIKPj4KZW5kb2JqCjI1IDAgb2JqCjw8Ci9GMSAyOSAwIFIKPj4KZW5kb2JqCjI2IDAgb2JqCjw8Ci9MZW5ndGggOTk2MgovVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL0ZpbHRlciAvRENURGVjb2RlCi9CaXRzUGVyQ29tcG9uZW50IDgKL1dpZHRoIDIzNAovSGVpZ2h0IDEwOQovQ29sb3JTcGFjZSAvRGV2aWNlUkdCCj4+CnN0cmVhbQ0K/9j/4AAQSkZJRgABAQEBLgEuAAD/7QBAUGhvdG9zaG9wIDMuMAA4QklNBAQAAAAAACQcAjcACDIwMjEwNDIxHAIAAAIAABwCPAALMTM1NzI0LTEzNTf/4RPeaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA0LjQuMC1FeGl2MiI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOmlwdGNFeHQ9Imh0dHA6Ly9pcHRjLm9yZy9zdGQvSXB0YzR4bXBFeHQvMjAwOC0wMi0yOS8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6cGx1cz0iaHR0cDovL25zLnVzZXBsdXMub3JnL2xkZi94bXAvMS4wLyIgeG1sbnM6R0lNUD0iaHR0cDovL3d3dy5naW1wLm9yZy94bXAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBkZj0iaHR0cDovL25zLmFkb2JlLmNvbS9wZGYvMS4zLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDozZmNhOThlMy1iZjcxLTUwNDctOTEwZi1lY2NhZWIxYTNlMjUiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTc1OGE0YzQtMDRhOS00ZmIzLTljNWUtMDYzYzVmMDUyNGY2IiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InV1aWQ6MWRmMGZhYjEtYjhiZS1jYjRiLTlmMmMtZWY0ZWIxMWExZjVhIiBHSU1QOkFQST0iMi4wIiBHSU1QOlBsYXRmb3JtPSJMaW51eCIgR0lNUDpUaW1lU3RhbXA9IjE2MTkwMDI2NDU0ODU5NDEiIEdJTVA6VmVyc2lvbj0iMi4xMC44IiBkYzpGb3JtYXQ9ImltYWdlL2pwZWciIHBkZjpQcm9kdWNlcj0iVG91Y2hVcCA3LjAiIHBob3Rvc2hvcDpDb2xvck1vZGU9IjQiIHhtcDpDcmVhdGVEYXRlPSIyMDIxLTA0LTIwVDE0OjAxKzAzOjAwIiB4bXA6Q3JlYXRvclRvb2w9IkdJTVAgMi4xMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMS0wNC0yMFQxNDowNTo0MiswMzowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjEtMDQtMjBUMTQ6MDU6NDIrMDM6MDAiPiA8aXB0Y0V4dDpMb2NhdGlvbkNyZWF0ZWQ+IDxyZGY6QmFnLz4gPC9pcHRjRXh0OkxvY2F0aW9uQ3JlYXRlZD4gPGlwdGNFeHQ6TG9jYXRpb25TaG93bj4gPHJkZjpCYWcvPiA8L2lwdGNFeHQ6TG9jYXRpb25TaG93bj4gPGlwdGNFeHQ6QXJ0d29ya09yT2JqZWN0PiA8cmRmOkJhZy8+IDwvaXB0Y0V4dDpBcnR3b3JrT3JPYmplY3Q+IDxpcHRjRXh0OlJlZ2lzdHJ5SWQ+IDxyZGY6QmFnLz4gPC9pcHRjRXh0OlJlZ2lzdHJ5SWQ+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDpjaGFuZ2VkPSIvIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjE3OGE0NDA2LWIwOWEtNDUxMy05MDFiLTRhYWU3ZTU5MDViMSIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIyLjMgKE1hY2ludG9zaCkiIHN0RXZ0OndoZW49IjIwMjEtMDQtMjBUMTQ6MDU6MDMrMDM6MDAiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNvbnZlcnRlZCIgc3RFdnQ6cGFyYW1ldGVycz0iZnJvbSBhcHBsaWNhdGlvbi9wZGYgdG8gaW1hZ2UvanBlZyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iZGVyaXZlZCIgc3RFdnQ6cGFyYW1ldGVycz0iY29udmVydGVkIGZyb20gYXBwbGljYXRpb24vcGRmIHRvIGltYWdlL2pwZWciLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDpjaGFuZ2VkPSIvIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmRiYmU0NDNmLTE3ODktNGNjMi1hYmQzLTBhM2U2MzZlNjgzNyIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIyLjMgKE1hY2ludG9zaCkiIHN0RXZ0OndoZW49IjIwMjEtMDQtMjBUMTQ6MDU6MDMrMDM6MDAiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDpjaGFuZ2VkPSIvIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjgxYTI1ZTA3LTBjZWEtNDAxOS05ODYxLTAzNGM3MjljZWIzNSIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIyLjMgKE1hY2ludG9zaCkiIHN0RXZ0OndoZW49IjIwMjEtMDQtMjBUMTQ6MDU6NDIrMDM6MDAiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDpjaGFuZ2VkPSIvIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmI1NGE2MTM0LWQ0ZTktNDFlNS05MmEzLTEyZTUyMDk2NDFkOSIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iR2ltcCAyLjEwIChMaW51eCkiIHN0RXZ0OndoZW49IiswMzowMCIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmRvY3VtZW50SUQ9InV1aWQ6MWRmMGZhYjEtYjhiZS1jYjRiLTlmMmMtZWY0ZWIxMWExZjVhIiBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjE3OGE0NDA2LWIwOWEtNDUxMy05MDFiLTRhYWU3ZTU5MDViMSIgc3RSZWY6b3JpZ2luYWxEb2N1bWVudElEPSJ1dWlkOjFkZjBmYWIxLWI4YmUtY2I0Yi05ZjJjLWVmNGViMTFhMWY1YSIvPiA8cGx1czpJbWFnZVN1cHBsaWVyPiA8cmRmOlNlcS8+IDwvcGx1czpJbWFnZVN1cHBsaWVyPiA8cGx1czpJbWFnZUNyZWF0b3I+IDxyZGY6U2VxLz4gPC9wbHVzOkltYWdlQ3JlYXRvcj4gPHBsdXM6Q29weXJpZ2h0T3duZXI+IDxyZGY6U2VxLz4gPC9wbHVzOkNvcHlyaWdodE93bmVyPiA8cGx1czpMaWNlbnNvcj4gPHJkZjpTZXEvPiA8L3BsdXM6TGljZW5zb3I+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/eHBhY2tldCBlbmQ9InciPz7/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCABtAOoDAREAAhEBAxEB/8QAHAABAAIDAQEBAAAAAAAAAAAAAAQFAQIDBgcJ/8QASxAAAQMCAwMHBwgGBwkAAAAAAgABAwQFERITBiExFCJBUVJhkRUyVHGSk7EWIzN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 \ No newline at end of file diff --git a/eseal/src/test/resources/detached-sign-case/signed-detached-athens-si-img-b64-pdf.txt b/eseal/src/test/resources/detached-sign-case/signed-detached-athens-si-img-b64-pdf.txt new file mode 100644 index 0000000..81b6be1 --- /dev/null +++ b/eseal/src/test/resources/detached-sign-case/signed-detached-athens-si-img-b64-pdf.txt @@ -0,0 +1 @@ +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KZW5kb2JqCjE0IDAgb2JqCjMyOTYKZW5kb2JqCjE1IDAgb2JqCihoZWxsb3dvcmxkKQplbmRvYmoKMTYgMCBvYmoKKE1hYyBPUyBYIDEwLjEzLjEgUXVhcnR6IFBERkNvbnRleHQpCmVuZG9iagoxNyAwIG9iagooVGV4dEVkaXQpCmVuZG9iagoxOCAwIG9iagooRDoyMDIwMTAyNTEwMjgyMlowMCcwMCcpCmVuZG9iagoxOSAwIG9iagooKQplbmRvYmoKMjAgMCBvYmoKWyBdCmVuZG9iagoxIDAgb2JqCjw8IC9UaXRsZSAxNSAwIFIgL1Byb2R1Y2VyIDE2IDAgUiAvQ3JlYXRvciAxNyAwIFIgL0NyZWF0aW9uRGF0ZSAxOCAwIFIgL01vZERhdGUKMTggMCBSIC9LZXl3b3JkcyAxOSAwIFIgL0FBUEw6S2V5d29yZHMgMjAgMCBSID4+CmVuZG9iagp4cmVmCjAgMjEKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDA4MzE4IDAwMDAwIG4gCjAwMDAwMDAyNDIgMDAwMDAgbiAKMDAwMDAwMzk2OSAwMDAwMCBuIAowMDAwMDAwMDIyIDAwMDAwIG4gCjAwMDAwMDAyMjMgMDAwMDAgbiAKMDAwMDAwMDM0NiAwMDAwMCBuIAowMDAwMDAzOTM0IDAwMDAwIG4gCjAwMDAwMDQxMDIgMDAwMDAgbiAKMDAwMDAwMDQ0MyAwMDAwMCBuIAowMDAwMDAzOTEzIDAwMDAwIG4gCjAwMDAwMDQwNTIgMDAwMDAgbiAKMDAwMDAwNDQ2OSAwMDAwMCBuIAowMDAwMDA0NzIxIDAwMDAwIG4gCjAwMDAwMDgxMDcgMDAwMDAgbiAKMDAwMDAwODEyOCAwMDAwMCBuIAowMDAwMDA4MTU3IDAwMDAwIG4gCjAwMDAwMDgyMTAgMDAwMDAgbiAKMDAwMDAwODIzNyAwMDAwMCBuIAowMDAwMDA4Mjc5IDAwMDAwIG4gCjAwMDAwMDgyOTggMDAwMDAgbiAKdHJhaWxlcgo8PCAvU2l6ZSAyMSAvUm9vdCAxMSAwIFIgL0luZm8gMSAwIFIgL0lEIFsgPDdmMTkzYTUzZmRiMzEwYzkwMmUyNzRiODdlYjgzZGE3Pgo8N2YxOTNhNTNmZGIzMTBjOTAyZTI3NGI4N2ViODNkYTc+IF0gPj4Kc3RhcnR4cmVmCjg0NjIKJSVFT0YKDQoxMSAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovUGFnZXMgMyAwIFIKL0Fjcm9Gb3JtIDw8Ci9GaWVsZHMgWzIxIDAgUl0KL1NpZ0ZsYWdzIDMKPj4KPj4KZW5kb2JqCjIxIDAgb2JqCjw8Ci9GVCAvU2lnCi9UeXBlIC9Bbm5vdAovU3VidHlwZSAvV2lkZ2V0Ci9GIDEzMgovVCAoU2lnbmF0dXJlMSkKL1YgMjIgMCBSCi9QIDIgMCBSCi9SZWN0IFswLjAgODE5LjIgMzEyLjAgODQyLjBdCi9BUCA8PAovTiAyMyAwIFIKPj4KPj4KZW5kb2JqCjIyIDAgb2JqCjw8Ci9UeXBlIC9TaWcKL0ZpbHRlciAvQWRvYmUuUFBLTGl0ZQovU3ViRmlsdGVyIC9FVFNJLkNBZEVTLmRldGFjaGVkCi9NIChEOjIwMjEwNDA4MjAxMDM1KzAzJzAwJykKL0NvbnRlbnRzIDwzMDgyNDhBNDA2MDkyQTg2NDg4NkY3MEQwMTA3MDJBMDgyNDg5NTMwODI0ODkxMDIwMTAxMzEwRjMwMEQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAxMDUwMDMwMEIwNjA5MkE4NjQ4ODZGNzBEMDEwNzAxQTA4MjE1RDIzMDgyMDgzMDMwODIwNjE4QTAwMzAyMDEwMjAyMTA3MzdGNUYxRTA2QzU0OTBCNUU3NjY3NUJDMjIzMzI1NTMwMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTBCMDUwMDMwODFCQzMxMEIzMDA5MDYwMzU1MDQwNjEzMDI0NzUyMzEyQjMwMjkwNjAzNTUwNDBBMEMyMjQ3NzI2NTY1NkIyMDU1NkU2OTc2NjU3MjczNjk3NDY5NjU3MzIwNEU2NTc0Nzc2RjcyNkIyMDI4NDc1NTZFNjU3NDI5MzExODMwMTYwNjAzNTUwNDYxMEMwRjU2NDE1NDQ3NTIyRDMwMzkzOTMwMzIzODMyMzIzMDMxMzczMDM1MDYwMzU1MDQwQjBDMkU0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNDM0MTMxMkQzMDJCMDYwMzU1MDQwMzBDMjQ0ODQxNTI0OTQzNDEyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU2MTZDMjA0MzZDNjk2NTZFNzQyMDUzNzU2MjQzNDEyMDUyMzEzMDFFMTcwRDMyMzAzMTMxMzEzOTMwMzczMDM3MzEzODVBMTcwRDMyMzEzMTMxMzEzOTMwMzczMDM3MzEzODVBMzA4MUQyMzEwQjMwMDkwNjAzNTUwNDA2MTMwMjQ3NTIzMTE1MzAxMzA2MDM1NTA0MDcwQzBDNTQ2ODY1NzM3MzYxNkM2RjZFNjk2QjY5MzEyRDMwMkIwNjAzNTUwNDBBMEMyNDQxNzI2OTczNzQ2Rjc0NkM2NTIwNTU2RTY5NzY2NTcyNzM2OTc0NzkyMDZGNjYyMDU0Njg2NTczNzM2MTZDNkY2RTY5NkI2OTMxMTIzMDEwMDYwMzU1MDQwQjBDMDk0OTU0MjA0MzY1NkU3NDY1NzIzMTE3MzAxNTA2MDM1NTA0MDQwQzBFNDQ2RjZCNjk2RDYxNzM3NDY5NkI2OTY0Njk3MzMxMTUzMDEzMDYwMzU1MDQyQTBDMEM0NDZGNkI2OTZENjE3Mzc0Njk2QjZGNzMzMTEzMzAxMTA2MDM1NTA0MDUxMzBBMzIzMzM4MzkzODM2MzYzNDM3MzEzMTI0MzAyMjA2MDM1NTA0MDMwQzFCNDQ2RjZCNjk2RDYxNzM3NDY5NkI2RjczMjA0NDZGNkI2OTZENjE3Mzc0Njk2QjY5NjQ2OTczMzA4MjAxMjIzMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwMTA1MDAwMzgyMDEwRjAwMzA4MjAxMEEwMjgyMDEwMTAwQjU5RUM0OUVBRTgyNTJBRjYyMURDREYwQTkyRTcxQkVDMTgxMzAyMkNBNUE5MkRCMDZEOTBCQ0I4QzMzNjMzNThBNUJCRjQ4OTk4MjNCQkQxNDdBRDlFNDg2RDVCREMxRDUwQzU5MjJCREQ1MURFQzgwQUE1NjZFQjg0RDg5N0E2NkFDMTE1OTA4Q0VBQkJBQTg5MjUzNDIwMTA0N0QyQUQyQjFFOTA5NDVDNDExNzc0MEY4N0ZCQUI2RjYxNzcxQjk3QkJBNUI2MEJDQkJCQjlDQkY3Q0Y1QTkyRUUwNTYyODQ5NEJGNDAxNzEzOTU5MkFCMDhGM0YzQTZEOTEzM0IyMDJBODQ1RDlEODAyNjlFNjg5MjAzM0ExQUY3REU4Qjk4RDI1RTcyNkM3NUFBNkVGOTlCMDc5NjJBODRFQjI1QzdGN0JDM0JFNEY3Q0I2Qzk4QThBMDcwN0UxNjM2ODM1NDQ3OUNCRjQzMDdEOUQzODBBNTczOEQ4NjZDQzZGRENCODFEOTUyRUQ5MEZDRDY5MTA4NUY2REQ5MUYxMEE3QTY3OTQ2QjI5MTE1QzA2MjQ5N0ZERDlDNUUwQzlBOEFBRDc1QTEyQTMzQUIxQUE1RjUwMUFCMTgyRTJCQ0Q0RDFCNkNDMzg4MTExRUY5NzlGM0M3MzVEMjVCMjQxNzkwMjAzMDEwMDAxQTM4MjAzMTQzMDgyMDMxMDMwMUYwNjAzNTUxRDIzMDQxODMwMTY4MDE0QzNFN0FDNUFDMTVGMzk3OEUwMTYzMEYxRDU4RTVENUFDREZBNjk0RDMwODE4NzA2MDgyQjA2MDEwNTA1MDcwMTAxMDQ3QjMwNzkzMDUwMDYwODJCMDYwMTA1MDUwNzMwMDI4NjQ0Njg3NDc0NzAzQTJGMkY3MjY1NzA2RjJENzM3NDY3MkU2ODYxNzI2OTYzNjEyRTY3NzIyRjYzNjU3Mjc0NzMyRjQ4NjE3MjY5NjM2MTQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU2MTZDNDM2QzY5NjU2RTc0NTM3NTYyNDM0MTUyMzEyRTYzNjU3MjMwMjUwNjA4MkIwNjAxMDUwNTA3MzAwMTg2MTk2ODc0NzQ3MDNBMkYyRjZGNjM3MzcwMkQ3Mzc0NjcyRTY4NjE3MjY5NjM2MTJFNjc3MjMwODFGMzA2MDM1NTFEMjAwNDgxRUIzMDgxRTgzMDA5MDYwNzA0MDA4QkVDNDAwMTAyMzA4MUNCMDYwQzJCMDYwMTA0MDE4MUNGMTEwMTAxMDQwMjMwODFCQTMwMzAwNjA4MkIwNjAxMDUwNTA3MDIwMTE2MjQ2ODc0NzQ3MDczM0EyRjJGNzI2NTcwNkYyRTY4NjE3MjY5NjM2MTJFNjc3MjJGNjQ2RjYzNzU2RDY1NkU3NDczMkY0MzUwNTMzMDgxODUwNjA4MkIwNjAxMDUwNTA3MDIwMjMwNzkwQzc3NTQ2ODY5NzMyMDUxNzU2MTZDNjk2NjY5NjU2NDIwNDM2NTcyNzQ2OTY2Njk2MzYxNzQ2NTIwNjg2MTczMjA2MjY1NjU2RTIwNDk3MzczNzU2NTY0MjA2Mjc5MjA3NDY4NjUyMDUxNTQ1MzUwMjAyMjQ3NzI2NTY1NkIyMDU1NkU2OTc2NjU3MjczNjk3NDY5NjU3MzIwNEU2NTc0Nzc2RjcyNkIyMDI4NDc1NTZFNjU3NDI5MjIyMDc3Njk3NDY4MjA1NjQxNTQyMDZFNzU2RDYyNjU3MjIwNDU0QzMwMzkzOTMwMzIzODMyMzIzMDMwMEQwNjBCMkIwNjAxMDQwMTgxQ0YxMTAxMDEwODMwMjAwNjAzNTUxRDI1MDQxOTMwMTcwNjBBMkIwNjAxMDQwMTgyMzcwQTAzMEMwNjA5MkE4NjQ4ODZGNzJGMDEwMTA1MzA4MUNCMDYwODJCMDYwMTA1MDUwNzAxMDMwNDgxQkUzMDgxQkIzMDA4MDYwNjA0MDA4RTQ2MDEwMTMwMDgwNjA2MDQwMDhFNDYwMTA0MzAxMzA2MDYwNDAwOEU0NjAxMDYzMDA5MDYwNzA0MDA4RTQ2MDEwNjAxMzA4MThGMDYwNjA0MDA4RTQ2MDEwNTMwODE4NDMwNDAxNjNBNjg3NDc0NzA3MzNBMkYyRjc3Nzc3NzJFNjg2MTcyNjk2MzYxMkU2NzcyMkY2NDZGNjM3NTZENjU2RTc0NzMyRjUxNzU2MTZDNjk2NjY5NjU2NDRFNjE3NDc1NzI2MTZDNTA0NDUzMkQ0NTRFMkU3MDY0NjYxMzAyNjU2RTMwNDAxNjNBNjg3NDc0NzA3MzNBMkYyRjc3Nzc3NzJFNjg2MTcyNjk2MzYxMkU2NzcyMkY2NDZGNjM3NTZENjU2RTc0NzMyRjUxNzU2MTZDNjk2NjY5NjU2NDRFNjE3NDc1NzI2MTZDNTA0NDUzMkQ0NTRDMkU3MDY0NjYxMzAyNjU2QzMwNEUwNjAzNTUxRDFGMDQ0NzMwNDUzMDQzQTA0MUEwM0Y4NjNENjg3NDc0NzAzQTJGMkY2MzcyNkMyRDczNzQ2NzJFNjg2MTcyNjk2MzYxMkU2NzcyMkY0ODYxNzI2OTYzNjE0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNjE2QzQzNkM2OTY1NkU3NDUzNzU2MjQzNDE1MjMxMkU2MzcyNkMzMDFEMDYwMzU1MUQwRTA0MTYwNDE0MjlGRTRGQ0I3NEZGREM5ODg0MkZGNDc2MTM4OUI1RUY1NUNDQkRBRjMwMEUwNjAzNTUxRDBGMDEwMUZGMDQwNDAzMDIwNkMwMzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMDM4MjAyMDEwMDIxMzM2OTFGOEEwMjkxNTUwREIzMUE0MTNDNDI1MENCQjc5NUU4OTMzOTY0NThDMEU1QkM0QTFDMEJENTJFRDBFNEY4MTI0RTcwQjU0RjFBNDQ5RDE0M0YyNjUwMTI1QTlEMTRGNkQ0QTZDQzMyQUEzREMzMjExQjUxMDMyNTE0NjBFQjNBODI3N0U5MEU5NEVFN0IxNUNCQUY3RkExMkQxM0ExNUY0QkI3MTIyNTgwNEM4NjQwMEUyNEEyNjMzOTRBN0E0QUNFREYzNEJDMUM5OTE2QkE4OEE3MEIzOUYzQjBFQTA4NDU4MzdEREI0Q0QyNDc0NkFGM0VDNDM4MTFCMTNDMTUwMzUyQjQyQTg4REQyMUY4RUE4NkUyRDk1RERBNEVBMTg2RDUwRUZCMDY0MUIzQjczQTk5NjU2RTc5OUQzQTlGNkM5OUU0RjhFOUZDNThDODM1MTAxMTkyNjkzQzE5REQyRTU4QzMwNzUyQzE4NjIyQzREOEUyMkY4MjQ5MkJGQkE0MTA2MzBFMUI3RUIzNTVERDBERkRCOTI5QzUzMDIyODc1NTE5ODkxRTlBNDg2RTk2OTU0NkZBNTNFNTY4NDUyRDdDODAwMTcwQUI0QkJDQzc2N0VGODlGOUVDOUI1RjVGMzJGQjQwMzg2MEFFMTZCM0Q1QjYzRTkwRjRCNkUyNEJBNjZDQzI4MzFEQ0JDRTkyOTlDOEU2MjZCMDJCNTU0NTRBMTI5RTAzODcyQUE4RkJERjMxRjZBQUMzMTkyRDJDQTM0RTA5RTUzOTUxOUU5Q0JGNjNGMkE1QTBCODJCMEU5N0QwQkNCRTA4NEU3NTY4MkYwOUQ3NTY5QUMxNUE1MURFMDZCREZBMDQ5MEY3OTlCMjk4NzY4Q0M4MDU1MEFGRTFFODU4OTc1MzA3NkVGRjY4MzJDM0NFOUUwMzY1RDA5MjkzQkIyNEVFQzM2MTk2MDU0RTNDNjJFN0NEODQ2Qzc2MjQ1MUE5QTZEMDdBNTgwQjg4NkI2RDYyRDQ5MjBBNTkyMDlCOEUyOTExQjg3QzVFMzlFOUM4MjA4MkVCMDUyRkI2ODU4NjQ5RDEwN0YxRjA0RjYyNDQxNzE4RUZBRjgyNDdFMUY3REE2MjQ5OTIxRTNCRDU4NUExODM0QzdDMDFGQjI4NDIzNUE5RkYzRUM0M0QzREU4QkNGRDA0NUFGMjZFQ0E0MjBCM0NEMTU5MzBCRDQ4NjE0OTEwOTIxOUE3M0U0NTRBNTVFQ0VDOUEyMzM1OTA2RUVBQTFEM0NBNUI4NkEzMzQ1NERCMUVERTdCODk0RTJFRTkzNzI4M0U0N0JEOUE0QTREMzMzRjZDN0VGMjNEQ0YzMDgyMDc1NTMwODIwNTNEQTAwMzAyMDEwMjAyMTA1OEI3NUJDQzNGMjhCMDg2Qjg3MjRENTRBQ0JBOUZFODMwMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTBCMDUwMDMwODFBRDMxMEIzMDA5MDYwMzU1MDQwNjEzMDI0NzUyMzEwRjMwMEQwNjAzNTUwNDA3MEMwNjQxNzQ2ODY1NkU3MzMxNDQzMDQyMDYwMzU1MDQwQTBDM0I0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNDM2NTcyNzQyRTIwNDE3NTc0Njg2RjcyNjk3NDc5MzE0NzMwNDUwNjAzNTUwNDAzMEMzRTQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA1MjZGNkY3NDQzNDEyMDMyMzAzMTM1MjAyRDIwNTQ2NTczNzQzMDFFMTcwRDMyMzAzMDM3MzAzNzMwMzkzMjMwMzQzODVBMTcwRDMzMzUzMDM3MzAzNDMwMzkzMjMwMzQzODVBMzA4MUJDMzEwQjMwMDkwNjAzNTUwNDA2MTMwMjQ3NTIzMTJCMzAyOTA2MDM1NTA0MEEwQzIyNDc3MjY1NjU2QjIwNTU2RTY5NzY2NTcyNzM2OTc0Njk2NTczMjA0RTY1NzQ3NzZGNzI2QjIwMjg0NzU1NkU2NTc0MjkzMTE4MzAxNjA2MDM1NTA0NjEwQzBGNTY0MTU0NDc1MjJEMzAzOTM5MzAzMjM4MzIzMjMwMzEzNzMwMzUwNjAzNTUwNDBCMEMyRTQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA0MzQxMzEyRDMwMkIwNjAzNTUwNDAzMEMyNDQ4NDE1MjQ5NDM0MTIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTYxNkMyMDQzNkM2OTY1NkU3NDIwNTM3NTYyNDM0MTIwNTIzMTMwODIwMjIyMzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMDEwNTAwMDM4MjAyMEYwMDMwODIwMjBBMDI4MjAyMDEwMEJBN0MwNEVDQUNBMTIxQTMwM0MzOEVEMTk1N0Q0RTNEOTEzNThBNjE2RkRFNEM1NzY0MTMyOTkwRjZFNDM3N0U4NkY3RTZFNUVEREFFMjFDRkI3RUJERUQwQjI5MUU3NTMyQzkyNjE2QkFBM0RDQ0U2QkIwMDU4MUY5MjIzNTE5NkNEMzVFQzNGRjczMjQwRkI1NUNFNjhBRjM0RUIzRkI4RjZFNEUwRDZGNENBODYyQzExQUNDOUYwREE2RDE5MzlGNDdENzVCNzdDRDU4M0FCMTIzQ0YyMkI0M0Y2ODA4RjVGODJFRDI0Q0E5ODg3OEZFRDM5NzUwMDFDMDdGNTE3MjZDNTYzNkUxOTY3QkM4Mjg3RThCMDZDNTNENzdFNTVGODkzNTNENjFGMjY3QTg0OTFFNkRDMjI3Q0YyNTM3ODA5MENEOTExOEI1NUVDRDYzMjVGN0U2QjQ5QzExQzk0NEUzRUNBRkExQjBGMUY5NkJGRjIxRkI2Mjc2RDE2OTQ2Mjk1QURBQjYxRDU0NkZENTgyMTU1RDJERDUxN0Q1NUQ4QTZEMTk1MTE1NzAyNzBDNTNDQ0IxNzkyREI1MEI0RDU5QjA3OEI4QTE0QUExNENDREZDRTk1QTRBMDExMkIwNDczOUZDMEQyRTdGMTBFMkMxMEI5RUFCQzM4QTdEOUE5Mjg2MDcyMTY0MDUyNzBENjg1Njg2NDI1MUIzRDgxNTU4MDM4RDczN0ZBM0FBN0M0MEZDQTBEMEJDQjc5MTUwQTkxNzYxRDQ3MTI4Mzc3MTM2QUIwQTAzRjMzMjNFQjI1NzQ0QzFBQzE2N0VCNzkwNDJFMkRGNUNCRDEwNjk1QkFFQkU5OTk5NUYwMEUwMjI4Q0VBNTg4RTBFQ0QyNjM3OUE3QUY1QzM1NTY5NkQ1QTQ1NjM3QzY4RjZDNkQ4QzhDNzgyQjhFNEVBMEE2N0I3RjdCRjAwM0QwQTVDNkJCNEJDQ0EwMThGNDAxQkUxMjVGRDEyNkE5NkQxQkE1RTY3ODU4QzU1REMwMkNEMTg5MDAxRDFDRTMwMUI3OUU0NzJDNkI2Qjk4NzZGMjJENTJCM0ZCRDdDNjc2NkI3MEJGRjBERERCMUFEODZBMTFCODVGMURGNDc3OUE5QTgzOTFDODYzRUVDRUU1OEVDMUYyNzhEQUE4REMxNEU0NzI2MTcxMENERDk2NDFGMjEyNTM2NkU0OEJGMjlFNkE4QUM2NDNFMzhEMkVFNDFEMEY0NjA1MkZBODc5QjE5RkRENTUzNTlDQTFCMzM0M0Y4OTQxMUQ1RDE1RTgyQzQ0NEMwRTM3Qjk3MEFGODRGRDc0OTNCM0VCQzRGNTI0RjdGODMwMjAzMDEwMDAxQTM4MjAxNUUzMDgyMDE1QTMwMTIwNjAzNTUxRDEzMDEwMUZGMDQwODMwMDYwMTAxRkYwMjAxMDAzMDFGMDYwMzU1MUQyMzA0MTgzMDE2ODAxNDk4NjQ2QzZCQjVEQ0Y3MjFDOUNENjU4MDMzNDlEQjQwQTkxQ0EzOUMzMDc2MDYwODJCMDYwMTA1MDUwNzAxMDEwNDZBMzA2ODMwM0YwNjA4MkIwNjAxMDUwNTA3MzAwMjg2MzM2ODc0NzQ3MDNBMkYyRjc3Nzc3NzJFNjQ2NTc2MkU2ODYxNzI2OTYzNjEyRTY3NzIyRjYzNjU3Mjc0NzMyRjQ4NjE3MjY5NjM2MTUyNkY2Rjc0NDM0MTMyMzAzMTM1MkU2MzcyNzQzMDI1MDYwODJCMDYwMTA1MDUwNzMwMDE4NjE5Njg3NDc0NzAzQTJGMkY2RjYzNzM3MDJENzM3NDY3MkU2ODYxNzI2OTYzNjEyRTY3NzIzMDExMDYwMzU1MUQyMDA0MEEzMDA4MzAwNjA2MDQ1NTFEMjAwMDMwMjkwNjAzNTUxRDI1MDQyMjMwMjAwNjA4MkIwNjAxMDUwNTA3MDMwMjA2MDgyQjA2MDEwNTA1MDcwMzA0MDYwQTJCMDYwMTA0MDE4MjM3MEEwMzBDMzAzRTA2MDM1NTFEMUYwNDM3MzAzNTMwMzNBMDMxQTAyRjg2MkQ2ODc0NzQ3MDNBMkYyRjYzNzI2QzJENzM3NDY3MkU2ODYxNzI2OTYzNjEyRTY3NzIyRjQ4NjE3MjY5NjM2MTUyNkY2Rjc0NDM0MTMyMzAzMTM1MkU2MzcyNkMzMDFEMDYwMzU1MUQwRTA0MTYwNDE0QzNFN0FDNUFDMTVGMzk3OEUwMTYzMEYxRDU4RTVENUFDREZBNjk0RDMwMEUwNjAzNTUxRDBGMDEwMUZGMDQwNDAzMDIwMTg2MzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMDM4MjAyMDEwMEE1MUFCMjJFMjNEMTUxRDgxRkI0REI5RDEyNTc1M0Y3OTFEM0U3NDI0NUI2OTc2OTdCMTJERjAxMkFFM0Y0RkU0QkU2NkNBNDU2NDEzRDIzNDhENDJERkYwMDdGMjVBQUQyNURGRTQ0NEExOTQwNDhFODNBRUYwMjZFQjhFNUY5MTQyQTY1N0REQzg4OTZERkIxNzE2RDJCQUUyRjcyNUUwNzJFQkMzMEUyMTAwRDhCMkE0QzFENDM5RDc3QzgyRTRBNkFGREFCNTcwREJBODUxRTFCNTkzNDg1QzUwNUJBNzJCRDBDRjM0MDMwNzE3MTQwNkNBODY4RTg0RTI5MTgwQzc0NTNFRUUyQ0QwMEI5ODk4OUU3ODZDNkI1RkUwMzBBMkI1MUUwMjgyRTNCMzY2NEYyNzI2RkYwNzc0N0M5NjE1ODJDNERBN0RDNjE2NjA2ODY3MTYyNDhGMDY4RDNCNTFBMzVEOUMzMjI3ODYwQjkxNUI5RDdBQTk4MkNBNDVDQUI1RTc5QjE5N0YzQTU4MkMzNzMzRkFBNkFGMDY2REMzNDZCMTE0OTVFMTY4REI4QjAxNDk4MzdDRDdDMkREM0FFQTBDMjI2MUY3NDZDRjQxMkQyMTcxREFCOEQ5REJDNDVBQTU3MjExRjdCMTgzRTU5RDk2NzREQUQxRDU0QjAwNDE1NzFCQzVDNDRFMzUwMjQxQzRGM0FCNjY5QjEwNjlDMjFGRTk3OTI2OUEzNUQ3QThCQUNGOTc5RDA0MTNCRDNFMTY3NzVEMzhGQUIxMzQwMzc2Q0I0NjY2QUVDMERDMjk4QTMyRTEwQTczQzZGN0VBRjFBMzRBOTczMkIyMUI1OTEzM0M3OUJBRDI4NENBOTYyMzBFQzdCRUNDOTA4MkJBRURCRjQyRkI0OUUzM0MxRjk1MDYzQUUxMEMxNkJGNzgzNUREQUJBMDZGQkYxNzE4RkNFREJDOTk2Q0QzRURFRkRGNzk3QkFEODcxRDRFMEY4Q0Y4NjVBOTU3NURERDEzOTkxNTVCQUIwNzUwMTNBNjM4NUVFNEI4QTk5N0RENzUwQzA5RjYxQkU3Nzg0NTMzQTJDNDRENjUxQ0FEODBBRUZDRUEyOERGMjk4NTdENjNFMjg0RjM2NjNDRjIyMDY0NDQ0RjkwM0YzRTJDMjRCMzQ4Mjk1QjlGODFGNTg4ODc1NUIyMjZGNTU4NTYzMzQ2NTc2RUQ2ODYwNjM3MUVGRDE5Q0U1MUY5ODhDOEI2OURBNzYzREJCNUYwMDcwMDUyMTRGNjcxMjNEQzNEOTVDQjJCNzgzNzMzNkEzM0IzNEM0NzlEMjZFMTI4QkE0RTc1Mzc5MzUwQTUyNEEzMDgyMDY0MTMwODIwNDI5QTAwMzAyMDEwMjAyMDgzOUY3REE2NEVFOTY5NjE3MzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMzA4MUFEMzEwQjMwMDkwNjAzNTUwNDA2MTMwMjQ3NTIzMTBGMzAwRDA2MDM1NTA0MDcwQzA2NDE3NDY4NjU2RTczMzE0NDMwNDIwNjAzNTUwNDBBMEMzQjQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA0MzY1NzI3NDJFMjA0MTc1NzQ2ODZGNzI2OTc0NzkzMTQ3MzA0NTA2MDM1NTA0MDMwQzNFNDg2NTZDNkM2NTZFNjk2MzIwNDE2MzYxNjQ2NTZENjk2MzIwNjE2RTY0MjA1MjY1NzM2NTYxNzI2MzY4MjA0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNzMyMDUyNkY2Rjc0NDM0MTIwMzIzMDMxMzUyMDJEMjA1NDY1NzM3NDMwMUUxNzBEMzEzODMwMzQzMDMyMzAzNzMzMzgzMzM3NUExNzBEMzQzMzMwMzMzMjM3MzAzNzMzMzgzMzM3NUEzMDgxQUQzMTBCMzAwOTA2MDM1NTA0MDYxMzAyNDc1MjMxMEYzMDBEMDYwMzU1MDQwNzBDMDY0MTc0Njg2NTZFNzMzMTQ0MzA0MjA2MDM1NTA0MEEwQzNCNDg2NTZDNkM2NTZFNjk2MzIwNDE2MzYxNjQ2NTZENjk2MzIwNjE2RTY0MjA1MjY1NzM2NTYxNzI2MzY4MjA0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNzMyMDQzNjU3Mjc0MkUyMDQxNzU3NDY4NkY3MjY5NzQ3OTMxNDczMDQ1MDYwMzU1MDQwMzBDM0U0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNTI2RjZGNzQ0MzQxMjAzMjMwMzEzNTIwMkQyMDU0NjU3Mzc0MzA4MjAyMjIzMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwMTA1MDAwMzgyMDIwRjAwMzA4MjAyMEEwMjgyMDIwMTAwQjE5NUFGODY3QkI1QjRGMjAxOEI4QTlFMTU0QjdENzcxODgxNkFBRURFQjJBRUQ2MjM0OTgzQUY5RUQ3Q0MzRjY4NDQ2NjA1NkQwQjI2QkM2RTdGOUQwOTk2NkYwNUY5MjQyQzI5OUQ2NkIzNUE1NDA1MUM5RjU3ODJGQjM1NUQ4N0Q5N0E2Q0Y4RDcwRkZBODg4MEM1NDg1RDU4M0M0NDVDNDgzN0VERjU0RTdENjVGNEQ1REVBNEZDMTEwRTMzRkEyMEY2QkM3MkUwRTJDNTE2RUEwMDJFQkM5QjZDMjhBMDYyOTU3ODFEMDc1M0Q3ODUyMzkzMzM5RTgyOUUwRjkwRDc0OUE4RTNBREJENzE3RDA1OUY3QTA1RTY3NzM4QzE2RDY4MjRDNkIyRDA0NUZCRkVEOERGMTZGRUZDRkI2MDU4MkE1M0JDQzdCQTIzNkYzMzYwM0REMzY3QTBEMjBEOUVFRjA0QkZCMUU3RTlGQTdDRUU4NUVGNkFDRUFGNUI5MEY2MDY5RTJENDVBMTI4M0E4N0VCNDc0RDIxOTAyNkZBMkM2M0M5OUUzNjcwODA2RTYwRkY3MjEyOTUxRjc0NkNBMEExRDNFNjE1N0RCRkM4M0M2RDkxQjUyNjNBRjUzQTRFRkNFREQ4MEMxNTE2RUFCMzExOEVCODgxQjhGQTdBOTkzRUZGQjBCQjk3N0I4QjlBNUVGMDU2NTYwOUFBNzc3NzQ1M0ZDNUU0MDExOUUxMDM0QTNDMjUwQzUwQzYwNzgzRTkyMkU1QTY5ODRBQ0I0MTA2MjE5OEUwQkZBNzNCREREQTJDQzU5OEJEM0I5QTcwQUEzM0QwNkM0NThENDQ4RENCMjE3QkIzODk4NTNBQTJDMjE5QUFEMEJFMTZDNjE4QkYwRTkzNjVCM0Y3RjIzQUFGODIwRTg2NjI2M0ZBMUY4Mjg4NTRCQzdGMjRENjI0NEY4NTUyMDBFQ0UzMUYwN0VDNkQzREVDMDI0MUZDNDcxQzcyRUMzNTEyOTc1NEM4MUMxNkZEQjIwMzBERjUwODEyQUJGMEUxRjFBRUY4NzUxODU2QjYwREMxMDc2MDZBQjczN0IxMDY1MEJCNzIwMzU4NDIwODM0MjU0OTUzRDNCMkI2RDkxMkM0REZBNjFDQUUwNjA0MzhFMzhDMEJBOTk2NEIzNDVFRUY5N0JBODEzQTQxNzk2MjM0Qjk1OEZBM0NGNkMyMzNDRkE4N0M4QjMzNzE3ODdGMTc4NDBGMEU3NEJCQUJGMkVFNEJBMDUxMzAxMTAzRjk1MDJGNjk4NDgyN0VERDIwRTEzRUZCRDc1RTJFRTU2QUNFODdDNEEwQkI3NkVGOUE3MzAyMDMwMTAwMDFBMzYzMzA2MTMwMEYwNjAzNTUxRDEzMDEwMUZGMDQwNTMwMDMwMTAxRkYzMDFGMDYwMzU1MUQyMzA0MTgzMDE2ODAxNDk4NjQ2QzZCQjVEQ0Y3MjFDOUNENjU4MDMzNDlEQjQwQTkxQ0EzOUMzMDFEMDYwMzU1MUQwRTA0MTYwNDE0OTg2NDZDNkJCNURDRjcyMUM5Q0Q2NTgwMzM0OURCNDBBOTFDQTM5QzMwMEUwNjAzNTUxRDBGMDEwMUZGMDQwNDAzMDIwMTA2MzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMDM4MjAyMDEwMDMxRThDNDU1NkNCQ0I5MENDNDlEMTExNDZBRDQ5NEZCNzg2NjU3NUM2REU4Qjc1QTJCNjRCMkU0QUFGQzBCNzUzNzVBNEU2OUQwMTFGMjUyMEVGNTYxNzc4RjMzM0Q2RkY0QzIyRjZBOTM3RkIxOEU1NkQ2MjY2MkJDNzhCM0QzNDRDNTExOURERjgwMzZCOEFDM0VFMEUxQzhFODVBNkYzNDJFNzlFOUY4MDE3QzJGQkVBRDhFMkE3ODI2MEM0MDg5QjREODI3RjZFMjUxMkQyRjE0RTY2OUNCMzI4QUJGNjQ4MTREM0E1OTE1OEJDQUM2MTMyRTNFQkE1Mjc0MjIwOTNDNzM3QzY4MEVEODY1NDdBMEVGOUEzNUNBNzY2NTY0RjlBRDI4OTEzNzFDOURDNDJBMDNGODAxNkQ2RTczQUNBRkQwQzBBMTcwOTZFOTc3REY4OUMyODkwNjE4NjM2NDJCRjcwRTQwMzU1QTA0MzVCRTkyQ0RDMTQxRENGQTRDMjFEQ0VBQzdCNzRBNUIyMDVFQzU5M0JBODlDQjdDQjc0MEUyOUNFMTZEQTZFNjM4NzZEOEE1QkNERkJBOTY0NjBDQzgzNDUyMDc2MzY1RjQ4RDIyRDA1OTg0RUMxRkVCMzE3QkVGOUI2RkM3OTk0MjJGRjgzMzk4ODY3REE0NkNDNkEyOTVBNzRCOUJBMzMyNDcyODQzODFGQ0I0NjQwMkY5QjkyMEQyMTkwNTJDNDlEMjdFMzg4OEI0QTQ0NEQ4M0M3RDMyMEU0MDk1ODA1NTk0RTlFNzE4RUQ3ODc4MDdCRDRFRkMwMzAwOTYwNUM2REJENTNCRTBEMkY5QzlEQUUwMTM0NThDMENDMTRDMjI3M0ZCQjJGMzk5MkVDQzE2Qzk1Njc0N0ExNUE2RjRBMTY5MjdBMUM3OTg4Mzk3MzAxRjhGNEFBMEVCQjc0QTJGNTExMTdGREVCODcyMzM0MEVFQTA1ODk3MzM0QTM4NEY2RDQ3MkMwMjc5NzUzQzNERUVDQjc1OTlBQTlDMkQ5ODdDMzA1M0RDRUMyREE0NUM4NTQ5RDdCNjBBMThENjkzRTlCRDZDRDBGMDIyNkRCMkE0ODAxRjg1RTFDM0VGQjQ2NzZBMzY4ODAwMzMwMzQ2NjgwRDYzMUFGN0E0N0M4NDdDQThFMUIzRDQ5QzE4M0JGMEFBREJBRjhDRTNEN0RFMDAwRDQyMUE5NDI1Q0Q4ODkyMzM5MDc1NUVDODUyQ0ZBQjNBQzg1QTMyNkU0MTM2RjNENEQ4MkY4QzIyRkU1RjM0OTk5OTBCN0M5RjUzNzNFMzVBQkMwQkYzQjJEMDZCNjA2NEY2RTZDMkU0MTUzMTgyMzI5NjMwODIzMjkyMDIwMTAxMzA4MUQxMzA4MUJDMzEwQjMwMDkwNjAzNTUwNDA2MTMwMjQ3NTIzMTJCMzAyOTA2MDM1NTA0MEEwQzIyNDc3MjY1NjU2QjIwNTU2RTY5NzY2NTcyNzM2OTc0Njk2NTczMjA0RTY1NzQ3NzZGNzI2QjIwMjg0NzU1NkU2NTc0MjkzMTE4MzAxNjA2MDM1NTA0NjEwQzBGNTY0MTU0NDc1MjJEMzAzOTM5MzAzMjM4MzIzMjMwMzEzNzMwMzUwNjAzNTUwNDBCMEMyRTQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA0MzQxMzEyRDMwMkIwNjAzNTUwNDAzMEMyNDQ4NDE1MjQ5NDM0MTIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTYxNkMyMDQzNkM2OTY1NkU3NDIwNTM3NTYyNDM0MTIwNTIzMTAyMTA3MzdGNUYxRTA2QzU0OTBCNUU3NjY3NUJDMjIzMzI1NTMwMEQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAxMDUwMEEwODIxRDg2MzAxODA2MDkyQTg2NDg4NkY3MEQwMTA5MDMzMTBCMDYwOTJBODY0ODg2RjcwRDAxMDcwMTMwMkYwNjA5MkE4NjQ4ODZGNzBEMDEwOTA0MzEyMjA0MjBFMzQ4QkJFRDIxMkYwMDA4NzQzRjk0MDE0Rjc0MkI4RjQ3RDJFMUQ2RkY5NjM0OTJFN0Q0OUEwMzA2RTFFOTc0MzAzNzA2MEIyQTg2NDg4NkY3MEQwMTA5MTAwMjJGMzEyODMwMjYzMDI0MzAyMjA0MjA0QUQzMDVDNDdEMUU3MkUxMjM2NDMwMkJGQUE2OUMyNUI0M0Q4QTNDNEY3NjFDNTZDNTcxRDM0QTUwQzUwMTZDMzA4MjFDRkUwNjA5MkE4NjQ4ODZGNzJGMDEwMTA4MzE4MjFDRUYzMDgyMUNFQkEwODIwQUY3MzA4MjBBRjMzMDgyMEFFRjMwODIwOEQ3MDIwMTAxMzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMzA4MUFEMzEwQjMwMDkwNjAzNTUwNDA2MTMwMjQ3NTIzMTBGMzAwRDA2MDM1NTA0MDcwQzA2NDE3NDY4NjU2RTczMzE0NDMwNDIwNjAzNTUwNDBBMEMzQjQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA0MzY1NzI3NDJFMjA0MTc1NzQ2ODZGNzI2OTc0NzkzMTQ3MzA0NTA2MDM1NTA0MDMwQzNFNDg2NTZDNkM2NTZFNjk2MzIwNDE2MzYxNjQ2NTZENjk2MzIwNjE2RTY0MjA1MjY1NzM2NTYxNzI2MzY4MjA0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNzMyMDUyNkY2Rjc0NDM0MTIwMzIzMDMxMzUyMDJEMjA1NDY1NzM3NDE3MEQzMjMwMzEzMDMyMzkzMDM5MzMzMzMxMzM1QTE3MEQzMjMxMzEzMDMyMzQzMDM5MzMzMzMxMzM1QTMwODIwN0MyMzAyRjAyMTAzMjgwRTNBNjE2Q0QwNUUzREM5RDY1M0MwNkQ0M0NFODE3MEQzMjMwMzEzMDMyMzkzMDM5MzIzNzMxMzU1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDI3MDIwODVFQUQzNjNCRjUwM0Y1MjYxNzBEMzEzOTMwMzQzMTM4MzEzMjMyMzEzNTM2NUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTA1MzYwQ0MxNUY2MkY2QjRFQkZCQzczMTEwMUNDMkUzMDE3MEQzMjMwMzEzMDMyMzkzMDM5MzIzNjMyMzM1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDJGMDIxMDVFOUE0RTIyMzk4QjlEQTlFQjYzNDE0RTI2MzU3MUUxMTcwRDMyMzAzMDM5MzAzMzMwMzczNTM4MzIzMzVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwNkI2MTc4RTk5REY2MzM4RTk3MjM0Q0I5Mzg4MDNGMzUxNzBEMzIzMDMwMzkzMDMzMzAzNzM1MzkzMDM4NUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTAxRTY0NkE5RkJGRjBFNTQyNjNCRUU2NDE3RjJBOTMyMTE3MEQzMjMwMzEzMDMyMzkzMDM5MzIzNzMxMzk1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDI3MDIwODY4MzgwNTE4OEY1MzNDRDMxNzBEMzIzMDMwMzkzMDMzMzAzNzM1MzQzMzMxNUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTA1ODkyODhFMzE4REM1RERBMUExOEJEQjEyQUVGMDY3RTE3MEQzMjMwMzEzMDMyMzkzMDM5MzIzNjMzMzY1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDJGMDIxMDVDRkIwNDI3RTg3MERBRjdEOENDMzU4ODkwODRCNUIyMTcwRDMyMzAzMTMwMzIzOTMwMzkzMjM3MzAzMTVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwNjgxQUEwQjZFRjZCM0E5MTlDNEM3NTEzRDAxRjlCQUExNzBEMzIzMDMwMzkzMDMzMzAzODMwMzAzMTM2NUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTA3OUFBQTI4OEY3NUU0MDEwQTU3N0M2QTRDM0M1ODRCQzE3MEQzMjMwMzEzMDMyMzkzMDM5MzIzNjM1MzM1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDJGMDIxMDU3RDhFMTRBODExODgyNUFEQUY1MTcxNDQ3ODE2NjFEMTcwRDMyMzAzMTMwMzIzOTMwMzkzMjM3MzEzMTVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwM0M0NkVGMjUyNzVFODJCODMxQjc0QjQxNTU0QzMzNzMxNzBEMzIzMDMxMzAzMjM5MzAzOTMyMzczMjMzNUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyNzAyMDg1QkQ2RTI4RjVBRTY3RTQ1MTcwRDMxMzkzMDM0MzEzODMxMzIzMjMyMzMzMTVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwMEMyMEU5RjQ2QzU5NDlBQkU3QTM1QUY5ODgzQzI1MkMxNzBEMzIzMDMxMzAzMjM5MzAzOTMyMzczMzMwNUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyNzAyMDgxQzdBODZCMEQwN0I4NTlDMTcwRDMyMzAzMDM5MzAzMzMwMzczNTM5MzUzNDVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwNEU3MzE5OUFGQzA3RUMzOTc1MDM4Mzk0MTI5NUY3QUUxNzBEMzIzMDMxMzAzMjM5MzAzOTMyMzYzMTMwNUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTA3MkYwRDU4NTQxRDQ1OUZFMkRGRTBCNTc3MDlBREY3NDE3MEQzMjMwMzEzMDMyMzkzMDM5MzIzNjMxMzg1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDJGMDIxMDY1NDRERDIyQ0IzM0RDQTMwNkI0OThGNkE1RTdGMjI5MTcwRDMyMzAzMDM5MzAzMzMwMzczNTM5MzMzMjVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMjcwMjA4NkU5RUE3QTY1MkM3RTVDQjE3MEQzMTM5MzAzNDMxMzgzMTMyMzIzMjMzMzE1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDJGMDIxMDEyQTc4NEM4Q0QxMUNCMzcxMkRDMjZFRDk0ODJBQzNBMTcwRDMyMzAzMTMwMzIzOTMwMzkzMjM2MzQzMDVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwMzE5MEU3QzM2MTRBMzczNTY1MzgxNDU5MzEwOUUxQzExNzBEMzIzMDMxMzAzMjM5MzAzOTMyMzUzNTM2NUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTAxRDhBNzFFNDRDMDdGNUY0QzdERTNBN0FBQUYyQTYyRTE3MEQzMjMwMzEzMDMyMzkzMDM5MzIzNjMyMzc1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDI3MDIwODJERkYxNkM3NTlERUY0MjMxNzBEMzEzOTMwMzQzMTM4MzEzMjMyMzEzMTM3NUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyNzAyMDg0NzQ1OTkyNEQ5MzAyMTA1MTcwRDMyMzAzMDM5MzAzMzMwMzczNTM0MzMzMTVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwNDU1ODU2MDY2NTE4NTFBRjZBQzgxMjkzMEY2NDExMkYxNzBEMzIzMDMwMzkzMDMzMzAzNzM1MzQzMDMxNUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyNzAyMDg2QTk4ODhBRTMxQzMzMUE1MTcwRDMxMzkzMDM0MzEzODMxMzIzMjMyMzMzMTVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwMUI2REJBNTBBMzc0ODE0MDY1NEY2RDgyREVDNjhDRjMxNzBEMzIzMDMwMzkzMDMzMzAzNzM1MzczMzMxNUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyNzAyMDgzQzA0MzFCREEyMDJENjE1MTcwRDMxMzgzMDM2MzEzMjMxMzEzNDM5MzUzOTVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwNERCODNCNTc2NjY2NTZDMTJERDI4QjdCMUVDRjUzMzExNzBEMzIzMDMxMzAzMjM5MzAzOTMyMzczMzM1NUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTA2QjlCMEMxMjlDMjQ0RENDQjFCNEE3RjRCNkU0MjRDMzE3MEQzMjMwMzAzOTMwMzMzMDM3MzUzODMwMzA1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDJGMDIxMDEwMUQzRERBQ0FGN0MyODVCMDE4MDM2MjIzNTIyNTJGMTcwRDMyMzAzMTMwMzIzOTMwMzkzMjM2MzAzMDVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwMkU1NjlGMTUzNjdGQURDMEE3NTc5NjYwQTA1NTNGNUYxNzBEMzIzMDMwMzkzMDMzMzAzNzM0MzgzNTM1NUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTA1MDhEREQ3M0E5ODU3QUE0NTdEMEVCQkU0ODQ2Q0RDNDE3MEQzMjMwMzEzMDMyMzkzMDM5MzIzNjMzMzI1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDJGMDIxMDBEN0UzRjIwMzJENUFBRTEwQTY1MkY2QzY3ODMxRDEyMTcwRDMyMzAzMTMwMzIzOTMwMzkzMjM2MzQzOTVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwNzU1ODEwNzk4MkREMEE3MkRBQUM3MUU3OEQ1OENEMDQxNzBEMzIzMDMxMzAzMjM5MzAzOTMyMzYzNDM0NUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTAyM0VDQTQwNzQyNDAyQTcxRTJCOTUxRjYzODM3MENDMzE3MEQzMjMwMzEzMDMyMzkzMDM5MzIzNjMxMzQ1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDJGMDIxMDBFQTNDNjlGOENFQzdFNTYxQzZCQzk3MzI3NjlBNjE4MTcwRDMyMzAzMDM5MzAzMzMwMzczNTM2MzIzMDVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwMzMwN0M4RkJCMkM5MUJDMjBBRTBGRTUyRDUzQUJCN0ExNzBEMzIzMDMxMzAzMjM5MzAzOTMyMzYzMDM1NUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTAzNkNDNzc2OTBDRTlCODlBODFBNDVDRkM4MzM4NkRCMjE3MEQzMjMwMzEzMDMyMzkzMDM5MzIzNjM1Mzc1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDJGMDIxMDA4NDIyQTNFNDUwNTFFNDIyQTU4M0M1N0RFMzk2RTEzMTcwRDMyMzAzMDM5MzAzMzMwMzczNTM2MzQzMjVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwNDkyOUFDRUQyNkI4QTg0Qzk2QkNDOUE0OUIxNUFBOEQxNzBEMzIzMDMxMzAzMjM5MzAzOTMyMzczMDM3NUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0QTAyRjMwMkQzMDFGMDYwMzU1MUQyMzA0MTgzMDE2ODAxNDk4NjQ2QzZCQjVEQ0Y3MjFDOUNENjU4MDMzNDlEQjQwQTkxQ0EzOUMzMDBBMDYwMzU1MUQxNDA0MDMwMjAxMDgzMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwQjA1MDAwMzgyMDIwMTAwNTQyRTJFNDkxMjgzQTEwREMxNkYzQjYyNjIyQkE3MDU0RTA0MDZGN0RCOERCQjVGNzQxRDRCQjkzRURCNDk0Njg1NjIwNUVDQ0E2MzU5RTIwMjU3OEVCNzg1Njk0RThENDVDM0YxMjMxNkY4Q0JDNEZBODQ5OUE0NzNFMDIwQTA0MTA1REFDMEY3QjFDMjMwMTA2NURBQzg0NEZDODM2NUYwRjMzQjM3M0UzREE3N0I2NDUzRjgwQ0U2Qzg0MDY2N0JGRTg0QkMwRTNGMDNGQUM2NkExOTQ3NkYwOUYyNDY4RDJCNUI2QTVCODMyOTM4Q0UxNDBFNDVCRTlDOUVDMDgyQkVCNTVFNTFCNkNGQkE4QzI3MUI5MDM1RkZERUNCOTY0MUVERjFDNjA2QjI3REI5NDM2MjU3NkI5MDY1NDdBQTAwQUY0RjBBOTk1RDk0NjEwREFBQThFNURDMjU4QTZFQUFDQzlENjAxODY1Q0RBN0EyMTNBNkVGNzM1NUI1NjRDRDY4MzM4MjZGMzU0QjhFRjYyMTAwOUJBOTAwQTgwNzY1OTU1RkEwMzM2NTkyOTc1QkVFQUM0QkFCMjEzQjVEREI1REU4QkI4Mjg4Q0QzRDlFM0JFRTgwOTAzOTgyMDhGQTBDQjQyMEY4QUMyMzY0QjNDMjU4NkVCQ0M5Qzg1QzUzMDYxRDU0QjkwNEY3Njk4RTY0NDFENjEzRUMyNTFGRTBGMzg3MDZGRUIyODUyQTNGMEVCMjE3RUVFMjJBQTM1MDkzOTE2REJEQURCQ0M5REZGMTUzNjFDM0JCQjAzQjA1MkVGREQxQThCRjI0RTFDOTA0QzJCQkREOTA2NUE3OTc3MDNERjk5NzRDMkVDRjZDNDIzNDE2NTFDOUU0RkU3NTVDMjRGRUExMjAxRjRGMDI0QjU1OTFDRkMyNUI5QzU0MkRDNTQyM0JGMUMxNkZFRjk3MzY5RkNGRDM1N0UyQzNDREIzODZEMzRBRkMxNjJCRjc1MDFGNkY5MEE2N0RFQzNCNDAyQzAyNEQ4Q0RDOUNDQURDMzJERDRDRTQzNEU5QzgxNDYzNDNCMzIxOTM4OTRFOTNBMTBGRkFBMEFDRDZGQzA1QTY4OTM0RDc2NzMyRTNEOTMwNDcyNTBCODVDRUY5M0JFQTg3ODg4RERGQTNCNEZBMkQzNEU5NDQyRDAyMEVBRDk4QkJGMzcxRjA3Q0VBNDA5M0ZDNEE2ODEzNzFDQ0VCOUYzMkFDRkYyOUEyQzVGNEEzMDQ4OTQzQ0Q0RTRCRThCREJENEUwNzkxM0E5QTcwMzUzN0NENDlBRjQ4NDREMUI0OThBM0I0MDhBRUY0QjQ0QjFCQ0JEQ0ExODIxMUVDMzA4MjExRTgzMDgyMEEyMTBBMDEwMEEwODIwQTFBMzA4MjBBMTYwNjA5MkIwNjAxMDUwNTA3MzAwMTAxMDQ4MjBBMDczMDgyMEEwMzMwODE4QkEyMTYwNDE0QzNFN0FDNUFDMTVGMzk3OEUwMTYzMEYxRDU4RTVENUFDREZBNjk0RDE4MEYzMjMwMzIzMTMwMzQzMjMwMzIzMDM1MzQzNDM3NUEzMDYwMzA1RTMwNDkzMDA5MDYwNTJCMEUwMzAyMUEwNTAwMDQxNDA5OTZDRkNGMTFGOUZCQzZBNEZCQTFEOUI1NjU3QTVBQkM3RDkxRUYwNDE0QzNFN0FDNUFDMTVGMzk3OEUwMTYzMEYxRDU4RTVENUFDREZBNjk0RDAyMTA3MzdGNUYxRTA2QzU0OTBCNUU3NjY3NUJDMjIzMzI1NTgwMDAxODBGMzIzMDMyMzEzMDM0MzIzMDMyMzAzNTM0MzQzNzVBMzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMDM4MjAyMDEwMDkwNzBBNEQ4NkY5NjEwOURERTQzRDAyNzBFQTA3NTg5QkEzNDkxODk1RDMxQ0NFRDNBMjRCMjc4NjdGNDAzREQzRDEwOUJGMEY5RkRGMjZFQTFDRDQwNkQ0NDRGOEEyRTdEOEFEQUYyQjlBRjI0MjRFRTMwN0M3MTY3QjFDNEExM0FFNkFDNDlGNzAzQjJBQTA5MTlGODU2RTE3MzA2NkU2NDM0OTRCRjI5M0IxMEEyMDBCNjNCNEVFOTQxMzZEM0VDMTZDQzIxRTkzMzJGNTdBRTI2MDEyOTgxMjZBRkEzODYxRDYwNEJGRDU4MkQ5RTU0REE2RkUyODVCM0ZCQzMwNjk1OUQzMzk4MzE0NTE2NjY2NTY3REY5OTJBMDc2QTlBMTZFOTQ4REZCOUYzNTYzM0E1MkFDMUQ1MUI3MjFDNTZDNjBGNkVEMzQzMEI4NUFFMEJFRjBFQUVGNDJCNEZFQzY1NjU0Rjg5QzAyNDA0NEMyM0EzNTAzNzAzQjM2MUZBMTBCMzM3NkNEQ0E0NEY5RDdDMTdGQzRDQjI5OTVDNzEzQkUzOTQ0REQ3NTU1Q0UzMUZGQTc4RTMwMEZBRkMzNTVFNkM4NTI5NjIxMDg0MTIyRjE4MjE4MDE3NUNCMDA1REM4MDFFQzZGMDZDQTQ5NkE2ODBCRDdEMEFFRjhDODBFRUJDQzBBQzk3QzhERTkwNTk2REQ5NTJCQjlFRDY0ODNDMERBNkU5MTQ1MThGRTk1NjUyRkZBMjIyNkJFRjQ3MjZBRUYzQTc4QjZBRDk2QzhFNjI5MDFCNUVGODA5NzA5ODgyQUI4Njc2ODM1NjQ0OTE5RTc1NkEyMzQ4M0Q4NThFNUI3OTM2RDc4M0FCNDFFN0M5QTAxQkFDQzhBRjc2NTZBM0NFNEJEMzM2NjI0OTRFQjA1MTlCODg5NEU5QjQxMUQ4QURCRDUzOTEwRENEMTg5RENFOTVFRjdDOTkzMzgwM0VGMDhEMkExMDAyRDFBQUJCRTI1Q0IyMTQ2MDY1NzY1NjE1MUZDNjY1OTNGODY2Q0MwQUU4MjYyRTkzMTU5RjUxNDg4QjQyNzcwOTkwMjRDMUVDRjQxNkQ5OTkxRjRCRjU4RUYyRjRFNTFGOEI1RDk2MDlEQkZBQTZCMEQ1M0JERDI2NTM1MzBGRjhDMjFCNjk0N0I0NzM4QzY5Rjc0Q0EyMDkyMEIzMTJCQjU5RjI1MDhFQzNDREE0MTIwODU3RUUwODIyM0QxQzREMjFBNzc3OUU5RDNDQkMxMzI4REY5RUU0NzU3QTVENjQ5RDRDMEJFODQ0RjI1NzlGNDk0NTU4ODdFRThGMzAwQUZDODM2RkI4QjMwM0VFQTBBMDgyMDc1RDMwODIwNzU5MzA4MjA3NTUzMDgyMDUzREEwMDMwMjAxMDIwMjEwNThCNzVCQ0MzRjI4QjA4NkI4NzI0RDU0QUNCQTlGRTgzMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwQjA1MDAzMDgxQUQzMTBCMzAwOTA2MDM1NTA0MDYxMzAyNDc1MjMxMEYzMDBEMDYwMzU1MDQwNzBDMDY0MTc0Njg2NTZFNzMzMTQ0MzA0MjA2MDM1NTA0MEEwQzNCNDg2NTZDNkM2NTZFNjk2MzIwNDE2MzYxNjQ2NTZENjk2MzIwNjE2RTY0MjA1MjY1NzM2NTYxNzI2MzY4MjA0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNzMyMDQzNjU3Mjc0MkUyMDQxNzU3NDY4NkY3MjY5NzQ3OTMxNDczMDQ1MDYwMzU1MDQwMzBDM0U0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNTI2RjZGNzQ0MzQxMjAzMjMwMzEzNTIwMkQyMDU0NjU3Mzc0MzAxRTE3MEQzMjMwMzAzNzMwMzczMDM5MzIzMDM0Mzg1QTE3MEQzMzM1MzAzNzMwMzQzMDM5MzIzMDM0Mzg1QTMwODFCQzMxMEIzMDA5MDYwMzU1MDQwNjEzMDI0NzUyMzEyQjMwMjkwNjAzNTUwNDBBMEMyMjQ3NzI2NTY1NkIyMDU1NkU2OTc2NjU3MjczNjk3NDY5NjU3MzIwNEU2NTc0Nzc2RjcyNkIyMDI4NDc1NTZFNjU3NDI5MzExODMwMTYwNjAzNTUwNDYxMEMwRjU2NDE1NDQ3NTIyRDMwMzkzOTMwMzIzODMyMzIzMDMxMzczMDM1MDYwMzU1MDQwQjBDMkU0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNDM0MTMxMkQzMDJCMDYwMzU1MDQwMzBDMjQ0ODQxNTI0OTQzNDEyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU2MTZDMjA0MzZDNjk2NTZFNzQyMDUzNzU2MjQzNDEyMDUyMzEzMDgyMDIyMjMwMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTAxMDUwMDAzODIwMjBGMDAzMDgyMDIwQTAyODIwMjAxMDBCQTdDMDRFQ0FDQTEyMUEzMDNDMzhFRDE5NTdENEUzRDkxMzU4QTYxNkZERTRDNTc2NDEzMjk5MEY2RTQzNzdFODZGN0U2RTVFRERBRTIxQ0ZCN0VCREVEMEIyOTFFNzUzMkM5MjYxNkJBQTNEQ0NFNkJCMDA1ODFGOTIyMzUxOTZDRDM1RUMzRkY3MzI0MEZCNTVDRTY4QUYzNEVCM0ZCOEY2RTRFMEQ2RjRDQTg2MkMxMUFDQzlGMERBNkQxOTM5RjQ3RDc1Qjc3Q0Q1ODNBQjEyM0NGMjJCNDNGNjgwOEY1RjgyRUQyNENBOTg4NzhGRUQzOTc1MDAxQzA3RjUxNzI2QzU2MzZFMTk2N0JDODI4N0U4QjA2QzUzRDc3RTU1Rjg5MzUzRDYxRjI2N0E4NDkxRTZEQzIyN0NGMjUzNzgwOTBDRDkxMThCNTVFQ0Q2MzI1RjdFNkI0OUMxMUM5NDRFM0VDQUZBMUIwRjFGOTZCRkYyMUZCNjI3NkQxNjk0NjI5NUFEQUI2MUQ1NDZGRDU4MjE1NUQyREQ1MTdENTVEOEE2RDE5NTExNTcwMjcwQzUzQ0NCMTc5MkRCNTBCNEQ1OUIwNzhCOEExNEFBMTRDQ0RGQ0U5NUE0QTAxMTJCMDQ3MzlGQzBEMkU3RjEwRTJDMTBCOUVBQkMzOEE3RDlBOTI4NjA3MjE2NDA1MjcwRDY4NTY4NjQyNTFCM0Q4MTU1ODAzOEQ3MzdGQTNBQTdDNDBGQ0EwRDBCQ0I3OTE1MEE5MTc2MUQ0NzEyODM3NzEzNkFCMEEwM0YzMzIzRUIyNTc0NEMxQUMxNjdFQjc5MDQyRTJERjVDQkQxMDY5NUJBRUJFOTk5OTVGMDBFMDIyOENFQTU4OEUwRUNEMjYzNzlBN0FGNUMzNTU2OTZENUE0NTYzN0M2OEY2QzZEOEM4Qzc4MkI4RTRFQTBBNjdCN0Y3QkYwMDNEMEE1QzZCQjRCQ0NBMDE4RjQwMUJFMTI1RkQxMjZBOTZEMUJBNUU2Nzg1OEM1NURDMDJDRDE4OTAwMUQxQ0UzMDFCNzlFNDcyQzZCNkI5ODc2RjIyRDUyQjNGQkQ3QzY3NjZCNzBCRkYwREREQjFBRDg2QTExQjg1RjFERjQ3NzlBOUE4MzkxQzg2M0VFQ0VFNThFQzFGMjc4REFBOERDMTRFNDcyNjE3MTBDREQ5NjQxRjIxMjUzNjZFNDhCRjI5RTZBOEFDNjQzRTM4RDJFRTQxRDBGNDYwNTJGQTg3OUIxOUZERDU1MzU5Q0ExQjMzNDNGODk0MTFENUQxNUU4MkM0NDRDMEUzN0I5NzBBRjg0RkQ3NDkzQjNFQkM0RjUyNEY3RjgzMDIwMzAxMDAwMUEzODIwMTVFMzA4MjAxNUEzMDEyMDYwMzU1MUQxMzAxMDFGRjA0MDgzMDA2MDEwMUZGMDIwMTAwMzAxRjA2MDM1NTFEMjMwNDE4MzAxNjgwMTQ5ODY0NkM2QkI1RENGNzIxQzlDRDY1ODAzMzQ5REI0MEE5MUNBMzlDMzA3NjA2MDgyQjA2MDEwNTA1MDcwMTAxMDQ2QTMwNjgzMDNGMDYwODJCMDYwMTA1MDUwNzMwMDI4NjMzNjg3NDc0NzAzQTJGMkY3Nzc3NzcyRTY0NjU3NjJFNjg2MTcyNjk2MzYxMkU2NzcyMkY2MzY1NzI3NDczMkY0ODYxNzI2OTYzNjE1MjZGNkY3NDQzNDEzMjMwMzEzNTJFNjM3Mjc0MzAyNTA2MDgyQjA2MDEwNTA1MDczMDAxODYxOTY4NzQ3NDcwM0EyRjJGNkY2MzczNzAyRDczNzQ2NzJFNjg2MTcyNjk2MzYxMkU2NzcyMzAxMTA2MDM1NTFEMjAwNDBBMzAwODMwMDYwNjA0NTUxRDIwMDAzMDI5MDYwMzU1MUQyNTA0MjIzMDIwMDYwODJCMDYwMTA1MDUwNzAzMDIwNjA4MkIwNjAxMDUwNTA3MDMwNDA2MEEyQjA2MDEwNDAxODIzNzBBMDMwQzMwM0UwNjAzNTUxRDFGMDQzNzMwMzUzMDMzQTAzMUEwMkY4NjJENjg3NDc0NzAzQTJGMkY2MzcyNkMyRDczNzQ2NzJFNjg2MTcyNjk2MzYxMkU2NzcyMkY0ODYxNzI2OTYzNjE1MjZGNkY3NDQzNDEzMjMwMzEzNTJFNjM3MjZDMzAxRDA2MDM1NTFEMEUwNDE2MDQxNEMzRTdBQzVBQzE1RjM5NzhFMDE2MzBGMUQ1OEU1RDVBQ0RGQTY5NEQzMDBFMDYwMzU1MUQwRjAxMDFGRjA0MDQwMzAyMDE4NjMwMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTBCMDUwMDAzODIwMjAxMDBBNTFBQjIyRTIzRDE1MUQ4MUZCNERCOUQxMjU3NTNGNzkxRDNFNzQyNDVCNjk3Njk3QjEyREYwMTJBRTNGNEZFNEJFNjZDQTQ1NjQxM0QyMzQ4RDQyREZGMDA3RjI1QUFEMjVERkU0NDRBMTk0MDQ4RTgzQUVGMDI2RUI4RTVGOTE0MkE2NTdEREM4ODk2REZCMTcxNkQyQkFFMkY3MjVFMDcyRUJDMzBFMjEwMEQ4QjJBNEMxRDQzOUQ3N0M4MkU0QTZBRkRBQjU3MERCQTg1MUUxQjU5MzQ4NUM1MDVCQTcyQkQwQ0YzNDAzMDcxNzE0MDZDQTg2OEU4NEUyOTE4MEM3NDUzRUVFMkNEMDBCOTg5ODlFNzg2QzZCNUZFMDMwQTJCNTFFMDI4MkUzQjM2NjRGMjcyNkZGMDc3NDdDOTYxNTgyQzREQTdEQzYxNjYwNjg2NzE2MjQ4RjA2OEQzQjUxQTM1RDlDMzIyNzg2MEI5MTVCOUQ3QUE5ODJDQTQ1Q0FCNUU3OUIxOTdGM0E1ODJDMzczM0ZBQTZBRjA2NkRDMzQ2QjExNDk1RTE2OERCOEIwMTQ5ODM3Q0Q3QzJERDNBRUEwQzIyNjFGNzQ2Q0Y0MTJEMjE3MURBQjhEOURCQzQ1QUE1NzIxMUY3QjE4M0U1OUQ5Njc0REFEMUQ1NEIwMDQxNTcxQkM1QzQ0RTM1MDI0MUM0RjNBQjY2OUIxMDY5QzIxRkU5NzkyNjlBMzVEN0E4QkFDRjk3OUQwNDEzQkQzRTE2Nzc1RDM4RkFCMTM0MDM3NkNCNDY2NkFFQzBEQzI5OEEzMkUxMEE3M0M2RjdFQUYxQTM0QTk3MzJCMjFCNTkxMzNDNzlCQUQyODRDQTk2MjMwRUM3QkVDQzkwODJCQUVEQkY0MkZCNDlFMzNDMUY5NTA2M0FFMTBDMTZCRjc4MzVEREFCQTA2RkJGMTcxOEZDRURCQzk5NkNEM0VERUZERjc5N0JBRDg3MUQ0RTBGOENGODY1QTk1NzVEREQxMzk5MTU1QkFCMDc1MDEzQTYzODVFRTRCOEE5OTdERDc1MEMwOUY2MUJFNzc4NDUzM0EyQzQ0RDY1MUNBRDgwQUVGQ0VBMjhERjI5ODU3RDYzRTI4NEYzNjYzQ0YyMjA2NDQ0NEY5MDNGM0UyQzI0QjM0ODI5NUI5RjgxRjU4ODg3NTVCMjI2RjU1ODU2MzM0NjU3NkVENjg2MDYzNzFFRkQxOUNFNTFGOTg4QzhCNjlEQTc2M0RCQjVGMDA3MDA1MjE0RjY3MTIzREMzRDk1Q0IyQjc4MzczMzZBMzNCMzRDNDc5RDI2RTEyOEJBNEU3NTM3OTM1MEE1MjRBMzA4MjA3QkYwQTAxMDBBMDgyMDdCODMwODIwN0I0MDYwOTJCMDYwMTA1MDUwNzMwMDEwMTA0ODIwN0E1MzA4MjA3QTEzMDgxQzRBMjE2MDQxNEU0MjVFOTg2NEM2NDNBRUNGMkI3RTU3QzdDQzkyQkMxQUM3RUJBODcxODBGMzIzMDMyMzEzMDM0MzIzMDMyMzAzNTM0MzQzNzVBMzA4MTk4MzA4MTk1MzA0OTMwMDkwNjA1MkIwRTAzMDIxQTA1MDAwNDE0MTJERkNDODQ4NDgzQTMxQ0I4QzU4RERCNzkwQ0MwMkEzODhFQjIxNTA0MTQ5ODY0NkM2QkI1RENGNzIxQzlDRDY1ODAzMzQ5REI0MEE5MUNBMzlDMDIxMDU4Qjc1QkNDM0YyOEIwODZCODcyNEQ1NEFDQkE5RkU4ODAwMDE4MEYzMjMwMzIzMTMwMzQzMjMwMzIzMDM1MzQzNDM3NUFBMDExMTgwRjMyMzAzMjMxMzAzNDMyMzIzMjMwMzUzNDM0Mzc1QUExMjIzMDIwMzAxRTA2MDkyQjA2MDEwNTA1MDczMDAxMDYwNDExMTgwRjMyMzAzMjMwMzAzNDMyMzAzMjMwMzUzNDM0Mzc1QTMwMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTBCMDUwMDAzODIwMTAxMDBCRjMwNzhBRDFCMjE2MDkwQjFGRjNBODc3MDgxMDNGRDU3N0RGQjgyNzVEMDUzQjJCM0JCRUIyMDA1NDEyOEM2MjQ2Qjk5Nzg5NTIxRDM5NjlCNDIyQzJBMjM4NzlBOUY3ODE3OUE0QTc0RjY3NkUwNUZDRjAxOThFMUY4QkVGQTExM0JDNTkyQzYxOEY4RDAzQkI4RjhGREMzOTI3QzY0QTczQjlEOTNFNDE1NDlEQ0MzOTNDQTc4MjYyNDMxQjk1OURBNUY4QTg0QzlFODQ1QkRDRTU3MzUyQTcwQkIxRjQ0QTcwQTQ0NzdBN0QyRkIxQzVFNENEOUVEODhDODE0QzY1Q0U4M0VFNkU3RTQ4QTdGNzdENDA4QUE0MkJFOEM2NTM3M0REM0QxNDFEQzY2QUQxNTVBRkVBQUQ1QzJGNzhFNThFNjU3MDVGNjNBOENFMEQwNzVCRkUyMjExQzVERDE2QkQzRDA3NUNDQ0IxRDVFOTEyRTA5M0Y2MzJGQjZGOUY3Q0I1NzZFQUEzODY5MzE0REYxRDk2MTlGNzhDNTNEQTg1OTAzOEI0MDZEM0NGMTc5MEQ3QUQ2NUQ0QTlDODdEQTc5MTQ2REI1RjdGNTQyM0VGMzZDRjYzMUQ1MzIxRDFBMEVGN0MxN0M0Njg1MjBCMjM1MkJGRTUxRTM1QkEwODIwNUMyMzA4MjA1QkUzMDgyMDVCQTMwODIwM0EyQTAwMzAyMDEwMjAyMTAxODNCMjEwNTNDNkE3NzFCMzNEMkMxMEExMjc2MDYwQTMwMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTBCMDUwMDMwODFBRDMxMEIzMDA5MDYwMzU1MDQwNjEzMDI0NzUyMzEwRjMwMEQwNjAzNTUwNDA3MEMwNjQxNzQ2ODY1NkU3MzMxNDQzMDQyMDYwMzU1MDQwQTBDM0I0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNDM2NTcyNzQyRTIwNDE3NTc0Njg2RjcyNjk3NDc5MzE0NzMwNDUwNjAzNTUwNDAzMEMzRTQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA1MjZGNkY3NDQzNDEyMDMyMzAzMTM1MjAyRDIwNTQ2NTczNzQzMDFFMTcwRDMyMzAzMDMyMzIzNTMxMzIzMTMwMzAzNzVBMTcwRDMyMzIzMDMyMzIzNDMxMzIzMTMwMzAzNzVBMzA3NzMxMEIzMDA5MDYwMzU1MDQwNjEzMDI0NzUyMzEwRjMwMEQwNjAzNTUwNDA3MEMwNjQxNzQ2ODY1NkU3MzMxMzczMDM1MDYwMzU1MDQwQTBDMkU0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNDM0MTMxMUUzMDFDMDYwMzU1MDQwMzBDMTU0ODYxNzI2OTYzNjE1MjZGNkY3NDQzNDEzMjMwMzEzNTIwNEY0MzUzNTAzMDgyMDEyMjMwMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTAxMDUwMDAzODIwMTBGMDAzMDgyMDEwQTAyODIwMTAxMDBERkIyMUUwRkREOTU4OEQxOEQ2OUY5M0JFOTZDMzhFN0Q5ODZFQ0YyOTdCQjdDNzAwODIwRkMxNEFFRUQ0MjdFRkVDMEYxNEQzM0QwNkQ5MUY3MjQ0MDhCM0I0RENFQkJFRkQ4OTIzNzgxMkMwMTBGQUYwRkVGRDI2NEYzOThEQkE0RUY3MDlCMDUxQ0VGMkQyNUNGMDAzQ0I3NUFDODIxMzhEQ0JEQkJDQUUyQzZERjg0RTY1MkEwNzg0MkQwNjhBQTY1MUJBRDIyMzhGMEE4QTlEQjFERTk2MzgxMzcxNUQ1MTY3RDU0OTNERjkwQTBBQTgyMzI3REM5NTU1QTEyRUZDMjExM0M4NjMzMkYzQjExQ0RGMkIxRDc2QkMyNEMyNEUwQjI0OEYwRTY1NjI4OTJDNUQyQ0RBNTIzRDVBQzY2RjBFN0I3N0I5NjREN0QyNTczOTYxNjY1QzJFQzc4QUYxMjE3RkMyMjE1Q0MyRjU2ODUxRTZGMjc4QzI0QzM1MUUyREM2RkMxMDNFQTQxNzA4NkU2N0QwN0NCMkQ4Mzk3RjRBN0MyODJENUUwMzg3MUEyNDc4MkZGRjBFMUYxNDExNzJEODlFMDYwODUwRTQxRkVGMzMzOUI1REY4MzM0MUQ1OEU3Q0ZENkI3MDU2RDlENTVFNjExRDY4MUJBNzAyMDMwMTAwMDFBMzgyMDEwOTMwODIwMTA1MzAxRjA2MDM1NTFEMjMwNDE4MzAxNjgwMTQ5ODY0NkM2QkI1RENGNzIxQzlDRDY1ODAzMzQ5REI0MEE5MUNBMzlDMzA0RDA2MDM1NTFEMjAwNDQ2MzA0NDMwNDIwNjBDMkIwNjAxMDQwMTgxQ0YxMTAxMDAwMzA3MzAzMjMwMzAwNjA4MkIwNjAxMDUwNTA3MDIwMTE2MjQ2ODc0NzQ3MDczM0EyRjJGNzI2NTcwNkYyRTY4NjE3MjY5NjM2MTJFNjc3MjJGNjQ2RjYzNzU2RDY1NkU3NDczMkY0MzUwNTMzMDBGMDYwOTJCMDYwMTA1MDUwNzMwMDEwNTA0MDIwNTAwMzAxMzA2MDM1NTFEMjUwNDBDMzAwQTA2MDgyQjA2MDEwNTA1MDcwMzA5MzAzRTA2MDM1NTFEMUYwNDM3MzAzNTMwMzNBMDMxQTAyRjg2MkQ2ODc0NzQ3MDNBMkYyRjYzNzI2QzJENjQ2NTc2MkU2ODYxNzI2OTYzNjEyRTY3NzIyRjQ4NjE3MjY5NjM2MTUyNkY2Rjc0NDM0MTMyMzAzMTM1MkU2MzcyNkMzMDFEMDYwMzU1MUQwRTA0MTYwNDE0RTQyNUU5ODY0QzY0M0FFQ0YyQjdFNTdDN0NDOTJCQzFBQzdFQkE4NzMwMEUwNjAzNTUxRDBGMDEwMUZGMDQwNDAzMDIwNzgwMzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMDM4MjAyMDEwMDIyRTkzNDgwN0U3QUE4MUJFQUUyNjU5Q0FDMTQ3QzI1RTBENzBCOTFGNzk0RTcyODcwQTA1OTNCQzQ4NzRDMjExODI4QTczMTUxQ0Y1MkU2MEM5NjAzQUJBRUYzRTQyMUU0M0NBQ0NGRENGMzgxNjY0OURDRTE0MDMzNjBEMUIyNzMwREQwMEJEMDk0RjA0RjhGMDFBMTY0Q0Y2OEE0QjI5ODJCQjA5QjlDODgyNEYzNDM1OTNEMTlGQzU2NzM1ODg1MkMyMEFFNzcxNjM2MTY2NkRCRjIyQUM2QjBBRDRDOUJEMjgzMDhFNEI5NjhGNDI0RTg4RTE3QzA5NUI5RTI0MTBEMkE0QTE4QjlFRjY5NDBEQTI0RjZCQzU0RjIwMjhGNzQ1RTUyOEFFRTQ5N0UzMzg4QUU2QTgzMEI0RkREQTc1NEFGRkVCN0NFM0E0QURENkFEMEI5MkQ1NTg1MTg0RDk0NDQ0NzUyQjA5MjhFNEU5NTk1RDE2MkQ4NzY2MDQxM0I4MjU5NzZGNzM5OEY2NUQxOUQzNjhDQTlGMzc2Q0M3RUFFRjAyRkNBQzkwODY3MDA4RDIxQzhBMDY0M0M0MkI1NjE0OTkyREQ0RDhEOUE2QkFBRTdGQkY5NjU1ODEzNjVCNjdFNTNEQjBFRkRCQzg5NUIxQzEwOTVCMTkzMDZCNjQxNUNGMzNEQTFGM0YxNDlDMzYzOTk2N0JDM0ZBQzgyRkI2OEVDRDZBQ0I0M0FBMDcyRUNDRjRDMTJGRUFFRjRENEQ4RDVBM0Q2RDQwQzQyMjBCRjM4OEQxMEE3OUI5NDc4MUU5NTc0NjBFMzMxQTdGMzMwQzI5MTE4ODIwOEJGRjcyNDNDN0Y5QjYxQzdBN0NDNDJGNjUwQ0ZDODFGMkRBOTMzN0E2NTAyOEVDMkRENzREODk0QUY5NjIwMUU4RDgyRjU0NkFGNkFBOEVDRDNGQ0I1ODM3NzZFMjM3QUZDNDgyQzg2MTk1MjgxQ0YwOUYxNDQ5REMyMTk2M0FEMjE3QkM1REI1REM3QzJFNEM5RTdCREQzMzU2RjY2ODg5QjU4QjE5REJBQzQ0NUNDRDczMzkwOUEzMUM1QjBBQzFGNjM1RkZCNjM1QTdGOEZGMjk3QjA3MkNBMkE3Mjg4OEIzQzY0Qzg2RDNCM0UzQ0Q4MEQ2MzAyOUE2NEY3RjMwOTc1OTQwQzE2RUJCOUE4MUMzQ0Y4NjYwMUUzNjBCNDhDMTlFQjkyMEQwRjMxNjQyMzgwM0Y4M0IxMkEwRDQ1ODFDN0QzNzdGMjBDNjMxMThFOUQ1NDkyMzdEOERBRDExRTgxRUMzN0JDMUY4NDI0NDZGMjM4OUYxQjQ3QzczMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwMTA1MDAwNDgyMDEwMDQ3MDkxMjIxNDdGRkM4NEUwOTJEOUQxQzE3MTMzNUU2NEUwQTEyMUEzNTE2MTdFREE1OEU3MzgxMTgyM0U5RjJFNDlEMjJGMDQ0Qzk1RTU1MzExRUZEOTkzMTYwMzkxQTNCMDJDODM0QkUwMUVFQkE3MDBFQjExM0IxMDA4REI0MDQ1NTI5MDJDQzFBQzY0RTQ2OTYwODY3MkE2OEI0MDhDRTBFQkU1RUVDMzhDRDE3REJGQkQ3RjlEOTM1ODZEQ0Q2ODNFMjdGRkM2MzdCMEFFREQ3OTVDQjBBNjU4RDNGQUNGMDc4ODhCOTQ5M0VDMTk2OEFCRUJFNDhDOUE2QTE0MEU2OENEREE2Njc3RjgwNDNBMzAwMEJBOTYzOEJFNzUyMzBCRUYwMzYzNzgwOTlBRDA0NDkxRkFCMDc1ODVDQkU5QTdEODE4RkUwRjhEMjkxMDY4Qzc1NzE1MUU0N0YxNjM4N0M3MDdEMjA5NEYxMUVEMThDNUQ1RjZERTI4MTVFMkVGNDdFQzg0MTQ2RDQzRjE2NDUzMUIyQUM5M0VEMjE0NEVEQTdCMjNCRUYzQUJBNEM0NTIyRTgxNDE4NzY0NjA2OTExOEZBMDZGQjg0RTYwODYyMUYxMTNBQzJGM0JCMzM1MzQ5OTcwRDdGNkFGRDgwODNFNTI1QUZBOUQ5QTE4MjEzMEIzMDgyMTMwNzA2MEIyQTg2NDg4NkY3MEQwMTA5MTAwMjBFMzE4MjEyRjYzMDgyMTJGMjA2MDkyQTg2NDg4NkY3MEQwMTA3MDJBMDgyMTJFMzMwODIxMkRGMDIwMTAzMzEwRjMwMEQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAxMDUwMDMwN0IwNjBCMkE4NjQ4ODZGNzBEMDEwOTEwMDEwNEEwNkMwNDZBMzA2ODAyMDEwMTA2MDYwNDAwOEY2NzAxMDEzMDMxMzAwRDA2MDk2MDg2NDgwMTY1MDMwNDAyMDEwNTAwMDQyMDI2QjA0N0FCNzlFRkM1RDE2NDc2NDdBQTFGODdCRTc0OEU3QThERkU4MEQyOTU5MDIwNjYyOUFBRDgzREMyODYwMjA4MEY5QjQxMzhGREI3NTJBNTE4MEYzMjMwMzIzMTMwMzQzMjMwMzIzMDM1MzQzNDM3NUEzMDAzMDIwMTAxMDIwODUxMUE3MDEwMzdERkZFMDhBMDgyMEU4MDMwODIwNzExMzA4MjA0RjlBMDAzMDIwMTAyMDIxMDBBMEIzNzYyNDY2Q0QwOUIzQTJCOUU1RjUwNzdFRTdEMzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMzA4MUMzMzEwQjMwMDkwNjAzNTUwNDA2MTMwMjQ3NTIzMTJCMzAyOTA2MDM1NTA0MEEwQzIyNDc3MjY1NjU2QjIwNTU2RTY5NzY2NTcyNzM2OTc0Njk2NTczMjA0RTY1NzQ3NzZGNzI2QjIwMjg0NzU1NkU2NTc0MjkzMTE4MzAxNjA2MDM1NTA0NjEwQzBGNTY0MTU0NDc1MjJEMzAzOTM5MzAzMjM4MzIzMjMwMzEzNzMwMzUwNjAzNTUwNDBCMEMyRTQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA0MzQxMzEzNDMwMzIwNjAzNTUwNDAzMEMyQjQ4NDE1MjQ5NDM0MTIwNTE3NTYxNkM2OTY2Njk2NTY0MjA1NDY5NkQ2NTIwNTM3NDYxNkQ3MDY5NkU2NzIwNTI1MzQxMjA1Mzc1NjI0MzQxMjA1MjMxMzAxRTE3MEQzMjMwMzAzNTMyMzAzMDM4MzIzMTM1Mzk1QTE3MEQzMzMwMzAzNTMxMzgzMDM4MzIzMTM1Mzk1QTMwODE4QTMxMEIzMDA5MDYwMzU1MDQwNjEzMDI0NzUyMzEwRjMwMEQwNjAzNTUwNDA3MEMwNjQxNzQ2ODY1NkU3MzMxMzczMDM1MDYwMzU1MDQwQTBDMkU0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNDM0MTMxMzEzMDJGMDYwMzU1MDQwMzBDMjg0ODQxNTI0OTQzNDEyMDUxNzU2MTZDNjk2NjY5NjU2NDIwNTQ2OTZENjUyRDUzNzQ2MTZENzA2OTZFNjcyMDU1NkU2OTc0MjAzMjMwMzIzMDMwODIwMTIyMzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMDEwNTAwMDM4MjAxMEYwMDMwODIwMTBBMDI4MjAxMDEwMERCQzIzRkE2MzQzQUM4MDY1MjQyODY4NDU4Qjg4NTI5RTJCRjExQUZCRDhFNUQzRENDMzc0MzlGNjkxMTVBNTU2NjZDQkJCOTcyNTc3QjNCRTdBODVFRjk2N0Q2OUVFRDNBNURDRDNBMTc3RENDMjJBOEU2RTlBMzExOUU4M0Q4NUQ3OEU5RjlGOTM3NDZEODZBNjRBM0Q4MzFFMDA0RDQ2ODhBNjgxNTI3MjExNDA2MzZDMTNDQkE2RUFBNDg5NTUzMkI1QjdFMUJGRjMxNjlBMEY0NzNGOEQ2QjIyQjVENjUxMEMwQURBQUU4MTc2QkE5MDdGMjI2NjdFRUUxRUQyQTgyMjEzOUFDNDIyMzI0OThGRTRDOTYyRjE4NUUxNDA2NkVEMTdDRTRBNTc0OTQzQTY3MTY3NzM3Qzc2MUVBMzg4Nzc0M0U1MTlFNDQzNDIwRDhGRjlFRTU3Nzc2MzgyNDA2MkUzMkYyQTA3MUVFNTU1Qzc1OUFFMjkwREI3NEE3QUNGNzc5REFERDE4MkQ2MDJCQjVBMDExNENEMjREQjlFNEFFMDdFQzAxREYxODk3RTE1REQ3OTE2QjdGMjgwMzJFMzczRjg0NTRCMjdFRjNFNzEwQjhDRDFGMEVFMTRCNjQ0MDAxMUU0MjIwQ0NBMzkzQ0M0NzU0NDk3QjVGMDIwMzAxMDAwMUEzODIwMjM2MzA4MjAyMzIzMDFGMDYwMzU1MUQyMzA0MTgzMDE2ODAxNEQ5NTgzRTU1RDhBNzcyODUwMTQ3OTM2MTU2M0MyODY5NzUyRUUwNzkzMDgxODEwNjA4MkIwNjAxMDUwNTA3MDEwMTA0NzUzMDczMzA0RTA2MDgyQjA2MDEwNTA1MDczMDAyODY0MjY4NzQ3NDcwM0EyRjJGNzI2NTcwNkYyRTY4NjE3MjY5NjM2MTJFNjc3MjJGNjM2NTcyNzQ3MzJGNDg2MTcyNjk2MzYxNTE3NTYxNkM2OTY2Njk2NTY0NTQ2OTZENjU1Mzc0NjE2RDcwNjk2RTY3NTM3NTYyNDM0MTUyMzEyRTYzNzI3NDMwMjEwNjA4MkIwNjAxMDUwNTA3MzAwMTg2MTU2ODc0NzQ3MDNBMkYyRjZGNjM3MzcwMkU2ODYxNzI2OTYzNjEyRTY3NzIzMDU3MDYwMzU1MUQyMDA0NTAzMDRFMzAwODA2MDYwNDAwOEY2NzAxMDEzMDQyMDYwQzJCMDYwMTA0MDE4MUNGMTEwMTAxMDYwMjMwMzIzMDMwMDYwODJCMDYwMTA1MDUwNzAyMDExNjI0Njg3NDc0NzA3MzNBMkYyRjcyNjU3MDZGMkU2ODYxNzI2OTYzNjEyRTY3NzIyRjY0NkY2Mzc1NkQ2NTZFNzQ3MzJGNDM1MDUzMzAxNjA2MDM1NTFEMjUwMTAxRkYwNDBDMzAwQTA2MDgyQjA2MDEwNTA1MDcwMzA4MzA4MTlDMDYwODJCMDYwMTA1MDUwNzAxMDMwNDgxOEYzMDgxOEMzMDA4MDYwNjA0MDA4RTQ2MDEwMTMwMDgwNjA2MDQwMDhFNDYwMTA0MzA3NjA2MDYwNDAwOEU0NjAxMDUzMDZDMzAzNDE2MkU2ODc0NzQ3MDczM0EyRjJGNzI2NTcwNkYyRTY4NjE3MjY5NjM2MTJFNjc3MjJGNjQ2RjYzNzU2RDY1NkU3NDczMkY1NDUzNDE1MDQ0NTMyRDQ1NEUyRTcwNjQ2NjEzMDI2NTZFMzAzNDE2MkU2ODc0NzQ3MDczM0EyRjJGNzI2NTcwNkYyRTY4NjE3MjY5NjM2MTJFNjc3MjJGNjQ2RjYzNzU2RDY1NkU3NDczMkY1NDUzNDE1MDQ0NTMyRDQ1NEMyRTcwNjQ2NjEzMDI2NTZDMzA0QzA2MDM1NTFEMUYwNDQ1MzA0MzMwNDFBMDNGQTAzRDg2M0I2ODc0NzQ3MDNBMkYyRjYzNzI2QzJFNjg2MTcyNjk2MzYxMkU2NzcyMkY0ODYxNzI2OTYzNjE1MTc1NjE2QzY5NjY2OTY1NjQ1NDY5NkQ2NTUzNzQ2MTZENzA2OTZFNjc1Mzc1NjI0MzQxNTIzMTJFNjM3MjZDMzAxRDA2MDM1NTFEMEUwNDE2MDQxNEJDNjA2MDg0MUZEQjVFOERFMkY0RDFBQ0NDOTVDNUM0RjZFMjBEMDgzMDBFMDYwMzU1MUQwRjAxMDFGRjA0MDQwMzAyMDZDMDMwMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTBCMDUwMDAzODIwMjAxMDA1NEY0OEI5QjAwMDQ4NEEyQUFEQTMyNkU2REFEOUJCQkZDMzQ5NEJFQ0JGMTU4QzgxOEE4MTM0RjcyOEI3QzU3RkNDOThGMUI4NTY2RTBBRkE3NTRFNUIwNjdFOEIyNTIxNTgyOUQyQjIxNEU5Rjk3RDgyMjEyQTZGRTdFOUZGNkQ0QjRBMzhCQURBOEJCQjQ1NDI3NDI4RkI4QzUwMjg3Q0JFNjlERkEwNTQ1Q0FEMzQ5MDZGQzZERTI3Q0REREMxMUU3NjUzMDJBNzk4QzU5RjkzQ0UwODhCNENEQ0Y5N0NCNUQ4NTY3QUNBMjYwOTVDQUZCOTRDMTg1QzI5NjczNjZFOTRFODA5MEU3QzY3OTI4MEM1MzFEQ0EyNDlDMDM3RTNGQ0JFRTU3Nzc1QkJGRjlCNkVBRjVBOTgzMTE2NUZCN0UzODg5MkY3N0RGRkFBQzQyRjQxQUYyREMyMUMyNzVCMzk2RUNBRjYxQUQwRkJEODE0RDZCMDRGQjJEQ0RGMzVDQTg2RUIzQTI0NjkwOEQxOEQ4Qjc1OTgyQjkyMENGRDZFM0MxRTdBREQ2RkNDOTFEMUIwQzE2MEU1MEY5Q0VEQjMyNTNGNTkxOTUzQTdCMzYwNzE5RUNDMDU4QjJFNzQyNUU3OTIxNjI3MDc2NTdCQzFGMzRFM0Y2MTMzQkE1NDUxOEQ4QzhEODczOTc2RTdFMjREQjNCQzI1Mzg3MDJERDBCNzMzMUQzODY3MDJGNDc3QjYzMkEyQjkxMzc0NDk4RUQ3MTkwRjE2RDREQzI2OEZCOEFCMjg5MTJGQzI4MTg3RDlDOTcxRDI1Qjg4MzI4MDkyOUY3OTYxMEExRjgzMjM5RDRDNTczMjlFMUM0RTA3NTRFQUIwMTJBOTRBQzhBQTBCQzA2ODNDNzIyMzE1RDg4NDRCNTJDMjhFNTdBQ0ZDODhDMjYyRUZGQjE4NTZFNUE3RkI5QzJEQTcxODQ1QzM5RDRBQzU5RDAxRjY5OURBODU4RDk3QjIyMDZENjA4QjQyRTFENjA5REIyNzUyQ0E1RTIzQjVFOTQ0NjY4OTJERDM0NzAwM0E2Q0MzRkU0OTMxOEM0OUI2RUQ4OEFCOEFENTBCRTA2MjY5RDMxOTIyNTkzNTBGRTJCQjQyRTg1Qjk2QzI4ODQ3QTc4N0Q3MTI2NUU2NDNFOTQwMUQ3MjE4OTQyNEI1NjcwRkZGNjQwREExRkQzREI1NzQ0MzNGNUM0RjU1NjFCMTVBQzQ1QUEyNDJBRTk3NTY4MEQ1NEM2Qzg1Rjc2RTIwNzUwRTQ4MTA2MjdENDI1RjhERjcwOUU3MDRBNjlERDAxM0FBMEY2NTAwNTBCNDE1NEEwMzA4MjA3NjczMDgyMDU0RkEwMDMwMjAxMDIwMjEwMTg0MzUxMzhGRkMwNjQzRjk3M0Q0Rjg3NzcwNDhDNzEzMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwQjA1MDAzMDgxQTYzMTBCMzAwOTA2MDM1NTA0MDYxMzAyNDc1MjMxMEYzMDBEMDYwMzU1MDQwNzEzMDY0MTc0Njg2NTZFNzMzMTQ0MzA0MjA2MDM1NTA0MEExMzNCNDg2NTZDNkM2NTZFNjk2MzIwNDE2MzYxNjQ2NTZENjk2MzIwNjE2RTY0MjA1MjY1NzM2NTYxNzI2MzY4MjA0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNzMyMDQzNjU3Mjc0MkUyMDQxNzU3NDY4NkY3MjY5NzQ3OTMxNDAzMDNFMDYwMzU1MDQwMzEzMzc0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNTI2RjZGNzQ0MzQxMjAzMjMwMzEzNTMwMUUxNzBEMzIzMDMwMzUzMjMwMzAzNzMyMzYzMzM2NUExNzBEMzMzNTMwMzUzMTM3MzAzNzMyMzYzMzM2NUEzMDgxQzMzMTBCMzAwOTA2MDM1NTA0MDYxMzAyNDc1MjMxMkIzMDI5MDYwMzU1MDQwQTBDMjI0NzcyNjU2NTZCMjA1NTZFNjk3NjY1NzI3MzY5NzQ2OTY1NzMyMDRFNjU3NDc3NkY3MjZCMjAyODQ3NTU2RTY1NzQyOTMxMTgzMDE2MDYwMzU1MDQ2MTBDMEY1NjQxNTQ0NzUyMkQzMDM5MzkzMDMyMzgzMjMyMzAzMTM3MzAzNTA2MDM1NTA0MEIwQzJFNDg2NTZDNkM2NTZFNjk2MzIwNDE2MzYxNjQ2NTZENjk2MzIwNjE2RTY0MjA1MjY1NzM2NTYxNzI2MzY4MjA0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNzMyMDQzNDEzMTM0MzAzMjA2MDM1NTA0MDMwQzJCNDg0MTUyNDk0MzQxMjA1MTc1NjE2QzY5NjY2OTY1NjQyMDU0Njk2RDY1MjA1Mzc0NjE2RDcwNjk2RTY3MjA1MjUzNDEyMDUzNzU2MjQzNDEyMDUyMzEzMDgyMDIyMjMwMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTAxMDUwMDAzODIwMjBGMDAzMDgyMDIwQTAyODIwMjAxMDA5QkVBQTk0Rjg1Qjg3NjI4NDNDMDFGMzVGRTc0RTkxM0VDNTg2QzlGRTVEOTg4MTA3RTgyMDhBQThEOUZBM0ZCMjYyQkQ1NTQ5QUI2MTU2NTM4MUY0QzBGNzFFQUJBMTEyMUZDOERDREU4QUFCOEYxQTY2MkZBRkQzRUJDOUMwQUY5NUNCRDQyRURERkQzQUNGRkU5NTUxQ0U1NjA1MTEwQzI5QTExRUNEQTI5REFCMDVFQjY5RUI4QzcyRjZFQTdCNjY1MEUzMEMyREIwNEZENzQ2Q0Q5RTMwMzg1NTI1OTJEMTYxQjc5NkZGRjk2NTBCQjNENjQ5NENEQ0U5MjE1OTA0QTU3NEI1RjlFOERCNTE5QzkwMjJFRjRENUYxRUZGNjIwNTNGMDIxQzU4QkFEMkM3Q0Y3NTYyNzU3MjE1Qzc0MDA3RjczREFDN0I1MzhCNzRGMDkxRkE0MjFBNTY1MkE1QjQ3MUYyQjBCM0Q5NUQ1NEJBMDhGNEZEQjI4OTU0NjdGRTUyMjk5REIyMkYzMkNDNzk5Q0Q3RTM2QzVDQTkyMEM5NDE1ODc3QTAzODc5MUU4Mjg2RjEyRjAzRkI0QzhGRDE1ODE3REFDMkExRDJFMjVERTJDNzEzMzExQzg1NTlFNDQ5NEFBNkY3NzhCMjE4NTlFNjU4MTYyQkY5NDA1OUU1MEQwMDVBRDdBMDJBOUNGNzVDMTA4OTEyM0QyRDI2RUY2QzUzMEZDMDQwODUzRUQxODkzMDI3NTQ0MjE2RDhCMDZDNjk4OTk2NDk4RDhCRDlGOEQxRDk0MTE1MEJBMUU0MzA0MkRDNDkzRERGN0YwREFCOTE1QUVBNUI4OTNDREUyMDI1NkQzNkIzNDRDQ0RCMDUyMTlBNzU2RUExNkVDQ0NCMUREQzZDRTM4NTg1MDQ5Nzc5RDM1MjBBNjkwNTE2MkJEM0I1ODVDREE2ODRENkQ4QTg5RDFCQkE0RTFCOTAxM0YwRUFEQTBCM0EyM0RFNEY2NkExNTEwMTM2RTE4MUM5QUJBMEY5NTk0NkM3QTFENjRBMjQyQjc1ODdFRUIyQ0ZGRjdBRTNDMzQ0REYyRkI0N0Y0NjhEQjI4MTYzMzAzMzdFOTdCREIyRDMxRjg0RTk0RDQwQjE5MjY3NzlCODUwOEFERDgyODg4NDM4NTExOEQzMkFENTlFN0I1REUwNUYyMTQzNTdBMDVENjE0Rjk3NjI3QzgyNkNERUNEOTJGMUFFQjJEMTRBMDNFRDc1MjUwRDdBNDg1REIxMjIwMERDNDBCM0IxQjJCNjkyODczNzQzMUE3ODA2MzNCODUwMkIxQjU4M0EwRjlGOTNGMzY1MEZDNEEwRDQxMDIwMzAxMDAwMUEzODIwMTcwMzA4MjAxNkMzMDEyMDYwMzU1MUQxMzAxMDFGRjA0MDgzMDA2MDEwMUZGMDIwMTAwMzAxRjA2MDM1NTFEMjMwNDE4MzAxNjgwMTQ3MTE1NjdDOEM4QzlCRDc1NUQ3MkQwMzgxODZBOURGMzcxMjQ1NDBCMzA2RjA2MDgyQjA2MDEwNTA1MDcwMTAxMDQ2MzMwNjEzMDNDMDYwODJCMDYwMTA1MDUwNzMwMDI4NjMwNjg3NDc0NzAzQTJGMkY3MjY1NzA2RjJFNjg2MTcyNjk2MzYxMkU2NzcyMkY2MzY1NzI3NDczMkY0ODYxNzI2OTYzNjE1MjZGNkY3NDQzNDEzMjMwMzEzNTJFNjM3Mjc0MzAyMTA2MDgyQjA2MDEwNTA1MDczMDAxODYxNTY4NzQ3NDcwM0EyRjJGNkY2MzczNzAyRTY4NjE3MjY5NjM2MTJFNjc3MjMwNDQwNjAzNTUxRDIwMDQzRDMwM0IzMDM5MDYwNDU1MUQyMDAwMzAzMTMwMkYwNjA4MkIwNjAxMDUwNTA3MDIwMTE2MjM2ODc0NzQ3MDNBMkYyRjcyNjU3MDZGMkU2ODYxNzI2OTYzNjEyRTY3NzIyRjY0NkY2Mzc1NkQ2NTZFNzQ3MzJGNDM1MDUzMzAxMzA2MDM1NTFEMjUwNDBDMzAwQTA2MDgyQjA2MDEwNTA1MDcwMzA4MzAzQTA2MDM1NTFEMUYwNDMzMzAzMTMwMkZBMDJEQTAyQjg2Mjk2ODc0NzQ3MDNBMkYyRjYzNzI2QzJFNjg2MTcyNjk2MzYxMkU2NzcyMkY0ODYxNzI2OTYzNjE1MjZGNkY3NDQzNDEzMjMwMzEzNTJFNjM3MjZDMzAxRDA2MDM1NTFEMEUwNDE2MDQxNEQ5NTgzRTU1RDhBNzcyODUwMTQ3OTM2MTU2M0MyODY5NzUyRUUwNzkzMDBFMDYwMzU1MUQwRjAxMDFGRjA0MDQwMzAyMDE4NjMwMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTBCMDUwMDAzODIwMjAxMDAwMUI2NTM2NDRERkRCNEJDRDFGNUU0RUZGRjAyRjg0M0MzMEE0MjU0MDZCQ0FCQjVGMTk0RUIzREZEQzIzQkE2OEIyRTRCRDI0RTc2OEUwNzE2RTNEOTg0M0IzQUMzMjUxQTEyOTQ0QzQ3RDhFNjU3REQwMTA3MkI1NDNCMUYxNEQxNTAyNDA2MjMzMjEzNjdBMEU4RjYzMkM5NEExMzYxRkVBMjE2OTVCMzA5NENGODhCOUVEQjY1QTcwMjlCQjZBRjc3OTc4NEJCNkNDOTExRDVCOTIzNTA5NzE3RTI0N0MzNkUxOTVDMDY1MENCNjEzNjJBMTVEN0M1MEUyOTcxMjJFMDYwQzJCNUZDNzEyQUVFNENCRkFEMDk0MTNBRkE2MTUwNTQ5MkQyMDQ0NjJEQUJBQzM0NkMwMDVGOTE4Q0MwMzk4OEU5OThFMjhCRUNDNzVFQzExN0E2Q0Y0N0U1RTAwRDY5NTY3RDY5NTEwRDIwMjc3NjJBQjBBMzAxNDlERTNGMDhDNUI1REM0RjA2MUYyQUM1MzMzN0E3QkIwMjgzNkZBNDNEODNCRTVBNTMwOTlEQkQ5NkZDRUE0NjE2MDM0QjA3MEVERTVDRjgxRDVEMjFGMzBDQTc3MDg3OTM2QkM5NTY3RUM3NEFDNjIxQTcxNjQ5OUE0QjhGOTNFRTYyRTEyNkY2QUQyQzU2NkI5NkJGN0M2RkJBQTU4MUNCRUIyNDk1OTkxRDMwMUE2RUE5ODM4MjMzREZFMTFEMkQ0QzVEOUJGNDkzRTE2MkUwMzAyMzQ1MzYxRDQ4MkM5RjUyRjZFNEFBRERCOUEzNTNGRkUyRkIxMDI1RTlBMEE3QkVEQjlDNDg1MjRFMzhBOTI1OTQzREY4NkZDMEJCMjcxQUM0NEJFNTM2OTFCNjYyOTI5NzdEQzdEQThGQjlBMUQ1ODc2NDg2RTE5MTlGQ0FENjM1NTVGNDEwMzVBMjNCRUJFQzIwM0EzMzBCNEE4NTFBMEVCODIxM0MxNTI5RDhDNkUzNUNDQzRGODRDNzZCNTU2NTQzMUExQ0YxNEExRjc5OUJCMzE3NURCNTMwNkMzQzQzQzE4QjdCMzQxOUQ5MjVGODVEODhBQUNDNjBCOTUzNTcxREM5MjgxQTcyQzY3RTE3MkVGN0UxRjhDMkFFNjlCREFEOUM5MTkyQTY5MkQ3MjE5MjBGRDZBNjhENjZFN0U4QzdBREVEOTQ0NTY2NDVDMkRFOTVFRDZEMTZGNTY5REU4NjlDMzFBNzhBRDI5MTE2QzhCMjlGQzc4OUREMjdFNzg0NEY4MkRGRjY1QkMyRDRFOTMxNjE1MEM0Qjk3RkIwNzU4MkY1NTU0RTQyMzE4MjAzQzYzMDgyMDNDMjAyMDEwMTMwODFEODMwODFDMzMxMEIzMDA5MDYwMzU1MDQwNjEzMDI0NzUyMzEyQjMwMjkwNjAzNTUwNDBBMEMyMjQ3NzI2NTY1NkIyMDU1NkU2OTc2NjU3MjczNjk3NDY5NjU3MzIwNEU2NTc0Nzc2RjcyNkIyMDI4NDc1NTZFNjU3NDI5MzExODMwMTYwNjAzNTUwNDYxMEMwRjU2NDE1NDQ3NTIyRDMwMzkzOTMwMzIzODMyMzIzMDMxMzczMDM1MDYwMzU1MDQwQjBDMkU0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNDM0MTMxMzQzMDMyMDYwMzU1MDQwMzBDMkI0ODQxNTI0OTQzNDEyMDUxNzU2MTZDNjk2NjY5NjU2NDIwNTQ2OTZENjUyMDUzNzQ2MTZENzA2OTZFNjcyMDUyNTM0MTIwNTM3NTYyNDM0MTIwNTIzMTAyMTAwQTBCMzc2MjQ2NkNEMDlCM0EyQjlFNUY1MDc3RUU3RDMwMEQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAxMDUwMEEwODIwMUJFMzAxQTA2MDkyQTg2NDg4NkY3MEQwMTA5MDMzMTBEMDYwQjJBODY0ODg2RjcwRDAxMDkxMDAxMDQzMDFDMDYwOTJBODY0ODg2RjcwRDAxMDkwNTMxMEYxNzBEMzIzMTMwMzQzMjMwMzIzMDM1MzQzNDM3NUEzMDJEMDYwOTJBODY0ODg2RjcwRDAxMDkzNDMxMjAzMDFFMzAwRDA2MDk2MDg2NDgwMTY1MDMwNDAyMDEwNTAwQTEwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMzAyRjA2MDkyQTg2NDg4NkY3MEQwMTA5MDQzMTIyMDQyMDUyMjNEMjgzOEFGQjlFNjNBRTFFQTA0QjE2REY4MzE1OERCQTJDMDJFOTQ0OTk2QzA2MjQ4REQyMDlBMEVFMTMzMDgyMDEyMDA2MEIyQTg2NDg4NkY3MEQwMTA5MTAwMjJGMzE4MjAxMEYzMDgyMDEwQjMwODIwMTA3MzA4MjAxMDMwNDIwQ0EzNDE5OEIwNUMxMUI0NDJCRkExNThFNDQ4NDMwREIzMjBFQUVDQUZEM0ZGMjZBNzIxRkNFMTQ4Q0RDQjc3QjMwODFERTMwODFDOUE0ODFDNjMwODFDMzMxMEIzMDA5MDYwMzU1MDQwNjEzMDI0NzUyMzEyQjMwMjkwNjAzNTUwNDBBMEMyMjQ3NzI2NTY1NkIyMDU1NkU2OTc2NjU3MjczNjk3NDY5NjU3MzIwNEU2NTc0Nzc2RjcyNkIyMDI4NDc1NTZFNjU3NDI5MzExODMwMTYwNjAzNTUwNDYxMEMwRjU2NDE1NDQ3NTIyRDMwMzkzOTMwMzIzODMyMzIzMDMxMzczMDM1MDYwMzU1MDQwQjBDMkU0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNDM0MTMxMzQzMDMyMDYwMzU1MDQwMzBDMkI0ODQxNTI0OTQzNDEyMDUxNzU2MTZDNjk2NjY5NjU2NDIwNTQ2OTZENjUyMDUzNzQ2MTZENzA2OTZFNjcyMDUyNTM0MTIwNTM3NTYyNDM0MTIwNTIzMTAyMTAwQTBCMzc2MjQ2NkNEMDlCM0EyQjlFNUY1MDc3RUU3RDMwMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTBCMDUwMDA0ODIwMTAwNkU3QTVGNTk3OUI0Q0QxM0UzMzA4QkMwRkEzMDVGOTM0NzEwREE1NkFGMjNFQjZGMjdBQ0EwNENFQ0UzMzU1RjFFNDgyRkVGMUM4MjUwQjY1QkFEREM1RDA0RkI5NjNGMjBCOEFENjFBMTFBMjlFMEFFOUFBMjhBNzM1RjRGMjNEQkQwRUJDQTZGQkIzQjgwQkM4OTk3QjQyMkI3NUM2RjE0QjNFMkZGNDZDMDdGMjUzNjA3M0VDQjA5QThCN0I0Q0RGQjRERjU0NUNBM0UxOTYwQjI0QjZCRTY2QzlEMjBDREM1MjE2MjUwQTgyRTU2RURCNjRBQzREOTBCMEJGNzY3MDI1NEExRENGM0UwNjY3RkMxRUZCNjFERkMzMDA2NkUyM0Q2QjEyNUNGMzUwODQ4REMwNjM1OTQwOUI0OTI2NDIwQjFFNkEwRkY3MzNGQzczRUVFMEREMzIwOTZDOUNBMzMzMkYzMjVDMDZDMzAwNEY1RTlCQkI1RTEzMTc4ODk3RDIxRDM3MDdDRjI4RUZBNDA4MjZBMzY3NDE1QkUyMzgzQzYxRUE1RjEwNEE3REU1RjhEQ0Y1RTg5NTA3NjkwMEJCMzhFQzFFNkY4ODYxNjRDQzQ4NDNDRjYzMEU4MDg5MkM2QkQ0OUFBQzFFQTYwMTQ1QTk2QTQ5RjYxNzMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA+Ci9CeXRlUmFuZ2UgWzAgOTQwNiA2NjI0MCAxNDc2OV0gICAgICAgICAgICAgICAgCj4+CmVuZG9iagoyIDAgb2JqCjw8Ci9UeXBlIC9QYWdlCi9QYXJlbnQgMyAwIFIKL1Jlc291cmNlcyA2IDAgUgovQ29udGVudHMgNCAwIFIKL01lZGlhQm94IFswIDAgNTk1IDg0Ml0KL0Fubm90cyBbMjEgMCBSXQo+PgplbmRvYmoKMjMgMCBvYmoKPDwKL0xlbmd0aCA2MTEKL1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0Zvcm0KL1Jlc291cmNlcyA8PAovRXh0R1N0YXRlIDI0IDAgUgovRm9udCAyNSAwIFIKL1hPYmplY3QgPDwKL0ltMSAyNiAwIFIKPj4KPj4KL0Zvcm1UeXBlIDEKL0JCb3ggWzAuMCAwLjAgMzEyLjAgMjIuNzk5OTg4XQo+PgpzdHJ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gMCBvYmoKPDwKL1R5cGUgL0V4dEdTdGF0ZQovY2EgMS4wCj4+CmVuZG9iagoyOSAwIG9iago8PAovVHlwZSAvRm9udAovQmFzZUZvbnQgL0FBV1pGQytEZWphVnVTYW5zCi9TdWJ0eXBlIC9UeXBlMAovRW5jb2RpbmcgL0lkZW50aXR5LUgKL0Rlc2NlbmRhbnRGb250cyBbMzAgMCBSXQovVG9Vbmljb2RlIDMxIDAgUgo+PgplbmRvYmoKMzAgMCBvYmoKPDwKL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL0NJREZvbnRUeXBlMgovQmFzZUZvbnQgL0FBV1pGQytEZWphVnVTYW5zCi9DSURTeXN0ZW1JbmZvIDMyIDAgUgovRm9udERlc2NyaXB0b3IgMzMgMCBSCi9XIFswIFs2MDBdCiAzIFszMThdCiAxNiBbMzYxIDMxOCAzMzcgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzZdCiAyNyBbNjM2XQogMjkgWzMzN10KNDAgWzYzMl0KIDQzIFs3NTJdCiA1NCBbNjM1IDYxMV0KIDY4IFs2MTNdCiA3MCBbNTUwXQo3MiBbNjE1XQogNzYgWzI3OF0KIDc5IFsyNzggOTc0IDYzNCA2MTIgNjM1XQogODYgWzUyMSAzOTIgNjM0XQogOTEgWzU5Ml0KMTE5IFs2MzZdCiA3OTYgWzUwMF0KIDgxMyBbNzUyXQogODI5IFs3ODddCiA4MzMgWzY1OSA1NDFdCjgzNiBbMzM4XQogODM4IFs2NTldCiA4NDAgWzU5Ml0KIDg0MiBbNTQxXQogODQ0IFs2MzRdCjg0NiBbMzM4IDU4OV0KIDg0OSBbNjM2IDU1OV0KIDg1MiBbNjEyIDYwMiA2MzVdCiA4NTggWzU3OSA2NjBdCiA4NjUgWzYxMl0KXQovQ0lEVG9HSURNYXAgMzQgMCBSCj4+CmVuZG9iagozMSAwIG9iago8PAovTGVuZ3RoIDQ0MwovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0NCnicXZPNauMwFEb3egotO4vgH0m2A8FgKQ1kMW1pOg/g2EowNLJRnEXefpT7ySnUEA46vlf6bOcmZr/du2HmyYcfu4Od+WlwvbfX8eY7y4/2PDiW5bwfujmuGKG7tBNLQvfhfp3tZe9OI9t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 \ No newline at end of file diff --git a/eseal/src/test/resources/detached-sign-case/signed-detached-utc-b64-pdf.txt b/eseal/src/test/resources/detached-sign-case/signed-detached-utc-b64-pdf.txt new file mode 100644 index 0000000..404ae63 --- /dev/null +++ b/eseal/src/test/resources/detached-sign-case/signed-detached-utc-b64-pdf.txt @@ -0,0 +1 @@ +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KZW5kb2JqCjE0IDAgb2JqCjMyOTYKZW5kb2JqCjE1IDAgb2JqCihoZWxsb3dvcmxkKQplbmRvYmoKMTYgMCBvYmoKKE1hYyBPUyBYIDEwLjEzLjEgUXVhcnR6IFBERkNvbnRleHQpCmVuZG9iagoxNyAwIG9iagooVGV4dEVkaXQpCmVuZG9iagoxOCAwIG9iagooRDoyMDIwMTAyNTEwMjgyMlowMCcwMCcpCmVuZG9iagoxOSAwIG9iagooKQplbmRvYmoKMjAgMCBvYmoKWyBdCmVuZG9iagoxIDAgb2JqCjw8IC9UaXRsZSAxNSAwIFIgL1Byb2R1Y2VyIDE2IDAgUiAvQ3JlYXRvciAxNyAwIFIgL0NyZWF0aW9uRGF0ZSAxOCAwIFIgL01vZERhdGUKMTggMCBSIC9LZXl3b3JkcyAxOSAwIFIgL0FBUEw6S2V5d29yZHMgMjAgMCBSID4+CmVuZG9iagp4cmVmCjAgMjEKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDA4MzE4IDAwMDAwIG4gCjAwMDAwMDAyNDIgMDAwMDAgbiAKMDAwMDAwMzk2OSAwMDAwMCBuIAowMDAwMDAwMDIyIDAwMDAwIG4gCjAwMDAwMDAyMjMgMDAwMDAgbiAKMDAwMDAwMDM0NiAwMDAwMCBuIAowMDAwMDAzOTM0IDAwMDAwIG4gCjAwMDAwMDQxMDIgMDAwMDAgbiAKMDAwMDAwMDQ0MyAwMDAwMCBuIAowMDAwMDAzOTEzIDAwMDAwIG4gCjAwMDAwMDQwNTIgMDAwMDAgbiAKMDAwMDAwNDQ2OSAwMDAwMCBuIAowMDAwMDA0NzIxIDAwMDAwIG4gCjAwMDAwMDgxMDcgMDAwMDAgbiAKMDAwMDAwODEyOCAwMDAwMCBuIAowMDAwMDA4MTU3IDAwMDAwIG4gCjAwMDAwMDgyMTAgMDAwMDAgbiAKMDAwMDAwODIzNyAwMDAwMCBuIAowMDAwMDA4Mjc5IDAwMDAwIG4gCjAwMDAwMDgyOTggMDAwMDAgbiAKdHJhaWxlcgo8PCAvU2l6ZSAyMSAvUm9vdCAxMSAwIFIgL0luZm8gMSAwIFIgL0lEIFsgPDdmMTkzYTUzZmRiMzEwYzkwMmUyNzRiODdlYjgzZGE3Pgo8N2YxOTNhNTNmZGIzMTBjOTAyZTI3NGI4N2ViODNkYTc+IF0gPj4Kc3RhcnR4cmVmCjg0NjIKJSVFT0YKDQoxMSAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovUGFnZXMgMyAwIFIKL0Fjcm9Gb3JtIDw8Ci9GaWVsZHMgWzIxIDAgUl0KL1NpZ0ZsYWdzIDMKPj4KPj4KZW5kb2JqCjIxIDAgb2JqCjw8Ci9GVCAvU2lnCi9UeXBlIC9Bbm5vdAovU3VidHlwZSAvV2lkZ2V0Ci9GIDEzMgovVCAoU2lnbmF0dXJlMSkKL1YgMjIgMCBSCi9QIDIgMCBSCi9SZWN0IFswLjAgODE2LjAxMzI0IDMwMC41ODgwNyA4NDIuMF0KL0FQIDw8Ci9OIDIzIDAgUgo+Pgo+PgplbmRvYmoKMjIgMCBvYmoKPDwKL1R5cGUgL1NpZwovRmlsdGVyIC9BZG9iZS5QUEtMaXRlCi9TdWJGaWx0ZXIgL0VUU0kuQ0FkRVMuZGV0YWNoZWQKL00gKEQ6MjAyMTA0MDgxNzEwMzUrMDAnMDAnKQovQ29udGVudHMgPDMwODI0OEE0MDYwOTJBODY0ODg2RjcwRDAxMDcwMkEwODI0ODk1MzA4MjQ4OTEwMjAxMDEzMTBGMzAwRDA2MDk2MDg2NDgwMTY1MDMwNDAyMDEwNTAwMzAwQjA2MDkyQTg2NDg4NkY3MEQwMTA3MDFBMDgyMTVEMjMwODIwODMwMzA4MjA2MThBMDAzMDIwMTAyMDIxMDczN0Y1RjFFMDZDNTQ5MEI1RTc2Njc1QkMyMjMzMjU1MzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMzA4MUJDMzEwQjMwMDkwNjAzNTUwNDA2MTMwMjQ3NTIzMTJCMzAyOTA2MDM1NTA0MEEwQzIyNDc3MjY1NjU2QjIwNTU2RTY5NzY2NTcyNzM2OTc0Njk2NTczMjA0RTY1NzQ3NzZGNzI2QjIwMjg0NzU1NkU2NTc0MjkzMTE4MzAxNjA2MDM1NTA0NjEwQzBGNTY0MTU0NDc1MjJEMzAzOTM5MzAzMjM4MzIzMjMwMzEzNzMwMzUwNjAzNTUwNDBCMEMyRTQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA0MzQxMzEyRDMwMkIwNjAzNTUwNDAzMEMyNDQ4NDE1MjQ5NDM0MTIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTYxNkMyMDQzNkM2OTY1NkU3NDIwNTM3NTYyNDM0MTIwNTIzMTMwMUUxNzBEMzIzMDMxMzEzMTM5MzAzNzMwMzczMTM4NUExNzBEMzIzMTMxMzEzMTM5MzAzNzMwMzczMTM4NUEzMDgxRDIzMTBCMzAwOTA2MDM1NTA0MDYxMzAyNDc1MjMxMTUzMDEzMDYwMzU1MDQwNzBDMEM1NDY4NjU3MzczNjE2QzZGNkU2OTZCNjkzMTJEMzAyQjA2MDM1NTA0MEEwQzI0NDE3MjY5NzM3NDZGNzQ2QzY1MjA1NTZFNjk3NjY1NzI3MzY5NzQ3OTIwNkY2NjIwNTQ2ODY1NzM3MzYxNkM2RjZFNjk2QjY5MzExMjMwMTAwNjAzNTUwNDBCMEMwOTQ5NTQyMDQzNjU2RTc0NjU3MjMxMTczMDE1MDYwMzU1MDQwNDBDMEU0NDZGNkI2OTZENjE3Mzc0Njk2QjY5NjQ2OTczMzExNTMwMTMwNjAzNTUwNDJBMEMwQzQ0NkY2QjY5NkQ2MTczNzQ2OTZCNkY3MzMxMTMzMDExMDYwMzU1MDQwNTEzMEEzMjMzMzgzOTM4MzYzNjM0MzczMTMxMjQzMDIyMDYwMzU1MDQwMzBDMUI0NDZGNkI2OTZENjE3Mzc0Njk2QjZGNzMyMDQ0NkY2QjY5NkQ2MTczNzQ2OTZCNjk2NDY5NzMzMDgyMDEyMjMwMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTAxMDUwMDAzODIwMTBGMDAzMDgyMDEwQTAyODIwMTAxMDBCNTlFQzQ5RUFFODI1MkFGNjIxRENERjBBOTJFNzFCRUMxODEzMDIyQ0E1QTkyREIwNkQ5MEJDQjhDMzM2MzM1OEE1QkJGNDg5OTgyM0JCRDE0N0FEOUU0ODZENUJEQzFENTBDNTkyMkJERDUxREVDODBBQTU2NkVCODREODk3QTY2QUMxMTU5MDhDRUFCQkFBODkyNTM0MjAxMDQ3RDJBRDJCMUU5MDk0NUM0MTE3NzQwRjg3RkJBQjZGNjE3NzFCOTdCQkE1QjYwQkNCQkJCOUNCRjdDRjVBOTJFRTA1NjI4NDk0QkY0MDE3MTM5NTkyQUIwOEYzRjNBNkQ5MTMzQjIwMkE4NDVEOUQ4MDI2OUU2ODkyMDMzQTFBRjdERThCOThEMjVFNzI2Qzc1QUE2RUY5OUIwNzk2MkE4NEVCMjVDN0Y3QkMzQkU0RjdDQjZDOThBOEEwNzA3RTE2MzY4MzU0NDc5Q0JGNDMwN0Q5RDM4MEE1NzM4RDg2NkNDNkZEQ0I4MUQ5NTJFRDkwRkNENjkxMDg1RjZERDkxRjEwQTdBNjc5NDZCMjkxMTVDMDYyNDk3RkREOUM1RTBDOUE4QUFENzVBMTJBMzNBQjFBQTVGNTAxQUIxODJFMkJDRDREMUI2Q0MzODgxMTFFRjk3OUYzQzczNUQyNUIyNDE3OTAyMDMwMTAwMDFBMzgyMDMxNDMwODIwMzEwMzAxRjA2MDM1NTFEMjMwNDE4MzAxNjgwMTRDM0U3QUM1QUMxNUYzOTc4RTAxNjMwRjFENThFNUQ1QUNERkE2OTREMzA4MTg3MDYwODJCMDYwMTA1MDUwNzAxMDEwNDdCMzA3OTMwNTAwNjA4MkIwNjAxMDUwNTA3MzAwMjg2NDQ2ODc0NzQ3MDNBMkYyRjcyNjU3MDZGMkQ3Mzc0NjcyRTY4NjE3MjY5NjM2MTJFNjc3MjJGNjM2NTcyNzQ3MzJGNDg2MTcyNjk2MzYxNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTYxNkM0MzZDNjk2NTZFNzQ1Mzc1NjI0MzQxNTIzMTJFNjM2NTcyMzAyNTA2MDgyQjA2MDEwNTA1MDczMDAxODYxOTY4NzQ3NDcwM0EyRjJGNkY2MzczNzAyRDczNzQ2NzJFNjg2MTcyNjk2MzYxMkU2NzcyMzA4MUYzMDYwMzU1MUQyMDA0ODFFQjMwODFFODMwMDkwNjA3MDQwMDhCRUM0MDAxMDIzMDgxQ0IwNjBDMkIwNjAxMDQwMTgxQ0YxMTAxMDEwNDAyMzA4MUJBMzAzMDA2MDgyQjA2MDEwNTA1MDcwMjAxMTYyNDY4NzQ3NDcwNzMzQTJGMkY3MjY1NzA2RjJFNjg2MTcyNjk2MzYxMkU2NzcyMkY2NDZGNjM3NTZENjU2RTc0NzMyRjQzNTA1MzMwODE4NTA2MDgyQjA2MDEwNTA1MDcwMjAyMzA3OTBDNzc1NDY4Njk3MzIwNTE3NTYxNkM2OTY2Njk2NTY0MjA0MzY1NzI3NDY5NjY2OTYzNjE3NDY1MjA2ODYxNzMyMDYyNjU2NTZFMjA0OTczNzM3NTY1NjQyMDYyNzkyMDc0Njg2NTIwNTE1NDUzNTAyMDIyNDc3MjY1NjU2QjIwNTU2RTY5NzY2NTcyNzM2OTc0Njk2NTczMjA0RTY1NzQ3NzZGNzI2QjIwMjg0NzU1NkU2NTc0MjkyMjIwNzc2OTc0NjgyMDU2NDE1NDIwNkU3NTZENjI2NTcyMjA0NTRDMzAzOTM5MzAzMjM4MzIzMjMwMzAwRDA2MEIyQjA2MDEwNDAxODFDRjExMDEwMTA4MzAyMDA2MDM1NTFEMjUwNDE5MzAxNzA2MEEyQjA2MDEwNDAxODIzNzBBMDMwQzA2MDkyQTg2NDg4NkY3MkYwMTAxMDUzMDgxQ0IwNjA4MkIwNjAxMDUwNTA3MDEwMzA0ODFCRTMwODFCQjMwMDgwNjA2MDQwMDhFNDYwMTAxMzAwODA2MDYwNDAwOEU0NjAxMDQzMDEzMDYwNjA0MDA4RTQ2MDEwNjMwMDkwNjA3MDQwMDhFNDYwMTA2MDEzMDgxOEYwNjA2MDQwMDhFNDYwMTA1MzA4MTg0MzA0MDE2M0E2ODc0NzQ3MDczM0EyRjJGNzc3Nzc3MkU2ODYxNzI2OTYzNjEyRTY3NzIyRjY0NkY2Mzc1NkQ2NTZFNzQ3MzJGNTE3NTYxNkM2OTY2Njk2NTY0NEU2MTc0NzU3MjYxNkM1MDQ0NTMyRDQ1NEUyRTcwNjQ2NjEzMDI2NTZFMzA0MDE2M0E2ODc0NzQ3MDczM0EyRjJGNzc3Nzc3MkU2ODYxNzI2OTYzNjEyRTY3NzIyRjY0NkY2Mzc1NkQ2NTZFNzQ3MzJGNTE3NTYxNkM2OTY2Njk2NTY0NEU2MTc0NzU3MjYxNkM1MDQ0NTMyRDQ1NEMyRTcwNjQ2NjEzMDI2NTZDMzA0RTA2MDM1NTFEMUYwNDQ3MzA0NTMwNDNBMDQxQTAzRjg2M0Q2ODc0NzQ3MDNBMkYyRjYzNzI2QzJENzM3NDY3MkU2ODYxNzI2OTYzNjEyRTY3NzIyRjQ4NjE3MjY5NjM2MTQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU2MTZDNDM2QzY5NjU2RTc0NTM3NTYyNDM0MTUyMzEyRTYzNzI2QzMwMUQwNjAzNTUxRDBFMDQxNjA0MTQyOUZFNEZDQjc0RkZEQzk4ODQyRkY0NzYxMzg5QjVFRjU1Q0NCREFGMzAwRTA2MDM1NTFEMEYwMTAxRkYwNDA0MDMwMjA2QzAzMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwQjA1MDAwMzgyMDIwMTAwMjEzMzY5MUY4QTAyOTE1NTBEQjMxQTQxM0M0MjUwQ0JCNzk1RTg5MzM5NjQ1OEMwRTVCQzRBMUMwQkQ1MkVEMEU0RjgxMjRFNzBCNTRGMUE0NDlEMTQzRjI2NTAxMjVBOUQxNEY2RDRBNkNDMzJBQTNEQzMyMTFCNTEwMzI1MTQ2MEVCM0E4Mjc3RTkwRTk0RUU3QjE1Q0JBRjdGQTEyRDEzQTE1RjRCQjcxMjI1ODA0Qzg2NDAwRTI0QTI2MzM5NEE3QTRBQ0VERjM0QkMxQzk5MTZCQTg4QTcwQjM5RjNCMEVBMDg0NTgzN0REQjRDRDI0NzQ2QUYzRUM0MzgxMUIxM0MxNTAzNTJCNDJBODhERDIxRjhFQTg2RTJEOTVEREE0RUExODZENTBFRkIwNjQxQjNCNzNBOTk2NTZFNzk5RDNBOUY2Qzk5RTRGOEU5RkM1OEM4MzUxMDExOTI2OTNDMTlERDJFNThDMzA3NTJDMTg2MjJDNEQ4RTIyRjgyNDkyQkZCQTQxMDYzMEUxQjdFQjM1NUREMERGREI5MjlDNTMwMjI4NzU1MTk4OTFFOUE0ODZFOTY5NTQ2RkE1M0U1Njg0NTJEN0M4MDAxNzBBQjRCQkNDNzY3RUY4OUY5RUM5QjVGNUYzMkZCNDAzODYwQUUxNkIzRDVCNjNFOTBGNEI2RTI0QkE2NkNDMjgzMURDQkNFOTI5OUM4RTYyNkIwMkI1NTQ1NEExMjlFMDM4NzJBQThGQkRGMzFGNkFBQzMxOTJEMkNBMzRFMDlFNTM5NTE5RTlDQkY2M0YyQTVBMEI4MkIwRTk3RDBCQ0JFMDg0RTc1NjgyRjA5RDc1NjlBQzE1QTUxREUwNkJERkEwNDkwRjc5OUIyOTg3NjhDQzgwNTUwQUZFMUU4NTg5NzUzMDc2RUZGNjgzMkMzQ0U5RTAzNjVEMDkyOTNCQjI0RUVDMzYxOTYwNTRFM0M2MkU3Q0Q4NDZDNzYyNDUxQTlBNkQwN0E1ODBCODg2QjZENjJENDkyMEE1OTIwOUI4RTI5MTFCODdDNUUzOUU5QzgyMDgyRUIwNTJGQjY4NTg2NDlEMTA3RjFGMDRGNjI0NDE3MThFRkFGODI0N0UxRjdEQTYyNDk5MjFFM0JENTg1QTE4MzRDN0MwMUZCMjg0MjM1QTlGRjNFQzQzRDNERThCQ0ZEMDQ1QUYyNkVDQTQyMEIzQ0QxNTkzMEJENDg2MTQ5MTA5MjE5QTczRTQ1NEE1NUVDRUM5QTIzMzU5MDZFRUFBMUQzQ0E1Qjg2QTMzNDU0REIxRURFN0I4OTRFMkVFOTM3MjgzRTQ3QkQ5QTRBNEQzMzNGNkM3RUYyM0RDRjMwODIwNzU1MzA4MjA1M0RBMDAzMDIwMTAyMDIxMDU4Qjc1QkNDM0YyOEIwODZCODcyNEQ1NEFDQkE5RkU4MzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMzA4MUFEMzEwQjMwMDkwNjAzNTUwNDA2MTMwMjQ3NTIzMTBGMzAwRDA2MDM1NTA0MDcwQzA2NDE3NDY4NjU2RTczMzE0NDMwNDIwNjAzNTUwNDBBMEMzQjQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA0MzY1NzI3NDJFMjA0MTc1NzQ2ODZGNzI2OTc0NzkzMTQ3MzA0NTA2MDM1NTA0MDMwQzNFNDg2NTZDNkM2NTZFNjk2MzIwNDE2MzYxNjQ2NTZENjk2MzIwNjE2RTY0MjA1MjY1NzM2NTYxNzI2MzY4MjA0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNzMyMDUyNkY2Rjc0NDM0MTIwMzIzMDMxMzUyMDJEMjA1NDY1NzM3NDMwMUUxNzBEMzIzMDMwMzczMDM3MzAzOTMyMzAzNDM4NUExNzBEMzMzNTMwMzczMDM0MzAzOTMyMzAzNDM4NUEzMDgxQkMzMTBCMzAwOTA2MDM1NTA0MDYxMzAyNDc1MjMxMkIzMDI5MDYwMzU1MDQwQTBDMjI0NzcyNjU2NTZCMjA1NTZFNjk3NjY1NzI3MzY5NzQ2OTY1NzMyMDRFNjU3NDc3NkY3MjZCMjAyODQ3NTU2RTY1NzQyOTMxMTgzMDE2MDYwMzU1MDQ2MTBDMEY1NjQxNTQ0NzUyMkQzMDM5MzkzMDMyMzgzMjMyMzAzMTM3MzAzNTA2MDM1NTA0MEIwQzJFNDg2NTZDNkM2NTZFNjk2MzIwNDE2MzYxNjQ2NTZENjk2MzIwNjE2RTY0MjA1MjY1NzM2NTYxNzI2MzY4MjA0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNzMyMDQzNDEzMTJEMzAyQjA2MDM1NTA0MDMwQzI0NDg0MTUyNDk0MzQxMjA0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNjE2QzIwNDM2QzY5NjU2RTc0MjA1Mzc1NjI0MzQxMjA1MjMxMzA4MjAyMjIzMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwMTA1MDAwMzgyMDIwRjAwMzA4MjAyMEEwMjgyMDIwMTAwQkE3QzA0RUNBQ0ExMjFBMzAzQzM4RUQxOTU3RDRFM0Q5MTM1OEE2MTZGREU0QzU3NjQxMzI5OTBGNkU0Mzc3RTg2RjdFNkU1RUREQUUyMUNGQjdFQkRFRDBCMjkxRTc1MzJDOTI2MTZCQUEzRENDRTZCQjAwNTgxRjkyMjM1MTk2Q0QzNUVDM0ZGNzMyNDBGQjU1Q0U2OEFGMzRFQjNGQjhGNkU0RTBENkY0Q0E4NjJDMTFBQ0M5RjBEQTZEMTkzOUY0N0Q3NUI3N0NENTgzQUIxMjNDRjIyQjQzRjY4MDhGNUY4MkVEMjRDQTk4ODc4RkVEMzk3NTAwMUMwN0Y1MTcyNkM1NjM2RTE5NjdCQzgyODdFOEIwNkM1M0Q3N0U1NUY4OTM1M0Q2MUYyNjdBODQ5MUU2REMyMjdDRjI1Mzc4MDkwQ0Q5MTE4QjU1RUNENjMyNUY3RTZCNDlDMTFDOTQ0RTNFQ0FGQTFCMEYxRjk2QkZGMjFGQjYyNzZEMTY5NDYyOTVBREFCNjFENTQ2RkQ1ODIxNTVEMkRENTE3RDU1RDhBNkQxOTUxMTU3MDI3MEM1M0NDQjE3OTJEQjUwQjRENTlCMDc4QjhBMTRBQTE0Q0NERkNFOTVBNEEwMTEyQjA0NzM5RkMwRDJFN0YxMEUyQzEwQjlFQUJDMzhBN0Q5QTkyODYwNzIxNjQwNTI3MEQ2ODU2ODY0MjUxQjNEODE1NTgwMzhENzM3RkEzQUE3QzQwRkNBMEQwQkNCNzkxNTBBOTE3NjFENDcxMjgzNzcxMzZBQjBBMDNGMzMyM0VCMjU3NDRDMUFDMTY3RUI3OTA0MkUyREY1Q0JEMTA2OTVCQUVCRTk5OTk1RjAwRTAyMjhDRUE1ODhFMEVDRDI2Mzc5QTdBRjVDMzU1Njk2RDVBNDU2MzdDNjhGNkM2RDhDOEM3ODJCOEU0RUEwQTY3QjdGN0JGMDAzRDBBNUM2QkI0QkNDQTAxOEY0MDFCRTEyNUZEMTI2QTk2RDFCQTVFNjc4NThDNTVEQzAyQ0QxODkwMDFEMUNFMzAxQjc5RTQ3MkM2QjZCOTg3NkYyMkQ1MkIzRkJEN0M2NzY2QjcwQkZGMEREREIxQUQ4NkExMUI4NUYxREY0Nzc5QTlBODM5MUM4NjNFRUNFRTU4RUMxRjI3OERBQThEQzE0RTQ3MjYxNzEwQ0REOTY0MUYyMTI1MzY2RTQ4QkYyOUU2QThBQzY0M0UzOEQyRUU0MUQwRjQ2MDUyRkE4NzlCMTlGREQ1NTM1OUNBMUIzMzQzRjg5NDExRDVEMTVFODJDNDQ0QzBFMzdCOTcwQUY4NEZENzQ5M0IzRUJDNEY1MjRGN0Y4MzAyMDMwMTAwMDFBMzgyMDE1RTMwODIwMTVBMzAxMjA2MDM1NTFEMTMwMTAxRkYwNDA4MzAwNjAxMDFGRjAyMDEwMDMwMUYwNjAzNTUxRDIzMDQxODMwMTY4MDE0OTg2NDZDNkJCNURDRjcyMUM5Q0Q2NTgwMzM0OURCNDBBOTFDQTM5QzMwNzYwNjA4MkIwNjAxMDUwNTA3MDEwMTA0NkEzMDY4MzAzRjA2MDgyQjA2MDEwNTA1MDczMDAyODYzMzY4NzQ3NDcwM0EyRjJGNzc3Nzc3MkU2NDY1NzYyRTY4NjE3MjY5NjM2MTJFNjc3MjJGNjM2NTcyNzQ3MzJGNDg2MTcyNjk2MzYxNTI2RjZGNzQ0MzQxMzIzMDMxMzUyRTYzNzI3NDMwMjUwNjA4MkIwNjAxMDUwNTA3MzAwMTg2MTk2ODc0NzQ3MDNBMkYyRjZGNjM3MzcwMkQ3Mzc0NjcyRTY4NjE3MjY5NjM2MTJFNjc3MjMwMTEwNjAzNTUxRDIwMDQwQTMwMDgzMDA2MDYwNDU1MUQyMDAwMzAyOTA2MDM1NTFEMjUwNDIyMzAyMDA2MDgyQjA2MDEwNTA1MDcwMzAyMDYwODJCMDYwMTA1MDUwNzAzMDQwNjBBMkIwNjAxMDQwMTgyMzcwQTAzMEMzMDNFMDYwMzU1MUQxRjA0MzczMDM1MzAzM0EwMzFBMDJGODYyRDY4NzQ3NDcwM0EyRjJGNjM3MjZDMkQ3Mzc0NjcyRTY4NjE3MjY5NjM2MTJFNjc3MjJGNDg2MTcyNjk2MzYxNTI2RjZGNzQ0MzQxMzIzMDMxMzUyRTYzNzI2QzMwMUQwNjAzNTUxRDBFMDQxNjA0MTRDM0U3QUM1QUMxNUYzOTc4RTAxNjMwRjFENThFNUQ1QUNERkE2OTREMzAwRTA2MDM1NTFEMEYwMTAxRkYwNDA0MDMwMjAxODYzMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwQjA1MDAwMzgyMDIwMTAwQTUxQUIyMkUyM0QxNTFEODFGQjREQjlEMTI1NzUzRjc5MUQzRTc0MjQ1QjY5NzY5N0IxMkRGMDEyQUUzRjRGRTRCRTY2Q0E0NTY0MTNEMjM0OEQ0MkRGRjAwN0YyNUFBRDI1REZFNDQ0QTE5NDA0OEU4M0FFRjAyNkVCOEU1RjkxNDJBNjU3RERDODg5NkRGQjE3MTZEMkJBRTJGNzI1RTA3MkVCQzMwRTIxMDBEOEIyQTRDMUQ0MzlENzdDODJFNEE2QUZEQUI1NzBEQkE4NTFFMUI1OTM0ODVDNTA1QkE3MkJEMENGMzQwMzA3MTcxNDA2Q0E4NjhFODRFMjkxODBDNzQ1M0VFRTJDRDAwQjk4OTg5RTc4NkM2QjVGRTAzMEEyQjUxRTAyODJFM0IzNjY0RjI3MjZGRjA3NzQ3Qzk2MTU4MkM0REE3REM2MTY2MDY4NjcxNjI0OEYwNjhEM0I1MUEzNUQ5QzMyMjc4NjBCOTE1QjlEN0FBOTgyQ0E0NUNBQjVFNzlCMTk3RjNBNTgyQzM3MzNGQUE2QUYwNjZEQzM0NkIxMTQ5NUUxNjhEQjhCMDE0OTgzN0NEN0MyREQzQUVBMEMyMjYxRjc0NkNGNDEyRDIxNzFEQUI4RDlEQkM0NUFBNTcyMTFGN0IxODNFNTlEOTY3NERBRDFENTRCMDA0MTU3MUJDNUM0NEUzNTAyNDFDNEYzQUI2NjlCMTA2OUMyMUZFOTc5MjY5QTM1RDdBOEJBQ0Y5NzlEMDQxM0JEM0UxNjc3NUQzOEZBQjEzNDAzNzZDQjQ2NjZBRUMwREMyOThBMzJFMTBBNzNDNkY3RUFGMUEzNEE5NzMyQjIxQjU5MTMzQzc5QkFEMjg0Q0E5NjIzMEVDN0JFQ0M5MDgyQkFFREJGNDJGQjQ5RTMzQzFGOTUwNjNBRTEwQzE2QkY3ODM1RERBQkEwNkZCRjE3MThGQ0VEQkM5OTZDRDNFREVGREY3OTdCQUQ4NzFENEUwRjhDRjg2NUE5NTc1REREMTM5OTE1NUJBQjA3NTAxM0E2Mzg1RUU0QjhBOTk3REQ3NTBDMDlGNjFCRTc3ODQ1MzNBMkM0NEQ2NTFDQUQ4MEFFRkNFQTI4REYyOTg1N0Q2M0UyODRGMzY2M0NGMjIwNjQ0NDRGOTAzRjNFMkMyNEIzNDgyOTVCOUY4MUY1ODg4NzU1QjIyNkY1NTg1NjMzNDY1NzZFRDY4NjA2MzcxRUZEMTlDRTUxRjk4OEM4QjY5REE3NjNEQkI1RjAwNzAwNTIxNEY2NzEyM0RDM0Q5NUNCMkI3ODM3MzM2QTMzQjM0QzQ3OUQyNkUxMjhCQTRFNzUzNzkzNTBBNTI0QTMwODIwNjQxMzA4MjA0MjlBMDAzMDIwMTAyMDIwODM5RjdEQTY0RUU5Njk2MTczMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwQjA1MDAzMDgxQUQzMTBCMzAwOTA2MDM1NTA0MDYxMzAyNDc1MjMxMEYzMDBEMDYwMzU1MDQwNzBDMDY0MTc0Njg2NTZFNzMzMTQ0MzA0MjA2MDM1NTA0MEEwQzNCNDg2NTZDNkM2NTZFNjk2MzIwNDE2MzYxNjQ2NTZENjk2MzIwNjE2RTY0MjA1MjY1NzM2NTYxNzI2MzY4MjA0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNzMyMDQzNjU3Mjc0MkUyMDQxNzU3NDY4NkY3MjY5NzQ3OTMxNDczMDQ1MDYwMzU1MDQwMzBDM0U0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNTI2RjZGNzQ0MzQxMjAzMjMwMzEzNTIwMkQyMDU0NjU3Mzc0MzAxRTE3MEQzMTM4MzAzNDMwMzIzMDM3MzMzODMzMzc1QTE3MEQzNDMzMzAzMzMyMzczMDM3MzMzODMzMzc1QTMwODFBRDMxMEIzMDA5MDYwMzU1MDQwNjEzMDI0NzUyMzEwRjMwMEQwNjAzNTUwNDA3MEMwNjQxNzQ2ODY1NkU3MzMxNDQzMDQyMDYwMzU1MDQwQTBDM0I0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNDM2NTcyNzQyRTIwNDE3NTc0Njg2RjcyNjk3NDc5MzE0NzMwNDUwNjAzNTUwNDAzMEMzRTQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA1MjZGNkY3NDQzNDEyMDMyMzAzMTM1MjAyRDIwNTQ2NTczNzQzMDgyMDIyMjMwMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTAxMDUwMDAzODIwMjBGMDAzMDgyMDIwQTAyODIwMjAxMDBCMTk1QUY4NjdCQjVCNEYyMDE4QjhBOUUxNTRCN0Q3NzE4ODE2QUFFREVCMkFFRDYyMzQ5ODNBRjlFRDdDQzNGNjg0NDY2MDU2RDBCMjZCQzZFN0Y5RDA5OTY2RjA1RjkyNDJDMjk5RDY2QjM1QTU0MDUxQzlGNTc4MkZCMzU1RDg3RDk3QTZDRjhENzBGRkE4ODgwQzU0ODVENTgzQzQ0NUM0ODM3RURGNTRFN0Q2NUY0RDVERUE0RkMxMTBFMzNGQTIwRjZCQzcyRTBFMkM1MTZFQTAwMkVCQzlCNkMyOEEwNjI5NTc4MUQwNzUzRDc4NTIzOTMzMzlFODI5RTBGOTBENzQ5QThFM0FEQkQ3MTdEMDU5RjdBMDVFNjc3MzhDMTZENjgyNEM2QjJEMDQ1RkJGRUQ4REYxNkZFRkNGQjYwNTgyQTUzQkNDN0JBMjM2RjMzNjAzREQzNjdBMEQyMEQ5RUVGMDRCRkIxRTdFOUZBN0NFRTg1RUY2QUNFQUY1QjkwRjYwNjlFMkQ0NUExMjgzQTg3RUI0NzREMjE5MDI2RkEyQzYzQzk5RTM2NzA4MDZFNjBGRjcyMTI5NTFGNzQ2Q0EwQTFEM0U2MTU3REJGQzgzQzZEOTFCNTI2M0FGNTNBNEVGQ0VERDgwQzE1MTZFQUIzMTE4RUI4ODFCOEZBN0E5OTNFRkZCMEJCOTc3QjhCOUE1RUYwNTY1NjA5QUE3Nzc3NDUzRkM1RTQwMTE5RTEwMzRBM0MyNTBDNTBDNjA3ODNFOTIyRTVBNjk4NEFDQjQxMDYyMTk4RTBCRkE3M0JERERBMkNDNTk4QkQzQjlBNzBBQTMzRDA2QzQ1OEQ0NDhEQ0IyMTdCQjM4OTg1M0FBMkMyMTlBQUQwQkUxNkM2MThCRjBFOTM2NUIzRjdGMjNBQUY4MjBFODY2MjYzRkExRjgyODg1NEJDN0YyNEQ2MjQ0Rjg1NTIwMEVDRTMxRjA3RUM2RDNERUMwMjQxRkM0NzFDNzJFQzM1MTI5NzU0QzgxQzE2RkRCMjAzMERGNTA4MTJBQkYwRTFGMUFFRjg3NTE4NTZCNjBEQzEwNzYwNkFCNzM3QjEwNjUwQkI3MjAzNTg0MjA4MzQyNTQ5NTNEM0IyQjZEOTEyQzRERkE2MUNBRTA2MDQzOEUzOEMwQkE5OTY0QjM0NUVFRjk3QkE4MTNBNDE3OTYyMzRCOTU4RkEzQ0Y2QzIzM0NGQTg3QzhCMzM3MTc4N0YxNzg0MEYwRTc0QkJBQkYyRUU0QkEwNTEzMDExMDNGOTUwMkY2OTg0ODI3RUREMjBFMTNFRkJENzVFMkVFNTZBQ0U4N0M0QTBCQjc2RUY5QTczMDIwMzAxMDAwMUEzNjMzMDYxMzAwRjA2MDM1NTFEMTMwMTAxRkYwNDA1MzAwMzAxMDFGRjMwMUYwNjAzNTUxRDIzMDQxODMwMTY4MDE0OTg2NDZDNkJCNURDRjcyMUM5Q0Q2NTgwMzM0OURCNDBBOTFDQTM5QzMwMUQwNjAzNTUxRDBFMDQxNjA0MTQ5ODY0NkM2QkI1RENGNzIxQzlDRDY1ODAzMzQ5REI0MEE5MUNBMzlDMzAwRTA2MDM1NTFEMEYwMTAxRkYwNDA0MDMwMjAxMDYzMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwQjA1MDAwMzgyMDIwMTAwMzFFOEM0NTU2Q0JDQjkwQ0M0OUQxMTE0NkFENDk0RkI3ODY2NTc1QzZERThCNzVBMkI2NEIyRTRBQUZDMEI3NTM3NUE0RTY5RDAxMUYyNTIwRUY1NjE3NzhGMzMzRDZGRjRDMjJGNkE5MzdGQjE4RTU2RDYyNjYyQkM3OEIzRDM0NEM1MTE5RERGODAzNkI4QUMzRUUwRTFDOEU4NUE2RjM0MkU3OUU5RjgwMTdDMkZCRUFEOEUyQTc4MjYwQzQwODlCNEQ4MjdGNkUyNTEyRDJGMTRFNjY5Q0IzMjhBQkY2NDgxNEQzQTU5MTU4QkNBQzYxMzJFM0VCQTUyNzQyMjA5M0M3MzdDNjgwRUQ4NjU0N0EwRUY5QTM1Q0E3NjY1NjRGOUFEMjg5MTM3MUM5REM0MkEwM0Y4MDE2RDZFNzNBQ0FGRDBDMEExNzA5NkU5NzdERjg5QzI4OTA2MTg2MzY0MkJGNzBFNDAzNTVBMDQzNUJFOTJDREMxNDFEQ0ZBNEMyMURDRUFDN0I3NEE1QjIwNUVDNTkzQkE4OUNCN0NCNzQwRTI5Q0UxNkRBNkU2Mzg3NkQ4QTVCQ0RGQkE5NjQ2MENDODM0NTIwNzYzNjVGNDhEMjJEMDU5ODRFQzFGRUIzMTdCRUY5QjZGQzc5OTQyMkZGODMzOTg4NjdEQTQ2Q0M2QTI5NUE3NEI5QkEzMzI0NzI4NDM4MUZDQjQ2NDAyRjlCOTIwRDIxOTA1MkM0OUQyN0UzODg4QjRBNDQ0RDgzQzdEMzIwRTQwOTU4MDU1OTRFOUU3MThFRDc4NzgwN0JENEVGQzAzMDA5NjA1QzZEQkQ1M0JFMEQyRjlDOURBRTAxMzQ1OEMwQ0MxNEMyMjczRkJCMkYzOTkyRUNDMTZDOTU2NzQ3QTE1QTZGNEExNjkyN0ExQzc5ODgzOTczMDFGOEY0QUEwRUJCNzRBMkY1MTExN0ZERUI4NzIzMzQwRUVBMDU4OTczMzRBMzg0RjZENDcyQzAyNzk3NTNDM0RFRUNCNzU5OUFBOUMyRDk4N0MzMDUzRENFQzJEQTQ1Qzg1NDlEN0I2MEExOEQ2OTNFOUJENkNEMEYwMjI2REIyQTQ4MDFGODVFMUMzRUZCNDY3NkEzNjg4MDAzMzAzNDY2ODBENjMxQUY3QTQ3Qzg0N0NBOEUxQjNENDlDMTgzQkYwQUFEQkFGOENFM0Q3REUwMDBENDIxQTk0MjVDRDg4OTIzMzkwNzU1RUM4NTJDRkFCM0FDODVBMzI2RTQxMzZGM0Q0RDgyRjhDMjJGRTVGMzQ5OTk5MEI3QzlGNTM3M0UzNUFCQzBCRjNCMkQwNkI2MDY0RjZFNkMyRTQxNTMxODIzMjk2MzA4MjMyOTIwMjAxMDEzMDgxRDEzMDgxQkMzMTBCMzAwOTA2MDM1NTA0MDYxMzAyNDc1MjMxMkIzMDI5MDYwMzU1MDQwQTBDMjI0NzcyNjU2NTZCMjA1NTZFNjk3NjY1NzI3MzY5NzQ2OTY1NzMyMDRFNjU3NDc3NkY3MjZCMjAyODQ3NTU2RTY1NzQyOTMxMTgzMDE2MDYwMzU1MDQ2MTBDMEY1NjQxNTQ0NzUyMkQzMDM5MzkzMDMyMzgzMjMyMzAzMTM3MzAzNTA2MDM1NTA0MEIwQzJFNDg2NTZDNkM2NTZFNjk2MzIwNDE2MzYxNjQ2NTZENjk2MzIwNjE2RTY0MjA1MjY1NzM2NTYxNzI2MzY4MjA0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNzMyMDQzNDEzMTJEMzAyQjA2MDM1NTA0MDMwQzI0NDg0MTUyNDk0MzQxMjA0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNjE2QzIwNDM2QzY5NjU2RTc0MjA1Mzc1NjI0MzQxMjA1MjMxMDIxMDczN0Y1RjFFMDZDNTQ5MEI1RTc2Njc1QkMyMjMzMjU1MzAwRDA2MDk2MDg2NDgwMTY1MDMwNDAyMDEwNTAwQTA4MjFEODYzMDE4MDYwOTJBODY0ODg2RjcwRDAxMDkwMzMxMEIwNjA5MkE4NjQ4ODZGNzBEMDEwNzAxMzAyRjA2MDkyQTg2NDg4NkY3MEQwMTA5MDQzMTIyMDQyMDZDODE4MUZFQkFGMUUxMDM4QTlFOEI4Q0ZFNDFDQkFCQUUxM0E4MTcyQTIwMDI1NDk1NDNBMTJDMjk3REUyRkEzMDM3MDYwQjJBODY0ODg2RjcwRDAxMDkxMDAyMkYzMTI4MzAyNjMwMjQzMDIyMDQyMDRBRDMwNUM0N0QxRTcyRTEyMzY0MzAyQkZBQTY5QzI1QjQzRDhBM0M0Rjc2MUM1NkM1NzFEMzRBNTBDNTAxNkMzMDgyMUNGRTA2MDkyQTg2NDg4NkY3MkYwMTAxMDgzMTgyMUNFRjMwODIxQ0VCQTA4MjBBRjczMDgyMEFGMzMwODIwQUVGMzA4MjA4RDcwMjAxMDEzMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwQjA1MDAzMDgxQUQzMTBCMzAwOTA2MDM1NTA0MDYxMzAyNDc1MjMxMEYzMDBEMDYwMzU1MDQwNzBDMDY0MTc0Njg2NTZFNzMzMTQ0MzA0MjA2MDM1NTA0MEEwQzNCNDg2NTZDNkM2NTZFNjk2MzIwNDE2MzYxNjQ2NTZENjk2MzIwNjE2RTY0MjA1MjY1NzM2NTYxNzI2MzY4MjA0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNzMyMDQzNjU3Mjc0MkUyMDQxNzU3NDY4NkY3MjY5NzQ3OTMxNDczMDQ1MDYwMzU1MDQwMzBDM0U0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNTI2RjZGNzQ0MzQxMjAzMjMwMzEzNTIwMkQyMDU0NjU3Mzc0MTcwRDMyMzAzMTMwMzIzOTMwMzkzMzMzMzEzMzVBMTcwRDMyMzEzMTMwMzIzNDMwMzkzMzMzMzEzMzVBMzA4MjA3QzIzMDJGMDIxMDMyODBFM0E2MTZDRDA1RTNEQzlENjUzQzA2RDQzQ0U4MTcwRDMyMzAzMTMwMzIzOTMwMzkzMjM3MzEzNTVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMjcwMjA4NUVBRDM2M0JGNTAzRjUyNjE3MEQzMTM5MzAzNDMxMzgzMTMyMzIzMTM1MzY1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDJGMDIxMDUzNjBDQzE1RjYyRjZCNEVCRkJDNzMxMTAxQ0MyRTMwMTcwRDMyMzAzMTMwMzIzOTMwMzkzMjM2MzIzMzVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwNUU5QTRFMjIzOThCOURBOUVCNjM0MTRFMjYzNTcxRTExNzBEMzIzMDMwMzkzMDMzMzAzNzM1MzgzMjMzNUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTA2QjYxNzhFOTlERjYzMzhFOTcyMzRDQjkzODgwM0YzNTE3MEQzMjMwMzAzOTMwMzMzMDM3MzUzOTMwMzg1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDJGMDIxMDFFNjQ2QTlGQkZGMEU1NDI2M0JFRTY0MTdGMkE5MzIxMTcwRDMyMzAzMTMwMzIzOTMwMzkzMjM3MzEzOTVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMjcwMjA4NjgzODA1MTg4RjUzM0NEMzE3MEQzMjMwMzAzOTMwMzMzMDM3MzUzNDMzMzE1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDJGMDIxMDU4OTI4OEUzMThEQzVEREExQTE4QkRCMTJBRUYwNjdFMTcwRDMyMzAzMTMwMzIzOTMwMzkzMjM2MzMzNjVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwNUNGQjA0MjdFODcwREFGN0Q4Q0MzNTg4OTA4NEI1QjIxNzBEMzIzMDMxMzAzMjM5MzAzOTMyMzczMDMxNUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTA2ODFBQTBCNkVGNkIzQTkxOUM0Qzc1MTNEMDFGOUJBQTE3MEQzMjMwMzAzOTMwMzMzMDM4MzAzMDMxMzY1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDJGMDIxMDc5QUFBMjg4Rjc1RTQwMTBBNTc3QzZBNEMzQzU4NEJDMTcwRDMyMzAzMTMwMzIzOTMwMzkzMjM2MzUzMzVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwNTdEOEUxNEE4MTE4ODI1QURBRjUxNzE0NDc4MTY2MUQxNzBEMzIzMDMxMzAzMjM5MzAzOTMyMzczMTMxNUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTAzQzQ2RUYyNTI3NUU4MkI4MzFCNzRCNDE1NTRDMzM3MzE3MEQzMjMwMzEzMDMyMzkzMDM5MzIzNzMyMzM1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDI3MDIwODVCRDZFMjhGNUFFNjdFNDUxNzBEMzEzOTMwMzQzMTM4MzEzMjMyMzIzMzMxNUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTAwQzIwRTlGNDZDNTk0OUFCRTdBMzVBRjk4ODNDMjUyQzE3MEQzMjMwMzEzMDMyMzkzMDM5MzIzNzMzMzA1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDI3MDIwODFDN0E4NkIwRDA3Qjg1OUMxNzBEMzIzMDMwMzkzMDMzMzAzNzM1MzkzNTM0NUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTA0RTczMTk5QUZDMDdFQzM5NzUwMzgzOTQxMjk1RjdBRTE3MEQzMjMwMzEzMDMyMzkzMDM5MzIzNjMxMzA1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDJGMDIxMDcyRjBENTg1NDFENDU5RkUyREZFMEI1NzcwOUFERjc0MTcwRDMyMzAzMTMwMzIzOTMwMzkzMjM2MzEzODVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwNjU0NEREMjJDQjMzRENBMzA2QjQ5OEY2QTVFN0YyMjkxNzBEMzIzMDMwMzkzMDMzMzAzNzM1MzkzMzMyNUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyNzAyMDg2RTlFQTdBNjUyQzdFNUNCMTcwRDMxMzkzMDM0MzEzODMxMzIzMjMyMzMzMTVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwMTJBNzg0QzhDRDExQ0IzNzEyREMyNkVEOTQ4MkFDM0ExNzBEMzIzMDMxMzAzMjM5MzAzOTMyMzYzNDMwNUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTAzMTkwRTdDMzYxNEEzNzM1NjUzODE0NTkzMTA5RTFDMTE3MEQzMjMwMzEzMDMyMzkzMDM5MzIzNTM1MzY1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDJGMDIxMDFEOEE3MUU0NEMwN0Y1RjRDN0RFM0E3QUFBRjJBNjJFMTcwRDMyMzAzMTMwMzIzOTMwMzkzMjM2MzIzNzVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMjcwMjA4MkRGRjE2Qzc1OURFRjQyMzE3MEQzMTM5MzAzNDMxMzgzMTMyMzIzMTMxMzc1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDI3MDIwODQ3NDU5OTI0RDkzMDIxMDUxNzBEMzIzMDMwMzkzMDMzMzAzNzM1MzQzMzMxNUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTA0NTU4NTYwNjY1MTg1MUFGNkFDODEyOTMwRjY0MTEyRjE3MEQzMjMwMzAzOTMwMzMzMDM3MzUzNDMwMzE1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDI3MDIwODZBOTg4OEFFMzFDMzMxQTUxNzBEMzEzOTMwMzQzMTM4MzEzMjMyMzIzMzMxNUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTAxQjZEQkE1MEEzNzQ4MTQwNjU0RjZEODJERUM2OENGMzE3MEQzMjMwMzAzOTMwMzMzMDM3MzUzNzMzMzE1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDI3MDIwODNDMDQzMUJEQTIwMkQ2MTUxNzBEMzEzODMwMzYzMTMyMzEzMTM0MzkzNTM5NUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTA0REI4M0I1NzY2NjY1NkMxMkREMjhCN0IxRUNGNTMzMTE3MEQzMjMwMzEzMDMyMzkzMDM5MzIzNzMzMzU1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDJGMDIxMDZCOUIwQzEyOUMyNDREQ0NCMUI0QTdGNEI2RTQyNEMzMTcwRDMyMzAzMDM5MzAzMzMwMzczNTM4MzAzMDVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwMTAxRDNEREFDQUY3QzI4NUIwMTgwMzYyMjM1MjI1MkYxNzBEMzIzMDMxMzAzMjM5MzAzOTMyMzYzMDMwNUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTAyRTU2OUYxNTM2N0ZBREMwQTc1Nzk2NjBBMDU1M0Y1RjE3MEQzMjMwMzAzOTMwMzMzMDM3MzQzODM1MzU1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDJGMDIxMDUwOERERDczQTk4NTdBQTQ1N0QwRUJCRTQ4NDZDREM0MTcwRDMyMzAzMTMwMzIzOTMwMzkzMjM2MzMzMjVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwMEQ3RTNGMjAzMkQ1QUFFMTBBNjUyRjZDNjc4MzFEMTIxNzBEMzIzMDMxMzAzMjM5MzAzOTMyMzYzNDM5NUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTA3NTU4MTA3OTgyREQwQTcyREFBQzcxRTc4RDU4Q0QwNDE3MEQzMjMwMzEzMDMyMzkzMDM5MzIzNjM0MzQ1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDJGMDIxMDIzRUNBNDA3NDI0MDJBNzFFMkI5NTFGNjM4MzcwQ0MzMTcwRDMyMzAzMTMwMzIzOTMwMzkzMjM2MzEzNDVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwMEVBM0M2OUY4Q0VDN0U1NjFDNkJDOTczMjc2OUE2MTgxNzBEMzIzMDMwMzkzMDMzMzAzNzM1MzYzMjMwNUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTAzMzA3QzhGQkIyQzkxQkMyMEFFMEZFNTJENTNBQkI3QTE3MEQzMjMwMzEzMDMyMzkzMDM5MzIzNjMwMzU1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDJGMDIxMDM2Q0M3NzY5MENFOUI4OUE4MUE0NUNGQzgzMzg2REIyMTcwRDMyMzAzMTMwMzIzOTMwMzkzMjM2MzUzNzVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwMDg0MjJBM0U0NTA1MUU0MjJBNTgzQzU3REUzOTZFMTMxNzBEMzIzMDMwMzkzMDMzMzAzNzM1MzYzNDMyNUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTA0OTI5QUNFRDI2QjhBODRDOTZCQ0M5QTQ5QjE1QUE4RDE3MEQzMjMwMzEzMDMyMzkzMDM5MzIzNzMwMzc1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDRBMDJGMzAyRDMwMUYwNjAzNTUxRDIzMDQxODMwMTY4MDE0OTg2NDZDNkJCNURDRjcyMUM5Q0Q2NTgwMzM0OURCNDBBOTFDQTM5QzMwMEEwNjAzNTUxRDE0MDQwMzAyMDEwODMwMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTBCMDUwMDAzODIwMjAxMDA1NDJFMkU0OTEyODNBMTBEQzE2RjNCNjI2MjJCQTcwNTRFMDQwNkY3REI4REJCNUY3NDFENEJCOTNFREI0OTQ2ODU2MjA1RUNDQTYzNTlFMjAyNTc4RUI3ODU2OTRFOEQ0NUMzRjEyMzE2RjhDQkM0RkE4NDk5QTQ3M0UwMjBBMDQxMDVEQUMwRjdCMUMyMzAxMDY1REFDODQ0RkM4MzY1RjBGMzNCMzczRTNEQTc3QjY0NTNGODBDRTZDODQwNjY3QkZFODRCQzBFM0YwM0ZBQzY2QTE5NDc2RjA5RjI0NjhEMkI1QjZBNUI4MzI5MzhDRTE0MEU0NUJFOUM5RUMwODJCRUI1NUU1MUI2Q0ZCQThDMjcxQjkwMzVGRkRFQ0I5NjQxRURGMUM2MDZCMjdEQjk0MzYyNTc2QjkwNjU0N0FBMDBBRjRGMEE5OTVEOTQ2MTBEQUFBOEU1REMyNThBNkVBQUNDOUQ2MDE4NjVDREE3QTIxM0E2RUY3MzU1QjU2NENENjgzMzgyNkYzNTRCOEVGNjIxMDA5QkE5MDBBODA3NjU5NTVGQTAzMzY1OTI5NzVCRUVBQzRCQUIyMTNCNUREQjVERThCQjgyODhDRDNEOUUzQkVFODA5MDM5ODIwOEZBMENCNDIwRjhBQzIzNjRCM0MyNTg2RUJDQzlDODVDNTMwNjFENTRCOTA0Rjc2OThFNjQ0MUQ2MTNFQzI1MUZFMEYzODcwNkZFQjI4NTJBM0YwRUIyMTdFRUUyMkFBMzUwOTM5MTZEQkRBREJDQzlERkYxNTM2MUMzQkJCMDNCMDUyRUZERDFBOEJGMjRFMUM5MDRDMkJCREQ5MDY1QTc5NzcwM0RGOTk3NEMyRUNGNkM0MjM0MTY1MUM5RTRGRTc1NUMyNEZFQTEyMDFGNEYwMjRCNTU5MUNGQzI1QjlDNTQyREM1NDIzQkYxQzE2RkVGOTczNjlGQ0ZEMzU3RTJDM0NEQjM4NkQzNEFGQzE2MkJGNzUwMUY2RjkwQTY3REVDM0I0MDJDMDI0RDhDREM5Q0NBREMzMkRENENFNDM0RTlDODE0NjM0M0IzMjE5Mzg5NEU5M0ExMEZGQUEwQUNENkZDMDVBNjg5MzRENzY3MzJFM0Q5MzA0NzI1MEI4NUNFRjkzQkVBODc4ODhEREZBM0I0RkEyRDM0RTk0NDJEMDIwRUFEOThCQkYzNzFGMDdDRUE0MDkzRkM0QTY4MTM3MUNDRUI5RjMyQUNGRjI5QTJDNUY0QTMwNDg5NDNDRDRFNEJFOEJEQkQ0RTA3OTEzQTlBNzAzNTM3Q0Q0OUFGNDg0NEQxQjQ5OEEzQjQwOEFFRjRCNDRCMUJDQkRDQTE4MjExRUMzMDgyMTFFODMwODIwQTIxMEEwMTAwQTA4MjBBMUEzMDgyMEExNjA2MDkyQjA2MDEwNTA1MDczMDAxMDEwNDgyMEEwNzMwODIwQTAzMzA4MThCQTIxNjA0MTRDM0U3QUM1QUMxNUYzOTc4RTAxNjMwRjFENThFNUQ1QUNERkE2OTREMTgwRjMyMzAzMjMxMzAzNDMyMzEzMTMxMzUzNjM0MzQ1QTMwNjAzMDVFMzA0OTMwMDkwNjA1MkIwRTAzMDIxQTA1MDAwNDE0MDk5NkNGQ0YxMUY5RkJDNkE0RkJBMUQ5QjU2NTdBNUFCQzdEOTFFRjA0MTRDM0U3QUM1QUMxNUYzOTc4RTAxNjMwRjFENThFNUQ1QUNERkE2OTREMDIxMDczN0Y1RjFFMDZDNTQ5MEI1RTc2Njc1QkMyMjMzMjU1ODAwMDE4MEYzMjMwMzIzMTMwMzQzMjMxMzEzMTM1MzYzNDM0NUEzMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwQjA1MDAwMzgyMDIwMTAwNUI3NzFEQ0JCRTU5MEI1NEMzNTgyNzc4REY1OUI3MEQ1OUU4NUIwODk0QTEzN0EyQkRCOTMyNEEzQTU5RkY3MEZENDY2RkM1RDc0MDlDRjhGNDQxMDc0RjNBQUNBQzY5QUM4QzcyQTQ5MTc4Q0VBREJFMjFEODJFRTgzQ0NFQjJDRTI1QjU5Q0M1RUI0OTNBRjQwMkY0QTkxOEIzQTJDQUFCQjAyQTM1OUQ1MkIyRDFFNTUwQTUwQkI0RDA4QUUwMUU0NzlCRjM2OTg3RENEOEMyRUI3QzU5NjlGNEZCMDhGNjMzNTExMUJDOEVCRDk2QTQ3MjQzNDYwRkUxQjgyQ0QzQkJEMDdDQTQ0Q0YzNjZGMUExRDJGQUE3QUE5NUQwM0I3MzJDRkY4NDg4NUZDQTYzQkUxNDZDMTdCNUY0Q0Q5OTVCQzRGOEI2MkY0ODg5QzEwM0U1MTk5N0RENzczNTY1NDc2MTlGRjgyNDkwQTk2NTRGNDUyQkVCNTMxM0NBMUI3QzBGOENGRTA5OTRDN0QxMUY1MEJGNjI5MzRBODAzREMzNjA3MjdEQTA0Nzc3RkQxM0M0RUVFMjMzREUxNzJEQTI3NjRFQkI5QTgxQUIyNzlEOEMyMzVBNjkwNDc2NThBNzZEMzY3NDE1QUM2RUFBMTcxMTZFMzRCODYyNUI0ODM4NUFGQzBFMTU5RjI0OUM0QzEwREI0NUFFQzQyRjM3RkVGMTNFQ0MyQjQ5RkM0MjMxQzY4RUE0MjVEMDlERjRFRTM5Njc3NjI0MTkzNUU5RjBDMzg0REQzNDA1ODRFQ0U0RkQ3MEMzNkE0NDlGQzYzNTY4Q0I1RUMzNjFFQTREMUZGODM4RTZEMjNCRjI2NjJCMEYwNzkyREM1NUZBRDNEMjJBMzYxNTdFMzY2REU2NTYxMjczNUQ1RTJEREJGRTZCQkY1MTlDRUU5REJGQjAxRkI5OTZCNTJBQTAwNTNENTlBOTg5NTQzQTdDNENGNDc5MzY0MzVGRDJGMUJCREZDNzY1NDA3Q0JENTgxQTFGN0IyQkVGNTY1QzM4RkNCOUY5NjQ3NEQ2RTI1NEFDOTAzNzRCNTIwNUE1QkY4RDcyMzZFQzU5NzEyRjdEQzEyRTQ2QkUwMzM3MDY3MjhERjQ2REY1RUFDMERGNEE1OTFCRUU3RkVEQTgxNDY2NTgwODREMjE4NEYwN0ZGNkRFQTA1OTBGM0JCRDNEMkVCNkQ3RjhFRTI0M0ZDNjA4ODJEQUQ0NzcyNTBCMUIyNTM3MUQyMzEwQTJGNUM3RUUyMUMwQjgzQkYzRkUxNDU2MzA4MTNDQTNCNzk4NDU5OEZDQjA1N0Q5NjRFOTIwMDNFMEEwODIwNzVEMzA4MjA3NTkzMDgyMDc1NTMwODIwNTNEQTAwMzAyMDEwMjAyMTA1OEI3NUJDQzNGMjhCMDg2Qjg3MjRENTRBQ0JBOUZFODMwMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTBCMDUwMDMwODFBRDMxMEIzMDA5MDYwMzU1MDQwNjEzMDI0NzUyMzEwRjMwMEQwNjAzNTUwNDA3MEMwNjQxNzQ2ODY1NkU3MzMxNDQzMDQyMDYwMzU1MDQwQTBDM0I0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNDM2NTcyNzQyRTIwNDE3NTc0Njg2RjcyNjk3NDc5MzE0NzMwNDUwNjAzNTUwNDAzMEMzRTQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA1MjZGNkY3NDQzNDEyMDMyMzAzMTM1MjAyRDIwNTQ2NTczNzQzMDFFMTcwRDMyMzAzMDM3MzAzNzMwMzkzMjMwMzQzODVBMTcwRDMzMzUzMDM3MzAzNDMwMzkzMjMwMzQzODVBMzA4MUJDMzEwQjMwMDkwNjAzNTUwNDA2MTMwMjQ3NTIzMTJCMzAyOTA2MDM1NTA0MEEwQzIyNDc3MjY1NjU2QjIwNTU2RTY5NzY2NTcyNzM2OTc0Njk2NTczMjA0RTY1NzQ3NzZGNzI2QjIwMjg0NzU1NkU2NTc0MjkzMTE4MzAxNjA2MDM1NTA0NjEwQzBGNTY0MTU0NDc1MjJEMzAzOTM5MzAzMjM4MzIzMjMwMzEzNzMwMzUwNjAzNTUwNDBCMEMyRTQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA0MzQxMzEyRDMwMkIwNjAzNTUwNDAzMEMyNDQ4NDE1MjQ5NDM0MTIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTYxNkMyMDQzNkM2OTY1NkU3NDIwNTM3NTYyNDM0MTIwNTIzMTMwODIwMjIyMzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMDEwNTAwMDM4MjAyMEYwMDMwODIwMjBBMDI4MjAyMDEwMEJBN0MwNEVDQUNBMTIxQTMwM0MzOEVEMTk1N0Q0RTNEOTEzNThBNjE2RkRFNEM1NzY0MTMyOTkwRjZFNDM3N0U4NkY3RTZFNUVEREFFMjFDRkI3RUJERUQwQjI5MUU3NTMyQzkyNjE2QkFBM0RDQ0U2QkIwMDU4MUY5MjIzNTE5NkNEMzVFQzNGRjczMjQwRkI1NUNFNjhBRjM0RUIzRkI4RjZFNEUwRDZGNENBODYyQzExQUNDOUYwREE2RDE5MzlGNDdENzVCNzdDRDU4M0FCMTIzQ0YyMkI0M0Y2ODA4RjVGODJFRDI0Q0E5ODg3OEZFRDM5NzUwMDFDMDdGNTE3MjZDNTYzNkUxOTY3QkM4Mjg3RThCMDZDNTNENzdFNTVGODkzNTNENjFGMjY3QTg0OTFFNkRDMjI3Q0YyNTM3ODA5MENEOTExOEI1NUVDRDYzMjVGN0U2QjQ5QzExQzk0NEUzRUNBRkExQjBGMUY5NkJGRjIxRkI2Mjc2RDE2OTQ2Mjk1QURBQjYxRDU0NkZENTgyMTU1RDJERDUxN0Q1NUQ4QTZEMTk1MTE1NzAyNzBDNTNDQ0IxNzkyREI1MEI0RDU5QjA3OEI4QTE0QUExNENDREZDRTk1QTRBMDExMkIwNDczOUZDMEQyRTdGMTBFMkMxMEI5RUFCQzM4QTdEOUE5Mjg2MDcyMTY0MDUyNzBENjg1Njg2NDI1MUIzRDgxNTU4MDM4RDczN0ZBM0FBN0M0MEZDQTBEMEJDQjc5MTUwQTkxNzYxRDQ3MTI4Mzc3MTM2QUIwQTAzRjMzMjNFQjI1NzQ0QzFBQzE2N0VCNzkwNDJFMkRGNUNCRDEwNjk1QkFFQkU5OTk5NUYwMEUwMjI4Q0VBNTg4RTBFQ0QyNjM3OUE3QUY1QzM1NTY5NkQ1QTQ1NjM3QzY4RjZDNkQ4QzhDNzgyQjhFNEVBMEE2N0I3RjdCRjAwM0QwQTVDNkJCNEJDQ0EwMThGNDAxQkUxMjVGRDEyNkE5NkQxQkE1RTY3ODU4QzU1REMwMkNEMTg5MDAxRDFDRTMwMUI3OUU0NzJDNkI2Qjk4NzZGMjJENTJCM0ZCRDdDNjc2NkI3MEJGRjBERERCMUFEODZBMTFCODVGMURGNDc3OUE5QTgzOTFDODYzRUVDRUU1OEVDMUYyNzhEQUE4REMxNEU0NzI2MTcxMENERDk2NDFGMjEyNTM2NkU0OEJGMjlFNkE4QUM2NDNFMzhEMkVFNDFEMEY0NjA1MkZBODc5QjE5RkRENTUzNTlDQTFCMzM0M0Y4OTQxMUQ1RDE1RTgyQzQ0NEMwRTM3Qjk3MEFGODRGRDc0OTNCM0VCQzRGNTI0RjdGODMwMjAzMDEwMDAxQTM4MjAxNUUzMDgyMDE1QTMwMTIwNjAzNTUxRDEzMDEwMUZGMDQwODMwMDYwMTAxRkYwMjAxMDAzMDFGMDYwMzU1MUQyMzA0MTgzMDE2ODAxNDk4NjQ2QzZCQjVEQ0Y3MjFDOUNENjU4MDMzNDlEQjQwQTkxQ0EzOUMzMDc2MDYwODJCMDYwMTA1MDUwNzAxMDEwNDZBMzA2ODMwM0YwNjA4MkIwNjAxMDUwNTA3MzAwMjg2MzM2ODc0NzQ3MDNBMkYyRjc3Nzc3NzJFNjQ2NTc2MkU2ODYxNzI2OTYzNjEyRTY3NzIyRjYzNjU3Mjc0NzMyRjQ4NjE3MjY5NjM2MTUyNkY2Rjc0NDM0MTMyMzAzMTM1MkU2MzcyNzQzMDI1MDYwODJCMDYwMTA1MDUwNzMwMDE4NjE5Njg3NDc0NzAzQTJGMkY2RjYzNzM3MDJENzM3NDY3MkU2ODYxNzI2OTYzNjEyRTY3NzIzMDExMDYwMzU1MUQyMDA0MEEzMDA4MzAwNjA2MDQ1NTFEMjAwMDMwMjkwNjAzNTUxRDI1MDQyMjMwMjAwNjA4MkIwNjAxMDUwNTA3MDMwMjA2MDgyQjA2MDEwNTA1MDcwMzA0MDYwQTJCMDYwMTA0MDE4MjM3MEEwMzBDMzAzRTA2MDM1NTFEMUYwNDM3MzAzNTMwMzNBMDMxQTAyRjg2MkQ2ODc0NzQ3MDNBMkYyRjYzNzI2QzJENzM3NDY3MkU2ODYxNzI2OTYzNjEyRTY3NzIyRjQ4NjE3MjY5NjM2MTUyNkY2Rjc0NDM0MTMyMzAzMTM1MkU2MzcyNkMzMDFEMDYwMzU1MUQwRTA0MTYwNDE0QzNFN0FDNUFDMTVGMzk3OEUwMTYzMEYxRDU4RTVENUFDREZBNjk0RDMwMEUwNjAzNTUxRDBGMDEwMUZGMDQwNDAzMDIwMTg2MzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMDM4MjAyMDEwMEE1MUFCMjJFMjNEMTUxRDgxRkI0REI5RDEyNTc1M0Y3OTFEM0U3NDI0NUI2OTc2OTdCMTJERjAxMkFFM0Y0RkU0QkU2NkNBNDU2NDEzRDIzNDhENDJERkYwMDdGMjVBQUQyNURGRTQ0NEExOTQwNDhFODNBRUYwMjZFQjhFNUY5MTQyQTY1N0REQzg4OTZERkIxNzE2RDJCQUUyRjcyNUUwNzJFQkMzMEUyMTAwRDhCMkE0QzFENDM5RDc3QzgyRTRBNkFGREFCNTcwREJBODUxRTFCNTkzNDg1QzUwNUJBNzJCRDBDRjM0MDMwNzE3MTQwNkNBODY4RTg0RTI5MTgwQzc0NTNFRUUyQ0QwMEI5ODk4OUU3ODZDNkI1RkUwMzBBMkI1MUUwMjgyRTNCMzY2NEYyNzI2RkYwNzc0N0M5NjE1ODJDNERBN0RDNjE2NjA2ODY3MTYyNDhGMDY4RDNCNTFBMzVEOUMzMjI3ODYwQjkxNUI5RDdBQTk4MkNBNDVDQUI1RTc5QjE5N0YzQTU4MkMzNzMzRkFBNkFGMDY2REMzNDZCMTE0OTVFMTY4REI4QjAxNDk4MzdDRDdDMkREM0FFQTBDMjI2MUY3NDZDRjQxMkQyMTcxREFCOEQ5REJDNDVBQTU3MjExRjdCMTgzRTU5RDk2NzREQUQxRDU0QjAwNDE1NzFCQzVDNDRFMzUwMjQxQzRGM0FCNjY5QjEwNjlDMjFGRTk3OTI2OUEzNUQ3QThCQUNGOTc5RDA0MTNCRDNFMTY3NzVEMzhGQUIxMzQwMzc2Q0I0NjY2QUVDMERDMjk4QTMyRTEwQTczQzZGN0VBRjFBMzRBOTczMkIyMUI1OTEzM0M3OUJBRDI4NENBOTYyMzBFQzdCRUNDOTA4MkJBRURCRjQyRkI0OUUzM0MxRjk1MDYzQUUxMEMxNkJGNzgzNUREQUJBMDZGQkYxNzE4RkNFREJDOTk2Q0QzRURFRkRGNzk3QkFEODcxRDRFMEY4Q0Y4NjVBOTU3NURERDEzOTkxNTVCQUIwNzUwMTNBNjM4NUVFNEI4QTk5N0RENzUwQzA5RjYxQkU3Nzg0NTMzQTJDNDRENjUxQ0FEODBBRUZDRUEyOERGMjk4NTdENjNFMjg0RjM2NjNDRjIyMDY0NDQ0RjkwM0YzRTJDMjRCMzQ4Mjk1QjlGODFGNTg4ODc1NUIyMjZGNTU4NTYzMzQ2NTc2RUQ2ODYwNjM3MUVGRDE5Q0U1MUY5ODhDOEI2OURBNzYzREJCNUYwMDcwMDUyMTRGNjcxMjNEQzNEOTVDQjJCNzgzNzMzNkEzM0IzNEM0NzlEMjZFMTI4QkE0RTc1Mzc5MzUwQTUyNEEzMDgyMDdCRjBBMDEwMEEwODIwN0I4MzA4MjA3QjQwNjA5MkIwNjAxMDUwNTA3MzAwMTAxMDQ4MjA3QTUzMDgyMDdBMTMwODFDNEEyMTYwNDE0RTQyNUU5ODY0QzY0M0FFQ0YyQjdFNTdDN0NDOTJCQzFBQzdFQkE4NzE4MEYzMjMwMzIzMTMwMzQzMjMxMzEzMTM1MzYzNDM0NUEzMDgxOTgzMDgxOTUzMDQ5MzAwOTA2MDUyQjBFMDMwMjFBMDUwMDA0MTQxMkRGQ0M4NDg0ODNBMzFDQjhDNThEREI3OTBDQzAyQTM4OEVCMjE1MDQxNDk4NjQ2QzZCQjVEQ0Y3MjFDOUNENjU4MDMzNDlEQjQwQTkxQ0EzOUMwMjEwNThCNzVCQ0MzRjI4QjA4NkI4NzI0RDU0QUNCQTlGRTg4MDAwMTgwRjMyMzAzMjMxMzAzNDMyMzEzMTMxMzUzNjM0MzQ1QUEwMTExODBGMzIzMDMyMzEzMDM0MzIzMzMxMzEzNTM2MzQzNDVBQTEyMjMwMjAzMDFFMDYwOTJCMDYwMTA1MDUwNzMwMDEwNjA0MTExODBGMzIzMDMyMzAzMDM0MzIzMTMxMzEzNTM2MzQzNDVBMzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMDM4MjAxMDEwMDRFNjFCQkEzRUU2RjVFMTU2NjNBRkQ2OTVEMTUwRTk5ODRCMUJBMTBGRjE2QkFFMTM0MTBCM0IxREE1NTQyMzI0QkEyOTc4Njk3RjU3QkZCNjA1NTg4QzE3NTFGQTRBREI2RTdDODIxRTQwQjMyREE2ODIwQTFDOEFBNjk4REU4NzYyMzY4ODIzM0IzQzVGRUM5OUE0NzNDQ0ExRjlFMEFGMzVDNjJGQzAwN0REMDZBODhCQ0M0QzJFM0FGRjVEOEVDNUYxRDE2NTZCRUNEQUEzNUQ3NkIyQjEyRjdGQzVBNTcwOEI1RjBFQ0RGODU2M0MwNjQxQzg1OTFCMUY5RUM2N0JBMUM2RjRGQjMyMzE1MjgxNDM3MjcwQkE3RTA3REI5Q0E0NDQ3NDNEMkU3ODkyNDk4QUUwRkZEOTQ3QTBEQUJFNUU4NjU3MzFENzY0OEUzNTQ2N0Y1OTgzNjRBOTBGOTdFMjNBMUE4Mjk4MjA4MTBGNjY4QzlBNERFMzFBRUEyMjVGNjNENDg4MTIzNjgwMEJCM0QwOURBQjI0QUZDOEIxN0Y1NjI0QzE3QTNCMkE0MjYzNjdCMjI0NTU0RTU2MUQzQThFNUM5QjVGMTQ0OUYyOEUwMzI2REM3QTdCMEZEMzcxOTgyNjhDMzRGQUU1MDk5M0RBOTdDRDMyOERCQTA4MjA1QzIzMDgyMDVCRTMwODIwNUJBMzA4MjAzQTJBMDAzMDIwMTAyMDIxMDE4M0IyMTA1M0M2QTc3MUIzM0QyQzEwQTEyNzYwNjBBMzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMzA4MUFEMzEwQjMwMDkwNjAzNTUwNDA2MTMwMjQ3NTIzMTBGMzAwRDA2MDM1NTA0MDcwQzA2NDE3NDY4NjU2RTczMzE0NDMwNDIwNjAzNTUwNDBBMEMzQjQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA0MzY1NzI3NDJFMjA0MTc1NzQ2ODZGNzI2OTc0NzkzMTQ3MzA0NTA2MDM1NTA0MDMwQzNFNDg2NTZDNkM2NTZFNjk2MzIwNDE2MzYxNjQ2NTZENjk2MzIwNjE2RTY0MjA1MjY1NzM2NTYxNzI2MzY4MjA0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNzMyMDUyNkY2Rjc0NDM0MTIwMzIzMDMxMzUyMDJEMjA1NDY1NzM3NDMwMUUxNzBEMzIzMDMwMzIzMjM1MzEzMjMxMzAzMDM3NUExNzBEMzIzMjMwMzIzMjM0MzEzMjMxMzAzMDM3NUEzMDc3MzEwQjMwMDkwNjAzNTUwNDA2MTMwMjQ3NTIzMTBGMzAwRDA2MDM1NTA0MDcwQzA2NDE3NDY4NjU2RTczMzEzNzMwMzUwNjAzNTUwNDBBMEMyRTQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA0MzQxMzExRTMwMUMwNjAzNTUwNDAzMEMxNTQ4NjE3MjY5NjM2MTUyNkY2Rjc0NDM0MTMyMzAzMTM1MjA0RjQzNTM1MDMwODIwMTIyMzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMDEwNTAwMDM4MjAxMEYwMDMwODIwMTBBMDI4MjAxMDEwMERGQjIxRTBGREQ5NTg4RDE4RDY5RjkzQkU5NkMzOEU3RDk4NkVDRjI5N0JCN0M3MDA4MjBGQzE0QUVFRDQyN0VGRUMwRjE0RDMzRDA2RDkxRjcyNDQwOEIzQjREQ0VCQkVGRDg5MjM3ODEyQzAxMEZBRjBGRUZEMjY0RjM5OERCQTRFRjcwOUIwNTFDRUYyRDI1Q0YwMDNDQjc1QUM4MjEzOERDQkRCQkNBRTJDNkRGODRFNjUyQTA3ODQyRDA2OEFBNjUxQkFEMjIzOEYwQThBOURCMURFOTYzODEzNzE1RDUxNjdENTQ5M0RGOTBBMEFBODIzMjdEQzk1NTVBMTJFRkMyMTEzQzg2MzMyRjNCMTFDREYyQjFENzZCQzI0QzI0RTBCMjQ4RjBFNjU2Mjg5MkM1RDJDREE1MjNENUFDNjZGMEU3Qjc3Qjk2NEQ3RDI1NzM5NjE2NjVDMkVDNzhBRjEyMTdGQzIyMTVDQzJGNTY4NTFFNkYyNzhDMjRDMzUxRTJEQzZGQzEwM0VBNDE3MDg2RTY3RDA3Q0IyRDgzOTdGNEE3QzI4MkQ1RTAzODcxQTI0NzgyRkZGMEUxRjE0MTE3MkQ4OUUwNjA4NTBFNDFGRUYzMzM5QjVERjgzMzQxRDU4RTdDRkQ2QjcwNTZEOUQ1NUU2MTFENjgxQkE3MDIwMzAxMDAwMUEzODIwMTA5MzA4MjAxMDUzMDFGMDYwMzU1MUQyMzA0MTgzMDE2ODAxNDk4NjQ2QzZCQjVEQ0Y3MjFDOUNENjU4MDMzNDlEQjQwQTkxQ0EzOUMzMDREMDYwMzU1MUQyMDA0NDYzMDQ0MzA0MjA2MEMyQjA2MDEwNDAxODFDRjExMDEwMDAzMDczMDMyMzAzMDA2MDgyQjA2MDEwNTA1MDcwMjAxMTYyNDY4NzQ3NDcwNzMzQTJGMkY3MjY1NzA2RjJFNjg2MTcyNjk2MzYxMkU2NzcyMkY2NDZGNjM3NTZENjU2RTc0NzMyRjQzNTA1MzMwMEYwNjA5MkIwNjAxMDUwNTA3MzAwMTA1MDQwMjA1MDAzMDEzMDYwMzU1MUQyNTA0MEMzMDBBMDYwODJCMDYwMTA1MDUwNzAzMDkzMDNFMDYwMzU1MUQxRjA0MzczMDM1MzAzM0EwMzFBMDJGODYyRDY4NzQ3NDcwM0EyRjJGNjM3MjZDMkQ2NDY1NzYyRTY4NjE3MjY5NjM2MTJFNjc3MjJGNDg2MTcyNjk2MzYxNTI2RjZGNzQ0MzQxMzIzMDMxMzUyRTYzNzI2QzMwMUQwNjAzNTUxRDBFMDQxNjA0MTRFNDI1RTk4NjRDNjQzQUVDRjJCN0U1N0M3Q0M5MkJDMUFDN0VCQTg3MzAwRTA2MDM1NTFEMEYwMTAxRkYwNDA0MDMwMjA3ODAzMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwQjA1MDAwMzgyMDIwMTAwMjJFOTM0ODA3RTdBQTgxQkVBRTI2NTlDQUMxNDdDMjVFMEQ3MEI5MUY3OTRFNzI4NzBBMDU5M0JDNDg3NEMyMTE4MjhBNzMxNTFDRjUyRTYwQzk2MDNBQkFFRjNFNDIxRTQzQ0FDQ0ZEQ0YzODE2NjQ5RENFMTQwMzM2MEQxQjI3MzBERDAwQkQwOTRGMDRGOEYwMUExNjRDRjY4QTRCMjk4MkJCMDlCOUM4ODI0RjM0MzU5M0QxOUZDNTY3MzU4ODUyQzIwQUU3NzE2MzYxNjY2REJGMjJBQzZCMEFENEM5QkQyODMwOEU0Qjk2OEY0MjRFODhFMTdDMDk1QjlFMjQxMEQyQTRBMThCOUVGNjk0MERBMjRGNkJDNTRGMjAyOEY3NDVFNTI4QUVFNDk3RTMzODhBRTZBODMwQjRGRERBNzU0QUZGRUI3Q0UzQTRBREQ2QUQwQjkyRDU1ODUxODREOTQ0NDQ3NTJCMDkyOEU0RTk1OTVEMTYyRDg3NjYwNDEzQjgyNTk3NkY3Mzk4RjY1RDE5RDM2OENBOUYzNzZDQzdFQUVGMDJGQ0FDOTA4NjcwMDhEMjFDOEEwNjQzQzQyQjU2MTQ5OTJERDREOEQ5QTZCQUFFN0ZCRjk2NTU4MTM2NUI2N0U1M0RCMEVGREJDODk1QjFDMTA5NUIxOTMwNkI2NDE1Q0YzM0RBMUYzRjE0OUMzNjM5OTY3QkMzRkFDODJGQjY4RUNENkFDQjQzQUEwNzJFQ0NGNEMxMkZFQUVGNEQ0RDhENUEzRDZENDBDNDIyMEJGMzg4RDEwQTc5Qjk0NzgxRTk1NzQ2MEUzMzFBN0YzMzBDMjkxMTg4MjA4QkZGNzI0M0M3RjlCNjFDN0E3Q0M0MkY2NTBDRkM4MUYyREE5MzM3QTY1MDI4RUMyREQ3NEQ4OTRBRjk2MjAxRThEODJGNTQ2QUY2QUE4RUNEM0ZDQjU4Mzc3NkUyMzdBRkM0ODJDODYxOTUyODFDRjA5RjE0NDlEQzIxOTYzQUQyMTdCQzVEQjVEQzdDMkU0QzlFN0JERDMzNTZGNjY4ODlCNThCMTlEQkFDNDQ1Q0NENzMzOTA5QTMxQzVCMEFDMUY2MzVGRkI2MzVBN0Y4RkYyOTdCMDcyQ0EyQTcyODg4QjNDNjRDODZEM0IzRTNDRDgwRDYzMDI5QTY0RjdGMzA5NzU5NDBDMTZFQkI5QTgxQzNDRjg2NjAxRTM2MEI0OEMxOUVCOTIwRDBGMzE2NDIzODAzRjgzQjEyQTBENDU4MUM3RDM3N0YyMEM2MzExOEU5RDU0OTIzN0Q4REFEMTFFODFFQzM3QkMxRjg0MjQ0NkYyMzg5RjFCNDdDNzMwMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTAxMDUwMDA0ODIwMTAwNzQ5RDVDMzIyNzhDRjYwMUEzNjQ4MjQ5Njg0RTk4RUNBNkUzRkFGQjk4NkYwOTEzNEQxOTJCNzlFMEE4NDM1NjgxRkIxMDdCNEE2MjRGNDI0MDMxMTkzRUUzNjdCMDA1QUJENThDNUY4RkM1RjQzOTk2NUNERjNGMUUyRkNFRTdFMEFDRjFGNkEwQUZCRkI1RkVFQzYwMjBFRTcwMzA5MDBERDE3QkZGOUQ1OTVGQjg2NTk1NThFQ0YxRkZCNTAwNjE0MEQyRUJEQjE4MzY5MjY3NUQ2NEJCNzU5RTE1QTM5MzgzRDhGMjVDMjIzRjIzRDQxMUM2RTVEQjlFRTNFMDY0REQxMDlGQjE5QzdEMTQyQzNDRjRDQUI0N0QwMDJCQUEyQkFCNzg1N0Y4QkUxMjkwREE1RjQ3RjRBQ0RFREJCQzVGNTU0RTMzNkZCODBFODg4NTEwNjY3ODU1MTQxMTJDRDczNzcwNDlGMkIyRjQ0MkQyRkU4NkQyQ0U5ODUzNDQwNDI1MDA5MEIyQ0Y4MEZFNTZFMjRCMzFFRkRCNkNERTc4OUI4NzM4NjUzQ0Q2MEM1MjBCQjYwQ0E1OThFM0Y1RkI0ODZBM0I4QUY4NUYxREU4QkQwNjU0Q0Q4ODI5OEQ2MTI2MjQxRTVFMEVFQkVERjkyOUM3NDJGNkVGNDhBMTgyMTMwQjMwODIxMzA3MDYwQjJBODY0ODg2RjcwRDAxMDkxMDAyMEUzMTgyMTJGNjMwODIxMkYyMDYwOTJBODY0ODg2RjcwRDAxMDcwMkEwODIxMkUzMzA4MjEyREYwMjAxMDMzMTBGMzAwRDA2MDk2MDg2NDgwMTY1MDMwNDAyMDEwNTAwMzA3QjA2MEIyQTg2NDg4NkY3MEQwMTA5MTAwMTA0QTA2QzA0NkEzMDY4MDIwMTAxMDYwNjA0MDA4RjY3MDEwMTMwMzEzMDBEMDYwOTYwODY0ODAxNjUwMzA0MDIwMTA1MDAwNDIwQzE0NTkwMTVGRDI0Qjg1RUFDNzAwQTUwNDlFMEZEQzJBOTZFREY4MDM1ODBERkJBNzgxMjFENzEwNzJGRjFENTAyMDg3OUQzMjE5RkQ1MjNCQUUxMTgwRjMyMzAzMjMxMzAzNDMyMzEzMTMxMzUzNjM0MzQ1QTMwMDMwMjAxMDEwMjA4MjU2RTk3RkRENjE4MUQyMUEwODIwRTgwMzA4MjA3MTEzMDgyMDRGOUEwMDMwMjAxMDIwMjEwMEEwQjM3NjI0NjZDRDA5QjNBMkI5RTVGNTA3N0VFN0QzMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwQjA1MDAzMDgxQzMzMTBCMzAwOTA2MDM1NTA0MDYxMzAyNDc1MjMxMkIzMDI5MDYwMzU1MDQwQTBDMjI0NzcyNjU2NTZCMjA1NTZFNjk3NjY1NzI3MzY5NzQ2OTY1NzMyMDRFNjU3NDc3NkY3MjZCMjAyODQ3NTU2RTY1NzQyOTMxMTgzMDE2MDYwMzU1MDQ2MTBDMEY1NjQxNTQ0NzUyMkQzMDM5MzkzMDMyMzgzMjMyMzAzMTM3MzAzNTA2MDM1NTA0MEIwQzJFNDg2NTZDNkM2NTZFNjk2MzIwNDE2MzYxNjQ2NTZENjk2MzIwNjE2RTY0MjA1MjY1NzM2NTYxNzI2MzY4MjA0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNzMyMDQzNDEzMTM0MzAzMjA2MDM1NTA0MDMwQzJCNDg0MTUyNDk0MzQxMjA1MTc1NjE2QzY5NjY2OTY1NjQyMDU0Njk2RDY1MjA1Mzc0NjE2RDcwNjk2RTY3MjA1MjUzNDEyMDUzNzU2MjQzNDEyMDUyMzEzMDFFMTcwRDMyMzAzMDM1MzIzMDMwMzgzMjMxMzUzOTVBMTcwRDMzMzAzMDM1MzEzODMwMzgzMjMxMzUzOTVBMzA4MThBMzEwQjMwMDkwNjAzNTUwNDA2MTMwMjQ3NTIzMTBGMzAwRDA2MDM1NTA0MDcwQzA2NDE3NDY4NjU2RTczMzEzNzMwMzUwNjAzNTUwNDBBMEMyRTQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA0MzQxMzEzMTMwMkYwNjAzNTUwNDAzMEMyODQ4NDE1MjQ5NDM0MTIwNTE3NTYxNkM2OTY2Njk2NTY0MjA1NDY5NkQ2NTJENTM3NDYxNkQ3MDY5NkU2NzIwNTU2RTY5NzQyMDMyMzAzMjMwMzA4MjAxMjIzMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwMTA1MDAwMzgyMDEwRjAwMzA4MjAxMEEwMjgyMDEwMTAwREJDMjNGQTYzNDNBQzgwNjUyNDI4Njg0NThCODg1MjlFMkJGMTFBRkJEOEU1RDNEQ0MzNzQzOUY2OTExNUE1NTY2NkNCQkI5NzI1NzdCM0JFN0E4NUVGOTY3RDY5RUVEM0E1RENEM0ExNzdEQ0MyMkE4RTZFOUEzMTE5RTgzRDg1RDc4RTlGOUY5Mzc0NkQ4NkE2NEEzRDgzMUUwMDRENDY4OEE2ODE1MjcyMTE0MDYzNkMxM0NCQTZFQUE0ODk1NTMyQjVCN0UxQkZGMzE2OUEwRjQ3M0Y4RDZCMjJCNUQ2NTEwQzBBREFBRTgxNzZCQTkwN0YyMjY2N0VFRTFFRDJBODIyMTM5QUM0MjIzMjQ5OEZFNEM5NjJGMTg1RTE0MDY2RUQxN0NFNEE1NzQ5NDNBNjcxNjc3MzdDNzYxRUEzODg3NzQzRTUxOUU0NDM0MjBEOEZGOUVFNTc3NzYzODI0MDYyRTMyRjJBMDcxRUU1NTVDNzU5QUUyOTBEQjc0QTdBQ0Y3NzlEQUREMTgyRDYwMkJCNUEwMTE0Q0QyNERCOUU0QUUwN0VDMDFERjE4OTdFMTVERDc5MTZCN0YyODAzMkUzNzNGODQ1NEIyN0VGM0U3MTBCOENEMUYwRUUxNEI2NDQwMDExRTQyMjBDQ0EzOTNDQzQ3NTQ0OTdCNUYwMjAzMDEwMDAxQTM4MjAyMzYzMDgyMDIzMjMwMUYwNjAzNTUxRDIzMDQxODMwMTY4MDE0RDk1ODNFNTVEOEE3NzI4NTAxNDc5MzYxNTYzQzI4Njk3NTJFRTA3OTMwODE4MTA2MDgyQjA2MDEwNTA1MDcwMTAxMDQ3NTMwNzMzMDRFMDYwODJCMDYwMTA1MDUwNzMwMDI4NjQyNjg3NDc0NzAzQTJGMkY3MjY1NzA2RjJFNjg2MTcyNjk2MzYxMkU2NzcyMkY2MzY1NzI3NDczMkY0ODYxNzI2OTYzNjE1MTc1NjE2QzY5NjY2OTY1NjQ1NDY5NkQ2NTUzNzQ2MTZENzA2OTZFNjc1Mzc1NjI0MzQxNTIzMTJFNjM3Mjc0MzAyMTA2MDgyQjA2MDEwNTA1MDczMDAxODYxNTY4NzQ3NDcwM0EyRjJGNkY2MzczNzAyRTY4NjE3MjY5NjM2MTJFNjc3MjMwNTcwNjAzNTUxRDIwMDQ1MDMwNEUzMDA4MDYwNjA0MDA4RjY3MDEwMTMwNDIwNjBDMkIwNjAxMDQwMTgxQ0YxMTAxMDEwNjAyMzAzMjMwMzAwNjA4MkIwNjAxMDUwNTA3MDIwMTE2MjQ2ODc0NzQ3MDczM0EyRjJGNzI2NTcwNkYyRTY4NjE3MjY5NjM2MTJFNjc3MjJGNjQ2RjYzNzU2RDY1NkU3NDczMkY0MzUwNTMzMDE2MDYwMzU1MUQyNTAxMDFGRjA0MEMzMDBBMDYwODJCMDYwMTA1MDUwNzAzMDgzMDgxOUMwNjA4MkIwNjAxMDUwNTA3MDEwMzA0ODE4RjMwODE4QzMwMDgwNjA2MDQwMDhFNDYwMTAxMzAwODA2MDYwNDAwOEU0NjAxMDQzMDc2MDYwNjA0MDA4RTQ2MDEwNTMwNkMzMDM0MTYyRTY4NzQ3NDcwNzMzQTJGMkY3MjY1NzA2RjJFNjg2MTcyNjk2MzYxMkU2NzcyMkY2NDZGNjM3NTZENjU2RTc0NzMyRjU0NTM0MTUwNDQ1MzJENDU0RTJFNzA2NDY2MTMwMjY1NkUzMDM0MTYyRTY4NzQ3NDcwNzMzQTJGMkY3MjY1NzA2RjJFNjg2MTcyNjk2MzYxMkU2NzcyMkY2NDZGNjM3NTZENjU2RTc0NzMyRjU0NTM0MTUwNDQ1MzJENDU0QzJFNzA2NDY2MTMwMjY1NkMzMDRDMDYwMzU1MUQxRjA0NDUzMDQzMzA0MUEwM0ZBMDNEODYzQjY4NzQ3NDcwM0EyRjJGNjM3MjZDMkU2ODYxNzI2OTYzNjEyRTY3NzIyRjQ4NjE3MjY5NjM2MTUxNzU2MTZDNjk2NjY5NjU2NDU0Njk2RDY1NTM3NDYxNkQ3MDY5NkU2NzUzNzU2MjQzNDE1MjMxMkU2MzcyNkMzMDFEMDYwMzU1MUQwRTA0MTYwNDE0QkM2MDYwODQxRkRCNUU4REUyRjREMUFDQ0M5NUM1QzRGNkUyMEQwODMwMEUwNjAzNTUxRDBGMDEwMUZGMDQwNDAzMDIwNkMwMzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMDM4MjAyMDEwMDU0RjQ4QjlCMDAwNDg0QTJBQURBMzI2RTZEQUQ5QkJCRkMzNDk0QkVDQkYxNThDODE4QTgxMzRGNzI4QjdDNTdGQ0M5OEYxQjg1NjZFMEFGQTc1NEU1QjA2N0U4QjI1MjE1ODI5RDJCMjE0RTlGOTdEODIyMTJBNkZFN0U5RkY2RDRCNEEzOEJBREE4QkJCNDU0Mjc0MjhGQjhDNTAyODdDQkU2OURGQTA1NDVDQUQzNDkwNkZDNkRFMjdDREREQzExRTc2NTMwMkE3OThDNTlGOTNDRTA4OEI0Q0RDRjk3Q0I1RDg1NjdBQ0EyNjA5NUNBRkI5NEMxODVDMjk2NzM2NkU5NEU4MDkwRTdDNjc5MjgwQzUzMURDQTI0OUMwMzdFM0ZDQkVFNTc3NzVCQkZGOUI2RUFGNUE5ODMxMTY1RkI3RTM4ODkyRjc3REZGQUFDNDJGNDFBRjJEQzIxQzI3NUIzOTZFQ0FGNjFBRDBGQkQ4MTRENkIwNEZCMkRDREYzNUNBODZFQjNBMjQ2OTA4RDE4RDhCNzU5ODJCOTIwQ0ZENkUzQzFFN0FERDZGQ0M5MUQxQjBDMTYwRTUwRjlDRURCMzI1M0Y1OTE5NTNBN0IzNjA3MTlFQ0MwNThCMkU3NDI1RTc5MjE2MjcwNzY1N0JDMUYzNEUzRjYxMzNCQTU0NTE4RDhDOEQ4NzM5NzZFN0UyNERCM0JDMjUzODcwMkREMEI3MzMxRDM4NjcwMkY0NzdCNjMyQTJCOTEzNzQ0OThFRDcxOTBGMTZENERDMjY4RkI4QUIyODkxMkZDMjgxODdEOUM5NzFEMjVCODgzMjgwOTI5Rjc5NjEwQTFGODMyMzlENEM1NzMyOUUxQzRFMDc1NEVBQjAxMkE5NEFDOEFBMEJDMDY4M0M3MjIzMTVEODg0NEI1MkMyOEU1N0FDRkM4OEMyNjJFRkZCMTg1NkU1QTdGQjlDMkRBNzE4NDVDMzlENEFDNTlEMDFGNjk5REE4NThEOTdCMjIwNkQ2MDhCNDJFMUQ2MDlEQjI3NTJDQTVFMjNCNUU5NDQ2Njg5MkREMzQ3MDAzQTZDQzNGRTQ5MzE4QzQ5QjZFRDg4QUI4QUQ1MEJFMDYyNjlEMzE5MjI1OTM1MEZFMkJCNDJFODVCOTZDMjg4NDdBNzg3RDcxMjY1RTY0M0U5NDAxRDcyMTg5NDI0QjU2NzBGRkY2NDBEQTFGRDNEQjU3NDQzM0Y1QzRGNTU2MUIxNUFDNDVBQTI0MkFFOTc1NjgwRDU0QzZDODVGNzZFMjA3NTBFNDgxMDYyN0Q0MjVGOERGNzA5RTcwNEE2OUREMDEzQUEwRjY1MDA1MEI0MTU0QTAzMDgyMDc2NzMwODIwNTRGQTAwMzAyMDEwMjAyMTAxODQzNTEzOEZGQzA2NDNGOTczRDRGODc3NzA0OEM3MTMwMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTBCMDUwMDMwODFBNjMxMEIzMDA5MDYwMzU1MDQwNjEzMDI0NzUyMzEwRjMwMEQwNjAzNTUwNDA3MTMwNjQxNzQ2ODY1NkU3MzMxNDQzMDQyMDYwMzU1MDQwQTEzM0I0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNDM2NTcyNzQyRTIwNDE3NTc0Njg2RjcyNjk3NDc5MzE0MDMwM0UwNjAzNTUwNDAzMTMzNzQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA1MjZGNkY3NDQzNDEyMDMyMzAzMTM1MzAxRTE3MEQzMjMwMzAzNTMyMzAzMDM3MzIzNjMzMzY1QTE3MEQzMzM1MzAzNTMxMzczMDM3MzIzNjMzMzY1QTMwODFDMzMxMEIzMDA5MDYwMzU1MDQwNjEzMDI0NzUyMzEyQjMwMjkwNjAzNTUwNDBBMEMyMjQ3NzI2NTY1NkIyMDU1NkU2OTc2NjU3MjczNjk3NDY5NjU3MzIwNEU2NTc0Nzc2RjcyNkIyMDI4NDc1NTZFNjU3NDI5MzExODMwMTYwNjAzNTUwNDYxMEMwRjU2NDE1NDQ3NTIyRDMwMzkzOTMwMzIzODMyMzIzMDMxMzczMDM1MDYwMzU1MDQwQjBDMkU0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNDM0MTMxMzQzMDMyMDYwMzU1MDQwMzBDMkI0ODQxNTI0OTQzNDEyMDUxNzU2MTZDNjk2NjY5NjU2NDIwNTQ2OTZENjUyMDUzNzQ2MTZENzA2OTZFNjcyMDUyNTM0MTIwNTM3NTYyNDM0MTIwNTIzMTMwODIwMjIyMzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMDEwNTAwMDM4MjAyMEYwMDMwODIwMjBBMDI4MjAyMDEwMDlCRUFBOTRGODVCODc2Mjg0M0MwMUYzNUZFNzRFOTEzRUM1ODZDOUZFNUQ5ODgxMDdFODIwOEFBOEQ5RkEzRkIyNjJCRDU1NDlBQjYxNTY1MzgxRjRDMEY3MUVBQkExMTIxRkM4RENERThBQUI4RjFBNjYyRkFGRDNFQkM5QzBBRjk1Q0JENDJFRERGRDNBQ0ZGRTk1NTFDRTU2MDUxMTBDMjlBMTFFQ0RBMjlEQUIwNUVCNjlFQjhDNzJGNkVBN0I2NjUwRTMwQzJEQjA0RkQ3NDZDRDlFMzAzODU1MjU5MkQxNjFCNzk2RkZGOTY1MEJCM0Q2NDk0Q0RDRTkyMTU5MDRBNTc0QjVGOUU4REI1MTlDOTAyMkVGNEQ1RjFFRkY2MjA1M0YwMjFDNThCQUQyQzdDRjc1NjI3NTcyMTVDNzQwMDdGNzNEQUM3QjUzOEI3NEYwOTFGQTQyMUE1NjUyQTVCNDcxRjJCMEIzRDk1RDU0QkEwOEY0RkRCMjg5NTQ2N0ZFNTIyOTlEQjIyRjMyQ0M3OTlDRDdFMzZDNUNBOTIwQzk0MTU4NzdBMDM4NzkxRTgyODZGMTJGMDNGQjRDOEZEMTU4MTdEQUMyQTFEMkUyNURFMkM3MTMzMTFDODU1OUU0NDk0QUE2Rjc3OEIyMTg1OUU2NTgxNjJCRjk0MDU5RTUwRDAwNUFEN0EwMkE5Q0Y3NUMxMDg5MTIzRDJEMjZFRjZDNTMwRkMwNDA4NTNFRDE4OTMwMjc1NDQyMTZEOEIwNkM2OTg5OTY0OThEOEJEOUY4RDFEOTQxMTUwQkExRTQzMDQyREM0OTNEREY3RjBEQUI5MTVBRUE1Qjg5M0NERTIwMjU2RDM2QjM0NENDREIwNTIxOUE3NTZFQTE2RUNDQ0IxRERDNkNFMzg1ODUwNDk3NzlEMzUyMEE2OTA1MTYyQkQzQjU4NUNEQTY4NEQ2RDhBODlEMUJCQTRFMUI5MDEzRjBFQURBMEIzQTIzREU0RjY2QTE1MTAxMzZFMTgxQzlBQkEwRjk1OTQ2QzdBMUQ2NEEyNDJCNzU4N0VFQjJDRkZGN0FFM0MzNDRERjJGQjQ3RjQ2OERCMjgxNjMzMDMzN0U5N0JEQjJEMzFGODRFOTRENDBCMTkyNjc3OUI4NTA4QUREODI4ODg0Mzg1MTE4RDMyQUQ1OUU3QjVERTA1RjIxNDM1N0EwNUQ2MTRGOTc2MjdDODI2Q0RFQ0Q5MkYxQUVCMkQxNEEwM0VENzUyNTBEN0E0ODVEQjEyMjAwREM0MEIzQjFCMkI2OTI4NzM3NDMxQTc4MDYzM0I4NTAyQjFCNTgzQTBGOUY5M0YzNjUwRkM0QTBENDEwMjAzMDEwMDAxQTM4MjAxNzAzMDgyMDE2QzMwMTIwNjAzNTUxRDEzMDEwMUZGMDQwODMwMDYwMTAxRkYwMjAxMDAzMDFGMDYwMzU1MUQyMzA0MTgzMDE2ODAxNDcxMTU2N0M4QzhDOUJENzU1RDcyRDAzODE4NkE5REYzNzEyNDU0MEIzMDZGMDYwODJCMDYwMTA1MDUwNzAxMDEwNDYzMzA2MTMwM0MwNjA4MkIwNjAxMDUwNTA3MzAwMjg2MzA2ODc0NzQ3MDNBMkYyRjcyNjU3MDZGMkU2ODYxNzI2OTYzNjEyRTY3NzIyRjYzNjU3Mjc0NzMyRjQ4NjE3MjY5NjM2MTUyNkY2Rjc0NDM0MTMyMzAzMTM1MkU2MzcyNzQzMDIxMDYwODJCMDYwMTA1MDUwNzMwMDE4NjE1Njg3NDc0NzAzQTJGMkY2RjYzNzM3MDJFNjg2MTcyNjk2MzYxMkU2NzcyMzA0NDA2MDM1NTFEMjAwNDNEMzAzQjMwMzkwNjA0NTUxRDIwMDAzMDMxMzAyRjA2MDgyQjA2MDEwNTA1MDcwMjAxMTYyMzY4NzQ3NDcwM0EyRjJGNzI2NTcwNkYyRTY4NjE3MjY5NjM2MTJFNjc3MjJGNjQ2RjYzNzU2RDY1NkU3NDczMkY0MzUwNTMzMDEzMDYwMzU1MUQyNTA0MEMzMDBBMDYwODJCMDYwMTA1MDUwNzAzMDgzMDNBMDYwMzU1MUQxRjA0MzMzMDMxMzAyRkEwMkRBMDJCODYyOTY4NzQ3NDcwM0EyRjJGNjM3MjZDMkU2ODYxNzI2OTYzNjEyRTY3NzIyRjQ4NjE3MjY5NjM2MTUyNkY2Rjc0NDM0MTMyMzAzMTM1MkU2MzcyNkMzMDFEMDYwMzU1MUQwRTA0MTYwNDE0RDk1ODNFNTVEOEE3NzI4NTAxNDc5MzYxNTYzQzI4Njk3NTJFRTA3OTMwMEUwNjAzNTUxRDBGMDEwMUZGMDQwNDAzMDIwMTg2MzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMDM4MjAyMDEwMDAxQjY1MzY0NERGREI0QkNEMUY1RTRFRkZGMDJGODQzQzMwQTQyNTQwNkJDQUJCNUYxOTRFQjNERkRDMjNCQTY4QjJFNEJEMjRFNzY4RTA3MTZFM0Q5ODQzQjNBQzMyNTFBMTI5NDRDNDdEOEU2NTdERDAxMDcyQjU0M0IxRjE0RDE1MDI0MDYyMzMyMTM2N0EwRThGNjMyQzk0QTEzNjFGRUEyMTY5NUIzMDk0Q0Y4OEI5RURCNjVBNzAyOUJCNkFGNzc5Nzg0QkI2Q0M5MTFENUI5MjM1MDk3MTdFMjQ3QzM2RTE5NUMwNjUwQ0I2MTM2MkExNUQ3QzUwRTI5NzEyMkUwNjBDMkI1RkM3MTJBRUU0Q0JGQUQwOTQxM0FGQTYxNTA1NDkyRDIwNDQ2MkRBQkFDMzQ2QzAwNUY5MThDQzAzOTg4RTk5OEUyOEJFQ0M3NUVDMTE3QTZDRjQ3RTVFMDBENjk1NjdENjk1MTBEMjAyNzc2MkFCMEEzMDE0OURFM0YwOEM1QjVEQzRGMDYxRjJBQzUzMzM3QTdCQjAyODM2RkE0M0Q4M0JFNUE1MzA5OURCRDk2RkNFQTQ2MTYwMzRCMDcwRURFNUNGODFENUQyMUYzMENBNzcwODc5MzZCQzk1NjdFQzc0QUM2MjFBNzE2NDk5QTRCOEY5M0VFNjJFMTI2RjZBRDJDNTY2Qjk2QkY3QzZGQkFBNTgxQ0JFQjI0OTU5OTFEMzAxQTZFQTk4MzgyMzNERkUxMUQyRDRDNUQ5QkY0OTNFMTYyRTAzMDIzNDUzNjFENDgyQzlGNTJGNkU0QUFEREI5QTM1M0ZGRTJGQjEwMjVFOUEwQTdCRURCOUM0ODUyNEUzOEE5MjU5NDNERjg2RkMwQkIyNzFBQzQ0QkU1MzY5MUI2NjI5Mjk3N0RDN0RBOEZCOUExRDU4NzY0ODZFMTkxOUZDQUQ2MzU1NUY0MTAzNUEyM0JFQkVDMjAzQTMzMEI0QTg1MUEwRUI4MjEzQzE1MjlEOEM2RTM1Q0NDNEY4NEM3NkI1NTY1NDMxQTFDRjE0QTFGNzk5QkIzMTc1REI1MzA2QzNDNDNDMThCN0IzNDE5RDkyNUY4NUQ4OEFBQ0M2MEI5NTM1NzFEQzkyODFBNzJDNjdFMTcyRUY3RTFGOEMyQUU2OUJEQUQ5QzkxOTJBNjkyRDcyMTkyMEZENkE2OEQ2NkU3RThDN0FERUQ5NDQ1NjY0NUMyREU5NUVENkQxNkY1NjlERTg2OUMzMUE3OEFEMjkxMTZDOEIyOUZDNzg5REQyN0U3ODQ0RjgyREZGNjVCQzJENEU5MzE2MTUwQzRCOTdGQjA3NTgyRjU1NTRFNDIzMTgyMDNDNjMwODIwM0MyMDIwMTAxMzA4MUQ4MzA4MUMzMzEwQjMwMDkwNjAzNTUwNDA2MTMwMjQ3NTIzMTJCMzAyOTA2MDM1NTA0MEEwQzIyNDc3MjY1NjU2QjIwNTU2RTY5NzY2NTcyNzM2OTc0Njk2NTczMjA0RTY1NzQ3NzZGNzI2QjIwMjg0NzU1NkU2NTc0MjkzMTE4MzAxNjA2MDM1NTA0NjEwQzBGNTY0MTU0NDc1MjJEMzAzOTM5MzAzMjM4MzIzMjMwMzEzNzMwMzUwNjAzNTUwNDBCMEMyRTQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA0MzQxMzEzNDMwMzIwNjAzNTUwNDAzMEMyQjQ4NDE1MjQ5NDM0MTIwNTE3NTYxNkM2OTY2Njk2NTY0MjA1NDY5NkQ2NTIwNTM3NDYxNkQ3MDY5NkU2NzIwNTI1MzQxMjA1Mzc1NjI0MzQxMjA1MjMxMDIxMDBBMEIzNzYyNDY2Q0QwOUIzQTJCOUU1RjUwNzdFRTdEMzAwRDA2MDk2MDg2NDgwMTY1MDMwNDAyMDEwNTAwQTA4MjAxQkUzMDFBMDYwOTJBODY0ODg2RjcwRDAxMDkwMzMxMEQwNjBCMkE4NjQ4ODZGNzBEMDEwOTEwMDEwNDMwMUMwNjA5MkE4NjQ4ODZGNzBEMDEwOTA1MzEwRjE3MEQzMjMxMzAzNDMyMzEzMTMxMzUzNjM0MzQ1QTMwMkQwNjA5MkE4NjQ4ODZGNzBEMDEwOTM0MzEyMDMwMUUzMDBEMDYwOTYwODY0ODAxNjUwMzA0MDIwMTA1MDBBMTBEMDYwOTJBODY0ODg2RjcwRDAxMDEwQjA1MDAzMDJGMDYwOTJBODY0ODg2RjcwRDAxMDkwNDMxMjIwNDIwODMzOTMzNDcxQjk4NkY3M0NBM0U4MDE2MDg1MTUxRkE3QkEzQzVBODlBRDdGQjRDNzA4Q0ExN0YwNUNBRDgwMDMwODIwMTIwMDYwQjJBODY0ODg2RjcwRDAxMDkxMDAyMkYzMTgyMDEwRjMwODIwMTBCMzA4MjAxMDczMDgyMDEwMzA0MjBDQTM0MTk4QjA1QzExQjQ0MkJGQTE1OEU0NDg0MzBEQjMyMEVBRUNBRkQzRkYyNkE3MjFGQ0UxNDhDRENCNzdCMzA4MURFMzA4MUM5QTQ4MUM2MzA4MUMzMzEwQjMwMDkwNjAzNTUwNDA2MTMwMjQ3NTIzMTJCMzAyOTA2MDM1NTA0MEEwQzIyNDc3MjY1NjU2QjIwNTU2RTY5NzY2NTcyNzM2OTc0Njk2NTczMjA0RTY1NzQ3NzZGNzI2QjIwMjg0NzU1NkU2NTc0MjkzMTE4MzAxNjA2MDM1NTA0NjEwQzBGNTY0MTU0NDc1MjJEMzAzOTM5MzAzMjM4MzIzMjMwMzEzNzMwMzUwNjAzNTUwNDBCMEMyRTQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA0MzQxMzEzNDMwMzIwNjAzNTUwNDAzMEMyQjQ4NDE1MjQ5NDM0MTIwNTE3NTYxNkM2OTY2Njk2NTY0MjA1NDY5NkQ2NTIwNTM3NDYxNkQ3MDY5NkU2NzIwNTI1MzQxMjA1Mzc1NjI0MzQxMjA1MjMxMDIxMDBBMEIzNzYyNDY2Q0QwOUIzQTJCOUU1RjUwNzdFRTdEMzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMDQ4MjAxMDBEOTA0RTk4OERCNUI5NjE4MEI5RUFEQUQzQkREOTA2NzMyNUY5NTIzNkQ4NjkxQUNGMTg3M0MxRDFBRENGQzFBODQ5N0RCMUJDMzVDNzVCNUI4QTUwQkEwQUQyQjMxRTYxQzBDMEVGNTI2RjEzNkZCMTE4NkI4RjQ0ODAyODg5NDExMzQ2MjczRThBNjM5QjdERThBN0RENEIzMDQ4RjI0QkVGQjYzMEM2MDBDNUY2QkNFODgzOUJGMkY0MUYxM0Q4NTI5QzIxODY3MUZFMTUwNDkyOTcyNEQ0OUUzMjQ0MTA1QTMyNzAyQkRCMDFCQzBBOTQ5OEEzQkU1NDlCRDA1NUEwM0EwQzgxODhFNTM1MDREMkNFOThBQzg5ODhDREU5QzREQ0IxNEZDOUZCRkI3NzMwMkE0RTlCQ0IxMTlGMEFBMDRBQkQ5RUFGNDNBOTRFMDE0MUJDNzMxMjg0MDU3MkExQUIxOEFCRTQwMDVCNEE1RkNBQTA4NDhBNUExM0Q1MzM2MDcxQzEyNTAxMkFGODcwQTJGRDYxODA4ODc1QThGMzVCQUEwNkI3OUMzMzM2QzFBNzIzQzZCQzU2QTc4RTgzNDUzOEU3ODVCMzNENDBGOThFMTdGMTMzQ0Y0REFCQzY2MTA4QTJFMTdENjI2RURFNEM1OUFERkY3M0IwODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD4KL0J5dGVSYW5nZSBbMCA5NDE0IDY2MjQ4IDE5MjE2XSAgICAgICAgICAgICAgICAKPj4KZW5kb2JqCjIgMCBvYmoKPDwKL1R5cGUgL1BhZ2UKL1BhcmVudCAzIDAgUgovUmVzb3VyY2VzIDYgMCBSCi9Db250ZW50cyA0IDAgUgovTWVkaWFCb3ggWzAgMCA1OTUgODQyXQovQW5ub3RzIFsyMSAwIFJdCj4+CmVuZG9iagoyMyAwIG9iago8PAovTGVuZ3RoIDYyMgovVHlwZSAvWE9iamVjdAovU3VidHlwZSAvRm9ybQovUmVzb3VyY2VzIDw8Ci9FeHRHU3RhdGUgMjQgMCBSCi9Gb250IDI1IDAgUgovWE9iamVjdCA8PAovSW0xIDI2IDAgUgo+Pgo+PgovRm9ybVR5cGUgMQovQkJveCBbMC4wIDAuMCAzMDAuNTg4MDcgMjUuOTg2NzU1XQo+PgpzdHJlYW0NCi9EZXZpY2VSR0IgY3MKMSAxIDEgc2MKMCAxLjU5MzQgMjQ0LjggMjIuOCByZQpmCi9nczEgZ3MKQlQKL0YxIDYgVGYKMCAwIDAgc2MKMTAuMTcxOSBUTAoxLjIgMTcuMTkzNCBUZAowIDAgVGQKKAM9A0wDWwNOA0YDTwNBAAMDWgNVA1QDSANKA0gDVgNGA1EDUQNCA1IDVAADA0YDVQNhAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADKSBUagpUKgowIDAgVGQKKAMtA1EDSgNWA1QDUQNMA1IDRANGAB0AAwAVABMAFQAUABEAEwAXABEAEwAbAAMAFQATAB0AFAATAB0AFgAYAAMAXCgAXCgANgA3AAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMpIFRqClQqCkVUCi9nczIgZ3MKcQpxCjU1Ljc4ODEgMCAwIDI1Ljk4NjggMjQ0LjggMCBjbQovSW0xIERvClEKMSAwIDAgMSA1NS43ODgxIDI1Ljk4NjggY20KUQoNCmVuZHN0cmVhbQplbmRvYmoKMjQgMCBvYmoKPDwKL2dzMSAyNyAwIFIKL2dzMiAyOCAwIFIKPj4KZW5kb2JqCjI1IDAgb2JqCjw8Ci9GMSAyOSAwIFIKPj4KZW5kb2JqCjI2IDAgb2JqCjw8Ci9MZW5ndGggOTk2MgovVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL0ZpbHRlciAvRENURGVjb2RlCi9CaXRzUGVyQ29tcG9uZW50IDgKL1dpZHRoIDIzNAovSGVpZ2h0IDEwOQovQ29sb3JTcGFjZSAvRGV2aWNlUkdCCj4+CnN0cmVhbQ0K/9j/4AAQSkZJRgABAQEBLgEuAAD/7QBAUGhvdG9zaG9wIDMuMAA4QklNBAQAAAAAACQcAjcACDIwMjEwNDIxHAIAAAIAABwCPAALMTM1NzI0LTEzNTf/4RPeaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA0LjQuMC1FeGl2MiI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOmlwdGNFeHQ9Imh0dHA6Ly9pcHRjLm9yZy9zdGQvSXB0YzR4bXBFeHQvMjAwOC0wMi0yOS8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6cGx1cz0iaHR0cDovL25zLnVzZXBsdXMub3JnL2xkZi94bXAvMS4wLyIgeG1sbnM6R0lNUD0iaHR0cDovL3d3dy5naW1wLm9yZy94bXAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBkZj0iaHR0cDovL25zLmFkb2JlLmNvbS9wZGYvMS4zLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDozZmNhOThlMy1iZjcxLTUwNDctOTEwZi1lY2NhZWIxYTNlMjUiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTc1OGE0YzQtMDRhOS00ZmIzLTljNWUtMDYzYzVmMDUyNGY2IiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InV1aWQ6MWRmMGZhYjEtYjhiZS1jYjRiLTlmMmMtZWY0ZWIxMWExZjVhIiBHSU1QOkFQST0iMi4wIiBHSU1QOlBsYXRmb3JtPSJMaW51eCIgR0lNUDpUaW1lU3RhbXA9IjE2MTkwMDI2NDU0ODU5NDEiIEdJTVA6VmVyc2lvbj0iMi4xMC44IiBkYzpGb3JtYXQ9ImltYWdlL2pwZWciIHBkZjpQcm9kdWNlcj0iVG91Y2hVcCA3LjAiIHBob3Rvc2hvcDpDb2xvck1vZGU9IjQiIHhtcDpDcmVhdGVEYXRlPSIyMDIxLTA0LTIwVDE0OjAxKzAzOjAwIiB4bXA6Q3JlYXRvclRvb2w9IkdJTVAgMi4xMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMS0wNC0yMFQxNDowNTo0MiswMzowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjEtMDQtMjBUMTQ6MDU6NDIrMDM6MDAiPiA8aXB0Y0V4dDpMb2NhdGlvbkNyZWF0ZWQ+IDxyZGY6QmFnLz4gPC9pcHRjRXh0OkxvY2F0aW9uQ3JlYXRlZD4gPGlwdGNFeHQ6TG9jYXRpb25TaG93bj4gPHJkZjpCYWcvPiA8L2lwdGNFeHQ6TG9jYXRpb25TaG93bj4gPGlwdGNFeHQ6QXJ0d29ya09yT2JqZWN0PiA8cmRmOkJhZy8+IDwvaXB0Y0V4dDpBcnR3b3JrT3JPYmplY3Q+IDxpcHRjRXh0OlJlZ2lzdHJ5SWQ+IDxyZGY6QmFnLz4gPC9pcHRjRXh0OlJlZ2lzdHJ5SWQ+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDpjaGFuZ2VkPSIvIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjE3OGE0NDA2LWIwOWEtNDUxMy05MDFiLTRhYWU3ZTU5MDViMSIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIyLjMgKE1hY2ludG9zaCkiIHN0RXZ0OndoZW49IjIwMjEtMDQtMjBUMTQ6MDU6MDMrMDM6MDAiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNvbnZlcnRlZCIgc3RFdnQ6cGFyYW1ldGVycz0iZnJvbSBhcHBsaWNhdGlvbi9wZGYgdG8gaW1hZ2UvanBlZyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iZGVyaXZlZCIgc3RFdnQ6cGFyYW1ldGVycz0iY29udmVydGVkIGZyb20gYXBwbGljYXRpb24vcGRmIHRvIGltYWdlL2pwZWciLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDpjaGFuZ2VkPSIvIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmRiYmU0NDNmLTE3ODktNGNjMi1hYmQzLTBhM2U2MzZlNjgzNyIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIyLjMgKE1hY2ludG9zaCkiIHN0RXZ0OndoZW49IjIwMjEtMDQtMjBUMTQ6MDU6MDMrMDM6MDAiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDpjaGFuZ2VkPSIvIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjgxYTI1ZTA3LTBjZWEtNDAxOS05ODYxLTAzNGM3MjljZWIzNSIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIyLjMgKE1hY2ludG9zaCkiIHN0RXZ0OndoZW49IjIwMjEtMDQtMjBUMTQ6MDU6NDIrMDM6MDAiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDpjaGFuZ2VkPSIvIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmI1NGE2MTM0LWQ0ZTktNDFlNS05MmEzLTEyZTUyMDk2NDFkOSIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iR2ltcCAyLjEwIChMaW51eCkiIHN0RXZ0OndoZW49IiswMzowMCIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmRvY3VtZW50SUQ9InV1aWQ6MWRmMGZhYjEtYjhiZS1jYjRiLTlmMmMtZWY0ZWIxMWExZjVhIiBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjE3OGE0NDA2LWIwOWEtNDUxMy05MDFiLTRhYWU3ZTU5MDViMSIgc3RSZWY6b3JpZ2luYWxEb2N1bWVudElEPSJ1dWlkOjFkZjBmYWIxLWI4YmUtY2I0Yi05ZjJjLWVmNGViMTFhMWY1YSIvPiA8cGx1czpJbWFnZVN1cHBsaWVyPiA8cmRmOlNlcS8+IDwvcGx1czpJbWFnZVN1cHBsaWVyPiA8cGx1czpJbWFnZUNyZWF0b3I+IDxyZGY6U2VxLz4gPC9wbHVzOkltYWdlQ3JlYXRvcj4gPHBsdXM6Q29weXJpZ2h0T3duZXI+IDxyZGY6U2VxLz4gPC9wbHVzOkNvcHlyaWdodE93bmVyPiA8cGx1czpMaWNlbnNvcj4gPHJkZjpTZXEvPiA8L3BsdXM6TGljZW5zb3I+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/eHBhY2tldCBlbmQ9InciPz7/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCABtAOoDAREAAhEBAxEB/8QAHAABAAIDAQEBAAAAAAAAAAAAAAQFAQIDBgcJ/8QASxAAAQMCAwMHBwgGBwkAAAAAAgABAwQFERITBiExFCJBUVJhkRUyVHGSk7EWIzN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 \ No newline at end of file diff --git a/eseal/src/test/resources/detached-sign-case/signed-detached-utc-si-img-b64-pdf.txt b/eseal/src/test/resources/detached-sign-case/signed-detached-utc-si-img-b64-pdf.txt new file mode 100644 index 0000000..7fba086 --- /dev/null +++ b/eseal/src/test/resources/detached-sign-case/signed-detached-utc-si-img-b64-pdf.txt @@ -0,0 +1 @@ +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KZW5kb2JqCjE0IDAgb2JqCjMyOTYKZW5kb2JqCjE1IDAgb2JqCihoZWxsb3dvcmxkKQplbmRvYmoKMTYgMCBvYmoKKE1hYyBPUyBYIDEwLjEzLjEgUXVhcnR6IFBERkNvbnRleHQpCmVuZG9iagoxNyAwIG9iagooVGV4dEVkaXQpCmVuZG9iagoxOCAwIG9iagooRDoyMDIwMTAyNTEwMjgyMlowMCcwMCcpCmVuZG9iagoxOSAwIG9iagooKQplbmRvYmoKMjAgMCBvYmoKWyBdCmVuZG9iagoxIDAgb2JqCjw8IC9UaXRsZSAxNSAwIFIgL1Byb2R1Y2VyIDE2IDAgUiAvQ3JlYXRvciAxNyAwIFIgL0NyZWF0aW9uRGF0ZSAxOCAwIFIgL01vZERhdGUKMTggMCBSIC9LZXl3b3JkcyAxOSAwIFIgL0FBUEw6S2V5d29yZHMgMjAgMCBSID4+CmVuZG9iagp4cmVmCjAgMjEKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDA4MzE4IDAwMDAwIG4gCjAwMDAwMDAyNDIgMDAwMDAgbiAKMDAwMDAwMzk2OSAwMDAwMCBuIAowMDAwMDAwMDIyIDAwMDAwIG4gCjAwMDAwMDAyMjMgMDAwMDAgbiAKMDAwMDAwMDM0NiAwMDAwMCBuIAowMDAwMDAzOTM0IDAwMDAwIG4gCjAwMDAwMDQxMDIgMDAwMDAgbiAKMDAwMDAwMDQ0MyAwMDAwMCBuIAowMDAwMDAzOTEzIDAwMDAwIG4gCjAwMDAwMDQwNTIgMDAwMDAgbiAKMDAwMDAwNDQ2OSAwMDAwMCBuIAowMDAwMDA0NzIxIDAwMDAwIG4gCjAwMDAwMDgxMDcgMDAwMDAgbiAKMDAwMDAwODEyOCAwMDAwMCBuIAowMDAwMDA4MTU3IDAwMDAwIG4gCjAwMDAwMDgyMTAgMDAwMDAgbiAKMDAwMDAwODIzNyAwMDAwMCBuIAowMDAwMDA4Mjc5IDAwMDAwIG4gCjAwMDAwMDgyOTggMDAwMDAgbiAKdHJhaWxlcgo8PCAvU2l6ZSAyMSAvUm9vdCAxMSAwIFIgL0luZm8gMSAwIFIgL0lEIFsgPDdmMTkzYTUzZmRiMzEwYzkwMmUyNzRiODdlYjgzZGE3Pgo8N2YxOTNhNTNmZGIzMTBjOTAyZTI3NGI4N2ViODNkYTc+IF0gPj4Kc3RhcnR4cmVmCjg0NjIKJSVFT0YKDQoxMSAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovUGFnZXMgMyAwIFIKL0Fjcm9Gb3JtIDw8Ci9GaWVsZHMgWzIxIDAgUl0KL1NpZ0ZsYWdzIDMKPj4KPj4KZW5kb2JqCjIxIDAgb2JqCjw8Ci9GVCAvU2lnCi9UeXBlIC9Bbm5vdAovU3VidHlwZSAvV2lkZ2V0Ci9GIDEzMgovVCAoU2lnbmF0dXJlMSkKL1YgMjIgMCBSCi9QIDIgMCBSCi9SZWN0IFswLjAgODE5LjIgMzEyLjAgODQyLjBdCi9BUCA8PAovTiAyMyAwIFIKPj4KPj4KZW5kb2JqCjIyIDAgb2JqCjw8Ci9UeXBlIC9TaWcKL0ZpbHRlciAvQWRvYmUuUFBLTGl0ZQovU3ViRmlsdGVyIC9FVFNJLkNBZEVTLmRldGFjaGVkCi9NIChEOjIwMjEwNDA4MTcxMDM1KzAwJzAwJykKL0NvbnRlbnRzIDwzMDgyNDhBNDA2MDkyQTg2NDg4NkY3MEQwMTA3MDJBMDgyNDg5NTMwODI0ODkxMDIwMTAxMzEwRjMwMEQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAxMDUwMDMwMEIwNjA5MkE4NjQ4ODZGNzBEMDEwNzAxQTA4MjE1RDIzMDgyMDgzMDMwODIwNjE4QTAwMzAyMDEwMjAyMTA3MzdGNUYxRTA2QzU0OTBCNUU3NjY3NUJDMjIzMzI1NTMwMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTBCMDUwMDMwODFCQzMxMEIzMDA5MDYwMzU1MDQwNjEzMDI0NzUyMzEyQjMwMjkwNjAzNTUwNDBBMEMyMjQ3NzI2NTY1NkIyMDU1NkU2OTc2NjU3MjczNjk3NDY5NjU3MzIwNEU2NTc0Nzc2RjcyNkIyMDI4NDc1NTZFNjU3NDI5MzExODMwMTYwNjAzNTUwNDYxMEMwRjU2NDE1NDQ3NTIyRDMwMzkzOTMwMzIzODMyMzIzMDMxMzczMDM1MDYwMzU1MDQwQjBDMkU0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNDM0MTMxMkQzMDJCMDYwMzU1MDQwMzBDMjQ0ODQxNTI0OTQzNDEyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU2MTZDMjA0MzZDNjk2NTZFNzQyMDUzNzU2MjQzNDEyMDUyMzEzMDFFMTcwRDMyMzAzMTMxMzEzOTMwMzczMDM3MzEzODVBMTcwRDMyMzEzMTMxMzEzOTMwMzczMDM3MzEzODVBMzA4MUQyMzEwQjMwMDkwNjAzNTUwNDA2MTMwMjQ3NTIzMTE1MzAxMzA2MDM1NTA0MDcwQzBDNTQ2ODY1NzM3MzYxNkM2RjZFNjk2QjY5MzEyRDMwMkIwNjAzNTUwNDBBMEMyNDQxNzI2OTczNzQ2Rjc0NkM2NTIwNTU2RTY5NzY2NTcyNzM2OTc0NzkyMDZGNjYyMDU0Njg2NTczNzM2MTZDNkY2RTY5NkI2OTMxMTIzMDEwMDYwMzU1MDQwQjBDMDk0OTU0MjA0MzY1NkU3NDY1NzIzMTE3MzAxNTA2MDM1NTA0MDQwQzBFNDQ2RjZCNjk2RDYxNzM3NDY5NkI2OTY0Njk3MzMxMTUzMDEzMDYwMzU1MDQyQTBDMEM0NDZGNkI2OTZENjE3Mzc0Njk2QjZGNzMzMTEzMzAxMTA2MDM1NTA0MDUxMzBBMzIzMzM4MzkzODM2MzYzNDM3MzEzMTI0MzAyMjA2MDM1NTA0MDMwQzFCNDQ2RjZCNjk2RDYxNzM3NDY5NkI2RjczMjA0NDZGNkI2OTZENjE3Mzc0Njk2QjY5NjQ2OTczMzA4MjAxMjIzMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwMTA1MDAwMzgyMDEwRjAwMzA4MjAxMEEwMjgyMDEwMTAwQjU5RUM0OUVBRTgyNTJBRjYyMURDREYwQTkyRTcxQkVDMTgxMzAyMkNBNUE5MkRCMDZEOTBCQ0I4QzMzNjMzNThBNUJCRjQ4OTk4MjNCQkQxNDdBRDlFNDg2RDVCREMxRDUwQzU5MjJCREQ1MURFQzgwQUE1NjZFQjg0RDg5N0E2NkFDMTE1OTA4Q0VBQkJBQTg5MjUzNDIwMTA0N0QyQUQyQjFFOTA5NDVDNDExNzc0MEY4N0ZCQUI2RjYxNzcxQjk3QkJBNUI2MEJDQkJCQjlDQkY3Q0Y1QTkyRUUwNTYyODQ5NEJGNDAxNzEzOTU5MkFCMDhGM0YzQTZEOTEzM0IyMDJBODQ1RDlEODAyNjlFNjg5MjAzM0ExQUY3REU4Qjk4RDI1RTcyNkM3NUFBNkVGOTlCMDc5NjJBODRFQjI1QzdGN0JDM0JFNEY3Q0I2Qzk4QThBMDcwN0UxNjM2ODM1NDQ3OUNCRjQzMDdEOUQzODBBNTczOEQ4NjZDQzZGRENCODFEOTUyRUQ5MEZDRDY5MTA4NUY2REQ5MUYxMEE3QTY3OTQ2QjI5MTE1QzA2MjQ5N0ZERDlDNUUwQzlBOEFBRDc1QTEyQTMzQUIxQUE1RjUwMUFCMTgyRTJCQ0Q0RDFCNkNDMzg4MTExRUY5NzlGM0M3MzVEMjVCMjQxNzkwMjAzMDEwMDAxQTM4MjAzMTQzMDgyMDMxMDMwMUYwNjAzNTUxRDIzMDQxODMwMTY4MDE0QzNFN0FDNUFDMTVGMzk3OEUwMTYzMEYxRDU4RTVENUFDREZBNjk0RDMwODE4NzA2MDgyQjA2MDEwNTA1MDcwMTAxMDQ3QjMwNzkzMDUwMDYwODJCMDYwMTA1MDUwNzMwMDI4NjQ0Njg3NDc0NzAzQTJGMkY3MjY1NzA2RjJENzM3NDY3MkU2ODYxNzI2OTYzNjEyRTY3NzIyRjYzNjU3Mjc0NzMyRjQ4NjE3MjY5NjM2MTQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU2MTZDNDM2QzY5NjU2RTc0NTM3NTYyNDM0MTUyMzEyRTYzNjU3MjMwMjUwNjA4MkIwNjAxMDUwNTA3MzAwMTg2MTk2ODc0NzQ3MDNBMkYyRjZGNjM3MzcwMkQ3Mzc0NjcyRTY4NjE3MjY5NjM2MTJFNjc3MjMwODFGMzA2MDM1NTFEMjAwNDgxRUIzMDgxRTgzMDA5MDYwNzA0MDA4QkVDNDAwMTAyMzA4MUNCMDYwQzJCMDYwMTA0MDE4MUNGMTEwMTAxMDQwMjMwODFCQTMwMzAwNjA4MkIwNjAxMDUwNTA3MDIwMTE2MjQ2ODc0NzQ3MDczM0EyRjJGNzI2NTcwNkYyRTY4NjE3MjY5NjM2MTJFNjc3MjJGNjQ2RjYzNzU2RDY1NkU3NDczMkY0MzUwNTMzMDgxODUwNjA4MkIwNjAxMDUwNTA3MDIwMjMwNzkwQzc3NTQ2ODY5NzMyMDUxNzU2MTZDNjk2NjY5NjU2NDIwNDM2NTcyNzQ2OTY2Njk2MzYxNzQ2NTIwNjg2MTczMjA2MjY1NjU2RTIwNDk3MzczNzU2NTY0MjA2Mjc5MjA3NDY4NjUyMDUxNTQ1MzUwMjAyMjQ3NzI2NTY1NkIyMDU1NkU2OTc2NjU3MjczNjk3NDY5NjU3MzIwNEU2NTc0Nzc2RjcyNkIyMDI4NDc1NTZFNjU3NDI5MjIyMDc3Njk3NDY4MjA1NjQxNTQyMDZFNzU2RDYyNjU3MjIwNDU0QzMwMzkzOTMwMzIzODMyMzIzMDMwMEQwNjBCMkIwNjAxMDQwMTgxQ0YxMTAxMDEwODMwMjAwNjAzNTUxRDI1MDQxOTMwMTcwNjBBMkIwNjAxMDQwMTgyMzcwQTAzMEMwNjA5MkE4NjQ4ODZGNzJGMDEwMTA1MzA4MUNCMDYwODJCMDYwMTA1MDUwNzAxMDMwNDgxQkUzMDgxQkIzMDA4MDYwNjA0MDA4RTQ2MDEwMTMwMDgwNjA2MDQwMDhFNDYwMTA0MzAxMzA2MDYwNDAwOEU0NjAxMDYzMDA5MDYwNzA0MDA4RTQ2MDEwNjAxMzA4MThGMDYwNjA0MDA4RTQ2MDEwNTMwODE4NDMwNDAxNjNBNjg3NDc0NzA3MzNBMkYyRjc3Nzc3NzJFNjg2MTcyNjk2MzYxMkU2NzcyMkY2NDZGNjM3NTZENjU2RTc0NzMyRjUxNzU2MTZDNjk2NjY5NjU2NDRFNjE3NDc1NzI2MTZDNTA0NDUzMkQ0NTRFMkU3MDY0NjYxMzAyNjU2RTMwNDAxNjNBNjg3NDc0NzA3MzNBMkYyRjc3Nzc3NzJFNjg2MTcyNjk2MzYxMkU2NzcyMkY2NDZGNjM3NTZENjU2RTc0NzMyRjUxNzU2MTZDNjk2NjY5NjU2NDRFNjE3NDc1NzI2MTZDNTA0NDUzMkQ0NTRDMkU3MDY0NjYxMzAyNjU2QzMwNEUwNjAzNTUxRDFGMDQ0NzMwNDUzMDQzQTA0MUEwM0Y4NjNENjg3NDc0NzAzQTJGMkY2MzcyNkMyRDczNzQ2NzJFNjg2MTcyNjk2MzYxMkU2NzcyMkY0ODYxNzI2OTYzNjE0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNjE2QzQzNkM2OTY1NkU3NDUzNzU2MjQzNDE1MjMxMkU2MzcyNkMzMDFEMDYwMzU1MUQwRTA0MTYwNDE0MjlGRTRGQ0I3NEZGREM5ODg0MkZGNDc2MTM4OUI1RUY1NUNDQkRBRjMwMEUwNjAzNTUxRDBGMDEwMUZGMDQwNDAzMDIwNkMwMzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMDM4MjAyMDEwMDIxMzM2OTFGOEEwMjkxNTUwREIzMUE0MTNDNDI1MENCQjc5NUU4OTMzOTY0NThDMEU1QkM0QTFDMEJENTJFRDBFNEY4MTI0RTcwQjU0RjFBNDQ5RDE0M0YyNjUwMTI1QTlEMTRGNkQ0QTZDQzMyQUEzREMzMjExQjUxMDMyNTE0NjBFQjNBODI3N0U5MEU5NEVFN0IxNUNCQUY3RkExMkQxM0ExNUY0QkI3MTIyNTgwNEM4NjQwMEUyNEEyNjMzOTRBN0E0QUNFREYzNEJDMUM5OTE2QkE4OEE3MEIzOUYzQjBFQTA4NDU4MzdEREI0Q0QyNDc0NkFGM0VDNDM4MTFCMTNDMTUwMzUyQjQyQTg4REQyMUY4RUE4NkUyRDk1RERBNEVBMTg2RDUwRUZCMDY0MUIzQjczQTk5NjU2RTc5OUQzQTlGNkM5OUU0RjhFOUZDNThDODM1MTAxMTkyNjkzQzE5REQyRTU4QzMwNzUyQzE4NjIyQzREOEUyMkY4MjQ5MkJGQkE0MTA2MzBFMUI3RUIzNTVERDBERkRCOTI5QzUzMDIyODc1NTE5ODkxRTlBNDg2RTk2OTU0NkZBNTNFNTY4NDUyRDdDODAwMTcwQUI0QkJDQzc2N0VGODlGOUVDOUI1RjVGMzJGQjQwMzg2MEFFMTZCM0Q1QjYzRTkwRjRCNkUyNEJBNjZDQzI4MzFEQ0JDRTkyOTlDOEU2MjZCMDJCNTU0NTRBMTI5RTAzODcyQUE4RkJERjMxRjZBQUMzMTkyRDJDQTM0RTA5RTUzOTUxOUU5Q0JGNjNGMkE1QTBCODJCMEU5N0QwQkNCRTA4NEU3NTY4MkYwOUQ3NTY5QUMxNUE1MURFMDZCREZBMDQ5MEY3OTlCMjk4NzY4Q0M4MDU1MEFGRTFFODU4OTc1MzA3NkVGRjY4MzJDM0NFOUUwMzY1RDA5MjkzQkIyNEVFQzM2MTk2MDU0RTNDNjJFN0NEODQ2Qzc2MjQ1MUE5QTZEMDdBNTgwQjg4NkI2RDYyRDQ5MjBBNTkyMDlCOEUyOTExQjg3QzVFMzlFOUM4MjA4MkVCMDUyRkI2ODU4NjQ5RDEwN0YxRjA0RjYyNDQxNzE4RUZBRjgyNDdFMUY3REE2MjQ5OTIxRTNCRDU4NUExODM0QzdDMDFGQjI4NDIzNUE5RkYzRUM0M0QzREU4QkNGRDA0NUFGMjZFQ0E0MjBCM0NEMTU5MzBCRDQ4NjE0OTEwOTIxOUE3M0U0NTRBNTVFQ0VDOUEyMzM1OTA2RUVBQTFEM0NBNUI4NkEzMzQ1NERCMUVERTdCODk0RTJFRTkzNzI4M0U0N0JEOUE0QTREMzMzRjZDN0VGMjNEQ0YzMDgyMDc1NTMwODIwNTNEQTAwMzAyMDEwMjAyMTA1OEI3NUJDQzNGMjhCMDg2Qjg3MjRENTRBQ0JBOUZFODMwMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTBCMDUwMDMwODFBRDMxMEIzMDA5MDYwMzU1MDQwNjEzMDI0NzUyMzEwRjMwMEQwNjAzNTUwNDA3MEMwNjQxNzQ2ODY1NkU3MzMxNDQzMDQyMDYwMzU1MDQwQTBDM0I0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNDM2NTcyNzQyRTIwNDE3NTc0Njg2RjcyNjk3NDc5MzE0NzMwNDUwNjAzNTUwNDAzMEMzRTQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA1MjZGNkY3NDQzNDEyMDMyMzAzMTM1MjAyRDIwNTQ2NTczNzQzMDFFMTcwRDMyMzAzMDM3MzAzNzMwMzkzMjMwMzQzODVBMTcwRDMzMzUzMDM3MzAzNDMwMzkzMjMwMzQzODVBMzA4MUJDMzEwQjMwMDkwNjAzNTUwNDA2MTMwMjQ3NTIzMTJCMzAyOTA2MDM1NTA0MEEwQzIyNDc3MjY1NjU2QjIwNTU2RTY5NzY2NTcyNzM2OTc0Njk2NTczMjA0RTY1NzQ3NzZGNzI2QjIwMjg0NzU1NkU2NTc0MjkzMTE4MzAxNjA2MDM1NTA0NjEwQzBGNTY0MTU0NDc1MjJEMzAzOTM5MzAzMjM4MzIzMjMwMzEzNzMwMzUwNjAzNTUwNDBCMEMyRTQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA0MzQxMzEyRDMwMkIwNjAzNTUwNDAzMEMyNDQ4NDE1MjQ5NDM0MTIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTYxNkMyMDQzNkM2OTY1NkU3NDIwNTM3NTYyNDM0MTIwNTIzMTMwODIwMjIyMzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMDEwNTAwMDM4MjAyMEYwMDMwODIwMjBBMDI4MjAyMDEwMEJBN0MwNEVDQUNBMTIxQTMwM0MzOEVEMTk1N0Q0RTNEOTEzNThBNjE2RkRFNEM1NzY0MTMyOTkwRjZFNDM3N0U4NkY3RTZFNUVEREFFMjFDRkI3RUJERUQwQjI5MUU3NTMyQzkyNjE2QkFBM0RDQ0U2QkIwMDU4MUY5MjIzNTE5NkNEMzVFQzNGRjczMjQwRkI1NUNFNjhBRjM0RUIzRkI4RjZFNEUwRDZGNENBODYyQzExQUNDOUYwREE2RDE5MzlGNDdENzVCNzdDRDU4M0FCMTIzQ0YyMkI0M0Y2ODA4RjVGODJFRDI0Q0E5ODg3OEZFRDM5NzUwMDFDMDdGNTE3MjZDNTYzNkUxOTY3QkM4Mjg3RThCMDZDNTNENzdFNTVGODkzNTNENjFGMjY3QTg0OTFFNkRDMjI3Q0YyNTM3ODA5MENEOTExOEI1NUVDRDYzMjVGN0U2QjQ5QzExQzk0NEUzRUNBRkExQjBGMUY5NkJGRjIxRkI2Mjc2RDE2OTQ2Mjk1QURBQjYxRDU0NkZENTgyMTU1RDJERDUxN0Q1NUQ4QTZEMTk1MTE1NzAyNzBDNTNDQ0IxNzkyREI1MEI0RDU5QjA3OEI4QTE0QUExNENDREZDRTk1QTRBMDExMkIwNDczOUZDMEQyRTdGMTBFMkMxMEI5RUFCQzM4QTdEOUE5Mjg2MDcyMTY0MDUyNzBENjg1Njg2NDI1MUIzRDgxNTU4MDM4RDczN0ZBM0FBN0M0MEZDQTBEMEJDQjc5MTUwQTkxNzYxRDQ3MTI4Mzc3MTM2QUIwQTAzRjMzMjNFQjI1NzQ0QzFBQzE2N0VCNzkwNDJFMkRGNUNCRDEwNjk1QkFFQkU5OTk5NUYwMEUwMjI4Q0VBNTg4RTBFQ0QyNjM3OUE3QUY1QzM1NTY5NkQ1QTQ1NjM3QzY4RjZDNkQ4QzhDNzgyQjhFNEVBMEE2N0I3RjdCRjAwM0QwQTVDNkJCNEJDQ0EwMThGNDAxQkUxMjVGRDEyNkE5NkQxQkE1RTY3ODU4QzU1REMwMkNEMTg5MDAxRDFDRTMwMUI3OUU0NzJDNkI2Qjk4NzZGMjJENTJCM0ZCRDdDNjc2NkI3MEJGRjBERERCMUFEODZBMTFCODVGMURGNDc3OUE5QTgzOTFDODYzRUVDRUU1OEVDMUYyNzhEQUE4REMxNEU0NzI2MTcxMENERDk2NDFGMjEyNTM2NkU0OEJGMjlFNkE4QUM2NDNFMzhEMkVFNDFEMEY0NjA1MkZBODc5QjE5RkRENTUzNTlDQTFCMzM0M0Y4OTQxMUQ1RDE1RTgyQzQ0NEMwRTM3Qjk3MEFGODRGRDc0OTNCM0VCQzRGNTI0RjdGODMwMjAzMDEwMDAxQTM4MjAxNUUzMDgyMDE1QTMwMTIwNjAzNTUxRDEzMDEwMUZGMDQwODMwMDYwMTAxRkYwMjAxMDAzMDFGMDYwMzU1MUQyMzA0MTgzMDE2ODAxNDk4NjQ2QzZCQjVEQ0Y3MjFDOUNENjU4MDMzNDlEQjQwQTkxQ0EzOUMzMDc2MDYwODJCMDYwMTA1MDUwNzAxMDEwNDZBMzA2ODMwM0YwNjA4MkIwNjAxMDUwNTA3MzAwMjg2MzM2ODc0NzQ3MDNBMkYyRjc3Nzc3NzJFNjQ2NTc2MkU2ODYxNzI2OTYzNjEyRTY3NzIyRjYzNjU3Mjc0NzMyRjQ4NjE3MjY5NjM2MTUyNkY2Rjc0NDM0MTMyMzAzMTM1MkU2MzcyNzQzMDI1MDYwODJCMDYwMTA1MDUwNzMwMDE4NjE5Njg3NDc0NzAzQTJGMkY2RjYzNzM3MDJENzM3NDY3MkU2ODYxNzI2OTYzNjEyRTY3NzIzMDExMDYwMzU1MUQyMDA0MEEzMDA4MzAwNjA2MDQ1NTFEMjAwMDMwMjkwNjAzNTUxRDI1MDQyMjMwMjAwNjA4MkIwNjAxMDUwNTA3MDMwMjA2MDgyQjA2MDEwNTA1MDcwMzA0MDYwQTJCMDYwMTA0MDE4MjM3MEEwMzBDMzAzRTA2MDM1NTFEMUYwNDM3MzAzNTMwMzNBMDMxQTAyRjg2MkQ2ODc0NzQ3MDNBMkYyRjYzNzI2QzJENzM3NDY3MkU2ODYxNzI2OTYzNjEyRTY3NzIyRjQ4NjE3MjY5NjM2MTUyNkY2Rjc0NDM0MTMyMzAzMTM1MkU2MzcyNkMzMDFEMDYwMzU1MUQwRTA0MTYwNDE0QzNFN0FDNUFDMTVGMzk3OEUwMTYzMEYxRDU4RTVENUFDREZBNjk0RDMwMEUwNjAzNTUxRDBGMDEwMUZGMDQwNDAzMDIwMTg2MzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMDM4MjAyMDEwMEE1MUFCMjJFMjNEMTUxRDgxRkI0REI5RDEyNTc1M0Y3OTFEM0U3NDI0NUI2OTc2OTdCMTJERjAxMkFFM0Y0RkU0QkU2NkNBNDU2NDEzRDIzNDhENDJERkYwMDdGMjVBQUQyNURGRTQ0NEExOTQwNDhFODNBRUYwMjZFQjhFNUY5MTQyQTY1N0REQzg4OTZERkIxNzE2RDJCQUUyRjcyNUUwNzJFQkMzMEUyMTAwRDhCMkE0QzFENDM5RDc3QzgyRTRBNkFGREFCNTcwREJBODUxRTFCNTkzNDg1QzUwNUJBNzJCRDBDRjM0MDMwNzE3MTQwNkNBODY4RTg0RTI5MTgwQzc0NTNFRUUyQ0QwMEI5ODk4OUU3ODZDNkI1RkUwMzBBMkI1MUUwMjgyRTNCMzY2NEYyNzI2RkYwNzc0N0M5NjE1ODJDNERBN0RDNjE2NjA2ODY3MTYyNDhGMDY4RDNCNTFBMzVEOUMzMjI3ODYwQjkxNUI5RDdBQTk4MkNBNDVDQUI1RTc5QjE5N0YzQTU4MkMzNzMzRkFBNkFGMDY2REMzNDZCMTE0OTVFMTY4REI4QjAxNDk4MzdDRDdDMkREM0FFQTBDMjI2MUY3NDZDRjQxMkQyMTcxREFCOEQ5REJDNDVBQTU3MjExRjdCMTgzRTU5RDk2NzREQUQxRDU0QjAwNDE1NzFCQzVDNDRFMzUwMjQxQzRGM0FCNjY5QjEwNjlDMjFGRTk3OTI2OUEzNUQ3QThCQUNGOTc5RDA0MTNCRDNFMTY3NzVEMzhGQUIxMzQwMzc2Q0I0NjY2QUVDMERDMjk4QTMyRTEwQTczQzZGN0VBRjFBMzRBOTczMkIyMUI1OTEzM0M3OUJBRDI4NENBOTYyMzBFQzdCRUNDOTA4MkJBRURCRjQyRkI0OUUzM0MxRjk1MDYzQUUxMEMxNkJGNzgzNUREQUJBMDZGQkYxNzE4RkNFREJDOTk2Q0QzRURFRkRGNzk3QkFEODcxRDRFMEY4Q0Y4NjVBOTU3NURERDEzOTkxNTVCQUIwNzUwMTNBNjM4NUVFNEI4QTk5N0RENzUwQzA5RjYxQkU3Nzg0NTMzQTJDNDRENjUxQ0FEODBBRUZDRUEyOERGMjk4NTdENjNFMjg0RjM2NjNDRjIyMDY0NDQ0RjkwM0YzRTJDMjRCMzQ4Mjk1QjlGODFGNTg4ODc1NUIyMjZGNTU4NTYzMzQ2NTc2RUQ2ODYwNjM3MUVGRDE5Q0U1MUY5ODhDOEI2OURBNzYzREJCNUYwMDcwMDUyMTRGNjcxMjNEQzNEOTVDQjJCNzgzNzMzNkEzM0IzNEM0NzlEMjZFMTI4QkE0RTc1Mzc5MzUwQTUyNEEzMDgyMDY0MTMwODIwNDI5QTAwMzAyMDEwMjAyMDgzOUY3REE2NEVFOTY5NjE3MzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMzA4MUFEMzEwQjMwMDkwNjAzNTUwNDA2MTMwMjQ3NTIzMTBGMzAwRDA2MDM1NTA0MDcwQzA2NDE3NDY4NjU2RTczMzE0NDMwNDIwNjAzNTUwNDBBMEMzQjQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA0MzY1NzI3NDJFMjA0MTc1NzQ2ODZGNzI2OTc0NzkzMTQ3MzA0NTA2MDM1NTA0MDMwQzNFNDg2NTZDNkM2NTZFNjk2MzIwNDE2MzYxNjQ2NTZENjk2MzIwNjE2RTY0MjA1MjY1NzM2NTYxNzI2MzY4MjA0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNzMyMDUyNkY2Rjc0NDM0MTIwMzIzMDMxMzUyMDJEMjA1NDY1NzM3NDMwMUUxNzBEMzEzODMwMzQzMDMyMzAzNzMzMzgzMzM3NUExNzBEMzQzMzMwMzMzMjM3MzAzNzMzMzgzMzM3NUEzMDgxQUQzMTBCMzAwOTA2MDM1NTA0MDYxMzAyNDc1MjMxMEYzMDBEMDYwMzU1MDQwNzBDMDY0MTc0Njg2NTZFNzMzMTQ0MzA0MjA2MDM1NTA0MEEwQzNCNDg2NTZDNkM2NTZFNjk2MzIwNDE2MzYxNjQ2NTZENjk2MzIwNjE2RTY0MjA1MjY1NzM2NTYxNzI2MzY4MjA0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNzMyMDQzNjU3Mjc0MkUyMDQxNzU3NDY4NkY3MjY5NzQ3OTMxNDczMDQ1MDYwMzU1MDQwMzBDM0U0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNTI2RjZGNzQ0MzQxMjAzMjMwMzEzNTIwMkQyMDU0NjU3Mzc0MzA4MjAyMjIzMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwMTA1MDAwMzgyMDIwRjAwMzA4MjAyMEEwMjgyMDIwMTAwQjE5NUFGODY3QkI1QjRGMjAxOEI4QTlFMTU0QjdENzcxODgxNkFBRURFQjJBRUQ2MjM0OTgzQUY5RUQ3Q0MzRjY4NDQ2NjA1NkQwQjI2QkM2RTdGOUQwOTk2NkYwNUY5MjQyQzI5OUQ2NkIzNUE1NDA1MUM5RjU3ODJGQjM1NUQ4N0Q5N0E2Q0Y4RDcwRkZBODg4MEM1NDg1RDU4M0M0NDVDNDgzN0VERjU0RTdENjVGNEQ1REVBNEZDMTEwRTMzRkEyMEY2QkM3MkUwRTJDNTE2RUEwMDJFQkM5QjZDMjhBMDYyOTU3ODFEMDc1M0Q3ODUyMzkzMzM5RTgyOUUwRjkwRDc0OUE4RTNBREJENzE3RDA1OUY3QTA1RTY3NzM4QzE2RDY4MjRDNkIyRDA0NUZCRkVEOERGMTZGRUZDRkI2MDU4MkE1M0JDQzdCQTIzNkYzMzYwM0REMzY3QTBEMjBEOUVFRjA0QkZCMUU3RTlGQTdDRUU4NUVGNkFDRUFGNUI5MEY2MDY5RTJENDVBMTI4M0E4N0VCNDc0RDIxOTAyNkZBMkM2M0M5OUUzNjcwODA2RTYwRkY3MjEyOTUxRjc0NkNBMEExRDNFNjE1N0RCRkM4M0M2RDkxQjUyNjNBRjUzQTRFRkNFREQ4MEMxNTE2RUFCMzExOEVCODgxQjhGQTdBOTkzRUZGQjBCQjk3N0I4QjlBNUVGMDU2NTYwOUFBNzc3NzQ1M0ZDNUU0MDExOUUxMDM0QTNDMjUwQzUwQzYwNzgzRTkyMkU1QTY5ODRBQ0I0MTA2MjE5OEUwQkZBNzNCREREQTJDQzU5OEJEM0I5QTcwQUEzM0QwNkM0NThENDQ4RENCMjE3QkIzODk4NTNBQTJDMjE5QUFEMEJFMTZDNjE4QkYwRTkzNjVCM0Y3RjIzQUFGODIwRTg2NjI2M0ZBMUY4Mjg4NTRCQzdGMjRENjI0NEY4NTUyMDBFQ0UzMUYwN0VDNkQzREVDMDI0MUZDNDcxQzcyRUMzNTEyOTc1NEM4MUMxNkZEQjIwMzBERjUwODEyQUJGMEUxRjFBRUY4NzUxODU2QjYwREMxMDc2MDZBQjczN0IxMDY1MEJCNzIwMzU4NDIwODM0MjU0OTUzRDNCMkI2RDkxMkM0REZBNjFDQUUwNjA0MzhFMzhDMEJBOTk2NEIzNDVFRUY5N0JBODEzQTQxNzk2MjM0Qjk1OEZBM0NGNkMyMzNDRkE4N0M4QjMzNzE3ODdGMTc4NDBGMEU3NEJCQUJGMkVFNEJBMDUxMzAxMTAzRjk1MDJGNjk4NDgyN0VERDIwRTEzRUZCRDc1RTJFRTU2QUNFODdDNEEwQkI3NkVGOUE3MzAyMDMwMTAwMDFBMzYzMzA2MTMwMEYwNjAzNTUxRDEzMDEwMUZGMDQwNTMwMDMwMTAxRkYzMDFGMDYwMzU1MUQyMzA0MTgzMDE2ODAxNDk4NjQ2QzZCQjVEQ0Y3MjFDOUNENjU4MDMzNDlEQjQwQTkxQ0EzOUMzMDFEMDYwMzU1MUQwRTA0MTYwNDE0OTg2NDZDNkJCNURDRjcyMUM5Q0Q2NTgwMzM0OURCNDBBOTFDQTM5QzMwMEUwNjAzNTUxRDBGMDEwMUZGMDQwNDAzMDIwMTA2MzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMDM4MjAyMDEwMDMxRThDNDU1NkNCQ0I5MENDNDlEMTExNDZBRDQ5NEZCNzg2NjU3NUM2REU4Qjc1QTJCNjRCMkU0QUFGQzBCNzUzNzVBNEU2OUQwMTFGMjUyMEVGNTYxNzc4RjMzM0Q2RkY0QzIyRjZBOTM3RkIxOEU1NkQ2MjY2MkJDNzhCM0QzNDRDNTExOURERjgwMzZCOEFDM0VFMEUxQzhFODVBNkYzNDJFNzlFOUY4MDE3QzJGQkVBRDhFMkE3ODI2MEM0MDg5QjREODI3RjZFMjUxMkQyRjE0RTY2OUNCMzI4QUJGNjQ4MTREM0E1OTE1OEJDQUM2MTMyRTNFQkE1Mjc0MjIwOTNDNzM3QzY4MEVEODY1NDdBMEVGOUEzNUNBNzY2NTY0RjlBRDI4OTEzNzFDOURDNDJBMDNGODAxNkQ2RTczQUNBRkQwQzBBMTcwOTZFOTc3REY4OUMyODkwNjE4NjM2NDJCRjcwRTQwMzU1QTA0MzVCRTkyQ0RDMTQxRENGQTRDMjFEQ0VBQzdCNzRBNUIyMDVFQzU5M0JBODlDQjdDQjc0MEUyOUNFMTZEQTZFNjM4NzZEOEE1QkNERkJBOTY0NjBDQzgzNDUyMDc2MzY1RjQ4RDIyRDA1OTg0RUMxRkVCMzE3QkVGOUI2RkM3OTk0MjJGRjgzMzk4ODY3REE0NkNDNkEyOTVBNzRCOUJBMzMyNDcyODQzODFGQ0I0NjQwMkY5QjkyMEQyMTkwNTJDNDlEMjdFMzg4OEI0QTQ0NEQ4M0M3RDMyMEU0MDk1ODA1NTk0RTlFNzE4RUQ3ODc4MDdCRDRFRkMwMzAwOTYwNUM2REJENTNCRTBEMkY5QzlEQUUwMTM0NThDMENDMTRDMjI3M0ZCQjJGMzk5MkVDQzE2Qzk1Njc0N0ExNUE2RjRBMTY5MjdBMUM3OTg4Mzk3MzAxRjhGNEFBMEVCQjc0QTJGNTExMTdGREVCODcyMzM0MEVFQTA1ODk3MzM0QTM4NEY2RDQ3MkMwMjc5NzUzQzNERUVDQjc1OTlBQTlDMkQ5ODdDMzA1M0RDRUMyREE0NUM4NTQ5RDdCNjBBMThENjkzRTlCRDZDRDBGMDIyNkRCMkE0ODAxRjg1RTFDM0VGQjQ2NzZBMzY4ODAwMzMwMzQ2NjgwRDYzMUFGN0E0N0M4NDdDQThFMUIzRDQ5QzE4M0JGMEFBREJBRjhDRTNEN0RFMDAwRDQyMUE5NDI1Q0Q4ODkyMzM5MDc1NUVDODUyQ0ZBQjNBQzg1QTMyNkU0MTM2RjNENEQ4MkY4QzIyRkU1RjM0OTk5OTBCN0M5RjUzNzNFMzVBQkMwQkYzQjJEMDZCNjA2NEY2RTZDMkU0MTUzMTgyMzI5NjMwODIzMjkyMDIwMTAxMzA4MUQxMzA4MUJDMzEwQjMwMDkwNjAzNTUwNDA2MTMwMjQ3NTIzMTJCMzAyOTA2MDM1NTA0MEEwQzIyNDc3MjY1NjU2QjIwNTU2RTY5NzY2NTcyNzM2OTc0Njk2NTczMjA0RTY1NzQ3NzZGNzI2QjIwMjg0NzU1NkU2NTc0MjkzMTE4MzAxNjA2MDM1NTA0NjEwQzBGNTY0MTU0NDc1MjJEMzAzOTM5MzAzMjM4MzIzMjMwMzEzNzMwMzUwNjAzNTUwNDBCMEMyRTQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA0MzQxMzEyRDMwMkIwNjAzNTUwNDAzMEMyNDQ4NDE1MjQ5NDM0MTIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTYxNkMyMDQzNkM2OTY1NkU3NDIwNTM3NTYyNDM0MTIwNTIzMTAyMTA3MzdGNUYxRTA2QzU0OTBCNUU3NjY3NUJDMjIzMzI1NTMwMEQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAxMDUwMEEwODIxRDg2MzAxODA2MDkyQTg2NDg4NkY3MEQwMTA5MDMzMTBCMDYwOTJBODY0ODg2RjcwRDAxMDcwMTMwMkYwNjA5MkE4NjQ4ODZGNzBEMDEwOTA0MzEyMjA0MjBCNzFBQTM5MzJGQjRDNTYyNTMxODQyQ0JBRThCMEJDNzIyRDQ3RDBEOTA3NEI0NTAyRUFEMTM2MTE2QjdCQ0M5MzAzNzA2MEIyQTg2NDg4NkY3MEQwMTA5MTAwMjJGMzEyODMwMjYzMDI0MzAyMjA0MjA0QUQzMDVDNDdEMUU3MkUxMjM2NDMwMkJGQUE2OUMyNUI0M0Q4QTNDNEY3NjFDNTZDNTcxRDM0QTUwQzUwMTZDMzA4MjFDRkUwNjA5MkE4NjQ4ODZGNzJGMDEwMTA4MzE4MjFDRUYzMDgyMUNFQkEwODIwQUY3MzA4MjBBRjMzMDgyMEFFRjMwODIwOEQ3MDIwMTAxMzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMzA4MUFEMzEwQjMwMDkwNjAzNTUwNDA2MTMwMjQ3NTIzMTBGMzAwRDA2MDM1NTA0MDcwQzA2NDE3NDY4NjU2RTczMzE0NDMwNDIwNjAzNTUwNDBBMEMzQjQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA0MzY1NzI3NDJFMjA0MTc1NzQ2ODZGNzI2OTc0NzkzMTQ3MzA0NTA2MDM1NTA0MDMwQzNFNDg2NTZDNkM2NTZFNjk2MzIwNDE2MzYxNjQ2NTZENjk2MzIwNjE2RTY0MjA1MjY1NzM2NTYxNzI2MzY4MjA0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNzMyMDUyNkY2Rjc0NDM0MTIwMzIzMDMxMzUyMDJEMjA1NDY1NzM3NDE3MEQzMjMwMzEzMDMyMzkzMDM5MzMzMzMxMzM1QTE3MEQzMjMxMzEzMDMyMzQzMDM5MzMzMzMxMzM1QTMwODIwN0MyMzAyRjAyMTAzMjgwRTNBNjE2Q0QwNUUzREM5RDY1M0MwNkQ0M0NFODE3MEQzMjMwMzEzMDMyMzkzMDM5MzIzNzMxMzU1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDI3MDIwODVFQUQzNjNCRjUwM0Y1MjYxNzBEMzEzOTMwMzQzMTM4MzEzMjMyMzEzNTM2NUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTA1MzYwQ0MxNUY2MkY2QjRFQkZCQzczMTEwMUNDMkUzMDE3MEQzMjMwMzEzMDMyMzkzMDM5MzIzNjMyMzM1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDJGMDIxMDVFOUE0RTIyMzk4QjlEQTlFQjYzNDE0RTI2MzU3MUUxMTcwRDMyMzAzMDM5MzAzMzMwMzczNTM4MzIzMzVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwNkI2MTc4RTk5REY2MzM4RTk3MjM0Q0I5Mzg4MDNGMzUxNzBEMzIzMDMwMzkzMDMzMzAzNzM1MzkzMDM4NUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTAxRTY0NkE5RkJGRjBFNTQyNjNCRUU2NDE3RjJBOTMyMTE3MEQzMjMwMzEzMDMyMzkzMDM5MzIzNzMxMzk1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDI3MDIwODY4MzgwNTE4OEY1MzNDRDMxNzBEMzIzMDMwMzkzMDMzMzAzNzM1MzQzMzMxNUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTA1ODkyODhFMzE4REM1RERBMUExOEJEQjEyQUVGMDY3RTE3MEQzMjMwMzEzMDMyMzkzMDM5MzIzNjMzMzY1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDJGMDIxMDVDRkIwNDI3RTg3MERBRjdEOENDMzU4ODkwODRCNUIyMTcwRDMyMzAzMTMwMzIzOTMwMzkzMjM3MzAzMTVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwNjgxQUEwQjZFRjZCM0E5MTlDNEM3NTEzRDAxRjlCQUExNzBEMzIzMDMwMzkzMDMzMzAzODMwMzAzMTM2NUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTA3OUFBQTI4OEY3NUU0MDEwQTU3N0M2QTRDM0M1ODRCQzE3MEQzMjMwMzEzMDMyMzkzMDM5MzIzNjM1MzM1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDJGMDIxMDU3RDhFMTRBODExODgyNUFEQUY1MTcxNDQ3ODE2NjFEMTcwRDMyMzAzMTMwMzIzOTMwMzkzMjM3MzEzMTVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwM0M0NkVGMjUyNzVFODJCODMxQjc0QjQxNTU0QzMzNzMxNzBEMzIzMDMxMzAzMjM5MzAzOTMyMzczMjMzNUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyNzAyMDg1QkQ2RTI4RjVBRTY3RTQ1MTcwRDMxMzkzMDM0MzEzODMxMzIzMjMyMzMzMTVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwMEMyMEU5RjQ2QzU5NDlBQkU3QTM1QUY5ODgzQzI1MkMxNzBEMzIzMDMxMzAzMjM5MzAzOTMyMzczMzMwNUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyNzAyMDgxQzdBODZCMEQwN0I4NTlDMTcwRDMyMzAzMDM5MzAzMzMwMzczNTM5MzUzNDVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwNEU3MzE5OUFGQzA3RUMzOTc1MDM4Mzk0MTI5NUY3QUUxNzBEMzIzMDMxMzAzMjM5MzAzOTMyMzYzMTMwNUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTA3MkYwRDU4NTQxRDQ1OUZFMkRGRTBCNTc3MDlBREY3NDE3MEQzMjMwMzEzMDMyMzkzMDM5MzIzNjMxMzg1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDJGMDIxMDY1NDRERDIyQ0IzM0RDQTMwNkI0OThGNkE1RTdGMjI5MTcwRDMyMzAzMDM5MzAzMzMwMzczNTM5MzMzMjVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMjcwMjA4NkU5RUE3QTY1MkM3RTVDQjE3MEQzMTM5MzAzNDMxMzgzMTMyMzIzMjMzMzE1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDJGMDIxMDEyQTc4NEM4Q0QxMUNCMzcxMkRDMjZFRDk0ODJBQzNBMTcwRDMyMzAzMTMwMzIzOTMwMzkzMjM2MzQzMDVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwMzE5MEU3QzM2MTRBMzczNTY1MzgxNDU5MzEwOUUxQzExNzBEMzIzMDMxMzAzMjM5MzAzOTMyMzUzNTM2NUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTAxRDhBNzFFNDRDMDdGNUY0QzdERTNBN0FBQUYyQTYyRTE3MEQzMjMwMzEzMDMyMzkzMDM5MzIzNjMyMzc1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDI3MDIwODJERkYxNkM3NTlERUY0MjMxNzBEMzEzOTMwMzQzMTM4MzEzMjMyMzEzMTM3NUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyNzAyMDg0NzQ1OTkyNEQ5MzAyMTA1MTcwRDMyMzAzMDM5MzAzMzMwMzczNTM0MzMzMTVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwNDU1ODU2MDY2NTE4NTFBRjZBQzgxMjkzMEY2NDExMkYxNzBEMzIzMDMwMzkzMDMzMzAzNzM1MzQzMDMxNUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyNzAyMDg2QTk4ODhBRTMxQzMzMUE1MTcwRDMxMzkzMDM0MzEzODMxMzIzMjMyMzMzMTVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwMUI2REJBNTBBMzc0ODE0MDY1NEY2RDgyREVDNjhDRjMxNzBEMzIzMDMwMzkzMDMzMzAzNzM1MzczMzMxNUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyNzAyMDgzQzA0MzFCREEyMDJENjE1MTcwRDMxMzgzMDM2MzEzMjMxMzEzNDM5MzUzOTVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwNERCODNCNTc2NjY2NTZDMTJERDI4QjdCMUVDRjUzMzExNzBEMzIzMDMxMzAzMjM5MzAzOTMyMzczMzM1NUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTA2QjlCMEMxMjlDMjQ0RENDQjFCNEE3RjRCNkU0MjRDMzE3MEQzMjMwMzAzOTMwMzMzMDM3MzUzODMwMzA1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDJGMDIxMDEwMUQzRERBQ0FGN0MyODVCMDE4MDM2MjIzNTIyNTJGMTcwRDMyMzAzMTMwMzIzOTMwMzkzMjM2MzAzMDVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwMkU1NjlGMTUzNjdGQURDMEE3NTc5NjYwQTA1NTNGNUYxNzBEMzIzMDMwMzkzMDMzMzAzNzM0MzgzNTM1NUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTA1MDhEREQ3M0E5ODU3QUE0NTdEMEVCQkU0ODQ2Q0RDNDE3MEQzMjMwMzEzMDMyMzkzMDM5MzIzNjMzMzI1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDJGMDIxMDBEN0UzRjIwMzJENUFBRTEwQTY1MkY2QzY3ODMxRDEyMTcwRDMyMzAzMTMwMzIzOTMwMzkzMjM2MzQzOTVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwNzU1ODEwNzk4MkREMEE3MkRBQUM3MUU3OEQ1OENEMDQxNzBEMzIzMDMxMzAzMjM5MzAzOTMyMzYzNDM0NUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTAyM0VDQTQwNzQyNDAyQTcxRTJCOTUxRjYzODM3MENDMzE3MEQzMjMwMzEzMDMyMzkzMDM5MzIzNjMxMzQ1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDJGMDIxMDBFQTNDNjlGOENFQzdFNTYxQzZCQzk3MzI3NjlBNjE4MTcwRDMyMzAzMDM5MzAzMzMwMzczNTM2MzIzMDVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwMzMwN0M4RkJCMkM5MUJDMjBBRTBGRTUyRDUzQUJCN0ExNzBEMzIzMDMxMzAzMjM5MzAzOTMyMzYzMDM1NUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0MzAyRjAyMTAzNkNDNzc2OTBDRTlCODlBODFBNDVDRkM4MzM4NkRCMjE3MEQzMjMwMzEzMDMyMzkzMDM5MzIzNjM1Mzc1QTMwMEMzMDBBMDYwMzU1MUQxNTA0MDMwQTAxMDQzMDJGMDIxMDA4NDIyQTNFNDUwNTFFNDIyQTU4M0M1N0RFMzk2RTEzMTcwRDMyMzAzMDM5MzAzMzMwMzczNTM2MzQzMjVBMzAwQzMwMEEwNjAzNTUxRDE1MDQwMzBBMDEwNDMwMkYwMjEwNDkyOUFDRUQyNkI4QTg0Qzk2QkNDOUE0OUIxNUFBOEQxNzBEMzIzMDMxMzAzMjM5MzAzOTMyMzczMDM3NUEzMDBDMzAwQTA2MDM1NTFEMTUwNDAzMEEwMTA0QTAyRjMwMkQzMDFGMDYwMzU1MUQyMzA0MTgzMDE2ODAxNDk4NjQ2QzZCQjVEQ0Y3MjFDOUNENjU4MDMzNDlEQjQwQTkxQ0EzOUMzMDBBMDYwMzU1MUQxNDA0MDMwMjAxMDgzMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwQjA1MDAwMzgyMDIwMTAwNTQyRTJFNDkxMjgzQTEwREMxNkYzQjYyNjIyQkE3MDU0RTA0MDZGN0RCOERCQjVGNzQxRDRCQjkzRURCNDk0Njg1NjIwNUVDQ0E2MzU5RTIwMjU3OEVCNzg1Njk0RThENDVDM0YxMjMxNkY4Q0JDNEZBODQ5OUE0NzNFMDIwQTA0MTA1REFDMEY3QjFDMjMwMTA2NURBQzg0NEZDODM2NUYwRjMzQjM3M0UzREE3N0I2NDUzRjgwQ0U2Qzg0MDY2N0JGRTg0QkMwRTNGMDNGQUM2NkExOTQ3NkYwOUYyNDY4RDJCNUI2QTVCODMyOTM4Q0UxNDBFNDVCRTlDOUVDMDgyQkVCNTVFNTFCNkNGQkE4QzI3MUI5MDM1RkZERUNCOTY0MUVERjFDNjA2QjI3REI5NDM2MjU3NkI5MDY1NDdBQTAwQUY0RjBBOTk1RDk0NjEwREFBQThFNURDMjU4QTZFQUFDQzlENjAxODY1Q0RBN0EyMTNBNkVGNzM1NUI1NjRDRDY4MzM4MjZGMzU0QjhFRjYyMTAwOUJBOTAwQTgwNzY1OTU1RkEwMzM2NTkyOTc1QkVFQUM0QkFCMjEzQjVEREI1REU4QkI4Mjg4Q0QzRDlFM0JFRTgwOTAzOTgyMDhGQTBDQjQyMEY4QUMyMzY0QjNDMjU4NkVCQ0M5Qzg1QzUzMDYxRDU0QjkwNEY3Njk4RTY0NDFENjEzRUMyNTFGRTBGMzg3MDZGRUIyODUyQTNGMEVCMjE3RUVFMjJBQTM1MDkzOTE2REJEQURCQ0M5REZGMTUzNjFDM0JCQjAzQjA1MkVGREQxQThCRjI0RTFDOTA0QzJCQkREOTA2NUE3OTc3MDNERjk5NzRDMkVDRjZDNDIzNDE2NTFDOUU0RkU3NTVDMjRGRUExMjAxRjRGMDI0QjU1OTFDRkMyNUI5QzU0MkRDNTQyM0JGMUMxNkZFRjk3MzY5RkNGRDM1N0UyQzNDREIzODZEMzRBRkMxNjJCRjc1MDFGNkY5MEE2N0RFQzNCNDAyQzAyNEQ4Q0RDOUNDQURDMzJERDRDRTQzNEU5QzgxNDYzNDNCMzIxOTM4OTRFOTNBMTBGRkFBMEFDRDZGQzA1QTY4OTM0RDc2NzMyRTNEOTMwNDcyNTBCODVDRUY5M0JFQTg3ODg4RERGQTNCNEZBMkQzNEU5NDQyRDAyMEVBRDk4QkJGMzcxRjA3Q0VBNDA5M0ZDNEE2ODEzNzFDQ0VCOUYzMkFDRkYyOUEyQzVGNEEzMDQ4OTQzQ0Q0RTRCRThCREJENEUwNzkxM0E5QTcwMzUzN0NENDlBRjQ4NDREMUI0OThBM0I0MDhBRUY0QjQ0QjFCQ0JEQ0ExODIxMUVDMzA4MjExRTgzMDgyMEEyMTBBMDEwMEEwODIwQTFBMzA4MjBBMTYwNjA5MkIwNjAxMDUwNTA3MzAwMTAxMDQ4MjBBMDczMDgyMEEwMzMwODE4QkEyMTYwNDE0QzNFN0FDNUFDMTVGMzk3OEUwMTYzMEYxRDU4RTVENUFDREZBNjk0RDE4MEYzMjMwMzIzMTMwMzQzMjMwMzIzMTMxMzIzMzM2NUEzMDYwMzA1RTMwNDkzMDA5MDYwNTJCMEUwMzAyMUEwNTAwMDQxNDA5OTZDRkNGMTFGOUZCQzZBNEZCQTFEOUI1NjU3QTVBQkM3RDkxRUYwNDE0QzNFN0FDNUFDMTVGMzk3OEUwMTYzMEYxRDU4RTVENUFDREZBNjk0RDAyMTA3MzdGNUYxRTA2QzU0OTBCNUU3NjY3NUJDMjIzMzI1NTgwMDAxODBGMzIzMDMyMzEzMDM0MzIzMDMyMzEzMTMyMzMzNjVBMzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMDM4MjAyMDEwMDFEMjlENUYzREU4MzlBNTkyNzMxN0Q5OUUyMDUwRjE0NEVBRUU2NzM2QTI0NDA0RUVENDk0MkY0NTQzN0IwMEIxM0ZBRTBCRjZCRTRFRTkwMDYwNjdGN0YzNTQzQTMwNzRDMTk4NkNCM0FBRjM0RUM0QzEwRUMzNTE2MjUyMEUzODExRDEzQzNFNjU4RDYwODU0QzgyMDE4OTY1RTYyMDk1MzdBRkVBNTIzRUFFMjlDNzU1NEM5NkQ0QjAzQkJEMDlERjA3QzFGNDM0MzA5MTk2RTIzREU2NUNBQUUwNEQyNTRCN0ZGNjIzNEUxMkU1MTA4NDlEQkQ3Mzg3MkM5QzlEN0ZDRENDMDYwNDQ3OTVCNTZBNDFGQkVDMDJDNjQ2OEQwN0JDMDVGRjkxQTgyMDc0MEZBNDk3MjZDMjUxRjg1QTk1QkE1Njg3NzlFODA1MzNBOTE3QkU5MDc5NjcwMjY4QjE2MjlFQTQ4RTEzOTg3NjlDMEYzOTcwQTAxMTBFN0Y4OUE4MzJCMjI5ODQ1Q0UwQzNDRTM5NkNBM0JDQzI4NUZCNEFEQjNGMTdCQzY1RDBEMkYyMTA1MDZBMzk2ODRBNDI1RThGOUJENjczOUE4MjVDRDhFREQzMjgyMUFDMzYzQUMzNEQ1NUYxQkJEM0QyQUNFNjA0MjY1QTk1RDk3M0JCMUExNDE2MTdDQkYyQ0M2NjhCM0U3MEVBMzhEQTBCRDEyQTAxQTJBNEQ2NTQ2QjE1ODFBMzEwNTAwNDhBODkxMzlCQTgzMjg1OUNERTYzQTQyQ0ZBODU0QTkxQzBEMjY0NUZFMjBDNDc5NjE2NTUzQ0IwODc2MUU4NkJENzJFNDNBNTYyMzUzRkQxQTQ3MEE2REFBMTczQkEzOEJEQzFCMTdCMUU4RjlCRDE5Q0QzQjA2MzVDQUYzMjJCRjgxOTg1MUNBNjcwRkYyMThGQjI4MkVFQjBEMUQ5RTVCOEVENjk0QTBGMjA5RjgyMzczOTlCOUVGQ0MzQjlGMkExQUI0NUIwNEU1QzFGNUNENzMwQUYyMTc1NzdGNjkwRDRFNkJCRUJGMTA5Rjc4NUJBQzY3NkM5OEQ0MTE2MUE0ODQwMkYxN0QyNEYwRkI5MTBGRjg1MUUxRTVCNkEyMkM4QjU1MTY0RENCNjE2QzVEN0UwRUQ0MjY2MjVCQjE1QjA1QURBODA0NkJBRDJFOEE1RjJGMDc3MTU0QkYwMDBBRjVGMEFERTFEMDk0RkRDRjlEQ0VGMzJDQjczNDA4Mjg0Rjg5MTMyQjM3OEMzNzUyMzRFNkYyRDEwMjdFRkQ5NjQwMTJENjhBMTIyQzZENjY2MTAyRDRBMDU0NEZEQjVGOEJBMDgyMDc1RDMwODIwNzU5MzA4MjA3NTUzMDgyMDUzREEwMDMwMjAxMDIwMjEwNThCNzVCQ0MzRjI4QjA4NkI4NzI0RDU0QUNCQTlGRTgzMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwQjA1MDAzMDgxQUQzMTBCMzAwOTA2MDM1NTA0MDYxMzAyNDc1MjMxMEYzMDBEMDYwMzU1MDQwNzBDMDY0MTc0Njg2NTZFNzMzMTQ0MzA0MjA2MDM1NTA0MEEwQzNCNDg2NTZDNkM2NTZFNjk2MzIwNDE2MzYxNjQ2NTZENjk2MzIwNjE2RTY0MjA1MjY1NzM2NTYxNzI2MzY4MjA0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNzMyMDQzNjU3Mjc0MkUyMDQxNzU3NDY4NkY3MjY5NzQ3OTMxNDczMDQ1MDYwMzU1MDQwMzBDM0U0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNTI2RjZGNzQ0MzQxMjAzMjMwMzEzNTIwMkQyMDU0NjU3Mzc0MzAxRTE3MEQzMjMwMzAzNzMwMzczMDM5MzIzMDM0Mzg1QTE3MEQzMzM1MzAzNzMwMzQzMDM5MzIzMDM0Mzg1QTMwODFCQzMxMEIzMDA5MDYwMzU1MDQwNjEzMDI0NzUyMzEyQjMwMjkwNjAzNTUwNDBBMEMyMjQ3NzI2NTY1NkIyMDU1NkU2OTc2NjU3MjczNjk3NDY5NjU3MzIwNEU2NTc0Nzc2RjcyNkIyMDI4NDc1NTZFNjU3NDI5MzExODMwMTYwNjAzNTUwNDYxMEMwRjU2NDE1NDQ3NTIyRDMwMzkzOTMwMzIzODMyMzIzMDMxMzczMDM1MDYwMzU1MDQwQjBDMkU0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNDM0MTMxMkQzMDJCMDYwMzU1MDQwMzBDMjQ0ODQxNTI0OTQzNDEyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU2MTZDMjA0MzZDNjk2NTZFNzQyMDUzNzU2MjQzNDEyMDUyMzEzMDgyMDIyMjMwMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTAxMDUwMDAzODIwMjBGMDAzMDgyMDIwQTAyODIwMjAxMDBCQTdDMDRFQ0FDQTEyMUEzMDNDMzhFRDE5NTdENEUzRDkxMzU4QTYxNkZERTRDNTc2NDEzMjk5MEY2RTQzNzdFODZGN0U2RTVFRERBRTIxQ0ZCN0VCREVEMEIyOTFFNzUzMkM5MjYxNkJBQTNEQ0NFNkJCMDA1ODFGOTIyMzUxOTZDRDM1RUMzRkY3MzI0MEZCNTVDRTY4QUYzNEVCM0ZCOEY2RTRFMEQ2RjRDQTg2MkMxMUFDQzlGMERBNkQxOTM5RjQ3RDc1Qjc3Q0Q1ODNBQjEyM0NGMjJCNDNGNjgwOEY1RjgyRUQyNENBOTg4NzhGRUQzOTc1MDAxQzA3RjUxNzI2QzU2MzZFMTk2N0JDODI4N0U4QjA2QzUzRDc3RTU1Rjg5MzUzRDYxRjI2N0E4NDkxRTZEQzIyN0NGMjUzNzgwOTBDRDkxMThCNTVFQ0Q2MzI1RjdFNkI0OUMxMUM5NDRFM0VDQUZBMUIwRjFGOTZCRkYyMUZCNjI3NkQxNjk0NjI5NUFEQUI2MUQ1NDZGRDU4MjE1NUQyREQ1MTdENTVEOEE2RDE5NTExNTcwMjcwQzUzQ0NCMTc5MkRCNTBCNEQ1OUIwNzhCOEExNEFBMTRDQ0RGQ0U5NUE0QTAxMTJCMDQ3MzlGQzBEMkU3RjEwRTJDMTBCOUVBQkMzOEE3RDlBOTI4NjA3MjE2NDA1MjcwRDY4NTY4NjQyNTFCM0Q4MTU1ODAzOEQ3MzdGQTNBQTdDNDBGQ0EwRDBCQ0I3OTE1MEE5MTc2MUQ0NzEyODM3NzEzNkFCMEEwM0YzMzIzRUIyNTc0NEMxQUMxNjdFQjc5MDQyRTJERjVDQkQxMDY5NUJBRUJFOTk5OTVGMDBFMDIyOENFQTU4OEUwRUNEMjYzNzlBN0FGNUMzNTU2OTZENUE0NTYzN0M2OEY2QzZEOEM4Qzc4MkI4RTRFQTBBNjdCN0Y3QkYwMDNEMEE1QzZCQjRCQ0NBMDE4RjQwMUJFMTI1RkQxMjZBOTZEMUJBNUU2Nzg1OEM1NURDMDJDRDE4OTAwMUQxQ0UzMDFCNzlFNDcyQzZCNkI5ODc2RjIyRDUyQjNGQkQ3QzY3NjZCNzBCRkYwREREQjFBRDg2QTExQjg1RjFERjQ3NzlBOUE4MzkxQzg2M0VFQ0VFNThFQzFGMjc4REFBOERDMTRFNDcyNjE3MTBDREQ5NjQxRjIxMjUzNjZFNDhCRjI5RTZBOEFDNjQzRTM4RDJFRTQxRDBGNDYwNTJGQTg3OUIxOUZERDU1MzU5Q0ExQjMzNDNGODk0MTFENUQxNUU4MkM0NDRDMEUzN0I5NzBBRjg0RkQ3NDkzQjNFQkM0RjUyNEY3RjgzMDIwMzAxMDAwMUEzODIwMTVFMzA4MjAxNUEzMDEyMDYwMzU1MUQxMzAxMDFGRjA0MDgzMDA2MDEwMUZGMDIwMTAwMzAxRjA2MDM1NTFEMjMwNDE4MzAxNjgwMTQ5ODY0NkM2QkI1RENGNzIxQzlDRDY1ODAzMzQ5REI0MEE5MUNBMzlDMzA3NjA2MDgyQjA2MDEwNTA1MDcwMTAxMDQ2QTMwNjgzMDNGMDYwODJCMDYwMTA1MDUwNzMwMDI4NjMzNjg3NDc0NzAzQTJGMkY3Nzc3NzcyRTY0NjU3NjJFNjg2MTcyNjk2MzYxMkU2NzcyMkY2MzY1NzI3NDczMkY0ODYxNzI2OTYzNjE1MjZGNkY3NDQzNDEzMjMwMzEzNTJFNjM3Mjc0MzAyNTA2MDgyQjA2MDEwNTA1MDczMDAxODYxOTY4NzQ3NDcwM0EyRjJGNkY2MzczNzAyRDczNzQ2NzJFNjg2MTcyNjk2MzYxMkU2NzcyMzAxMTA2MDM1NTFEMjAwNDBBMzAwODMwMDYwNjA0NTUxRDIwMDAzMDI5MDYwMzU1MUQyNTA0MjIzMDIwMDYwODJCMDYwMTA1MDUwNzAzMDIwNjA4MkIwNjAxMDUwNTA3MDMwNDA2MEEyQjA2MDEwNDAxODIzNzBBMDMwQzMwM0UwNjAzNTUxRDFGMDQzNzMwMzUzMDMzQTAzMUEwMkY4NjJENjg3NDc0NzAzQTJGMkY2MzcyNkMyRDczNzQ2NzJFNjg2MTcyNjk2MzYxMkU2NzcyMkY0ODYxNzI2OTYzNjE1MjZGNkY3NDQzNDEzMjMwMzEzNTJFNjM3MjZDMzAxRDA2MDM1NTFEMEUwNDE2MDQxNEMzRTdBQzVBQzE1RjM5NzhFMDE2MzBGMUQ1OEU1RDVBQ0RGQTY5NEQzMDBFMDYwMzU1MUQwRjAxMDFGRjA0MDQwMzAyMDE4NjMwMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTBCMDUwMDAzODIwMjAxMDBBNTFBQjIyRTIzRDE1MUQ4MUZCNERCOUQxMjU3NTNGNzkxRDNFNzQyNDVCNjk3Njk3QjEyREYwMTJBRTNGNEZFNEJFNjZDQTQ1NjQxM0QyMzQ4RDQyREZGMDA3RjI1QUFEMjVERkU0NDRBMTk0MDQ4RTgzQUVGMDI2RUI4RTVGOTE0MkE2NTdEREM4ODk2REZCMTcxNkQyQkFFMkY3MjVFMDcyRUJDMzBFMjEwMEQ4QjJBNEMxRDQzOUQ3N0M4MkU0QTZBRkRBQjU3MERCQTg1MUUxQjU5MzQ4NUM1MDVCQTcyQkQwQ0YzNDAzMDcxNzE0MDZDQTg2OEU4NEUyOTE4MEM3NDUzRUVFMkNEMDBCOTg5ODlFNzg2QzZCNUZFMDMwQTJCNTFFMDI4MkUzQjM2NjRGMjcyNkZGMDc3NDdDOTYxNTgyQzREQTdEQzYxNjYwNjg2NzE2MjQ4RjA2OEQzQjUxQTM1RDlDMzIyNzg2MEI5MTVCOUQ3QUE5ODJDQTQ1Q0FCNUU3OUIxOTdGM0E1ODJDMzczM0ZBQTZBRjA2NkRDMzQ2QjExNDk1RTE2OERCOEIwMTQ5ODM3Q0Q3QzJERDNBRUEwQzIyNjFGNzQ2Q0Y0MTJEMjE3MURBQjhEOURCQzQ1QUE1NzIxMUY3QjE4M0U1OUQ5Njc0REFEMUQ1NEIwMDQxNTcxQkM1QzQ0RTM1MDI0MUM0RjNBQjY2OUIxMDY5QzIxRkU5NzkyNjlBMzVEN0E4QkFDRjk3OUQwNDEzQkQzRTE2Nzc1RDM4RkFCMTM0MDM3NkNCNDY2NkFFQzBEQzI5OEEzMkUxMEE3M0M2RjdFQUYxQTM0QTk3MzJCMjFCNTkxMzNDNzlCQUQyODRDQTk2MjMwRUM3QkVDQzkwODJCQUVEQkY0MkZCNDlFMzNDMUY5NTA2M0FFMTBDMTZCRjc4MzVEREFCQTA2RkJGMTcxOEZDRURCQzk5NkNEM0VERUZERjc5N0JBRDg3MUQ0RTBGOENGODY1QTk1NzVEREQxMzk5MTU1QkFCMDc1MDEzQTYzODVFRTRCOEE5OTdERDc1MEMwOUY2MUJFNzc4NDUzM0EyQzQ0RDY1MUNBRDgwQUVGQ0VBMjhERjI5ODU3RDYzRTI4NEYzNjYzQ0YyMjA2NDQ0NEY5MDNGM0UyQzI0QjM0ODI5NUI5RjgxRjU4ODg3NTVCMjI2RjU1ODU2MzM0NjU3NkVENjg2MDYzNzFFRkQxOUNFNTFGOTg4QzhCNjlEQTc2M0RCQjVGMDA3MDA1MjE0RjY3MTIzREMzRDk1Q0IyQjc4MzczMzZBMzNCMzRDNDc5RDI2RTEyOEJBNEU3NTM3OTM1MEE1MjRBMzA4MjA3QkYwQTAxMDBBMDgyMDdCODMwODIwN0I0MDYwOTJCMDYwMTA1MDUwNzMwMDEwMTA0ODIwN0E1MzA4MjA3QTEzMDgxQzRBMjE2MDQxNEU0MjVFOTg2NEM2NDNBRUNGMkI3RTU3QzdDQzkyQkMxQUM3RUJBODcxODBGMzIzMDMyMzEzMDM0MzIzMDMyMzEzMTMyMzMzNjVBMzA4MTk4MzA4MTk1MzA0OTMwMDkwNjA1MkIwRTAzMDIxQTA1MDAwNDE0MTJERkNDODQ4NDgzQTMxQ0I4QzU4RERCNzkwQ0MwMkEzODhFQjIxNTA0MTQ5ODY0NkM2QkI1RENGNzIxQzlDRDY1ODAzMzQ5REI0MEE5MUNBMzlDMDIxMDU4Qjc1QkNDM0YyOEIwODZCODcyNEQ1NEFDQkE5RkU4ODAwMDE4MEYzMjMwMzIzMTMwMzQzMjMwMzIzMTMxMzIzMzM2NUFBMDExMTgwRjMyMzAzMjMxMzAzNDMyMzIzMjMxMzEzMjMzMzY1QUExMjIzMDIwMzAxRTA2MDkyQjA2MDEwNTA1MDczMDAxMDYwNDExMTgwRjMyMzAzMjMwMzAzNDMyMzAzMjMxMzEzMjMzMzY1QTMwMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTBCMDUwMDAzODIwMTAxMDA5NTNBMkIyRkFDOEM0RUQ5RUQzQTA3NTZEMThGNTBEQkI3MjE1N0U0NkY3MENENzgzQzRBRTM5NjI4QThBNDc2NUUzMUIyRjU4MTgyNEQxOTAxRkMxNkQ0MDYyQ0RCQTg2MEIwRjVFRTBDMzJDNkFCNTMyNjQzQkZDMzU0OURFNEZGQzg5MDk2MUY0NjgzMzBCNDlBREREOEFEQjE1REM2Q0M3QTQxNUFBNjQ5RDZCNDM1QzM3QTk2NUM5RkEzREI4MTdENzY0NzQ0ODUxMDExQjFBRjkxQTVENkRCQ0U0QkJEREU2M0NDNDNGMEJCNUYxNTM1QzNFQzFENkVDRUE0RDM4QTZEMzEyNTVFNzc0OTU4N0E5QUJGQkVCNjM1MDdCMEJCRDNBM0MwQTQxRTM5QTc0QzZBNzAzNDU0NEIyMkIxMUE3RUE4MjA5NEM4Rjk5ODcwQUE3ODA4QTlEQTZEQ0E1NzBBNkUwNTk4QjUwNkJGNDY1QjI4QzhERDc3NTY1NTdCRTNBNzA1RDRCQzczM0I1NjU0MTdFNDM4RjYxRDRBMDBBREUwMUVFQUI5NjRFNzk4REJEOTc2NTNCODA5MDEzOUM1Rjg4NTkxMDVCRkM2QjQ1OTk2RERCRTRGQzlCN0YxQkI1Njc4QUE0QzE4NTlFOUFFRTg4NjEzN0Q2OUEwODIwNUMyMzA4MjA1QkUzMDgyMDVCQTMwODIwM0EyQTAwMzAyMDEwMjAyMTAxODNCMjEwNTNDNkE3NzFCMzNEMkMxMEExMjc2MDYwQTMwMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTBCMDUwMDMwODFBRDMxMEIzMDA5MDYwMzU1MDQwNjEzMDI0NzUyMzEwRjMwMEQwNjAzNTUwNDA3MEMwNjQxNzQ2ODY1NkU3MzMxNDQzMDQyMDYwMzU1MDQwQTBDM0I0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNDM2NTcyNzQyRTIwNDE3NTc0Njg2RjcyNjk3NDc5MzE0NzMwNDUwNjAzNTUwNDAzMEMzRTQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA1MjZGNkY3NDQzNDEyMDMyMzAzMTM1MjAyRDIwNTQ2NTczNzQzMDFFMTcwRDMyMzAzMDMyMzIzNTMxMzIzMTMwMzAzNzVBMTcwRDMyMzIzMDMyMzIzNDMxMzIzMTMwMzAzNzVBMzA3NzMxMEIzMDA5MDYwMzU1MDQwNjEzMDI0NzUyMzEwRjMwMEQwNjAzNTUwNDA3MEMwNjQxNzQ2ODY1NkU3MzMxMzczMDM1MDYwMzU1MDQwQTBDMkU0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNDM0MTMxMUUzMDFDMDYwMzU1MDQwMzBDMTU0ODYxNzI2OTYzNjE1MjZGNkY3NDQzNDEzMjMwMzEzNTIwNEY0MzUzNTAzMDgyMDEyMjMwMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTAxMDUwMDAzODIwMTBGMDAzMDgyMDEwQTAyODIwMTAxMDBERkIyMUUwRkREOTU4OEQxOEQ2OUY5M0JFOTZDMzhFN0Q5ODZFQ0YyOTdCQjdDNzAwODIwRkMxNEFFRUQ0MjdFRkVDMEYxNEQzM0QwNkQ5MUY3MjQ0MDhCM0I0RENFQkJFRkQ4OTIzNzgxMkMwMTBGQUYwRkVGRDI2NEYzOThEQkE0RUY3MDlCMDUxQ0VGMkQyNUNGMDAzQ0I3NUFDODIxMzhEQ0JEQkJDQUUyQzZERjg0RTY1MkEwNzg0MkQwNjhBQTY1MUJBRDIyMzhGMEE4QTlEQjFERTk2MzgxMzcxNUQ1MTY3RDU0OTNERjkwQTBBQTgyMzI3REM5NTU1QTEyRUZDMjExM0M4NjMzMkYzQjExQ0RGMkIxRDc2QkMyNEMyNEUwQjI0OEYwRTY1NjI4OTJDNUQyQ0RBNTIzRDVBQzY2RjBFN0I3N0I5NjREN0QyNTczOTYxNjY1QzJFQzc4QUYxMjE3RkMyMjE1Q0MyRjU2ODUxRTZGMjc4QzI0QzM1MUUyREM2RkMxMDNFQTQxNzA4NkU2N0QwN0NCMkQ4Mzk3RjRBN0MyODJENUUwMzg3MUEyNDc4MkZGRjBFMUYxNDExNzJEODlFMDYwODUwRTQxRkVGMzMzOUI1REY4MzM0MUQ1OEU3Q0ZENkI3MDU2RDlENTVFNjExRDY4MUJBNzAyMDMwMTAwMDFBMzgyMDEwOTMwODIwMTA1MzAxRjA2MDM1NTFEMjMwNDE4MzAxNjgwMTQ5ODY0NkM2QkI1RENGNzIxQzlDRDY1ODAzMzQ5REI0MEE5MUNBMzlDMzA0RDA2MDM1NTFEMjAwNDQ2MzA0NDMwNDIwNjBDMkIwNjAxMDQwMTgxQ0YxMTAxMDAwMzA3MzAzMjMwMzAwNjA4MkIwNjAxMDUwNTA3MDIwMTE2MjQ2ODc0NzQ3MDczM0EyRjJGNzI2NTcwNkYyRTY4NjE3MjY5NjM2MTJFNjc3MjJGNjQ2RjYzNzU2RDY1NkU3NDczMkY0MzUwNTMzMDBGMDYwOTJCMDYwMTA1MDUwNzMwMDEwNTA0MDIwNTAwMzAxMzA2MDM1NTFEMjUwNDBDMzAwQTA2MDgyQjA2MDEwNTA1MDcwMzA5MzAzRTA2MDM1NTFEMUYwNDM3MzAzNTMwMzNBMDMxQTAyRjg2MkQ2ODc0NzQ3MDNBMkYyRjYzNzI2QzJENjQ2NTc2MkU2ODYxNzI2OTYzNjEyRTY3NzIyRjQ4NjE3MjY5NjM2MTUyNkY2Rjc0NDM0MTMyMzAzMTM1MkU2MzcyNkMzMDFEMDYwMzU1MUQwRTA0MTYwNDE0RTQyNUU5ODY0QzY0M0FFQ0YyQjdFNTdDN0NDOTJCQzFBQzdFQkE4NzMwMEUwNjAzNTUxRDBGMDEwMUZGMDQwNDAzMDIwNzgwMzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMDM4MjAyMDEwMDIyRTkzNDgwN0U3QUE4MUJFQUUyNjU5Q0FDMTQ3QzI1RTBENzBCOTFGNzk0RTcyODcwQTA1OTNCQzQ4NzRDMjExODI4QTczMTUxQ0Y1MkU2MEM5NjAzQUJBRUYzRTQyMUU0M0NBQ0NGRENGMzgxNjY0OURDRTE0MDMzNjBEMUIyNzMwREQwMEJEMDk0RjA0RjhGMDFBMTY0Q0Y2OEE0QjI5ODJCQjA5QjlDODgyNEYzNDM1OTNEMTlGQzU2NzM1ODg1MkMyMEFFNzcxNjM2MTY2NkRCRjIyQUM2QjBBRDRDOUJEMjgzMDhFNEI5NjhGNDI0RTg4RTE3QzA5NUI5RTI0MTBEMkE0QTE4QjlFRjY5NDBEQTI0RjZCQzU0RjIwMjhGNzQ1RTUyOEFFRTQ5N0UzMzg4QUU2QTgzMEI0RkREQTc1NEFGRkVCN0NFM0E0QURENkFEMEI5MkQ1NTg1MTg0RDk0NDQ0NzUyQjA5MjhFNEU5NTk1RDE2MkQ4NzY2MDQxM0I4MjU5NzZGNzM5OEY2NUQxOUQzNjhDQTlGMzc2Q0M3RUFFRjAyRkNBQzkwODY3MDA4RDIxQzhBMDY0M0M0MkI1NjE0OTkyREQ0RDhEOUE2QkFBRTdGQkY5NjU1ODEzNjVCNjdFNTNEQjBFRkRCQzg5NUIxQzEwOTVCMTkzMDZCNjQxNUNGMzNEQTFGM0YxNDlDMzYzOTk2N0JDM0ZBQzgyRkI2OEVDRDZBQ0I0M0FBMDcyRUNDRjRDMTJGRUFFRjRENEQ4RDVBM0Q2RDQwQzQyMjBCRjM4OEQxMEE3OUI5NDc4MUU5NTc0NjBFMzMxQTdGMzMwQzI5MTE4ODIwOEJGRjcyNDNDN0Y5QjYxQzdBN0NDNDJGNjUwQ0ZDODFGMkRBOTMzN0E2NTAyOEVDMkRENzREODk0QUY5NjIwMUU4RDgyRjU0NkFGNkFBOEVDRDNGQ0I1ODM3NzZFMjM3QUZDNDgyQzg2MTk1MjgxQ0YwOUYxNDQ5REMyMTk2M0FEMjE3QkM1REI1REM3QzJFNEM5RTdCREQzMzU2RjY2ODg5QjU4QjE5REJBQzQ0NUNDRDczMzkwOUEzMUM1QjBBQzFGNjM1RkZCNjM1QTdGOEZGMjk3QjA3MkNBMkE3Mjg4OEIzQzY0Qzg2RDNCM0UzQ0Q4MEQ2MzAyOUE2NEY3RjMwOTc1OTQwQzE2RUJCOUE4MUMzQ0Y4NjYwMUUzNjBCNDhDMTlFQjkyMEQwRjMxNjQyMzgwM0Y4M0IxMkEwRDQ1ODFDN0QzNzdGMjBDNjMxMThFOUQ1NDkyMzdEOERBRDExRTgxRUMzN0JDMUY4NDI0NDZGMjM4OUYxQjQ3QzczMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwMTA1MDAwNDgyMDEwMDUwODA1MTk3N0UxRjM5QUYyOTVDMEJEODQ3MzM5MTczNEJDMEY3QTZBRjMxQThBNDRBMjZEQkQzNDhBOERBRTlDNEU1QTIwQkE3NjE5OURFQ0MzRDRCQUVFNEI2NDUwMkEyN0IwODI5NEUyQ0VCNEY4MTE2MkQ1RjMyN0IyMDFEMkJFMkQ2NDJCRTA2RTIwMjczQjc3OERBQUZCODNFRERCMjYyRUZEMzlBRTc1MDE2OTY0NDRBMTlCMTZBMzIxMEVCM0ZFQUYxNDBFNUU0RjNDMjYzMUFDQUNBREQ0MkVGMzJGMTBDODc1MDQwMUJCQTE5NjQ4NTk3RjQzRDVGNjJEREZGMDQxQjlFODY2RTNGNzRERUVEMjZCNDAxNDdGNTNCRkU5QTIwMEZCQjU0NjNGODAwMDUzRjkyMUM1QkM3MEEyQkM3MUE2NjJERjEyRkNDQkQ2QjhEM0YwNEM2QzcxQzk0RjFBQTgxQTdEMUVDMTAwMkUxM0ZGODE3N0E3MzgzMEIwQjQxODNFOTUyMDgwQkJBOENDMEM4NkUzMTI4NzUxMTUzMEM3QTdEQjIxNTVENjEyNUJCNTYyNTJEQzE4OEI0QTQ5RDkxMjk3ODVFRDc1NTc3MDhFOTBEMzgwNDE5ODNGRTAxMzE0RTMyRTUwMjFFMjYyMURDMzE2RjlCQTE4MjEzMEIzMDgyMTMwNzA2MEIyQTg2NDg4NkY3MEQwMTA5MTAwMjBFMzE4MjEyRjYzMDgyMTJGMjA2MDkyQTg2NDg4NkY3MEQwMTA3MDJBMDgyMTJFMzMwODIxMkRGMDIwMTAzMzEwRjMwMEQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAxMDUwMDMwN0IwNjBCMkE4NjQ4ODZGNzBEMDEwOTEwMDEwNEEwNkMwNDZBMzA2ODAyMDEwMTA2MDYwNDAwOEY2NzAxMDEzMDMxMzAwRDA2MDk2MDg2NDgwMTY1MDMwNDAyMDEwNTAwMDQyMEQ2QzBGQkM2OUMxREExMTVCNThCMkExOTEzRDc3NjYzMTZEOTQxRjIwQUYxOUQ0MTU4Q0RFMkMxMDVCRTIyOUYwMjA4NTFCNUY5RUMwNzk4MUNFOTE4MEYzMjMwMzIzMTMwMzQzMjMwMzIzMTMxMzIzMzM2NUEzMDAzMDIwMTAxMDIwODc0MTg0RjMyOUYwQUU4NjBBMDgyMEU4MDMwODIwNzExMzA4MjA0RjlBMDAzMDIwMTAyMDIxMDBBMEIzNzYyNDY2Q0QwOUIzQTJCOUU1RjUwNzdFRTdEMzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMzA4MUMzMzEwQjMwMDkwNjAzNTUwNDA2MTMwMjQ3NTIzMTJCMzAyOTA2MDM1NTA0MEEwQzIyNDc3MjY1NjU2QjIwNTU2RTY5NzY2NTcyNzM2OTc0Njk2NTczMjA0RTY1NzQ3NzZGNzI2QjIwMjg0NzU1NkU2NTc0MjkzMTE4MzAxNjA2MDM1NTA0NjEwQzBGNTY0MTU0NDc1MjJEMzAzOTM5MzAzMjM4MzIzMjMwMzEzNzMwMzUwNjAzNTUwNDBCMEMyRTQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA0MzQxMzEzNDMwMzIwNjAzNTUwNDAzMEMyQjQ4NDE1MjQ5NDM0MTIwNTE3NTYxNkM2OTY2Njk2NTY0MjA1NDY5NkQ2NTIwNTM3NDYxNkQ3MDY5NkU2NzIwNTI1MzQxMjA1Mzc1NjI0MzQxMjA1MjMxMzAxRTE3MEQzMjMwMzAzNTMyMzAzMDM4MzIzMTM1Mzk1QTE3MEQzMzMwMzAzNTMxMzgzMDM4MzIzMTM1Mzk1QTMwODE4QTMxMEIzMDA5MDYwMzU1MDQwNjEzMDI0NzUyMzEwRjMwMEQwNjAzNTUwNDA3MEMwNjQxNzQ2ODY1NkU3MzMxMzczMDM1MDYwMzU1MDQwQTBDMkU0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNDM0MTMxMzEzMDJGMDYwMzU1MDQwMzBDMjg0ODQxNTI0OTQzNDEyMDUxNzU2MTZDNjk2NjY5NjU2NDIwNTQ2OTZENjUyRDUzNzQ2MTZENzA2OTZFNjcyMDU1NkU2OTc0MjAzMjMwMzIzMDMwODIwMTIyMzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMDEwNTAwMDM4MjAxMEYwMDMwODIwMTBBMDI4MjAxMDEwMERCQzIzRkE2MzQzQUM4MDY1MjQyODY4NDU4Qjg4NTI5RTJCRjExQUZCRDhFNUQzRENDMzc0MzlGNjkxMTVBNTU2NjZDQkJCOTcyNTc3QjNCRTdBODVFRjk2N0Q2OUVFRDNBNURDRDNBMTc3RENDMjJBOEU2RTlBMzExOUU4M0Q4NUQ3OEU5RjlGOTM3NDZEODZBNjRBM0Q4MzFFMDA0RDQ2ODhBNjgxNTI3MjExNDA2MzZDMTNDQkE2RUFBNDg5NTUzMkI1QjdFMUJGRjMxNjlBMEY0NzNGOEQ2QjIyQjVENjUxMEMwQURBQUU4MTc2QkE5MDdGMjI2NjdFRUUxRUQyQTgyMjEzOUFDNDIyMzI0OThGRTRDOTYyRjE4NUUxNDA2NkVEMTdDRTRBNTc0OTQzQTY3MTY3NzM3Qzc2MUVBMzg4Nzc0M0U1MTlFNDQzNDIwRDhGRjlFRTU3Nzc2MzgyNDA2MkUzMkYyQTA3MUVFNTU1Qzc1OUFFMjkwREI3NEE3QUNGNzc5REFERDE4MkQ2MDJCQjVBMDExNENEMjREQjlFNEFFMDdFQzAxREYxODk3RTE1REQ3OTE2QjdGMjgwMzJFMzczRjg0NTRCMjdFRjNFNzEwQjhDRDFGMEVFMTRCNjQ0MDAxMUU0MjIwQ0NBMzkzQ0M0NzU0NDk3QjVGMDIwMzAxMDAwMUEzODIwMjM2MzA4MjAyMzIzMDFGMDYwMzU1MUQyMzA0MTgzMDE2ODAxNEQ5NTgzRTU1RDhBNzcyODUwMTQ3OTM2MTU2M0MyODY5NzUyRUUwNzkzMDgxODEwNjA4MkIwNjAxMDUwNTA3MDEwMTA0NzUzMDczMzA0RTA2MDgyQjA2MDEwNTA1MDczMDAyODY0MjY4NzQ3NDcwM0EyRjJGNzI2NTcwNkYyRTY4NjE3MjY5NjM2MTJFNjc3MjJGNjM2NTcyNzQ3MzJGNDg2MTcyNjk2MzYxNTE3NTYxNkM2OTY2Njk2NTY0NTQ2OTZENjU1Mzc0NjE2RDcwNjk2RTY3NTM3NTYyNDM0MTUyMzEyRTYzNzI3NDMwMjEwNjA4MkIwNjAxMDUwNTA3MzAwMTg2MTU2ODc0NzQ3MDNBMkYyRjZGNjM3MzcwMkU2ODYxNzI2OTYzNjEyRTY3NzIzMDU3MDYwMzU1MUQyMDA0NTAzMDRFMzAwODA2MDYwNDAwOEY2NzAxMDEzMDQyMDYwQzJCMDYwMTA0MDE4MUNGMTEwMTAxMDYwMjMwMzIzMDMwMDYwODJCMDYwMTA1MDUwNzAyMDExNjI0Njg3NDc0NzA3MzNBMkYyRjcyNjU3MDZGMkU2ODYxNzI2OTYzNjEyRTY3NzIyRjY0NkY2Mzc1NkQ2NTZFNzQ3MzJGNDM1MDUzMzAxNjA2MDM1NTFEMjUwMTAxRkYwNDBDMzAwQTA2MDgyQjA2MDEwNTA1MDcwMzA4MzA4MTlDMDYwODJCMDYwMTA1MDUwNzAxMDMwNDgxOEYzMDgxOEMzMDA4MDYwNjA0MDA4RTQ2MDEwMTMwMDgwNjA2MDQwMDhFNDYwMTA0MzA3NjA2MDYwNDAwOEU0NjAxMDUzMDZDMzAzNDE2MkU2ODc0NzQ3MDczM0EyRjJGNzI2NTcwNkYyRTY4NjE3MjY5NjM2MTJFNjc3MjJGNjQ2RjYzNzU2RDY1NkU3NDczMkY1NDUzNDE1MDQ0NTMyRDQ1NEUyRTcwNjQ2NjEzMDI2NTZFMzAzNDE2MkU2ODc0NzQ3MDczM0EyRjJGNzI2NTcwNkYyRTY4NjE3MjY5NjM2MTJFNjc3MjJGNjQ2RjYzNzU2RDY1NkU3NDczMkY1NDUzNDE1MDQ0NTMyRDQ1NEMyRTcwNjQ2NjEzMDI2NTZDMzA0QzA2MDM1NTFEMUYwNDQ1MzA0MzMwNDFBMDNGQTAzRDg2M0I2ODc0NzQ3MDNBMkYyRjYzNzI2QzJFNjg2MTcyNjk2MzYxMkU2NzcyMkY0ODYxNzI2OTYzNjE1MTc1NjE2QzY5NjY2OTY1NjQ1NDY5NkQ2NTUzNzQ2MTZENzA2OTZFNjc1Mzc1NjI0MzQxNTIzMTJFNjM3MjZDMzAxRDA2MDM1NTFEMEUwNDE2MDQxNEJDNjA2MDg0MUZEQjVFOERFMkY0RDFBQ0NDOTVDNUM0RjZFMjBEMDgzMDBFMDYwMzU1MUQwRjAxMDFGRjA0MDQwMzAyMDZDMDMwMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTBCMDUwMDAzODIwMjAxMDA1NEY0OEI5QjAwMDQ4NEEyQUFEQTMyNkU2REFEOUJCQkZDMzQ5NEJFQ0JGMTU4QzgxOEE4MTM0RjcyOEI3QzU3RkNDOThGMUI4NTY2RTBBRkE3NTRFNUIwNjdFOEIyNTIxNTgyOUQyQjIxNEU5Rjk3RDgyMjEyQTZGRTdFOUZGNkQ0QjRBMzhCQURBOEJCQjQ1NDI3NDI4RkI4QzUwMjg3Q0JFNjlERkEwNTQ1Q0FEMzQ5MDZGQzZERTI3Q0REREMxMUU3NjUzMDJBNzk4QzU5RjkzQ0UwODhCNENEQ0Y5N0NCNUQ4NTY3QUNBMjYwOTVDQUZCOTRDMTg1QzI5NjczNjZFOTRFODA5MEU3QzY3OTI4MEM1MzFEQ0EyNDlDMDM3RTNGQ0JFRTU3Nzc1QkJGRjlCNkVBRjVBOTgzMTE2NUZCN0UzODg5MkY3N0RGRkFBQzQyRjQxQUYyREMyMUMyNzVCMzk2RUNBRjYxQUQwRkJEODE0RDZCMDRGQjJEQ0RGMzVDQTg2RUIzQTI0NjkwOEQxOEQ4Qjc1OTgyQjkyMENGRDZFM0MxRTdBREQ2RkNDOTFEMUIwQzE2MEU1MEY5Q0VEQjMyNTNGNTkxOTUzQTdCMzYwNzE5RUNDMDU4QjJFNzQyNUU3OTIxNjI3MDc2NTdCQzFGMzRFM0Y2MTMzQkE1NDUxOEQ4QzhEODczOTc2RTdFMjREQjNCQzI1Mzg3MDJERDBCNzMzMUQzODY3MDJGNDc3QjYzMkEyQjkxMzc0NDk4RUQ3MTkwRjE2RDREQzI2OEZCOEFCMjg5MTJGQzI4MTg3RDlDOTcxRDI1Qjg4MzI4MDkyOUY3OTYxMEExRjgzMjM5RDRDNTczMjlFMUM0RTA3NTRFQUIwMTJBOTRBQzhBQTBCQzA2ODNDNzIyMzE1RDg4NDRCNTJDMjhFNTdBQ0ZDODhDMjYyRUZGQjE4NTZFNUE3RkI5QzJEQTcxODQ1QzM5RDRBQzU5RDAxRjY5OURBODU4RDk3QjIyMDZENjA4QjQyRTFENjA5REIyNzUyQ0E1RTIzQjVFOTQ0NjY4OTJERDM0NzAwM0E2Q0MzRkU0OTMxOEM0OUI2RUQ4OEFCOEFENTBCRTA2MjY5RDMxOTIyNTkzNTBGRTJCQjQyRTg1Qjk2QzI4ODQ3QTc4N0Q3MTI2NUU2NDNFOTQwMUQ3MjE4OTQyNEI1NjcwRkZGNjQwREExRkQzREI1NzQ0MzNGNUM0RjU1NjFCMTVBQzQ1QUEyNDJBRTk3NTY4MEQ1NEM2Qzg1Rjc2RTIwNzUwRTQ4MTA2MjdENDI1RjhERjcwOUU3MDRBNjlERDAxM0FBMEY2NTAwNTBCNDE1NEEwMzA4MjA3NjczMDgyMDU0RkEwMDMwMjAxMDIwMjEwMTg0MzUxMzhGRkMwNjQzRjk3M0Q0Rjg3NzcwNDhDNzEzMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwQjA1MDAzMDgxQTYzMTBCMzAwOTA2MDM1NTA0MDYxMzAyNDc1MjMxMEYzMDBEMDYwMzU1MDQwNzEzMDY0MTc0Njg2NTZFNzMzMTQ0MzA0MjA2MDM1NTA0MEExMzNCNDg2NTZDNkM2NTZFNjk2MzIwNDE2MzYxNjQ2NTZENjk2MzIwNjE2RTY0MjA1MjY1NzM2NTYxNzI2MzY4MjA0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNzMyMDQzNjU3Mjc0MkUyMDQxNzU3NDY4NkY3MjY5NzQ3OTMxNDAzMDNFMDYwMzU1MDQwMzEzMzc0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNTI2RjZGNzQ0MzQxMjAzMjMwMzEzNTMwMUUxNzBEMzIzMDMwMzUzMjMwMzAzNzMyMzYzMzM2NUExNzBEMzMzNTMwMzUzMTM3MzAzNzMyMzYzMzM2NUEzMDgxQzMzMTBCMzAwOTA2MDM1NTA0MDYxMzAyNDc1MjMxMkIzMDI5MDYwMzU1MDQwQTBDMjI0NzcyNjU2NTZCMjA1NTZFNjk3NjY1NzI3MzY5NzQ2OTY1NzMyMDRFNjU3NDc3NkY3MjZCMjAyODQ3NTU2RTY1NzQyOTMxMTgzMDE2MDYwMzU1MDQ2MTBDMEY1NjQxNTQ0NzUyMkQzMDM5MzkzMDMyMzgzMjMyMzAzMTM3MzAzNTA2MDM1NTA0MEIwQzJFNDg2NTZDNkM2NTZFNjk2MzIwNDE2MzYxNjQ2NTZENjk2MzIwNjE2RTY0MjA1MjY1NzM2NTYxNzI2MzY4MjA0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNzMyMDQzNDEzMTM0MzAzMjA2MDM1NTA0MDMwQzJCNDg0MTUyNDk0MzQxMjA1MTc1NjE2QzY5NjY2OTY1NjQyMDU0Njk2RDY1MjA1Mzc0NjE2RDcwNjk2RTY3MjA1MjUzNDEyMDUzNzU2MjQzNDEyMDUyMzEzMDgyMDIyMjMwMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTAxMDUwMDAzODIwMjBGMDAzMDgyMDIwQTAyODIwMjAxMDA5QkVBQTk0Rjg1Qjg3NjI4NDNDMDFGMzVGRTc0RTkxM0VDNTg2QzlGRTVEOTg4MTA3RTgyMDhBQThEOUZBM0ZCMjYyQkQ1NTQ5QUI2MTU2NTM4MUY0QzBGNzFFQUJBMTEyMUZDOERDREU4QUFCOEYxQTY2MkZBRkQzRUJDOUMwQUY5NUNCRDQyRURERkQzQUNGRkU5NTUxQ0U1NjA1MTEwQzI5QTExRUNEQTI5REFCMDVFQjY5RUI4QzcyRjZFQTdCNjY1MEUzMEMyREIwNEZENzQ2Q0Q5RTMwMzg1NTI1OTJEMTYxQjc5NkZGRjk2NTBCQjNENjQ5NENEQ0U5MjE1OTA0QTU3NEI1RjlFOERCNTE5QzkwMjJFRjRENUYxRUZGNjIwNTNGMDIxQzU4QkFEMkM3Q0Y3NTYyNzU3MjE1Qzc0MDA3RjczREFDN0I1MzhCNzRGMDkxRkE0MjFBNTY1MkE1QjQ3MUYyQjBCM0Q5NUQ1NEJBMDhGNEZEQjI4OTU0NjdGRTUyMjk5REIyMkYzMkNDNzk5Q0Q3RTM2QzVDQTkyMEM5NDE1ODc3QTAzODc5MUU4Mjg2RjEyRjAzRkI0QzhGRDE1ODE3REFDMkExRDJFMjVERTJDNzEzMzExQzg1NTlFNDQ5NEFBNkY3NzhCMjE4NTlFNjU4MTYyQkY5NDA1OUU1MEQwMDVBRDdBMDJBOUNGNzVDMTA4OTEyM0QyRDI2RUY2QzUzMEZDMDQwODUzRUQxODkzMDI3NTQ0MjE2RDhCMDZDNjk4OTk2NDk4RDhCRDlGOEQxRDk0MTE1MEJBMUU0MzA0MkRDNDkzRERGN0YwREFCOTE1QUVBNUI4OTNDREUyMDI1NkQzNkIzNDRDQ0RCMDUyMTlBNzU2RUExNkVDQ0NCMUREQzZDRTM4NTg1MDQ5Nzc5RDM1MjBBNjkwNTE2MkJEM0I1ODVDREE2ODRENkQ4QTg5RDFCQkE0RTFCOTAxM0YwRUFEQTBCM0EyM0RFNEY2NkExNTEwMTM2RTE4MUM5QUJBMEY5NTk0NkM3QTFENjRBMjQyQjc1ODdFRUIyQ0ZGRjdBRTNDMzQ0REYyRkI0N0Y0NjhEQjI4MTYzMzAzMzdFOTdCREIyRDMxRjg0RTk0RDQwQjE5MjY3NzlCODUwOEFERDgyODg4NDM4NTExOEQzMkFENTlFN0I1REUwNUYyMTQzNTdBMDVENjE0Rjk3NjI3QzgyNkNERUNEOTJGMUFFQjJEMTRBMDNFRDc1MjUwRDdBNDg1REIxMjIwMERDNDBCM0IxQjJCNjkyODczNzQzMUE3ODA2MzNCODUwMkIxQjU4M0EwRjlGOTNGMzY1MEZDNEEwRDQxMDIwMzAxMDAwMUEzODIwMTcwMzA4MjAxNkMzMDEyMDYwMzU1MUQxMzAxMDFGRjA0MDgzMDA2MDEwMUZGMDIwMTAwMzAxRjA2MDM1NTFEMjMwNDE4MzAxNjgwMTQ3MTE1NjdDOEM4QzlCRDc1NUQ3MkQwMzgxODZBOURGMzcxMjQ1NDBCMzA2RjA2MDgyQjA2MDEwNTA1MDcwMTAxMDQ2MzMwNjEzMDNDMDYwODJCMDYwMTA1MDUwNzMwMDI4NjMwNjg3NDc0NzAzQTJGMkY3MjY1NzA2RjJFNjg2MTcyNjk2MzYxMkU2NzcyMkY2MzY1NzI3NDczMkY0ODYxNzI2OTYzNjE1MjZGNkY3NDQzNDEzMjMwMzEzNTJFNjM3Mjc0MzAyMTA2MDgyQjA2MDEwNTA1MDczMDAxODYxNTY4NzQ3NDcwM0EyRjJGNkY2MzczNzAyRTY4NjE3MjY5NjM2MTJFNjc3MjMwNDQwNjAzNTUxRDIwMDQzRDMwM0IzMDM5MDYwNDU1MUQyMDAwMzAzMTMwMkYwNjA4MkIwNjAxMDUwNTA3MDIwMTE2MjM2ODc0NzQ3MDNBMkYyRjcyNjU3MDZGMkU2ODYxNzI2OTYzNjEyRTY3NzIyRjY0NkY2Mzc1NkQ2NTZFNzQ3MzJGNDM1MDUzMzAxMzA2MDM1NTFEMjUwNDBDMzAwQTA2MDgyQjA2MDEwNTA1MDcwMzA4MzAzQTA2MDM1NTFEMUYwNDMzMzAzMTMwMkZBMDJEQTAyQjg2Mjk2ODc0NzQ3MDNBMkYyRjYzNzI2QzJFNjg2MTcyNjk2MzYxMkU2NzcyMkY0ODYxNzI2OTYzNjE1MjZGNkY3NDQzNDEzMjMwMzEzNTJFNjM3MjZDMzAxRDA2MDM1NTFEMEUwNDE2MDQxNEQ5NTgzRTU1RDhBNzcyODUwMTQ3OTM2MTU2M0MyODY5NzUyRUUwNzkzMDBFMDYwMzU1MUQwRjAxMDFGRjA0MDQwMzAyMDE4NjMwMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTBCMDUwMDAzODIwMjAxMDAwMUI2NTM2NDRERkRCNEJDRDFGNUU0RUZGRjAyRjg0M0MzMEE0MjU0MDZCQ0FCQjVGMTk0RUIzREZEQzIzQkE2OEIyRTRCRDI0RTc2OEUwNzE2RTNEOTg0M0IzQUMzMjUxQTEyOTQ0QzQ3RDhFNjU3REQwMTA3MkI1NDNCMUYxNEQxNTAyNDA2MjMzMjEzNjdBMEU4RjYzMkM5NEExMzYxRkVBMjE2OTVCMzA5NENGODhCOUVEQjY1QTcwMjlCQjZBRjc3OTc4NEJCNkNDOTExRDVCOTIzNTA5NzE3RTI0N0MzNkUxOTVDMDY1MENCNjEzNjJBMTVEN0M1MEUyOTcxMjJFMDYwQzJCNUZDNzEyQUVFNENCRkFEMDk0MTNBRkE2MTUwNTQ5MkQyMDQ0NjJEQUJBQzM0NkMwMDVGOTE4Q0MwMzk4OEU5OThFMjhCRUNDNzVFQzExN0E2Q0Y0N0U1RTAwRDY5NTY3RDY5NTEwRDIwMjc3NjJBQjBBMzAxNDlERTNGMDhDNUI1REM0RjA2MUYyQUM1MzMzN0E3QkIwMjgzNkZBNDNEODNCRTVBNTMwOTlEQkQ5NkZDRUE0NjE2MDM0QjA3MEVERTVDRjgxRDVEMjFGMzBDQTc3MDg3OTM2QkM5NTY3RUM3NEFDNjIxQTcxNjQ5OUE0QjhGOTNFRTYyRTEyNkY2QUQyQzU2NkI5NkJGN0M2RkJBQTU4MUNCRUIyNDk1OTkxRDMwMUE2RUE5ODM4MjMzREZFMTFEMkQ0QzVEOUJGNDkzRTE2MkUwMzAyMzQ1MzYxRDQ4MkM5RjUyRjZFNEFBRERCOUEzNTNGRkUyRkIxMDI1RTlBMEE3QkVEQjlDNDg1MjRFMzhBOTI1OTQzREY4NkZDMEJCMjcxQUM0NEJFNTM2OTFCNjYyOTI5NzdEQzdEQThGQjlBMUQ1ODc2NDg2RTE5MTlGQ0FENjM1NTVGNDEwMzVBMjNCRUJFQzIwM0EzMzBCNEE4NTFBMEVCODIxM0MxNTI5RDhDNkUzNUNDQzRGODRDNzZCNTU2NTQzMUExQ0YxNEExRjc5OUJCMzE3NURCNTMwNkMzQzQzQzE4QjdCMzQxOUQ5MjVGODVEODhBQUNDNjBCOTUzNTcxREM5MjgxQTcyQzY3RTE3MkVGN0UxRjhDMkFFNjlCREFEOUM5MTkyQTY5MkQ3MjE5MjBGRDZBNjhENjZFN0U4QzdBREVEOTQ0NTY2NDVDMkRFOTVFRDZEMTZGNTY5REU4NjlDMzFBNzhBRDI5MTE2QzhCMjlGQzc4OUREMjdFNzg0NEY4MkRGRjY1QkMyRDRFOTMxNjE1MEM0Qjk3RkIwNzU4MkY1NTU0RTQyMzE4MjAzQzYzMDgyMDNDMjAyMDEwMTMwODFEODMwODFDMzMxMEIzMDA5MDYwMzU1MDQwNjEzMDI0NzUyMzEyQjMwMjkwNjAzNTUwNDBBMEMyMjQ3NzI2NTY1NkIyMDU1NkU2OTc2NjU3MjczNjk3NDY5NjU3MzIwNEU2NTc0Nzc2RjcyNkIyMDI4NDc1NTZFNjU3NDI5MzExODMwMTYwNjAzNTUwNDYxMEMwRjU2NDE1NDQ3NTIyRDMwMzkzOTMwMzIzODMyMzIzMDMxMzczMDM1MDYwMzU1MDQwQjBDMkU0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNDM0MTMxMzQzMDMyMDYwMzU1MDQwMzBDMkI0ODQxNTI0OTQzNDEyMDUxNzU2MTZDNjk2NjY5NjU2NDIwNTQ2OTZENjUyMDUzNzQ2MTZENzA2OTZFNjcyMDUyNTM0MTIwNTM3NTYyNDM0MTIwNTIzMTAyMTAwQTBCMzc2MjQ2NkNEMDlCM0EyQjlFNUY1MDc3RUU3RDMwMEQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAxMDUwMEEwODIwMUJFMzAxQTA2MDkyQTg2NDg4NkY3MEQwMTA5MDMzMTBEMDYwQjJBODY0ODg2RjcwRDAxMDkxMDAxMDQzMDFDMDYwOTJBODY0ODg2RjcwRDAxMDkwNTMxMEYxNzBEMzIzMTMwMzQzMjMwMzIzMTMxMzIzMzM2NUEzMDJEMDYwOTJBODY0ODg2RjcwRDAxMDkzNDMxMjAzMDFFMzAwRDA2MDk2MDg2NDgwMTY1MDMwNDAyMDEwNTAwQTEwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMzAyRjA2MDkyQTg2NDg4NkY3MEQwMTA5MDQzMTIyMDQyMEVGQkNCMTRENzQ1QjQ3NkZGQjQyMzhGRjJCMTVDNDAwOEM5QzM1RDM4QzgzQzkwNEU4MTBCRkFBRUI1RTQwNTYzMDgyMDEyMDA2MEIyQTg2NDg4NkY3MEQwMTA5MTAwMjJGMzE4MjAxMEYzMDgyMDEwQjMwODIwMTA3MzA4MjAxMDMwNDIwQ0EzNDE5OEIwNUMxMUI0NDJCRkExNThFNDQ4NDMwREIzMjBFQUVDQUZEM0ZGMjZBNzIxRkNFMTQ4Q0RDQjc3QjMwODFERTMwODFDOUE0ODFDNjMwODFDMzMxMEIzMDA5MDYwMzU1MDQwNjEzMDI0NzUyMzEyQjMwMjkwNjAzNTUwNDBBMEMyMjQ3NzI2NTY1NkIyMDU1NkU2OTc2NjU3MjczNjk3NDY5NjU3MzIwNEU2NTc0Nzc2RjcyNkIyMDI4NDc1NTZFNjU3NDI5MzExODMwMTYwNjAzNTUwNDYxMEMwRjU2NDE1NDQ3NTIyRDMwMzkzOTMwMzIzODMyMzIzMDMxMzczMDM1MDYwMzU1MDQwQjBDMkU0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNDM0MTMxMzQzMDMyMDYwMzU1MDQwMzBDMkI0ODQxNTI0OTQzNDEyMDUxNzU2MTZDNjk2NjY5NjU2NDIwNTQ2OTZENjUyMDUzNzQ2MTZENzA2OTZFNjcyMDUyNTM0MTIwNTM3NTYyNDM0MTIwNTIzMTAyMTAwQTBCMzc2MjQ2NkNEMDlCM0EyQjlFNUY1MDc3RUU3RDMwMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTBCMDUwMDA0ODIwMTAwQkUxQUI0OTQ3OUY4NjJDQ0U3NTM3NzhBN0I3RDY1NjMyQjU3QzgxQ0QzQzQ5OTY0MzA5MkI1NDc1ODEwN0IyOTIwMkU5MEE5NEEzMjUxQTY2QzA0MURFMzIzRDRBRjE3RUU4QUU3NzFERDI0REFDRDhBOTVGMjJGNzBFODEwNkMyQTExOTQwRjc5MjU0QzY5QjlEMTk5MDhDQUE4RTRBRDExNjM5QjYzMUZGQkNCOTIzMjg4REYzQ0VBOEI0RENFMTIwMEU1QUVFOEFEQTgxMDVDQjgwQTdCMzlGNzEzNjhENTY5NkM5ODQzRUY4OTdENEJEOUY4N0I4OTJENDEzNTBBNEQ2RjI1MjlDMTZERUY4RjcyMkYxM0RDMzRFRTU5NzNERDY4QzkyNkUyRDFFODNCNDQ1MkE1Qjk4MjM2RUYyNDA3RDNFRDAwMDZDQkVEQkI5RTQ1QjU4Q0I3NzBGQjI5NkMwODRBMEVEMDJCM0E1RTFCMTdFQkM4NUNFMUIwMkZDMjg1QkVFQkMxQThCRjgxOTJCMTk3Rjg0Qzc4QjlBNjhCOEI5REJGODY3NjU2OUQ0Q0EyQkEzMUQ1MTFERDFENDdEMzlCRjJGMDBDNUI3NTExRDk4MUE1REI5QjVFQzA1RkNCNEY3OEZBQzZCQkY3MzhBREY4NTRENjlDQTkwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA+Ci9CeXRlUmFuZ2UgWzAgOTQwNiA2NjI0MCAxNDc2OV0gICAgICAgICAgICAgICAgCj4+CmVuZG9iagoyIDAgb2JqCjw8Ci9UeXBlIC9QYWdlCi9QYXJlbnQgMyAwIFIKL1Jlc291cmNlcyA2IDAgUgovQ29udGVudHMgNCAwIFIKL01lZGlhQm94IFswIDAgNTk1IDg0Ml0KL0Fubm90cyBbMjEgMCBSXQo+PgplbmRvYmoKMjMgMCBvYmoKPDwKL0xlbmd0aCA2MTEKL1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0Zvcm0KL1Jlc291cmNlcyA8PAovRXh0R1N0YXRlIDI0IDAgUgovRm9udCAyNSAwIFIKL1hPYmplY3QgPDwKL0ltMSAyNiAwIFIKPj4KPj4KL0Zvcm1UeXBlIDEKL0JCb3ggWzAuMCAwLjAgMzEyLjAgMjIuNzk5OTg4XQo+PgpzdHJ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gMCBvYmoKPDwKL1R5cGUgL0V4dEdTdGF0ZQovY2EgMS4wCj4+CmVuZG9iagoyOSAwIG9iago8PAovVHlwZSAvRm9udAovQmFzZUZvbnQgL0FBV1pGQytEZWphVnVTYW5zCi9TdWJ0eXBlIC9UeXBlMAovRW5jb2RpbmcgL0lkZW50aXR5LUgKL0Rlc2NlbmRhbnRGb250cyBbMzAgMCBSXQovVG9Vbmljb2RlIDMxIDAgUgo+PgplbmRvYmoKMzAgMCBvYmoKPDwKL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL0NJREZvbnRUeXBlMgovQmFzZUZvbnQgL0FBV1pGQytEZWphVnVTYW5zCi9DSURTeXN0ZW1JbmZvIDMyIDAgUgovRm9udERlc2NyaXB0b3IgMzMgMCBSCi9XIFswIFs2MDBdCiAzIFszMThdCiAxNiBbMzYxIDMxOCAzMzcgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzZdCiAyNyBbNjM2XQogMjkgWzMzN10KNDAgWzYzMl0KIDQzIFs3NTJdCiA1NCBbNjM1IDYxMV0KIDY4IFs2MTNdCiA3MCBbNTUwXQo3MiBbNjE1XQogNzYgWzI3OF0KIDc5IFsyNzggOTc0IDYzNCA2MTIgNjM1XQogODYgWzUyMSAzOTIgNjM0XQogOTEgWzU5Ml0KMTE5IFs2MzZdCiA3OTYgWzUwMF0KIDgxMyBbNzUyXQogODI5IFs3ODddCiA4MzMgWzY1OSA1NDFdCjgzNiBbMzM4XQogODM4IFs2NTldCiA4NDAgWzU5Ml0KIDg0MiBbNTQxXQogODQ0IFs2MzRdCjg0NiBbMzM4IDU4OV0KIDg0OSBbNjM2IDU1OV0KIDg1MiBbNjEyIDYwMiA2MzVdCiA4NTggWzU3OSA2NjBdCiA4NjUgWzYxMl0KXQovQ0lEVG9HSURNYXAgMzQgMCBSCj4+CmVuZG9iagozMSAwIG9iago8PAovTGVuZ3RoIDQ0MwovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0NCnicXZPNauMwFEb3egotO4vgH0m2A8FgKQ1kMW1pOg/g2EowNLJRnEXefpT7ySnUEA46vlf6bOcmZr/du2HmyYcfu4Od+WlwvbfX8eY7y4/2PDiW5bwfujmuGKG7tBNLQvfhfp3tZe9OI9t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 \ No newline at end of file diff --git a/eseal/src/test/resources/validation/signed-lta-b64-pdf.txt b/eseal/src/test/resources/validation/signed-lta-b64-pdf.txt new file mode 100644 index 0000000..328ef99 --- /dev/null +++ b/eseal/src/test/resources/validation/signed-lta-b64-pdf.txt @@ -0,0 +1 @@ +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2MDMpIAovTW9kRGF0ZSAoRDoyMDA4MDYxMTE2NTYwMykgCi9Qcm9kdWNlciAoSWJleCBQREYgQ3JlYXRvciA0LjMuNi40LzUwMjUgWy5ORVQgMi4wXSkgCj4+IGVuZG9iagp4cmVmCjAgMTEKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwNjE2IDAwMDAwIG4gCjAwMDAwMDA1NTYgMDAwMDAgbiAKMDAwMDAwMzQyNCAwMDAwMCBuIAowMDAwMDAwNzA2IDAwMDAwIG4gCjAwMDAwMDA3NDEgMDAwMDAgbiAKMDAwMDAwMDIxNSAwMDAwMCBuIAowMDAwMDAwNDgwIDAwMDAwIG4gCjAwMDAwMDAwMjAgMDAwMDAgbiAKMDAwMDAwMzQ0NSAwMDAwMCBuIAowMDAwMDAzNTU5IDAwMDAwIG4gCnRyYWlsZXIKPDwKL1NpemUgMTEgCi9JbmZvIDEwIDAgUiAgCi9Sb290IDEgMCBSIAo+PgpzdGFydHhyZWYKMzY5OAolJUVPRgoNCjEgMCBvYmoKPDwKL091dGxpbmVzIDMgMCBSCi9QYWdlcyAyIDAgUgovVHlwZSAvQ2F0YWxvZwovUGFnZU1vZGUgL1VzZU5vbmUKL0Fjcm9Gb3JtIDw8Ci9GaWVsZHMgWzExIDAgUl0KL1NpZ0ZsYWdzIDMKPj4KPj4KZW5kb2JqCjExIDAgb2JqCjw8Ci9GVCAvU2lnCi9UeXBlIC9Bbm5vdAovU3VidHlwZSAvV2lkZ2V0Ci9GIDEzMgovVCAoU2lnbmF0dXJlMSkKL1YgMTIgMCBSCi9QIDYgMCBSCi9SZWN0IFswLjAgMC4wIDAuMCAwLjBdCi9BUCAxMyAwIFIKPj4KZW5kb2JqCjEyIDAgb2JqCjw8Ci9UeXBlIC9TaWcKL0ZpbHRlciAvQWRvYmUuUFBLTGl0ZQovU3ViRmlsdGVyIC9FVFNJLkNBZEVTLmRldGFjaGVkCi9NIChEOjIwMjEwNDI5MTI1OTUyKzAzJzAwJykKL0NvbnRlbnRzIDwzMDgyMkM3QTA2MDkyQTg2NDg4NkY3MEQwMTA3MDJBMDgyMkM2QjMwODIyQzY3MDIwMTAxMzEwRjMwMEQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAxMDUwMDMwMEIwNjA5MkE4NjQ4ODZGNzBEMDEwNzAxQTA4MjE1RDIzMDgyMDY0MTMwODIwNDI5QTAwMzAyMDEwMjAyMDgzOUY3REE2NEVFOTY5NjE3MzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMzA4MUFEMzEwQjMwMDkwNjAzNTUwNDA2MTMwMjQ3NTIzMTBGMzAwRDA2MDM1NTA0MDcwQzA2NDE3NDY4NjU2RTczMzE0NDMwNDIwNjAzNTUwNDBBMEMzQjQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA0MzY1NzI3NDJFMjA0MTc1NzQ2ODZGNzI2OTc0NzkzMTQ3MzA0NTA2MDM1NTA0MDMwQzNFNDg2NTZDNkM2NTZFNjk2MzIwNDE2MzYxNjQ2NTZENjk2MzIwNjE2RTY0MjA1MjY1NzM2NTYxNzI2MzY4MjA0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNzMyMDUyNkY2Rjc0NDM0MTIwMzIzMDMxMzUyMDJEMjA1NDY1NzM3NDMwMUUxNzBEMzEzODMwMzQzMDMyMzAzNzMzMzgzMzM3NUExNzBEMzQzMzMwMzMzMjM3MzAzNzMzMzgzMzM3NUEzMDgxQUQzMTBCMzAwOTA2MDM1NTA0MDYxMzAyNDc1MjMxMEYzMDBEMDYwMzU1MDQwNzBDMDY0MTc0Njg2NTZFNzMzMTQ0MzA0MjA2MDM1NTA0MEEwQzNCNDg2NTZDNkM2NTZFNjk2MzIwNDE2MzYxNjQ2NTZENjk2MzIwNjE2RTY0MjA1MjY1NzM2NTYxNzI2MzY4MjA0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNzMyMDQzNjU3Mjc0MkUyMDQxNzU3NDY4NkY3MjY5NzQ3OTMxNDczMDQ1MDYwMzU1MDQwMzBDM0U0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNTI2RjZGNzQ0MzQxMjAzMjMwMzEzNTIwMkQyMDU0NjU3Mzc0MzA4MjAyMjIzMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwMTA1MDAwMzgyMDIwRjAwMzA4MjAyMEEwMjgyMDIwMTAwQjE5NUFGODY3QkI1QjRGMjAxOEI4QTlFMTU0QjdENzcxODgxNkFBRURFQjJBRUQ2MjM0OTgzQUY5RUQ3Q0MzRjY4NDQ2NjA1NkQwQjI2QkM2RTdGOUQwOTk2NkYwNUY5MjQyQzI5OUQ2NkIzNUE1NDA1MUM5RjU3ODJGQjM1NUQ4N0Q5N0E2Q0Y4RDcwRkZBODg4MEM1NDg1RDU4M0M0NDVDNDgzN0VERjU0RTdENjVGNEQ1REVBNEZDMTEwRTMzRkEyMEY2QkM3MkUwRTJDNTE2RUEwMDJFQkM5QjZDMjhBMDYyOTU3ODFEMDc1M0Q3ODUyMzkzMzM5RTgyOUUwRjkwRDc0OUE4RTNBREJENzE3RDA1OUY3QTA1RTY3NzM4QzE2RDY4MjRDNkIyRDA0NUZCRkVEOERGMTZGRUZDRkI2MDU4MkE1M0JDQzdCQTIzNkYzMzYwM0REMzY3QTBEMjBEOUVFRjA0QkZCMUU3RTlGQTdDRUU4NUVGNkFDRUFGNUI5MEY2MDY5RTJENDVBMTI4M0E4N0VCNDc0RDIxOTAyNkZBMkM2M0M5OUUzNjcwODA2RTYwRkY3MjEyOTUxRjc0NkNBMEExRDNFNjE1N0RCRkM4M0M2RDkxQjUyNjNBRjUzQTRFRkNFREQ4MEMxNTE2RUFCMzExOEVCODgxQjhGQTdBOTkzRUZGQjBCQjk3N0I4QjlBNUVGMDU2NTYwOUFBNzc3NzQ1M0ZDNUU0MDExOUUxMDM0QTNDMjUwQzUwQzYwNzgzRTkyMkU1QTY5ODRBQ0I0MTA2MjE5OEUwQkZBNzNCREREQTJDQzU5OEJEM0I5QTcwQUEzM0QwNkM0NThENDQ4RENCMjE3QkIzODk4NTNBQTJDMjE5QUFEMEJFMTZDNjE4QkYwRTkzNjVCM0Y3RjIzQUFGODIwRTg2NjI2M0ZBMUY4Mjg4NTRCQzdGMjRENjI0NEY4NTUyMDBFQ0UzMUYwN0VDNkQzREVDMDI0MUZDNDcxQzcyRUMzNTEyOTc1NEM4MUMxNkZEQjIwMzBERjUwODEyQUJGMEUxRjFBRUY4NzUxODU2QjYwREMxMDc2MDZBQjczN0IxMDY1MEJCNzIwMzU4NDIwODM0MjU0OTUzRDNCMkI2RDkxMkM0REZBNjFDQUUwNjA0MzhFMzhDMEJBOTk2NEIzNDVFRUY5N0JBODEzQTQxNzk2MjM0Qjk1OEZBM0NGNkMyMzNDRkE4N0M4QjMzNzE3ODdGMTc4NDBGMEU3NEJCQUJGMkVFNEJBMDUxMzAxMTAzRjk1MDJGNjk4NDgyN0VERDIwRTEzRUZCRDc1RTJFRTU2QUNFODdDNEEwQkI3NkVGOUE3MzAyMDMwMTAwMDFBMzYzMzA2MTMwMEYwNjAzNTUxRDEzMDEwMUZGMDQwNTMwMDMwMTAxRkYzMDFGMDYwMzU1MUQyMzA0MTgzMDE2ODAxNDk4NjQ2QzZCQjVEQ0Y3MjFDOUNENjU4MDMzNDlEQjQwQTkxQ0EzOUMzMDFEMDYwMzU1MUQwRTA0MTYwNDE0OTg2NDZDNkJCNURDRjcyMUM5Q0Q2NTgwMzM0OURCNDBBOTFDQTM5QzMwMEUwNjAzNTUxRDBGMDEwMUZGMDQwNDAzMDIwMTA2MzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMDM4MjAyMDEwMDMxRThDNDU1NkNCQ0I5MENDNDlEMTExNDZBRDQ5NEZCNzg2NjU3NUM2REU4Qjc1QTJCNjRCMkU0QUFGQzBCNzUzNzVBNEU2OUQwMTFGMjUyMEVGNTYxNzc4RjMzM0Q2RkY0QzIyRjZBOTM3RkIxOEU1NkQ2MjY2MkJDNzhCM0QzNDRDNTExOURERjgwMzZCOEFDM0VFMEUxQzhFODVBNkYzNDJFNzlFOUY4MDE3QzJGQkVBRDhFMkE3ODI2MEM0MDg5QjREODI3RjZFMjUxMkQyRjE0RTY2OUNCMzI4QUJGNjQ4MTREM0E1OTE1OEJDQUM2MTMyRTNFQkE1Mjc0MjIwOTNDNzM3QzY4MEVEODY1NDdBMEVGOUEzNUNBNzY2NTY0RjlBRDI4OTEzNzFDOURDNDJBMDNGODAxNkQ2RTczQUNBRkQwQzBBMTcwOTZFOTc3REY4OUMyODkwNjE4NjM2NDJCRjcwRTQwMzU1QTA0MzVCRTkyQ0RDMTQxRENGQTRDMjFEQ0VBQzdCNzRBNUIyMDVFQzU5M0JBODlDQjdDQjc0MEUyOUNFMTZEQTZFNjM4NzZEOEE1QkNERkJBOTY0NjBDQzgzNDUyMDc2MzY1RjQ4RDIyRDA1OTg0RUMxRkVCMzE3QkVGOUI2RkM3OTk0MjJGRjgzMzk4ODY3REE0NkNDNkEyOTVBNzRCOUJBMzMyNDcyODQzODFGQ0I0NjQwMkY5QjkyMEQyMTkwNTJDNDlEMjdFMzg4OEI0QTQ0NEQ4M0M3RDMyMEU0MDk1ODA1NTk0RTlFNzE4RUQ3ODc4MDdCRDRFRkMwMzAwOTYwNUM2REJENTNCRTBEMkY5QzlEQUUwMTM0NThDMENDMTRDMjI3M0ZCQjJGMzk5MkVDQzE2Qzk1Njc0N0ExNUE2RjRBMTY5MjdBMUM3OTg4Mzk3MzAxRjhGNEFBMEVCQjc0QTJGNTExMTdGREVCODcyMzM0MEVFQTA1ODk3MzM0QTM4NEY2RDQ3MkMwMjc5NzUzQzNERUVDQjc1OTlBQTlDMkQ5ODdDMzA1M0RDRUMyREE0NUM4NTQ5RDdCNjBBMThENjkzRTlCRDZDRDBGMDIyNkRCMkE0ODAxRjg1RTFDM0VGQjQ2NzZBMzY4ODAwMzMwMzQ2NjgwRDYzMUFGN0E0N0M4NDdDQThFMUIzRDQ5QzE4M0JGMEFBREJBRjhDRTNEN0RFMDAwRDQyMUE5NDI1Q0Q4ODkyMzM5MDc1NUVDODUyQ0ZBQjNBQzg1QTMyNkU0MTM2RjNENEQ4MkY4QzIyRkU1RjM0OTk5OTBCN0M5RjUzNzNFMzVBQkMwQkYzQjJEMDZCNjA2NEY2RTZDMkU0MTUzMDgyMDc1NTMwODIwNTNEQTAwMzAyMDEwMjAyMTA1OEI3NUJDQzNGMjhCMDg2Qjg3MjRENTRBQ0JBOUZFODMwMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTBCMDUwMDMwODFBRDMxMEIzMDA5MDYwMzU1MDQwNjEzMDI0NzUyMzEwRjMwMEQwNjAzNTUwNDA3MEMwNjQxNzQ2ODY1NkU3MzMxNDQzMDQyMDYwMzU1MDQwQTBDM0I0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNDM2NTcyNzQyRTIwNDE3NTc0Njg2RjcyNjk3NDc5MzE0NzMwNDUwNjAzNTUwNDAzMEMzRTQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA1MjZGNkY3NDQzNDEyMDMyMzAzMTM1MjAyRDIwNTQ2NTczNzQzMDFFMTcwRDMyMzAzMDM3MzAzNzMwMzkzMjMwMzQzODVBMTcwRDMzMzUzMDM3MzAzNDMwMzkzMjMwMzQzODVBMzA4MUJDMzEwQjMwMDkwNjAzNTUwNDA2MTMwMjQ3NTIzMTJCMzAyOTA2MDM1NTA0MEEwQzIyNDc3MjY1NjU2QjIwNTU2RTY5NzY2NTcyNzM2OTc0Njk2NTczMjA0RTY1NzQ3NzZGNzI2QjIwMjg0NzU1NkU2NTc0MjkzMTE4MzAxNjA2MDM1NTA0NjEwQzBGNTY0MTU0NDc1MjJEMzAzOTM5MzAzMjM4MzIzMjMwMzEzNzMwMzUwNjAzNTUwNDBCMEMyRTQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA0MzQxMzEyRDMwMkIwNjAzNTUwNDAzMEMyNDQ4NDE1MjQ5NDM0MTIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTYxNkMyMDQzNkM2OTY1NkU3NDIwNTM3NTYyNDM0MTIwNTIzMTMwODIwMjIyMzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMDEwNTAwMDM4MjAyMEYwMDMwODIwMjBBMDI4MjAyMDEwMEJBN0MwNEVDQUNBMTIxQTMwM0MzOEVEMTk1N0Q0RTNEOTEzNThBNjE2RkRFNEM1NzY0MTMyOTkwRjZFNDM3N0U4NkY3RTZFNUVEREFFMjFDRkI3RUJERUQwQjI5MUU3NTMyQzkyNjE2QkFBM0RDQ0U2QkIwMDU4MUY5MjIzNTE5NkNEMzVFQzNGRjczMjQwRkI1NUNFNjhBRjM0RUIzRkI4RjZFNEUwRDZGNENBODYyQzExQUNDOUYwREE2RDE5MzlGNDdENzVCNzdDRDU4M0FCMTIzQ0YyMkI0M0Y2ODA4RjVGODJFRDI0Q0E5ODg3OEZFRDM5NzUwMDFDMDdGNTE3MjZDNTYzNkUxOTY3QkM4Mjg3RThCMDZDNTNENzdFNTVGODkzNTNENjFGMjY3QTg0OTFFNkRDMjI3Q0YyNTM3ODA5MENEOTExOEI1NUVDRDYzMjVGN0U2QjQ5QzExQzk0NEUzRUNBRkExQjBGMUY5NkJGRjIxRkI2Mjc2RDE2OTQ2Mjk1QURBQjYxRDU0NkZENTgyMTU1RDJERDUxN0Q1NUQ4QTZEMTk1MTE1NzAyNzBDNTNDQ0IxNzkyREI1MEI0RDU5QjA3OEI4QTE0QUExNENDREZDRTk1QTRBMDExMkIwNDczOUZDMEQyRTdGMTBFMkMxMEI5RUFCQzM4QTdEOUE5Mjg2MDcyMTY0MDUyNzBENjg1Njg2NDI1MUIzRDgxNTU4MDM4RDczN0ZBM0FBN0M0MEZDQTBEMEJDQjc5MTUwQTkxNzYxRDQ3MTI4Mzc3MTM2QUIwQTAzRjMzMjNFQjI1NzQ0QzFBQzE2N0VCNzkwNDJFMkRGNUNCRDEwNjk1QkFFQkU5OTk5NUYwMEUwMjI4Q0VBNTg4RTBFQ0QyNjM3OUE3QUY1QzM1NTY5NkQ1QTQ1NjM3QzY4RjZDNkQ4QzhDNzgyQjhFNEVBMEE2N0I3RjdCRjAwM0QwQTVDNkJCNEJDQ0EwMThGNDAxQkUxMjVGRDEyNkE5NkQxQkE1RTY3ODU4QzU1REMwMkNEMTg5MDAxRDFDRTMwMUI3OUU0NzJDNkI2Qjk4NzZGMjJENTJCM0ZCRDdDNjc2NkI3MEJGRjBERERCMUFEODZBMTFCODVGMURGNDc3OUE5QTgzOTFDODYzRUVDRUU1OEVDMUYyNzhEQUE4REMxNEU0NzI2MTcxMENERDk2NDFGMjEyNTM2NkU0OEJGMjlFNkE4QUM2NDNFMzhEMkVFNDFEMEY0NjA1MkZBODc5QjE5RkRENTUzNTlDQTFCMzM0M0Y4OTQxMUQ1RDE1RTgyQzQ0NEMwRTM3Qjk3MEFGODRGRDc0OTNCM0VCQzRGNTI0RjdGODMwMjAzMDEwMDAxQTM4MjAxNUUzMDgyMDE1QTMwMTIwNjAzNTUxRDEzMDEwMUZGMDQwODMwMDYwMTAxRkYwMjAxMDAzMDFGMDYwMzU1MUQyMzA0MTgzMDE2ODAxNDk4NjQ2QzZCQjVEQ0Y3MjFDOUNENjU4MDMzNDlEQjQwQTkxQ0EzOUMzMDc2MDYwODJCMDYwMTA1MDUwNzAxMDEwNDZBMzA2ODMwM0YwNjA4MkIwNjAxMDUwNTA3MzAwMjg2MzM2ODc0NzQ3MDNBMkYyRjc3Nzc3NzJFNjQ2NTc2MkU2ODYxNzI2OTYzNjEyRTY3NzIyRjYzNjU3Mjc0NzMyRjQ4NjE3MjY5NjM2MTUyNkY2Rjc0NDM0MTMyMzAzMTM1MkU2MzcyNzQzMDI1MDYwODJCMDYwMTA1MDUwNzMwMDE4NjE5Njg3NDc0NzAzQTJGMkY2RjYzNzM3MDJENzM3NDY3MkU2ODYxNzI2OTYzNjEyRTY3NzIzMDExMDYwMzU1MUQyMDA0MEEzMDA4MzAwNjA2MDQ1NTFEMjAwMDMwMjkwNjAzNTUxRDI1MDQyMjMwMjAwNjA4MkIwNjAxMDUwNTA3MDMwMjA2MDgyQjA2MDEwNTA1MDcwMzA0MDYwQTJCMDYwMTA0MDE4MjM3MEEwMzBDMzAzRTA2MDM1NTFEMUYwNDM3MzAzNTMwMzNBMDMxQTAyRjg2MkQ2ODc0NzQ3MDNBMkYyRjYzNzI2QzJENzM3NDY3MkU2ODYxNzI2OTYzNjEyRTY3NzIyRjQ4NjE3MjY5NjM2MTUyNkY2Rjc0NDM0MTMyMzAzMTM1MkU2MzcyNkMzMDFEMDYwMzU1MUQwRTA0MTYwNDE0QzNFN0FDNUFDMTVGMzk3OEUwMTYzMEYxRDU4RTVENUFDREZBNjk0RDMwMEUwNjAzNTUxRDBGMDEwMUZGMDQwNDAzMDIwMTg2MzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMDM4MjAyMDEwMEE1MUFCMjJFMjNEMTUxRDgxRkI0REI5RDEyNTc1M0Y3OTFEM0U3NDI0NUI2OTc2OTdCMTJERjAxMkFFM0Y0RkU0QkU2NkNBNDU2NDEzRDIzNDhENDJERkYwMDdGMjVBQUQyNURGRTQ0NEExOTQwNDhFODNBRUYwMjZFQjhFNUY5MTQyQTY1N0REQzg4OTZERkIxNzE2RDJCQUUyRjcyNUUwNzJFQkMzMEUyMTAwRDhCMkE0QzFENDM5RDc3QzgyRTRBNkFGREFCNTcwREJBODUxRTFCNTkzNDg1QzUwNUJBNzJCRDBDRjM0MDMwNzE3MTQwNkNBODY4RTg0RTI5MTgwQzc0NTNFRUUyQ0QwMEI5ODk4OUU3ODZDNkI1RkUwMzBBMkI1MUUwMjgyRTNCMzY2NEYyNzI2RkYwNzc0N0M5NjE1ODJDNERBN0RDNjE2NjA2ODY3MTYyNDhGMDY4RDNCNTFBMzVEOUMzMjI3ODYwQjkxNUI5RDdBQTk4MkNBNDVDQUI1RTc5QjE5N0YzQTU4MkMzNzMzRkFBNkFGMDY2REMzNDZCMTE0OTVFMTY4REI4QjAxNDk4MzdDRDdDMkREM0FFQTBDMjI2MUY3NDZDRjQxMkQyMTcxREFCOEQ5REJDNDVBQTU3MjExRjdCMTgzRTU5RDk2NzREQUQxRDU0QjAwNDE1NzFCQzVDNDRFMzUwMjQxQzRGM0FCNjY5QjEwNjlDMjFGRTk3OTI2OUEzNUQ3QThCQUNGOTc5RDA0MTNCRDNFMTY3NzVEMzhGQUIxMzQwMzc2Q0I0NjY2QUVDMERDMjk4QTMyRTEwQTczQzZGN0VBRjFBMzRBOTczMkIyMUI1OTEzM0M3OUJBRDI4NENBOTYyMzBFQzdCRUNDOTA4MkJBRURCRjQyRkI0OUUzM0MxRjk1MDYzQUUxMEMxNkJGNzgzNUREQUJBMDZGQkYxNzE4RkNFREJDOTk2Q0QzRURFRkRGNzk3QkFEODcxRDRFMEY4Q0Y4NjVBOTU3NURERDEzOTkxNTVCQUIwNzUwMTNBNjM4NUVFNEI4QTk5N0RENzUwQzA5RjYxQkU3Nzg0NTMzQTJDNDRENjUxQ0FEODBBRUZDRUEyOERGMjk4NTdENjNFMjg0RjM2NjNDRjIyMDY0NDQ0RjkwM0YzRTJDMjRCMzQ4Mjk1QjlGODFGNTg4ODc1NUIyMjZGNTU4NTYzMzQ2NTc2RUQ2ODYwNjM3MUVGRDE5Q0U1MUY5ODhDOEI2OURBNzYzREJCNUYwMDcwMDUyMTRGNjcxMjNEQzNEOTVDQjJCNzgzNzMzNkEzM0IzNEM0NzlEMjZFMTI4QkE0RTc1Mzc5MzUwQTUyNEEzMDgyMDgzMDMwODIwNjE4QTAwMzAyMDEwMjAyMTA3MzdGNUYxRTA2QzU0OTBCNUU3NjY3NUJDMjIzMzI1NTMwMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTBCMDUwMDMwODFCQzMxMEIzMDA5MDYwMzU1MDQwNjEzMDI0NzUyMzEyQjMwMjkwNjAzNTUwNDBBMEMyMjQ3NzI2NTY1NkIyMDU1NkU2OTc2NjU3MjczNjk3NDY5NjU3MzIwNEU2NTc0Nzc2RjcyNkIyMDI4NDc1NTZFNjU3NDI5MzExODMwMTYwNjAzNTUwNDYxMEMwRjU2NDE1NDQ3NTIyRDMwMzkzOTMwMzIzODMyMzIzMDMxMzczMDM1MDYwMzU1MDQwQjBDMkU0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNDM0MTMxMkQzMDJCMDYwMzU1MDQwMzBDMjQ0ODQxNTI0OTQzNDEyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU2MTZDMjA0MzZDNjk2NTZFNzQyMDUzNzU2MjQzNDEyMDUyMzEzMDFFMTcwRDMyMzAzMTMxMzEzOTMwMzczMDM3MzEzODVBMTcwRDMyMzEzMTMxMzEzOTMwMzczMDM3MzEzODVBMzA4MUQyMzEwQjMwMDkwNjAzNTUwNDA2MTMwMjQ3NTIzMTE1MzAxMzA2MDM1NTA0MDcwQzBDNTQ2ODY1NzM3MzYxNkM2RjZFNjk2QjY5MzEyRDMwMkIwNjAzNTUwNDBBMEMyNDQxNzI2OTczNzQ2Rjc0NkM2NTIwNTU2RTY5NzY2NTcyNzM2OTc0NzkyMDZGNjYyMDU0Njg2NTczNzM2MTZDNkY2RTY5NkI2OTMxMTIzMDEwMDYwMzU1MDQwQjBDMDk0OTU0MjA0MzY1NkU3NDY1NzIzMTE3MzAxNTA2MDM1NTA0MDQwQzBFNDQ2RjZCNjk2RDYxNzM3NDY5NkI2OTY0Njk3MzMxMTUzMDEzMDYwMzU1MDQyQTBDMEM0NDZGNkI2OTZENjE3Mzc0Njk2QjZGNzMzMTEzMzAxMTA2MDM1NTA0MDUxMzBBMzIzMzM4MzkzODM2MzYzNDM3MzEzMTI0MzAyMjA2MDM1NTA0MDMwQzFCNDQ2RjZCNjk2RDYxNzM3NDY5NkI2RjczMjA0NDZGNkI2OTZENjE3Mzc0Njk2QjY5NjQ2OTczMzA4MjAxMjIzMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwMTA1MDAwMzgyMDEwRjAwMzA4MjAxMEEwMjgyMDEwMTAwQjU5RUM0OUVBRTgyNTJBRjYyMURDREYwQTkyRTcxQkVDMTgxMzAyMkNBNUE5MkRCMDZEOTBCQ0I4QzMzNjMzNThBNUJCRjQ4OTk4MjNCQkQxNDdBRDlFNDg2RDVCREMxRDUwQzU5MjJCREQ1MURFQzgwQUE1NjZFQjg0RDg5N0E2NkFDMTE1OTA4Q0VBQkJBQTg5MjUzNDIwMTA0N0QyQUQyQjFFOTA5NDVDNDExNzc0MEY4N0ZCQUI2RjYxNzcxQjk3QkJBNUI2MEJDQkJCQjlDQkY3Q0Y1QTkyRUUwNTYyODQ5NEJGNDAxNzEzOTU5MkFCMDhGM0YzQTZEOTEzM0IyMDJBODQ1RDlEODAyNjlFNjg5MjAzM0ExQUY3REU4Qjk4RDI1RTcyNkM3NUFBNkVGOTlCMDc5NjJBODRFQjI1QzdGN0JDM0JFNEY3Q0I2Qzk4QThBMDcwN0UxNjM2ODM1NDQ3OUNCRjQzMDdEOUQzODBBNTczOEQ4NjZDQzZGRENCODFEOTUyRUQ5MEZDRDY5MTA4NUY2REQ5MUYxMEE3QTY3OTQ2QjI5MTE1QzA2MjQ5N0ZERDlDNUUwQzlBOEFBRDc1QTEyQTMzQUIxQUE1RjUwMUFCMTgyRTJCQ0Q0RDFCNkNDMzg4MTExRUY5NzlGM0M3MzVEMjVCMjQxNzkwMjAzMDEwMDAxQTM4MjAzMTQzMDgyMDMxMDMwMUYwNjAzNTUxRDIzMDQxODMwMTY4MDE0QzNFN0FDNUFDMTVGMzk3OEUwMTYzMEYxRDU4RTVENUFDREZBNjk0RDMwODE4NzA2MDgyQjA2MDEwNTA1MDcwMTAxMDQ3QjMwNzkzMDUwMDYwODJCMDYwMTA1MDUwNzMwMDI4NjQ0Njg3NDc0NzAzQTJGMkY3MjY1NzA2RjJENzM3NDY3MkU2ODYxNzI2OTYzNjEyRTY3NzIyRjYzNjU3Mjc0NzMyRjQ4NjE3MjY5NjM2MTQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU2MTZDNDM2QzY5NjU2RTc0NTM3NTYyNDM0MTUyMzEyRTYzNjU3MjMwMjUwNjA4MkIwNjAxMDUwNTA3MzAwMTg2MTk2ODc0NzQ3MDNBMkYyRjZGNjM3MzcwMkQ3Mzc0NjcyRTY4NjE3MjY5NjM2MTJFNjc3MjMwODFGMzA2MDM1NTFEMjAwNDgxRUIzMDgxRTgzMDA5MDYwNzA0MDA4QkVDNDAwMTAyMzA4MUNCMDYwQzJCMDYwMTA0MDE4MUNGMTEwMTAxMDQwMjMwODFCQTMwMzAwNjA4MkIwNjAxMDUwNTA3MDIwMTE2MjQ2ODc0NzQ3MDczM0EyRjJGNzI2NTcwNkYyRTY4NjE3MjY5NjM2MTJFNjc3MjJGNjQ2RjYzNzU2RDY1NkU3NDczMkY0MzUwNTMzMDgxODUwNjA4MkIwNjAxMDUwNTA3MDIwMjMwNzkwQzc3NTQ2ODY5NzMyMDUxNzU2MTZDNjk2NjY5NjU2NDIwNDM2NTcyNzQ2OTY2Njk2MzYxNzQ2NTIwNjg2MTczMjA2MjY1NjU2RTIwNDk3MzczNzU2NTY0MjA2Mjc5MjA3NDY4NjUyMDUxNTQ1MzUwMjAyMjQ3NzI2NTY1NkIyMDU1NkU2OTc2NjU3MjczNjk3NDY5NjU3MzIwNEU2NTc0Nzc2RjcyNkIyMDI4NDc1NTZFNjU3NDI5MjIyMDc3Njk3NDY4MjA1NjQxNTQyMDZFNzU2RDYyNjU3MjIwNDU0QzMwMzkzOTMwMzIzODMyMzIzMDMwMEQwNjBCMkIwNjAxMDQwMTgxQ0YxMTAxMDEwODMwMjAwNjAzNTUxRDI1MDQxOTMwMTcwNjBBMkIwNjAxMDQwMTgyMzcwQTAzMEMwNjA5MkE4NjQ4ODZGNzJGMDEwMTA1MzA4MUNCMDYwODJCMDYwMTA1MDUwNzAxMDMwNDgxQkUzMDgxQkIzMDA4MDYwNjA0MDA4RTQ2MDEwMTMwMDgwNjA2MDQwMDhFNDYwMTA0MzAxMzA2MDYwNDAwOEU0NjAxMDYzMDA5MDYwNzA0MDA4RTQ2MDEwNjAxMzA4MThGMDYwNjA0MDA4RTQ2MDEwNTMwODE4NDMwNDAxNjNBNjg3NDc0NzA3MzNBMkYyRjc3Nzc3NzJFNjg2MTcyNjk2MzYxMkU2NzcyMkY2NDZGNjM3NTZENjU2RTc0NzMyRjUxNzU2MTZDNjk2NjY5NjU2NDRFNjE3NDc1NzI2MTZDNTA0NDUzMkQ0NTRFMkU3MDY0NjYxMzAyNjU2RTMwNDAxNjNBNjg3NDc0NzA3MzNBMkYyRjc3Nzc3NzJFNjg2MTcyNjk2MzYxMkU2NzcyMkY2NDZGNjM3NTZENjU2RTc0NzMyRjUxNzU2MTZDNjk2NjY5NjU2NDRFNjE3NDc1NzI2MTZDNTA0NDUzMkQ0NTRDMkU3MDY0NjYxMzAyNjU2QzMwNEUwNjAzNTUxRDFGMDQ0NzMwNDUzMDQzQTA0MUEwM0Y4NjNENjg3NDc0NzAzQTJGMkY2MzcyNkMyRDczNzQ2NzJFNjg2MTcyNjk2MzYxMkU2NzcyMkY0ODYxNzI2OTYzNjE0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNjE2QzQzNkM2OTY1NkU3NDUzNzU2MjQzNDE1MjMxMkU2MzcyNkMzMDFEMDYwMzU1MUQwRTA0MTYwNDE0MjlGRTRGQ0I3NEZGREM5ODg0MkZGNDc2MTM4OUI1RUY1NUNDQkRBRjMwMEUwNjAzNTUxRDBGMDEwMUZGMDQwNDAzMDIwNkMwMzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMDM4MjAyMDEwMDIxMzM2OTFGOEEwMjkxNTUwREIzMUE0MTNDNDI1MENCQjc5NUU4OTMzOTY0NThDMEU1QkM0QTFDMEJENTJFRDBFNEY4MTI0RTcwQjU0RjFBNDQ5RDE0M0YyNjUwMTI1QTlEMTRGNkQ0QTZDQzMyQUEzREMzMjExQjUxMDMyNTE0NjBFQjNBODI3N0U5MEU5NEVFN0IxNUNCQUY3RkExMkQxM0ExNUY0QkI3MTIyNTgwNEM4NjQwMEUyNEEyNjMzOTRBN0E0QUNFREYzNEJDMUM5OTE2QkE4OEE3MEIzOUYzQjBFQTA4NDU4MzdEREI0Q0QyNDc0NkFGM0VDNDM4MTFCMTNDMTUwMzUyQjQyQTg4REQyMUY4RUE4NkUyRDk1RERBNEVBMTg2RDUwRUZCMDY0MUIzQjczQTk5NjU2RTc5OUQzQTlGNkM5OUU0RjhFOUZDNThDODM1MTAxMTkyNjkzQzE5REQyRTU4QzMwNzUyQzE4NjIyQzREOEUyMkY4MjQ5MkJGQkE0MTA2MzBFMUI3RUIzNTVERDBERkRCOTI5QzUzMDIyODc1NTE5ODkxRTlBNDg2RTk2OTU0NkZBNTNFNTY4NDUyRDdDODAwMTcwQUI0QkJDQzc2N0VGODlGOUVDOUI1RjVGMzJGQjQwMzg2MEFFMTZCM0Q1QjYzRTkwRjRCNkUyNEJBNjZDQzI4MzFEQ0JDRTkyOTlDOEU2MjZCMDJCNTU0NTRBMTI5RTAzODcyQUE4RkJERjMxRjZBQUMzMTkyRDJDQTM0RTA5RTUzOTUxOUU5Q0JGNjNGMkE1QTBCODJCMEU5N0QwQkNCRTA4NEU3NTY4MkYwOUQ3NTY5QUMxNUE1MURFMDZCREZBMDQ5MEY3OTlCMjk4NzY4Q0M4MDU1MEFGRTFFODU4OTc1MzA3NkVGRjY4MzJDM0NFOUUwMzY1RDA5MjkzQkIyNEVFQzM2MTk2MDU0RTNDNjJFN0NEODQ2Qzc2MjQ1MUE5QTZEMDdBNTgwQjg4NkI2RDYyRDQ5MjBBNTkyMDlCOEUyOTExQjg3QzVFMzlFOUM4MjA4MkVCMDUyRkI2ODU4NjQ5RDEwN0YxRjA0RjYyNDQxNzE4RUZBRjgyNDdFMUY3REE2MjQ5OTIxRTNCRDU4NUExODM0QzdDMDFGQjI4NDIzNUE5RkYzRUM0M0QzREU4QkNGRDA0NUFGMjZFQ0E0MjBCM0NEMTU5MzBCRDQ4NjE0OTEwOTIxOUE3M0U0NTRBNTVFQ0VDOUEyMzM1OTA2RUVBQTFEM0NBNUI4NkEzMzQ1NERCMUVERTdCODk0RTJFRTkzNzI4M0U0N0JEOUE0QTREMzMzRjZDN0VGMjNEQ0YzMTgyMTY2QzMwODIxNjY4MDIwMTAxMzA4MUQxMzA4MUJDMzEwQjMwMDkwNjAzNTUwNDA2MTMwMjQ3NTIzMTJCMzAyOTA2MDM1NTA0MEEwQzIyNDc3MjY1NjU2QjIwNTU2RTY5NzY2NTcyNzM2OTc0Njk2NTczMjA0RTY1NzQ3NzZGNzI2QjIwMjg0NzU1NkU2NTc0MjkzMTE4MzAxNjA2MDM1NTA0NjEwQzBGNTY0MTU0NDc1MjJEMzAzOTM5MzAzMjM4MzIzMjMwMzEzNzMwMzUwNjAzNTUwNDBCMEMyRTQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA0MzQxMzEyRDMwMkIwNjAzNTUwNDAzMEMyNDQ4NDE1MjQ5NDM0MTIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTYxNkMyMDQzNkM2OTY1NkU3NDIwNTM3NTYyNDM0MTIwNTIzMTAyMTA3MzdGNUYxRTA2QzU0OTBCNUU3NjY3NUJDMjIzMzI1NTMwMEQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAxMDUwMEEwODIwMTY2MzAxODA2MDkyQTg2NDg4NkY3MEQwMTA5MDMzMTBCMDYwOTJBODY0ODg2RjcwRDAxMDcwMTMwMkYwNjA5MkE4NjQ4ODZGNzBEMDEwOTA0MzEyMjA0MjAzN0NEQkYyMTBENTNFREQwRTk5RDBGRjY0OTU2OUQ0NzI1MjUxQjZEMEVDQjEzRTQ1NTRGMTM3NTY4NzQ0MjRFMzA4MjAxMTcwNjBCMkE4NjQ4ODZGNzBEMDEwOTEwMDIyRjMxODIwMTA2MzA4MjAxMDIzMDgxRkYzMDgxRkMwNDIwNEFEMzA1QzQ3RDFFNzJFMTIzNjQzMDJCRkFBNjlDMjVCNDNEOEEzQzRGNzYxQzU2QzU3MUQzNEE1MEM1MDE2QzMwODFENzMwODFDMkE0ODFCRjMwODFCQzMxMEIzMDA5MDYwMzU1MDQwNjEzMDI0NzUyMzEyQjMwMjkwNjAzNTUwNDBBMEMyMjQ3NzI2NTY1NkIyMDU1NkU2OTc2NjU3MjczNjk3NDY5NjU3MzIwNEU2NTc0Nzc2RjcyNkIyMDI4NDc1NTZFNjU3NDI5MzExODMwMTYwNjAzNTUwNDYxMEMwRjU2NDE1NDQ3NTIyRDMwMzkzOTMwMzIzODMyMzIzMDMxMzczMDM1MDYwMzU1MDQwQjBDMkU0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNDM0MTMxMkQzMDJCMDYwMzU1MDQwMzBDMjQ0ODQxNTI0OTQzNDEyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU2MTZDMjA0MzZDNjk2NTZFNzQyMDUzNzU2MjQzNDEyMDUyMzEwMjEwNzM3RjVGMUUwNkM1NDkwQjVFNzY2NzVCQzIyMzMyNTUzMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwQjA1MDAwNDgyMDEwMDc0RDBEREI2M0E5N0RENjMyNTIwQjkxQjM2RDQzQjgwQzBFMzY2MkNEMzhDRUNENzk4N0UxMjM2Rjc4RDY1MzEyQUVBMkIyQTVBRjc0MjIyMTgwMTdGM0YwRDE1NjUxNkQ3OTY3MUY2OTA1ODBEMkM1ODQ2RjNCMDQ1MzY3QzhGQ0U5NDNFRjk5MjBGOTM2MEY3MjlCM0M5RUQ2RkNGOTQ0NDBCRERCMjUxODlEN0YwRjIxMDBCOEI2QjVCRDQ2NEMzMjZGOTVGMUIzNjBDMEJGNjEwMkFEQkYzMkUyODNERDMxRUIwMUMxMjkxODdFQTkxNTgwRjMzRkU3NDc4M0I3NDYwNjZFNjM0NTg1RkJBRkY2Nzk0MzlCMTgwNTM3NUUwRTFDOTkzNEQxMjQ1M0YwODEzMUM4QjQwMTI0QjE2OUMwMzI2QjE4MDFGQTZCNzAwQjE2QkEwMzk4MkRCRjk2QUE3Njg2OEI4REY0RDBCM0Y1OTg5MTRDNTIzNzYxQTBDMDdBODRDMzFBOTZDRDQ5OEJGOTY3NzczQkY1RkFBNUVGMjYzQjBGRjUwMTYyQzg2RDkxRjU5MkNGRDJFMUY1OTE0OTEyQzEzNjQ1Mzc3OTMwQTczRjU4OTdCQUE1NDREQjY2NTU1RjcyNjdGQzdFQzEwOEU3MDFEMTM1N0RFQTE4MjEzMDEzMDgyMTJGRDA2MEIyQTg2NDg4NkY3MEQwMTA5MTAwMjBFMzE4MjEyRUMzMDgyMTJFODA2MDkyQTg2NDg4NkY3MEQwMTA3MDJBMDgyMTJEOTMwODIxMkQ1MDIwMTAzMzEwRjMwMEQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAxMDUwMDMwNzEwNjBCMkE4NjQ4ODZGNzBEMDEwOTEwMDEwNEEwNjIwNDYwMzA1RTAyMDEwMTA2MDYwNDAwOEY2NzAxMDEzMDMxMzAwRDA2MDk2MDg2NDgwMTY1MDMwNDAyMDEwNTAwMDQyMDNDNTE3REM0MzQ1MTI5OUM4MEU5QkJGNDJCMDc0MDA1MUYwQ0REQTNERUM5OEY2NEQ2OUMwODFCQjAyOTEwODYwMjA4MzI2QkY2QzU0QjJFQTlFNDE4MEYzMjMwMzIzMTMwMzUzMTMwMzEzMjM0MzEzNTM1NUEzMDAzMDIwMTAxQTA4MjBFODAzMDgyMDcxMTMwODIwNEY5QTAwMzAyMDEwMjAyMTAwQTBCMzc2MjQ2NkNEMDlCM0EyQjlFNUY1MDc3RUU3RDMwMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTBCMDUwMDMwODFDMzMxMEIzMDA5MDYwMzU1MDQwNjEzMDI0NzUyMzEyQjMwMjkwNjAzNTUwNDBBMEMyMjQ3NzI2NTY1NkIyMDU1NkU2OTc2NjU3MjczNjk3NDY5NjU3MzIwNEU2NTc0Nzc2RjcyNkIyMDI4NDc1NTZFNjU3NDI5MzExODMwMTYwNjAzNTUwNDYxMEMwRjU2NDE1NDQ3NTIyRDMwMzkzOTMwMzIzODMyMzIzMDMxMzczMDM1MDYwMzU1MDQwQjBDMkU0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNDM0MTMxMzQzMDMyMDYwMzU1MDQwMzBDMkI0ODQxNTI0OTQzNDEyMDUxNzU2MTZDNjk2NjY5NjU2NDIwNTQ2OTZENjUyMDUzNzQ2MTZENzA2OTZFNjcyMDUyNTM0MTIwNTM3NTYyNDM0MTIwNTIzMTMwMUUxNzBEMzIzMDMwMzUzMjMwMzAzODMyMzEzNTM5NUExNzBEMzMzMDMwMzUzMTM4MzAzODMyMzEzNTM5NUEzMDgxOEEzMTBCMzAwOTA2MDM1NTA0MDYxMzAyNDc1MjMxMEYzMDBEMDYwMzU1MDQwNzBDMDY0MTc0Njg2NTZFNzMzMTM3MzAzNTA2MDM1NTA0MEEwQzJFNDg2NTZDNkM2NTZFNjk2MzIwNDE2MzYxNjQ2NTZENjk2MzIwNjE2RTY0MjA1MjY1NzM2NTYxNzI2MzY4MjA0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNzMyMDQzNDEzMTMxMzAyRjA2MDM1NTA0MDMwQzI4NDg0MTUyNDk0MzQxMjA1MTc1NjE2QzY5NjY2OTY1NjQyMDU0Njk2RDY1MkQ1Mzc0NjE2RDcwNjk2RTY3MjA1NTZFNjk3NDIwMzIzMDMyMzAzMDgyMDEyMjMwMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTAxMDUwMDAzODIwMTBGMDAzMDgyMDEwQTAyODIwMTAxMDBEQkMyM0ZBNjM0M0FDODA2NTI0Mjg2ODQ1OEI4ODUyOUUyQkYxMUFGQkQ4RTVEM0RDQzM3NDM5RjY5MTE1QTU1NjY2Q0JCQjk3MjU3N0IzQkU3QTg1RUY5NjdENjlFRUQzQTVEQ0QzQTE3N0RDQzIyQThFNkU5QTMxMTlFODNEODVENzhFOUY5RjkzNzQ2RDg2QTY0QTNEODMxRTAwNEQ0Njg4QTY4MTUyNzIxMTQwNjM2QzEzQ0JBNkVBQTQ4OTU1MzJCNUI3RTFCRkYzMTY5QTBGNDczRjhENkIyMkI1RDY1MTBDMEFEQUFFODE3NkJBOTA3RjIyNjY3RUVFMUVEMkE4MjIxMzlBQzQyMjMyNDk4RkU0Qzk2MkYxODVFMTQwNjZFRDE3Q0U0QTU3NDk0M0E2NzE2NzczN0M3NjFFQTM4ODc3NDNFNTE5RTQ0MzQyMEQ4RkY5RUU1Nzc3NjM4MjQwNjJFMzJGMkEwNzFFRTU1NUM3NTlBRTI5MERCNzRBN0FDRjc3OURBREQxODJENjAyQkI1QTAxMTRDRDI0REI5RTRBRTA3RUMwMURGMTg5N0UxNURENzkxNkI3RjI4MDMyRTM3M0Y4NDU0QjI3RUYzRTcxMEI4Q0QxRjBFRTE0QjY0NDAwMTFFNDIyMENDQTM5M0NDNDc1NDQ5N0I1RjAyMDMwMTAwMDFBMzgyMDIzNjMwODIwMjMyMzAxRjA2MDM1NTFEMjMwNDE4MzAxNjgwMTREOTU4M0U1NUQ4QTc3Mjg1MDE0NzkzNjE1NjNDMjg2OTc1MkVFMDc5MzA4MTgxMDYwODJCMDYwMTA1MDUwNzAxMDEwNDc1MzA3MzMwNEUwNjA4MkIwNjAxMDUwNTA3MzAwMjg2NDI2ODc0NzQ3MDNBMkYyRjcyNjU3MDZGMkU2ODYxNzI2OTYzNjEyRTY3NzIyRjYzNjU3Mjc0NzMyRjQ4NjE3MjY5NjM2MTUxNzU2MTZDNjk2NjY5NjU2NDU0Njk2RDY1NTM3NDYxNkQ3MDY5NkU2NzUzNzU2MjQzNDE1MjMxMkU2MzcyNzQzMDIxMDYwODJCMDYwMTA1MDUwNzMwMDE4NjE1Njg3NDc0NzAzQTJGMkY2RjYzNzM3MDJFNjg2MTcyNjk2MzYxMkU2NzcyMzA1NzA2MDM1NTFEMjAwNDUwMzA0RTMwMDgwNjA2MDQwMDhGNjcwMTAxMzA0MjA2MEMyQjA2MDEwNDAxODFDRjExMDEwMTA2MDIzMDMyMzAzMDA2MDgyQjA2MDEwNTA1MDcwMjAxMTYyNDY4NzQ3NDcwNzMzQTJGMkY3MjY1NzA2RjJFNjg2MTcyNjk2MzYxMkU2NzcyMkY2NDZGNjM3NTZENjU2RTc0NzMyRjQzNTA1MzMwMTYwNjAzNTUxRDI1MDEwMUZGMDQwQzMwMEEwNjA4MkIwNjAxMDUwNTA3MDMwODMwODE5QzA2MDgyQjA2MDEwNTA1MDcwMTAzMDQ4MThGMzA4MThDMzAwODA2MDYwNDAwOEU0NjAxMDEzMDA4MDYwNjA0MDA4RTQ2MDEwNDMwNzYwNjA2MDQwMDhFNDYwMTA1MzA2QzMwMzQxNjJFNjg3NDc0NzA3MzNBMkYyRjcyNjU3MDZGMkU2ODYxNzI2OTYzNjEyRTY3NzIyRjY0NkY2Mzc1NkQ2NTZFNzQ3MzJGNTQ1MzQxNTA0NDUzMkQ0NTRFMkU3MDY0NjYxMzAyNjU2RTMwMzQxNjJFNjg3NDc0NzA3MzNBMkYyRjcyNjU3MDZGMkU2ODYxNzI2OTYzNjEyRTY3NzIyRjY0NkY2Mzc1NkQ2NTZFNzQ3MzJGNTQ1MzQxNTA0NDUzMkQ0NTRDMkU3MDY0NjYxMzAyNjU2QzMwNEMwNjAzNTUxRDFGMDQ0NTMwNDMzMDQxQTAzRkEwM0Q4NjNCNjg3NDc0NzAzQTJGMkY2MzcyNkMyRTY4NjE3MjY5NjM2MTJFNjc3MjJGNDg2MTcyNjk2MzYxNTE3NTYxNkM2OTY2Njk2NTY0NTQ2OTZENjU1Mzc0NjE2RDcwNjk2RTY3NTM3NTYyNDM0MTUyMzEyRTYzNzI2QzMwMUQwNjAzNTUxRDBFMDQxNjA0MTRCQzYwNjA4NDFGREI1RThERTJGNEQxQUNDQzk1QzVDNEY2RTIwRDA4MzAwRTA2MDM1NTFEMEYwMTAxRkYwNDA0MDMwMjA2QzAzMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwQjA1MDAwMzgyMDIwMTAwNTRGNDhCOUIwMDA0ODRBMkFBREEzMjZFNkRBRDlCQkJGQzM0OTRCRUNCRjE1OEM4MThBODEzNEY3MjhCN0M1N0ZDQzk4RjFCODU2NkUwQUZBNzU0RTVCMDY3RThCMjUyMTU4MjlEMkIyMTRFOUY5N0Q4MjIxMkE2RkU3RTlGRjZENEI0QTM4QkFEQThCQkI0NTQyNzQyOEZCOEM1MDI4N0NCRTY5REZBMDU0NUNBRDM0OTA2RkM2REUyN0NERERDMTFFNzY1MzAyQTc5OEM1OUY5M0NFMDg4QjRDRENGOTdDQjVEODU2N0FDQTI2MDk1Q0FGQjk0QzE4NUMyOTY3MzY2RTk0RTgwOTBFN0M2NzkyODBDNTMxRENBMjQ5QzAzN0UzRkNCRUU1Nzc3NUJCRkY5QjZFQUY1QTk4MzExNjVGQjdFMzg4OTJGNzdERkZBQUM0MkY0MUFGMkRDMjFDMjc1QjM5NkVDQUY2MUFEMEZCRDgxNEQ2QjA0RkIyRENERjM1Q0E4NkVCM0EyNDY5MDhEMThEOEI3NTk4MkI5MjBDRkQ2RTNDMUU3QURENkZDQzkxRDFCMEMxNjBFNTBGOUNFREIzMjUzRjU5MTk1M0E3QjM2MDcxOUVDQzA1OEIyRTc0MjVFNzkyMTYyNzA3NjU3QkMxRjM0RTNGNjEzM0JBNTQ1MThEOEM4RDg3Mzk3NkU3RTI0REIzQkMyNTM4NzAyREQwQjczMzFEMzg2NzAyRjQ3N0I2MzJBMkI5MTM3NDQ5OEVENzE5MEYxNkQ0REMyNjhGQjhBQjI4OTEyRkMyODE4N0Q5Qzk3MUQyNUI4ODMyODA5MjlGNzk2MTBBMUY4MzIzOUQ0QzU3MzI5RTFDNEUwNzU0RUFCMDEyQTk0QUM4QUEwQkMwNjgzQzcyMjMxNUQ4ODQ0QjUyQzI4RTU3QUNGQzg4QzI2MkVGRkIxODU2RTVBN0ZCOUMyREE3MTg0NUMzOUQ0QUM1OUQwMUY2OTlEQTg1OEQ5N0IyMjA2RDYwOEI0MkUxRDYwOURCMjc1MkNBNUUyM0I1RTk0NDY2ODkyREQzNDcwMDNBNkNDM0ZFNDkzMThDNDlCNkVEODhBQjhBRDUwQkUwNjI2OUQzMTkyMjU5MzUwRkUyQkI0MkU4NUI5NkMyODg0N0E3ODdENzEyNjVFNjQzRTk0MDFENzIxODk0MjRCNTY3MEZGRjY0MERBMUZEM0RCNTc0NDMzRjVDNEY1NTYxQjE1QUM0NUFBMjQyQUU5NzU2ODBENTRDNkM4NUY3NkUyMDc1MEU0ODEwNjI3RDQyNUY4REY3MDlFNzA0QTY5REQwMTNBQTBGNjUwMDUwQjQxNTRBMDMwODIwNzY3MzA4MjA1NEZBMDAzMDIwMTAyMDIxMDE4NDM1MTM4RkZDMDY0M0Y5NzNENEY4Nzc3MDQ4QzcxMzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMzA4MUE2MzEwQjMwMDkwNjAzNTUwNDA2MTMwMjQ3NTIzMTBGMzAwRDA2MDM1NTA0MDcxMzA2NDE3NDY4NjU2RTczMzE0NDMwNDIwNjAzNTUwNDBBMTMzQjQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA0MzY1NzI3NDJFMjA0MTc1NzQ2ODZGNzI2OTc0NzkzMTQwMzAzRTA2MDM1NTA0MDMxMzM3NDg2NTZDNkM2NTZFNjk2MzIwNDE2MzYxNjQ2NTZENjk2MzIwNjE2RTY0MjA1MjY1NzM2NTYxNzI2MzY4MjA0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNzMyMDUyNkY2Rjc0NDM0MTIwMzIzMDMxMzUzMDFFMTcwRDMyMzAzMDM1MzIzMDMwMzczMjM2MzMzNjVBMTcwRDMzMzUzMDM1MzEzNzMwMzczMjM2MzMzNjVBMzA4MUMzMzEwQjMwMDkwNjAzNTUwNDA2MTMwMjQ3NTIzMTJCMzAyOTA2MDM1NTA0MEEwQzIyNDc3MjY1NjU2QjIwNTU2RTY5NzY2NTcyNzM2OTc0Njk2NTczMjA0RTY1NzQ3NzZGNzI2QjIwMjg0NzU1NkU2NTc0MjkzMTE4MzAxNjA2MDM1NTA0NjEwQzBGNTY0MTU0NDc1MjJEMzAzOTM5MzAzMjM4MzIzMjMwMzEzNzMwMzUwNjAzNTUwNDBCMEMyRTQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA0MzQxMzEzNDMwMzIwNjAzNTUwNDAzMEMyQjQ4NDE1MjQ5NDM0MTIwNTE3NTYxNkM2OTY2Njk2NTY0MjA1NDY5NkQ2NTIwNTM3NDYxNkQ3MDY5NkU2NzIwNTI1MzQxMjA1Mzc1NjI0MzQxMjA1MjMxMzA4MjAyMjIzMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwMTA1MDAwMzgyMDIwRjAwMzA4MjAyMEEwMjgyMDIwMTAwOUJFQUE5NEY4NUI4NzYyODQzQzAxRjM1RkU3NEU5MTNFQzU4NkM5RkU1RDk4ODEwN0U4MjA4QUE4RDlGQTNGQjI2MkJENTU0OUFCNjE1NjUzODFGNEMwRjcxRUFCQTExMjFGQzhEQ0RFOEFBQjhGMUE2NjJGQUZEM0VCQzlDMEFGOTVDQkQ0MkVEREZEM0FDRkZFOTU1MUNFNTYwNTExMEMyOUExMUVDREEyOURBQjA1RUI2OUVCOEM3MkY2RUE3QjY2NTBFMzBDMkRCMDRGRDc0NkNEOUUzMDM4NTUyNTkyRDE2MUI3OTZGRkY5NjUwQkIzRDY0OTRDRENFOTIxNTkwNEE1NzRCNUY5RThEQjUxOUM5MDIyRUY0RDVGMUVGRjYyMDUzRjAyMUM1OEJBRDJDN0NGNzU2Mjc1NzIxNUM3NDAwN0Y3M0RBQzdCNTM4Qjc0RjA5MUZBNDIxQTU2NTJBNUI0NzFGMkIwQjNEOTVENTRCQTA4RjRGREIyODk1NDY3RkU1MjI5OURCMjJGMzJDQzc5OUNEN0UzNkM1Q0E5MjBDOTQxNTg3N0EwMzg3OTFFODI4NkYxMkYwM0ZCNEM4RkQxNTgxN0RBQzJBMUQyRTI1REUyQzcxMzMxMUM4NTU5RTQ0OTRBQTZGNzc4QjIxODU5RTY1ODE2MkJGOTQwNTlFNTBEMDA1QUQ3QTAyQTlDRjc1QzEwODkxMjNEMkQyNkVGNkM1MzBGQzA0MDg1M0VEMTg5MzAyNzU0NDIxNkQ4QjA2QzY5ODk5NjQ5OEQ4QkQ5RjhEMUQ5NDExNTBCQTFFNDMwNDJEQzQ5M0RERjdGMERBQjkxNUFFQTVCODkzQ0RFMjAyNTZEMzZCMzQ0Q0NEQjA1MjE5QTc1NkVBMTZFQ0NDQjFEREM2Q0UzODU4NTA0OTc3OUQzNTIwQTY5MDUxNjJCRDNCNTg1Q0RBNjg0RDZEOEE4OUQxQkJBNEUxQjkwMTNGMEVBREEwQjNBMjNERTRGNjZBMTUxMDEzNkUxODFDOUFCQTBGOTU5NDZDN0ExRDY0QTI0MkI3NTg3RUVCMkNGRkY3QUUzQzM0NERGMkZCNDdGNDY4REIyODE2MzMwMzM3RTk3QkRCMkQzMUY4NEU5NEQ0MEIxOTI2Nzc5Qjg1MDhBREQ4Mjg4ODQzODUxMThEMzJBRDU5RTdCNURFMDVGMjE0MzU3QTA1RDYxNEY5NzYyN0M4MjZDREVDRDkyRjFBRUIyRDE0QTAzRUQ3NTI1MEQ3QTQ4NURCMTIyMDBEQzQwQjNCMUIyQjY5Mjg3Mzc0MzFBNzgwNjMzQjg1MDJCMUI1ODNBMEY5RjkzRjM2NTBGQzRBMEQ0MTAyMDMwMTAwMDFBMzgyMDE3MDMwODIwMTZDMzAxMjA2MDM1NTFEMTMwMTAxRkYwNDA4MzAwNjAxMDFGRjAyMDEwMDMwMUYwNjAzNTUxRDIzMDQxODMwMTY4MDE0NzExNTY3QzhDOEM5QkQ3NTVENzJEMDM4MTg2QTlERjM3MTI0NTQwQjMwNkYwNjA4MkIwNjAxMDUwNTA3MDEwMTA0NjMzMDYxMzAzQzA2MDgyQjA2MDEwNTA1MDczMDAyODYzMDY4NzQ3NDcwM0EyRjJGNzI2NTcwNkYyRTY4NjE3MjY5NjM2MTJFNjc3MjJGNjM2NTcyNzQ3MzJGNDg2MTcyNjk2MzYxNTI2RjZGNzQ0MzQxMzIzMDMxMzUyRTYzNzI3NDMwMjEwNjA4MkIwNjAxMDUwNTA3MzAwMTg2MTU2ODc0NzQ3MDNBMkYyRjZGNjM3MzcwMkU2ODYxNzI2OTYzNjEyRTY3NzIzMDQ0MDYwMzU1MUQyMDA0M0QzMDNCMzAzOTA2MDQ1NTFEMjAwMDMwMzEzMDJGMDYwODJCMDYwMTA1MDUwNzAyMDExNjIzNjg3NDc0NzAzQTJGMkY3MjY1NzA2RjJFNjg2MTcyNjk2MzYxMkU2NzcyMkY2NDZGNjM3NTZENjU2RTc0NzMyRjQzNTA1MzMwMTMwNjAzNTUxRDI1MDQwQzMwMEEwNjA4MkIwNjAxMDUwNTA3MDMwODMwM0EwNjAzNTUxRDFGMDQzMzMwMzEzMDJGQTAyREEwMkI4NjI5Njg3NDc0NzAzQTJGMkY2MzcyNkMyRTY4NjE3MjY5NjM2MTJFNjc3MjJGNDg2MTcyNjk2MzYxNTI2RjZGNzQ0MzQxMzIzMDMxMzUyRTYzNzI2QzMwMUQwNjAzNTUxRDBFMDQxNjA0MTREOTU4M0U1NUQ4QTc3Mjg1MDE0NzkzNjE1NjNDMjg2OTc1MkVFMDc5MzAwRTA2MDM1NTFEMEYwMTAxRkYwNDA0MDMwMjAxODYzMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwQjA1MDAwMzgyMDIwMTAwMDFCNjUzNjQ0REZEQjRCQ0QxRjVFNEVGRkYwMkY4NDNDMzBBNDI1NDA2QkNBQkI1RjE5NEVCM0RGREMyM0JBNjhCMkU0QkQyNEU3NjhFMDcxNkUzRDk4NDNCM0FDMzI1MUExMjk0NEM0N0Q4RTY1N0REMDEwNzJCNTQzQjFGMTREMTUwMjQwNjIzMzIxMzY3QTBFOEY2MzJDOTRBMTM2MUZFQTIxNjk1QjMwOTRDRjg4QjlFREI2NUE3MDI5QkI2QUY3Nzk3ODRCQjZDQzkxMUQ1QjkyMzUwOTcxN0UyNDdDMzZFMTk1QzA2NTBDQjYxMzYyQTE1RDdDNTBFMjk3MTIyRTA2MEMyQjVGQzcxMkFFRTRDQkZBRDA5NDEzQUZBNjE1MDU0OTJEMjA0NDYyREFCQUMzNDZDMDA1RjkxOENDMDM5ODhFOTk4RTI4QkVDQzc1RUMxMTdBNkNGNDdFNUUwMEQ2OTU2N0Q2OTUxMEQyMDI3NzYyQUIwQTMwMTQ5REUzRjA4QzVCNURDNEYwNjFGMkFDNTMzMzdBN0JCMDI4MzZGQTQzRDgzQkU1QTUzMDk5REJEOTZGQ0VBNDYxNjAzNEIwNzBFREU1Q0Y4MUQ1RDIxRjMwQ0E3NzA4NzkzNkJDOTU2N0VDNzRBQzYyMUE3MTY0OTlBNEI4RjkzRUU2MkUxMjZGNkFEMkM1NjZCOTZCRjdDNkZCQUE1ODFDQkVCMjQ5NTk5MUQzMDFBNkVBOTgzODIzM0RGRTExRDJENEM1RDlCRjQ5M0UxNjJFMDMwMjM0NTM2MUQ0ODJDOUY1MkY2RTRBQUREQjlBMzUzRkZFMkZCMTAyNUU5QTBBN0JFREI5QzQ4NTI0RTM4QTkyNTk0M0RGODZGQzBCQjI3MUFDNDRCRTUzNjkxQjY2MjkyOTc3REM3REE4RkI5QTFENTg3NjQ4NkUxOTE5RkNBRDYzNTU1RjQxMDM1QTIzQkVCRUMyMDNBMzMwQjRBODUxQTBFQjgyMTNDMTUyOUQ4QzZFMzVDQ0M0Rjg0Qzc2QjU1NjU0MzFBMUNGMTRBMUY3OTlCQjMxNzVEQjUzMDZDM0M0M0MxOEI3QjM0MTlEOTI1Rjg1RDg4QUFDQzYwQjk1MzU3MURDOTI4MUE3MkM2N0UxNzJFRjdFMUY4QzJBRTY5QkRBRDlDOTE5MkE2OTJENzIxOTIwRkQ2QTY4RDY2RTdFOEM3QURFRDk0NDU2NjQ1QzJERTk1RUQ2RDE2RjU2OURFODY5QzMxQTc4QUQyOTExNkM4QjI5RkM3ODlERDI3RTc4NDRGODJERkY2NUJDMkQ0RTkzMTYxNTBDNEI5N0ZCMDc1ODJGNTU1NEU0MjMxODIwM0M2MzA4MjAzQzIwMjAxMDEzMDgxRDgzMDgxQzMzMTBCMzAwOTA2MDM1NTA0MDYxMzAyNDc1MjMxMkIzMDI5MDYwMzU1MDQwQTBDMjI0NzcyNjU2NTZCMjA1NTZFNjk3NjY1NzI3MzY5NzQ2OTY1NzMyMDRFNjU3NDc3NkY3MjZCMjAyODQ3NTU2RTY1NzQyOTMxMTgzMDE2MDYwMzU1MDQ2MTBDMEY1NjQxNTQ0NzUyMkQzMDM5MzkzMDMyMzgzMjMyMzAzMTM3MzAzNTA2MDM1NTA0MEIwQzJFNDg2NTZDNkM2NTZFNjk2MzIwNDE2MzYxNjQ2NTZENjk2MzIwNjE2RTY0MjA1MjY1NzM2NTYxNzI2MzY4MjA0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNzMyMDQzNDEzMTM0MzAzMjA2MDM1NTA0MDMwQzJCNDg0MTUyNDk0MzQxMjA1MTc1NjE2QzY5NjY2OTY1NjQyMDU0Njk2RDY1MjA1Mzc0NjE2RDcwNjk2RTY3MjA1MjUzNDEyMDUzNzU2MjQzNDEyMDUyMzEwMjEwMEEwQjM3NjI0NjZDRDA5QjNBMkI5RTVGNTA3N0VFN0QzMDBEMDYwOTYwODY0ODAxNjUwMzA0MDIwMTA1MDBBMDgyMDFCRTMwMUEwNjA5MkE4NjQ4ODZGNzBEMDEwOTAzMzEwRDA2MEIyQTg2NDg4NkY3MEQwMTA5MTAwMTA0MzAxQzA2MDkyQTg2NDg4NkY3MEQwMTA5MDUzMTBGMTcwRDMyMzEzMDM1MzEzMDMxMzIzNDMxMzUzNTVBMzAyRDA2MDkyQTg2NDg4NkY3MEQwMTA5MzQzMTIwMzAxRTMwMEQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAxMDUwMEExMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTBCMDUwMDMwMkYwNjA5MkE4NjQ4ODZGNzBEMDEwOTA0MzEyMjA0MjAwQUM0QzQzQjVDMzlERTdCNjk4RTVERDBDQUUzRjZBOUJGNkM4RDYyRjg5QkRDRDRFOTQ0MjM2QTQ2RjFEMUQxMzA4MjAxMjAwNjBCMkE4NjQ4ODZGNzBEMDEwOTEwMDIyRjMxODIwMTBGMzA4MjAxMEIzMDgyMDEwNzMwODIwMTAzMDQyMENBMzQxOThCMDVDMTFCNDQyQkZBMTU4RTQ0ODQzMERCMzIwRUFFQ0FGRDNGRjI2QTcyMUZDRTE0OENEQ0I3N0IzMDgxREUzMDgxQzlBNDgxQzYzMDgxQzMzMTBCMzAwOTA2MDM1NTA0MDYxMzAyNDc1MjMxMkIzMDI5MDYwMzU1MDQwQTBDMjI0NzcyNjU2NTZCMjA1NTZFNjk3NjY1NzI3MzY5NzQ2OTY1NzMyMDRFNjU3NDc3NkY3MjZCMjAyODQ3NTU2RTY1NzQyOTMxMTgzMDE2MDYwMzU1MDQ2MTBDMEY1NjQxNTQ0NzUyMkQzMDM5MzkzMDMyMzgzMjMyMzAzMTM3MzAzNTA2MDM1NTA0MEIwQzJFNDg2NTZDNkM2NTZFNjk2MzIwNDE2MzYxNjQ2NTZENjk2MzIwNjE2RTY0MjA1MjY1NzM2NTYxNzI2MzY4MjA0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNzMyMDQzNDEzMTM0MzAzMjA2MDM1NTA0MDMwQzJCNDg0MTUyNDk0MzQxMjA1MTc1NjE2QzY5NjY2OTY1NjQyMDU0Njk2RDY1MjA1Mzc0NjE2RDcwNjk2RTY3MjA1MjUzNDEyMDUzNzU2MjQzNDEyMDUyMzEwMjEwMEEwQjM3NjI0NjZDRDA5QjNBMkI5RTVGNTA3N0VFN0QzMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwQjA1MDAwNDgyMDEwMENEREJERTBGOEYwNzAyMzhFRTc2NjMxNUZCQzgyNkUwQ0I5QTg0RDk3NzQwNjY1NUFBQjM2N0IzRjhCQjcwN0NGNDM3RDg0RURCM0I1QTgzQjA5QjdDRDQ5MUJBMjhFQzkzQjlGQjZDODM5ODIzMzdGODFGNThDRjJDMThBQTU5NEFGRjZCRTlDREVFMzMzRkY1REY2RkJFRjExREFBNDlGRjNDOTNFQUE3MUYwNjBDMjZDOERBRUZENTU0QUQ0MjBGRkEyNDlDQTJCMzZDNzNBMTZGNkJDMzNERDhFQzkxMEI5NDJCNkE3QzZEQzQ4QUZDMkFEODgyNTcxNTQ1NTA0QUNGRTAzNTNBMzZCNDUyRjAwQURCMDUyOTI3NDEwNjI5RTA2OTA1QzI2NkM1OUEyNTU2NzBCNjVEMzQyMUM1RTgzODU1NkVBMEU0NzgxMERENDc2ODBCMTgwN0ZCRkY0NjI4ODA4RjgyRjEwMkYxQjY5Q0NBMUMxODBEMzhBNDAyN0JDNEZEQUM1Mjc2MjAwMTE4M0M3QzMyNjNFNkY0MkMzNjgzNENERUUzNDU4QTExOUZDRDNCQTg3QTNBQzc4NENFNkZBN0RGMkFEMDRENjUwQTRDQzg4NUI0ODcyN0M2OEVBNDJCNTA2MUYzMEYzNjIzQzM1REZGREE3N0VGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA+Ci9CeXRlUmFuZ2UgWzAgNDM4NyA2MzYyMSA0ODhdICAgICAgICAgICAgICAgICAgCj4+CmVuZG9iagoxMyAwIG9iago8PAovTiAxNCAwIFIKPj4KZW5kb2JqCjE0IDAgb2JqCjw8Ci9MZW5ndGggMAovVHlwZSAvWE9iamVjdAovU3VidHlwZSAvRm9ybQovQkJveCBbMC4wIDAuMCAwLjAgMC4wXQo+PgpzdHJlYW0NCg0KZW5kc3RyZWFtCmVuZG9iagp4cmVmCjAgMgowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDQwMDMgMDAwMDAgbg0KMTEgNAowMDAwMDA0MTMyIDAwMDAwIG4NCjAwMDAwMDQ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3ZFVHBUVr9H0Ovd4Mb7TbhXfhhFqWwBlXKOOeBLHBN3tkA6GjjMDN9yAtB1FFegH2eKE5dtbPkPFRckmkpHf5xqrdMZHJ09gNCmVuZHN0cmVhbQplbmRvYmoKeHJlZgowIDIKMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDY0MTExIDAwMDAwIG4NCjE1IDE1CjAwMDAwNjQyNTIgMDAwMDAgbg0KMDAwMDA2NDM5NSAwMDAwMCBuDQowMDAwMDY0NTcyIDAwMDAwIG4NCjAwMDAwNjYxNzggMDAwMDAgbg0KMDAwMDA2ODA0NiAwMDAwMCBuDQowMDAwMDcwMjAxIDAwMDAwIG4NCjAwMDAwNzIxMzcgMDAwMDAgbg0KMDAwMDA3MzcxNiAwMDAwMCBuDQowMDAwMDc1MjMwIDAwMDAwIG4NCjAwMDAwNzcxODQgMDAwMDAgbg0KMDAwMDA3ODcwOSAwMDAwMCBuDQowMDAwMDgwMzY5IDAwMDAwIG4NCjAwMDAwODI0MTEgMDAwMDAgbg0KMDAwMDA4NTA2MyAwMDAwMCBuDQowMDAwMDg3MTU5IDAwMDAwIG4NCnRyYWlsZXIKPDwKL1NpemUgMzAKL0luZm8gMTAgMCBSCi9Sb290IDEgMCBSCi9JRCBbPEMxN0U5NTU4RTJEMDdBNDg3QTREQzAyMzk5OUIxMzdDPiA8REJCMjg5MUZBRDkwOEIxQTAzMzI0OTc1MzQ2NEEwMEQ+XQovUHJldiA2MzgxOAo+PgpzdGFydHhyZWYKODkxOTAKJSVFT0YKDQoxIDAgb2JqCjw8Ci9PdXRsaW5lcyAzIDAgUgovUGFnZXMgMiAwIFIKL1R5cGUgL0NhdGFsb2cKL1BhZ2VNb2RlIC9Vc2VOb25lCi9BY3JvRm9ybSA8PAovRmllbGRzIFsxMSAwIFIgMzAgMCBSXQovU2lnRmxhZ3MgMwovREEgKC9IZWx2IDAgVGYgMCBnICkKL0RSIDMxIDAgUgo+PgovRFNTIDE1IDAgUgo+PgplbmRvYmoKMzAgMCBvYmoKPDwKL0ZUIC9TaWcKL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9XaWRnZXQKL0YgMTMyCi9UIChTaWduYXR1cmUyKQovViAzMiAwIFIKL1AgNiAwIFIKL1JlY3QgWzAuMCAwLjAgMC4wIDAuMF0KL0FQIDMzIDAgUgo+PgplbmRvYmoKMzEgMCBvYmoKPDwKL0ZvbnQgMzQgMCBSCj4+CmVuZG9iagozMiAwIG9iago8PAovVHlwZSAvRG9jVGltZVN0YW1wCi9GaWx0ZXIgL0Fkb2JlLlBQS0xpdGUKL1N1YkZpbHRlciAvRVRTSS5SRkMzMTYxCi9Db250ZW50cyA8MzA4MjEyRTgwNjA5MkE4NjQ4ODZGNzBEMDEwNzAyQTA4MjEyRDkzMDgyMTJENTAyMDEwMzMxMEYzMDBEMDYwOTYwODY0ODAxNjUwMzA0MDIwMTA1MDAzMDcxMDYwQjJBODY0ODg2RjcwRDAxMDkxMDAxMDRBMDYyMDQ2MDMwNUUwMjAxMDEwNjA2MDQwMDhGNjcwMTAxMzAzMTMwMEQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAxMDUwMDA0MjBDQkFCODg0NTZCNDhGRDMwQkVEMTkzMTFGQzRGNjM5MDYzQTc1NEMxQzkxNzgwMzVGNjA3QkJDQ0M5Mzk2RjZEMDIwODIyRUM2M0NENkY5ODRGMjYxODBGMzIzMDMyMzEzMDM1MzEzMDMxMzIzNDMxMzUzOTVBMzAwMzAyMDEwMUEwODIwRTgwMzA4MjA3MTEzMDgyMDRGOUEwMDMwMjAxMDIwMjEwMEEwQjM3NjI0NjZDRDA5QjNBMkI5RTVGNTA3N0VFN0QzMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwQjA1MDAzMDgxQzMzMTBCMzAwOTA2MDM1NTA0MDYxMzAyNDc1MjMxMkIzMDI5MDYwMzU1MDQwQTBDMjI0NzcyNjU2NTZCMjA1NTZFNjk3NjY1NzI3MzY5NzQ2OTY1NzMyMDRFNjU3NDc3NkY3MjZCMjAyODQ3NTU2RTY1NzQyOTMxMTgzMDE2MDYwMzU1MDQ2MTBDMEY1NjQxNTQ0NzUyMkQzMDM5MzkzMDMyMzgzMjMyMzAzMTM3MzAzNTA2MDM1NTA0MEIwQzJFNDg2NTZDNkM2NTZFNjk2MzIwNDE2MzYxNjQ2NTZENjk2MzIwNjE2RTY0MjA1MjY1NzM2NTYxNzI2MzY4MjA0OTZFNzM3NDY5NzQ3NTc0Njk2RjZFNzMyMDQzNDEzMTM0MzAzMjA2MDM1NTA0MDMwQzJCNDg0MTUyNDk0MzQxMjA1MTc1NjE2QzY5NjY2OTY1NjQyMDU0Njk2RDY1MjA1Mzc0NjE2RDcwNjk2RTY3MjA1MjUzNDEyMDUzNzU2MjQzNDEyMDUyMzEzMDFFMTcwRDMyMzAzMDM1MzIzMDMwMzgzMjMxMzUzOTVBMTcwRDMzMzAzMDM1MzEzODMwMzgzMjMxMzUzOTVBMzA4MThBMzEwQjMwMDkwNjAzNTUwNDA2MTMwMjQ3NTIzMTBGMzAwRDA2MDM1NTA0MDcwQzA2NDE3NDY4NjU2RTczMzEzNzMwMzUwNjAzNTUwNDBBMEMyRTQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA0MzQxMzEzMTMwMkYwNjAzNTUwNDAzMEMyODQ4NDE1MjQ5NDM0MTIwNTE3NTYxNkM2OTY2Njk2NTY0MjA1NDY5NkQ2NTJENTM3NDYxNkQ3MDY5NkU2NzIwNTU2RTY5NzQyMDMyMzAzMjMwMzA4MjAxMjIzMDBEMDYwOTJBODY0ODg2RjcwRDAxMDEwMTA1MDAwMzgyMDEwRjAwMzA4MjAxMEEwMjgyMDEwMTAwREJDMjNGQTYzNDNBQzgwNjUyNDI4Njg0NThCODg1MjlFMkJGMTFBRkJEOEU1RDNEQ0MzNzQzOUY2OTExNUE1NTY2NkNCQkI5NzI1NzdCM0JFN0E4NUVGOTY3RDY5RUVEM0E1RENEM0ExNzdEQ0MyMkE4RTZFOUEzMTE5RTgzRDg1RDc4RTlGOUY5Mzc0NkQ4NkE2NEEzRDgzMUUwMDRENDY4OEE2ODE1MjcyMTE0MDYzNkMxM0NCQTZFQUE0ODk1NTMyQjVCN0UxQkZGMzE2OUEwRjQ3M0Y4RDZCMjJCNUQ2NTEwQzBBREFBRTgxNzZCQTkwN0YyMjY2N0VFRTFFRDJBODIyMTM5QUM0MjIzMjQ5OEZFNEM5NjJGMTg1RTE0MDY2RUQxN0NFNEE1NzQ5NDNBNjcxNjc3MzdDNzYxRUEzODg3NzQzRTUxOUU0NDM0MjBEOEZGOUVFNTc3NzYzODI0MDYyRTMyRjJBMDcxRUU1NTVDNzU5QUUyOTBEQjc0QTdBQ0Y3NzlEQUREMTgyRDYwMkJCNUEwMTE0Q0QyNERCOUU0QUUwN0VDMDFERjE4OTdFMTVERDc5MTZCN0YyODAzMkUzNzNGODQ1NEIyN0VGM0U3MTBCOENEMUYwRUUxNEI2NDQwMDExRTQyMjBDQ0EzOTNDQzQ3NTQ0OTdCNUYwMjAzMDEwMDAxQTM4MjAyMzYzMDgyMDIzMjMwMUYwNjAzNTUxRDIzMDQxODMwMTY4MDE0RDk1ODNFNTVEOEE3NzI4NTAxNDc5MzYxNTYzQzI4Njk3NTJFRTA3OTMwODE4MTA2MDgyQjA2MDEwNTA1MDcwMTAxMDQ3NTMwNzMzMDRFMDYwODJCMDYwMTA1MDUwNzMwMDI4NjQyNjg3NDc0NzAzQTJGMkY3MjY1NzA2RjJFNjg2MTcyNjk2MzYxMkU2NzcyMkY2MzY1NzI3NDczMkY0ODYxNzI2OTYzNjE1MTc1NjE2QzY5NjY2OTY1NjQ1NDY5NkQ2NTUzNzQ2MTZENzA2OTZFNjc1Mzc1NjI0MzQxNTIzMTJFNjM3Mjc0MzAyMTA2MDgyQjA2MDEwNTA1MDczMDAxODYxNTY4NzQ3NDcwM0EyRjJGNkY2MzczNzAyRTY4NjE3MjY5NjM2MTJFNjc3MjMwNTcwNjAzNTUxRDIwMDQ1MDMwNEUzMDA4MDYwNjA0MDA4RjY3MDEwMTMwNDIwNjBDMkIwNjAxMDQwMTgxQ0YxMTAxMDEwNjAyMzAzMjMwMzAwNjA4MkIwNjAxMDUwNTA3MDIwMTE2MjQ2ODc0NzQ3MDczM0EyRjJGNzI2NTcwNkYyRTY4NjE3MjY5NjM2MTJFNjc3MjJGNjQ2RjYzNzU2RDY1NkU3NDczMkY0MzUwNTMzMDE2MDYwMzU1MUQyNTAxMDFGRjA0MEMzMDBBMDYwODJCMDYwMTA1MDUwNzAzMDgzMDgxOUMwNjA4MkIwNjAxMDUwNTA3MDEwMzA0ODE4RjMwODE4QzMwMDgwNjA2MDQwMDhFNDYwMTAxMzAwODA2MDYwNDAwOEU0NjAxMDQzMDc2MDYwNjA0MDA4RTQ2MDEwNTMwNkMzMDM0MTYyRTY4NzQ3NDcwNzMzQTJGMkY3MjY1NzA2RjJFNjg2MTcyNjk2MzYxMkU2NzcyMkY2NDZGNjM3NTZENjU2RTc0NzMyRjU0NTM0MTUwNDQ1MzJENDU0RTJFNzA2NDY2MTMwMjY1NkUzMDM0MTYyRTY4NzQ3NDcwNzMzQTJGMkY3MjY1NzA2RjJFNjg2MTcyNjk2MzYxMkU2NzcyMkY2NDZGNjM3NTZENjU2RTc0NzMyRjU0NTM0MTUwNDQ1MzJENDU0QzJFNzA2NDY2MTMwMjY1NkMzMDRDMDYwMzU1MUQxRjA0NDUzMDQzMzA0MUEwM0ZBMDNEODYzQjY4NzQ3NDcwM0EyRjJGNjM3MjZDMkU2ODYxNzI2OTYzNjEyRTY3NzIyRjQ4NjE3MjY5NjM2MTUxNzU2MTZDNjk2NjY5NjU2NDU0Njk2RDY1NTM3NDYxNkQ3MDY5NkU2NzUzNzU2MjQzNDE1MjMxMkU2MzcyNkMzMDFEMDYwMzU1MUQwRTA0MTYwNDE0QkM2MDYwODQxRkRCNUU4REUyRjREMUFDQ0M5NUM1QzRGNkUyMEQwODMwMEUwNjAzNTUxRDBGMDEwMUZGMDQwNDAzMDIwNkMwMzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMDM4MjAyMDEwMDU0RjQ4QjlCMDAwNDg0QTJBQURBMzI2RTZEQUQ5QkJCRkMzNDk0QkVDQkYxNThDODE4QTgxMzRGNzI4QjdDNTdGQ0M5OEYxQjg1NjZFMEFGQTc1NEU1QjA2N0U4QjI1MjE1ODI5RDJCMjE0RTlGOTdEODIyMTJBNkZFN0U5RkY2RDRCNEEzOEJBREE4QkJCNDU0Mjc0MjhGQjhDNTAyODdDQkU2OURGQTA1NDVDQUQzNDkwNkZDNkRFMjdDREREQzExRTc2NTMwMkE3OThDNTlGOTNDRTA4OEI0Q0RDRjk3Q0I1RDg1NjdBQ0EyNjA5NUNBRkI5NEMxODVDMjk2NzM2NkU5NEU4MDkwRTdDNjc5MjgwQzUzMURDQTI0OUMwMzdFM0ZDQkVFNTc3NzVCQkZGOUI2RUFGNUE5ODMxMTY1RkI3RTM4ODkyRjc3REZGQUFDNDJGNDFBRjJEQzIxQzI3NUIzOTZFQ0FGNjFBRDBGQkQ4MTRENkIwNEZCMkRDREYzNUNBODZFQjNBMjQ2OTA4RDE4RDhCNzU5ODJCOTIwQ0ZENkUzQzFFN0FERDZGQ0M5MUQxQjBDMTYwRTUwRjlDRURCMzI1M0Y1OTE5NTNBN0IzNjA3MTlFQ0MwNThCMkU3NDI1RTc5MjE2MjcwNzY1N0JDMUYzNEUzRjYxMzNCQTU0NTE4RDhDOEQ4NzM5NzZFN0UyNERCM0JDMjUzODcwMkREMEI3MzMxRDM4NjcwMkY0NzdCNjMyQTJCOTEzNzQ0OThFRDcxOTBGMTZENERDMjY4RkI4QUIyODkxMkZDMjgxODdEOUM5NzFEMjVCODgzMjgwOTI5Rjc5NjEwQTFGODMyMzlENEM1NzMyOUUxQzRFMDc1NEVBQjAxMkE5NEFDOEFBMEJDMDY4M0M3MjIzMTVEODg0NEI1MkMyOEU1N0FDRkM4OEMyNjJFRkZCMTg1NkU1QTdGQjlDMkRBNzE4NDVDMzlENEFDNTlEMDFGNjk5REE4NThEOTdCMjIwNkQ2MDhCNDJFMUQ2MDlEQjI3NTJDQTVFMjNCNUU5NDQ2Njg5MkREMzQ3MDAzQTZDQzNGRTQ5MzE4QzQ5QjZFRDg4QUI4QUQ1MEJFMDYyNjlEMzE5MjI1OTM1MEZFMkJCNDJFODVCOTZDMjg4NDdBNzg3RDcxMjY1RTY0M0U5NDAxRDcyMTg5NDI0QjU2NzBGRkY2NDBEQTFGRDNEQjU3NDQzM0Y1QzRGNTU2MUIxNUFDNDVBQTI0MkFFOTc1NjgwRDU0QzZDODVGNzZFMjA3NTBFNDgxMDYyN0Q0MjVGOERGNzA5RTcwNEE2OUREMDEzQUEwRjY1MDA1MEI0MTU0QTAzMDgyMDc2NzMwODIwNTRGQTAwMzAyMDEwMjAyMTAxODQzNTEzOEZGQzA2NDNGOTczRDRGODc3NzA0OEM3MTMwMEQwNjA5MkE4NjQ4ODZGNzBEMDEwMTBCMDUwMDMwODFBNjMxMEIzMDA5MDYwMzU1MDQwNjEzMDI0NzUyMzEwRjMwMEQwNjAzNTUwNDA3MTMwNjQxNzQ2ODY1NkU3MzMxNDQzMDQyMDYwMzU1MDQwQTEzM0I0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNDM2NTcyNzQyRTIwNDE3NTc0Njg2RjcyNjk3NDc5MzE0MDMwM0UwNjAzNTUwNDAzMTMzNzQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA1MjZGNkY3NDQzNDEyMDMyMzAzMTM1MzAxRTE3MEQzMjMwMzAzNTMyMzAzMDM3MzIzNjMzMzY1QTE3MEQzMzM1MzAzNTMxMzczMDM3MzIzNjMzMzY1QTMwODFDMzMxMEIzMDA5MDYwMzU1MDQwNjEzMDI0NzUyMzEyQjMwMjkwNjAzNTUwNDBBMEMyMjQ3NzI2NTY1NkIyMDU1NkU2OTc2NjU3MjczNjk3NDY5NjU3MzIwNEU2NTc0Nzc2RjcyNkIyMDI4NDc1NTZFNjU3NDI5MzExODMwMTYwNjAzNTUwNDYxMEMwRjU2NDE1NDQ3NTIyRDMwMzkzOTMwMzIzODMyMzIzMDMxMzczMDM1MDYwMzU1MDQwQjBDMkU0ODY1NkM2QzY1NkU2OTYzMjA0MTYzNjE2NDY1NkQ2OTYzMjA2MTZFNjQyMDUyNjU3MzY1NjE3MjYzNjgyMDQ5NkU3Mzc0Njk3NDc1NzQ2OTZGNkU3MzIwNDM0MTMxMzQzMDMyMDYwMzU1MDQwMzBDMkI0ODQxNTI0OTQzNDEyMDUxNzU2MTZDNjk2NjY5NjU2NDIwNTQ2OTZENjUyMDUzNzQ2MTZENzA2OTZFNjcyMDUyNTM0MTIwNTM3NTYyNDM0MTIwNTIzMTMwODIwMjIyMzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMDEwNTAwMDM4MjAyMEYwMDMwODIwMjBBMDI4MjAyMDEwMDlCRUFBOTRGODVCODc2Mjg0M0MwMUYzNUZFNzRFOTEzRUM1ODZDOUZFNUQ5ODgxMDdFODIwOEFBOEQ5RkEzRkIyNjJCRDU1NDlBQjYxNTY1MzgxRjRDMEY3MUVBQkExMTIxRkM4RENERThBQUI4RjFBNjYyRkFGRDNFQkM5QzBBRjk1Q0JENDJFRERGRDNBQ0ZGRTk1NTFDRTU2MDUxMTBDMjlBMTFFQ0RBMjlEQUIwNUVCNjlFQjhDNzJGNkVBN0I2NjUwRTMwQzJEQjA0RkQ3NDZDRDlFMzAzODU1MjU5MkQxNjFCNzk2RkZGOTY1MEJCM0Q2NDk0Q0RDRTkyMTU5MDRBNTc0QjVGOUU4REI1MTlDOTAyMkVGNEQ1RjFFRkY2MjA1M0YwMjFDNThCQUQyQzdDRjc1NjI3NTcyMTVDNzQwMDdGNzNEQUM3QjUzOEI3NEYwOTFGQTQyMUE1NjUyQTVCNDcxRjJCMEIzRDk1RDU0QkEwOEY0RkRCMjg5NTQ2N0ZFNTIyOTlEQjIyRjMyQ0M3OTlDRDdFMzZDNUNBOTIwQzk0MTU4NzdBMDM4NzkxRTgyODZGMTJGMDNGQjRDOEZEMTU4MTdEQUMyQTFEMkUyNURFMkM3MTMzMTFDODU1OUU0NDk0QUE2Rjc3OEIyMTg1OUU2NTgxNjJCRjk0MDU5RTUwRDAwNUFEN0EwMkE5Q0Y3NUMxMDg5MTIzRDJEMjZFRjZDNTMwRkMwNDA4NTNFRDE4OTMwMjc1NDQyMTZEOEIwNkM2OTg5OTY0OThEOEJEOUY4RDFEOTQxMTUwQkExRTQzMDQyREM0OTNEREY3RjBEQUI5MTVBRUE1Qjg5M0NERTIwMjU2RDM2QjM0NENDREIwNTIxOUE3NTZFQTE2RUNDQ0IxRERDNkNFMzg1ODUwNDk3NzlEMzUyMEE2OTA1MTYyQkQzQjU4NUNEQTY4NEQ2RDhBODlEMUJCQTRFMUI5MDEzRjBFQURBMEIzQTIzREU0RjY2QTE1MTAxMzZFMTgxQzlBQkEwRjk1OTQ2QzdBMUQ2NEEyNDJCNzU4N0VFQjJDRkZGN0FFM0MzNDRERjJGQjQ3RjQ2OERCMjgxNjMzMDMzN0U5N0JEQjJEMzFGODRFOTRENDBCMTkyNjc3OUI4NTA4QUREODI4ODg0Mzg1MTE4RDMyQUQ1OUU3QjVERTA1RjIxNDM1N0EwNUQ2MTRGOTc2MjdDODI2Q0RFQ0Q5MkYxQUVCMkQxNEEwM0VENzUyNTBEN0E0ODVEQjEyMjAwREM0MEIzQjFCMkI2OTI4NzM3NDMxQTc4MDYzM0I4NTAyQjFCNTgzQTBGOUY5M0YzNjUwRkM0QTBENDEwMjAzMDEwMDAxQTM4MjAxNzAzMDgyMDE2QzMwMTIwNjAzNTUxRDEzMDEwMUZGMDQwODMwMDYwMTAxRkYwMjAxMDAzMDFGMDYwMzU1MUQyMzA0MTgzMDE2ODAxNDcxMTU2N0M4QzhDOUJENzU1RDcyRDAzODE4NkE5REYzNzEyNDU0MEIzMDZGMDYwODJCMDYwMTA1MDUwNzAxMDEwNDYzMzA2MTMwM0MwNjA4MkIwNjAxMDUwNTA3MzAwMjg2MzA2ODc0NzQ3MDNBMkYyRjcyNjU3MDZGMkU2ODYxNzI2OTYzNjEyRTY3NzIyRjYzNjU3Mjc0NzMyRjQ4NjE3MjY5NjM2MTUyNkY2Rjc0NDM0MTMyMzAzMTM1MkU2MzcyNzQzMDIxMDYwODJCMDYwMTA1MDUwNzMwMDE4NjE1Njg3NDc0NzAzQTJGMkY2RjYzNzM3MDJFNjg2MTcyNjk2MzYxMkU2NzcyMzA0NDA2MDM1NTFEMjAwNDNEMzAzQjMwMzkwNjA0NTUxRDIwMDAzMDMxMzAyRjA2MDgyQjA2MDEwNTA1MDcwMjAxMTYyMzY4NzQ3NDcwM0EyRjJGNzI2NTcwNkYyRTY4NjE3MjY5NjM2MTJFNjc3MjJGNjQ2RjYzNzU2RDY1NkU3NDczMkY0MzUwNTMzMDEzMDYwMzU1MUQyNTA0MEMzMDBBMDYwODJCMDYwMTA1MDUwNzAzMDgzMDNBMDYwMzU1MUQxRjA0MzMzMDMxMzAyRkEwMkRBMDJCODYyOTY4NzQ3NDcwM0EyRjJGNjM3MjZDMkU2ODYxNzI2OTYzNjEyRTY3NzIyRjQ4NjE3MjY5NjM2MTUyNkY2Rjc0NDM0MTMyMzAzMTM1MkU2MzcyNkMzMDFEMDYwMzU1MUQwRTA0MTYwNDE0RDk1ODNFNTVEOEE3NzI4NTAxNDc5MzYxNTYzQzI4Njk3NTJFRTA3OTMwMEUwNjAzNTUxRDBGMDEwMUZGMDQwNDAzMDIwMTg2MzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMDM4MjAyMDEwMDAxQjY1MzY0NERGREI0QkNEMUY1RTRFRkZGMDJGODQzQzMwQTQyNTQwNkJDQUJCNUYxOTRFQjNERkRDMjNCQTY4QjJFNEJEMjRFNzY4RTA3MTZFM0Q5ODQzQjNBQzMyNTFBMTI5NDRDNDdEOEU2NTdERDAxMDcyQjU0M0IxRjE0RDE1MDI0MDYyMzMyMTM2N0EwRThGNjMyQzk0QTEzNjFGRUEyMTY5NUIzMDk0Q0Y4OEI5RURCNjVBNzAyOUJCNkFGNzc5Nzg0QkI2Q0M5MTFENUI5MjM1MDk3MTdFMjQ3QzM2RTE5NUMwNjUwQ0I2MTM2MkExNUQ3QzUwRTI5NzEyMkUwNjBDMkI1RkM3MTJBRUU0Q0JGQUQwOTQxM0FGQTYxNTA1NDkyRDIwNDQ2MkRBQkFDMzQ2QzAwNUY5MThDQzAzOTg4RTk5OEUyOEJFQ0M3NUVDMTE3QTZDRjQ3RTVFMDBENjk1NjdENjk1MTBEMjAyNzc2MkFCMEEzMDE0OURFM0YwOEM1QjVEQzRGMDYxRjJBQzUzMzM3QTdCQjAyODM2RkE0M0Q4M0JFNUE1MzA5OURCRDk2RkNFQTQ2MTYwMzRCMDcwRURFNUNGODFENUQyMUYzMENBNzcwODc5MzZCQzk1NjdFQzc0QUM2MjFBNzE2NDk5QTRCOEY5M0VFNjJFMTI2RjZBRDJDNTY2Qjk2QkY3QzZGQkFBNTgxQ0JFQjI0OTU5OTFEMzAxQTZFQTk4MzgyMzNERkUxMUQyRDRDNUQ5QkY0OTNFMTYyRTAzMDIzNDUzNjFENDgyQzlGNTJGNkU0QUFEREI5QTM1M0ZGRTJGQjEwMjVFOUEwQTdCRURCOUM0ODUyNEUzOEE5MjU5NDNERjg2RkMwQkIyNzFBQzQ0QkU1MzY5MUI2NjI5Mjk3N0RDN0RBOEZCOUExRDU4NzY0ODZFMTkxOUZDQUQ2MzU1NUY0MTAzNUEyM0JFQkVDMjAzQTMzMEI0QTg1MUEwRUI4MjEzQzE1MjlEOEM2RTM1Q0NDNEY4NEM3NkI1NTY1NDMxQTFDRjE0QTFGNzk5QkIzMTc1REI1MzA2QzNDNDNDMThCN0IzNDE5RDkyNUY4NUQ4OEFBQ0M2MEI5NTM1NzFEQzkyODFBNzJDNjdFMTcyRUY3RTFGOEMyQUU2OUJEQUQ5QzkxOTJBNjkyRDcyMTkyMEZENkE2OEQ2NkU3RThDN0FERUQ5NDQ1NjY0NUMyREU5NUVENkQxNkY1NjlERTg2OUMzMUE3OEFEMjkxMTZDOEIyOUZDNzg5REQyN0U3ODQ0RjgyREZGNjVCQzJENEU5MzE2MTUwQzRCOTdGQjA3NTgyRjU1NTRFNDIzMTgyMDNDNjMwODIwM0MyMDIwMTAxMzA4MUQ4MzA4MUMzMzEwQjMwMDkwNjAzNTUwNDA2MTMwMjQ3NTIzMTJCMzAyOTA2MDM1NTA0MEEwQzIyNDc3MjY1NjU2QjIwNTU2RTY5NzY2NTcyNzM2OTc0Njk2NTczMjA0RTY1NzQ3NzZGNzI2QjIwMjg0NzU1NkU2NTc0MjkzMTE4MzAxNjA2MDM1NTA0NjEwQzBGNTY0MTU0NDc1MjJEMzAzOTM5MzAzMjM4MzIzMjMwMzEzNzMwMzUwNjAzNTUwNDBCMEMyRTQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA0MzQxMzEzNDMwMzIwNjAzNTUwNDAzMEMyQjQ4NDE1MjQ5NDM0MTIwNTE3NTYxNkM2OTY2Njk2NTY0MjA1NDY5NkQ2NTIwNTM3NDYxNkQ3MDY5NkU2NzIwNTI1MzQxMjA1Mzc1NjI0MzQxMjA1MjMxMDIxMDBBMEIzNzYyNDY2Q0QwOUIzQTJCOUU1RjUwNzdFRTdEMzAwRDA2MDk2MDg2NDgwMTY1MDMwNDAyMDEwNTAwQTA4MjAxQkUzMDFBMDYwOTJBODY0ODg2RjcwRDAxMDkwMzMxMEQwNjBCMkE4NjQ4ODZGNzBEMDEwOTEwMDEwNDMwMUMwNjA5MkE4NjQ4ODZGNzBEMDEwOTA1MzEwRjE3MEQzMjMxMzAzNTMxMzAzMTMyMzQzMTM1Mzk1QTMwMkQwNjA5MkE4NjQ4ODZGNzBEMDEwOTM0MzEyMDMwMUUzMDBEMDYwOTYwODY0ODAxNjUwMzA0MDIwMTA1MDBBMTBEMDYwOTJBODY0ODg2RjcwRDAxMDEwQjA1MDAzMDJGMDYwOTJBODY0ODg2RjcwRDAxMDkwNDMxMjIwNDIwOEUxNkYwNzYwRDkyNEJFNjQyMjlGRjZBNkFCRkFENkNEODZFODI1OURCODFFRTU5ODE5NDcxQkI1MENFQTkyMzMwODIwMTIwMDYwQjJBODY0ODg2RjcwRDAxMDkxMDAyMkYzMTgyMDEwRjMwODIwMTBCMzA4MjAxMDczMDgyMDEwMzA0MjBDQTM0MTk4QjA1QzExQjQ0MkJGQTE1OEU0NDg0MzBEQjMyMEVBRUNBRkQzRkYyNkE3MjFGQ0UxNDhDRENCNzdCMzA4MURFMzA4MUM5QTQ4MUM2MzA4MUMzMzEwQjMwMDkwNjAzNTUwNDA2MTMwMjQ3NTIzMTJCMzAyOTA2MDM1NTA0MEEwQzIyNDc3MjY1NjU2QjIwNTU2RTY5NzY2NTcyNzM2OTc0Njk2NTczMjA0RTY1NzQ3NzZGNzI2QjIwMjg0NzU1NkU2NTc0MjkzMTE4MzAxNjA2MDM1NTA0NjEwQzBGNTY0MTU0NDc1MjJEMzAzOTM5MzAzMjM4MzIzMjMwMzEzNzMwMzUwNjAzNTUwNDBCMEMyRTQ4NjU2QzZDNjU2RTY5NjMyMDQxNjM2MTY0NjU2RDY5NjMyMDYxNkU2NDIwNTI2NTczNjU2MTcyNjM2ODIwNDk2RTczNzQ2OTc0NzU3NDY5NkY2RTczMjA0MzQxMzEzNDMwMzIwNjAzNTUwNDAzMEMyQjQ4NDE1MjQ5NDM0MTIwNTE3NTYxNkM2OTY2Njk2NTY0MjA1NDY5NkQ2NTIwNTM3NDYxNkQ3MDY5NkU2NzIwNTI1MzQxMjA1Mzc1NjI0MzQxMjA1MjMxMDIxMDBBMEIzNzYyNDY2Q0QwOUIzQTJCOUU1RjUwNzdFRTdEMzAwRDA2MDkyQTg2NDg4NkY3MEQwMTAxMEIwNTAwMDQ4MjAxMDAxMDQxQTQwMkFDMzhERTBFNTExRDRENTg3RDM5MUZFOEM0ODEyQ0MxNzNBMDU3RTY4QTQ3QjgwNEFCQ0FERDJBMjlCQjE0Mjk4NDk4MzJERDc0NUIwQjVERDEzMDBCNTQ0NzZBOUExNDlENkZGRkE5RjM0Mjg4QjUxQ0I5QjQ0NzE3NDJGRTkyMzBDMzM1REJGNDE1RDk2QTEwMjc4QjNFRjczMjdDNTNFRUQ0MDcwRUJBMjdEQUVGNzcxMENCQjE5REEwMjBGNzdEMjZDQjE2NDlFNjFCRDhFREJGQzMyNTI3QjVEMjU4ODM0NjU1QzBCQ0QyMTgzQzY5REIxOTVENjM1QTFDMkM4MTlGNkIxQUM0NkFCQ0I2NTBEMUNDQjc2NTI1ODM3QzU3MkRDQkUyNEZBMTI3MzI2MjBGNEQ3OTY4Qjg5QkIxREJBRDcxN0YzQ0VCM0NFRTM0OTczRUNDRDBCNTgwMTY5QUE4OEM5RTgxNzY4RDM2NTk3MjE0QTNDOUQ3RjdENzEyMzU4RkJBMkNGQ0ZEMUZBNUU4NDlCNEMwOUIyRkI1MkU5QTRCNjIzRTgyM0MzMTZERDJGMzU0NzU1OUI0QTNGRTk3MkIwNDAwMUE2RTRBOTA1RUJCODQ4RUMwQzBBNjk2NzhDQzlFRTA4NDdCOTgwQzJBRUFCNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA+Ci9CeXRlUmFuZ2UgWzAgOTAxNDkgMTA5MDk1IDc5MF0gICAgICAgICAgICAgICAgCj4+CmVuZG9iagozMyAwIG9iago8PAovTiAzNSAwIFIKPj4KZW5kb2JqCjM0IDAgb2JqCjw8Ci9IZWx2IDM2IDAgUgovWmFEYiAzNyAwIFIKPj4KZW5kb2JqCjM1IDAgb2JqCjw8Ci9MZW5ndGggMAovVHlwZSAvWE9iamVjdAovU3VidHlwZSAvRm9ybQovQkJveCBbMC4wIDAuMCAwLjAgMC4wXQo+PgpzdHJlYW0NCg0KZW5kc3RyZWFtCmVuZG9iagozNiAwIG9iago8PAovVHlwZSAvRm9udAovU3VidHlwZSAvVHlwZTEKL0Jhc2VGb250IC9IZWx2ZXRpY2EKL0VuY29kaW5nIC9XaW5BbnNpRW5jb2RpbmcKPj4KZW5kb2JqCjM3IDAgb2JqCjw8Ci9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMQovQmFzZUZvbnQgL1phcGZEaW5nYmF0cwo+PgplbmRvYmoKeHJlZgowIDIKMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDg5NzA1IDAwMDAwIG4NCjMwIDgKMDAwMDA4OTg4NiAwMDAwMCBuDQowMDAwMDkwMDI0IDAwMDAwIG4NCjAwMDAwOTAwNTkgMDAwMDAgbg0KMDAwMDEwOTE1NCAwMDAwMCBuDQowMDAwMTA5MTg2IDAwMDAwIG4NCjAwMDAxMDkyMzQgMDAwMDAgbg0KMDAwMDEwOTM0MCAwMDAwMCBuDQowMDAwMTA5NDM4IDAwMDAwIG4NCnRyYWlsZXIKPDwKL1NpemUgMzgKL0luZm8gMTAgMCBSCi9Sb290IDEgMCBSCi9JRCBbPEMxN0U5NTU4RTJEMDdBNDg3QTREQzAyMzk5OUIxMzdDPiA8QkQ5MkM4QkJCMDQwQzVGREQwNDRFQUVBNjQwM0I3RDI+XQovUHJldiA4OTE5MAo+PgpzdGFydHhyZWYKMTA5NTEyCiUlRU9GCg== \ No newline at end of file diff --git a/eseal/src/test/resources/visible-signature/DejaVuSans.ttf b/eseal/src/test/resources/visible-signature/DejaVuSans.ttf new file mode 100644 index 0000000..e5f7eec Binary files /dev/null and b/eseal/src/test/resources/visible-signature/DejaVuSans.ttf differ diff --git a/eseal/src/test/resources/visible-signature/ste.jpg b/eseal/src/test/resources/visible-signature/ste.jpg new file mode 100644 index 0000000..bef9f0b Binary files /dev/null and b/eseal/src/test/resources/visible-signature/ste.jpg differ diff --git a/eseal/src/test/resources/visible-signature/ste2.jpeg b/eseal/src/test/resources/visible-signature/ste2.jpeg new file mode 100644 index 0000000..5a969c6 Binary files /dev/null and b/eseal/src/test/resources/visible-signature/ste2.jpeg differ diff --git a/mock-provider-endpoint/mock_provider_endpoint.py b/mock-provider-endpoint/mock_provider_endpoint.py new file mode 100755 index 0000000..d33a792 --- /dev/null +++ b/mock-provider-endpoint/mock_provider_endpoint.py @@ -0,0 +1,101 @@ +#!/usr/bin/env python3 + +# Remote endpoint that mocks the behavior of a signing backend from a remote provider +# The endpoint is a simple flask app that by default listens to port 5000 +# It accepts incoming requests with http POST to `host.remote.node:5000/dsa/v1/sign` +# It dumps the message properties and the decoded payload to a local file `./mock_provider_endpoint.log` +# +# To run the example endpoint issue: +# $ export FLASK_APP=mock_Provider_endpoint.py +# $ flask run +# +# If you want the endpoint to support https issue: +# $ ./mock_provider_endpoint.py --cert /path/to/cert --key /path/to/cert/key +# +# You can also control the artificial delay embedded into the handler with the argument -delay, which defaults to 3 seconds +# You can also specify the bind port with the -port argument, default is 5000 + +from flask import Flask +import argparse +from logging.config import dictConfig +import ssl +import flask_cors +from flask.logging import default_handler +import time + +dictConfig({ + 'version': 1, + 'formatters': {'default': { + 'format': '[%(asctime)s] %(levelname)s in %(module)s: %(message)s', + }}, + 'handlers': { + 'wsgi': { + 'class': 'logging.StreamHandler', + 'stream': 'ext://flask.logging.wsgi_errors_stream', + 'formatter': 'default', + 'level': 'INFO' + }, + 'logfile': { + 'class': 'logging.FileHandler', + 'filename': 'mock_provider_endpoint.log', + 'formatter': 'default', + 'level': 'INFO' + } + }, + 'root': { + 'level': 'INFO', + 'handlers': ['wsgi', 'logfile'] + } +}) + + +app = Flask(__name__) + +app.logger.removeHandler(default_handler) + +ARTIFICIAL_DELAY = 0 + + +@app.route('/dsa/v1/sign', methods=['POST']) +def sign(): + + app.logger.info("Sleeping for {0} seconds.".format(ARTIFICIAL_DELAY)) + time.sleep(ARTIFICIAL_DELAY) + + response_body = { + "Success": True, + "Data": {"SignedFileData": "JVBERi0xLjUNCiW1tbWFT0YK"} + } + + return response_body, 200 + +if __name__ == "__main__": + + parser = argparse.ArgumentParser(description="Simple flask endpoint for push subscriptions") + + parser.add_argument( + "-cert", "--cert", metavar="STRING", help="Certificate location", + default="/etc/grid-security/hostcert.pem", dest="cert") + + parser.add_argument( + "-key", "--key", metavar="STRING", help="Key location", + default="/etc/grid-security/hostkey.pem", dest="key") + + parser.add_argument( + "-port", "--port", metavar="INTEGER", help="Bind port", + default=5000, type=int, dest="port") + + parser.add_argument( + "-delay", "--delay", metavar="INTEGER", help="Artificial delay to mock the processing time", + default=3, type=int, dest="delay") + + args = parser.parse_args() + + flask_cors.CORS(app=app, methods=["OPTIONS", "HEAD", "POST"], allow_headers=["X-Requested-With", "Content-Type"]) + + ARTIFICIAL_DELAY = args.delay + + context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2) + context.load_cert_chain(args.cert, args.key) + + app.run(host='0.0.0.0', port=args.port, ssl_context=context, threaded=True, debug=True) \ No newline at end of file diff --git a/mock-provider-endpoint/requirements.txt b/mock-provider-endpoint/requirements.txt new file mode 100644 index 0000000..c69630d --- /dev/null +++ b/mock-provider-endpoint/requirements.txt @@ -0,0 +1,2 @@ +Flask==1.1.1 +Flask-Cors==3.0.8 diff --git a/website/.gitignore b/website/.gitignore new file mode 100644 index 0000000..b2d6de3 --- /dev/null +++ b/website/.gitignore @@ -0,0 +1,20 @@ +# Dependencies +/node_modules + +# Production +/build + +# Generated files +.docusaurus +.cache-loader + +# Misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/website/README.md b/website/README.md new file mode 100644 index 0000000..8960fa2 --- /dev/null +++ b/website/README.md @@ -0,0 +1,33 @@ +# Website + +This website is built using [Docusaurus 2](https://v2.docusaurus.io/), a modern static website generator. + +## Installation + +```console +yarn install +``` + +## Local Development + +```console +yarn start +``` + +This command starts a local development server and open up a browser window. Most changes are reflected live without having to restart the server. + +## Build + +```console +yarn build +``` + +This command generates static content into the `build` directory and can be served using any static contents hosting service. + +## Deployment + +```console +GIT_USER= USE_SSH=true yarn deploy +``` + +If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch. diff --git a/website/babel.config.js b/website/babel.config.js new file mode 100644 index 0000000..e00595d --- /dev/null +++ b/website/babel.config.js @@ -0,0 +1,3 @@ +module.exports = { + presets: [require.resolve('@docusaurus/core/lib/babel/preset')], +}; diff --git a/website/docs/15_minutes_stress_test_report.png b/website/docs/15_minutes_stress_test_report.png new file mode 100644 index 0000000..fd17f0e Binary files /dev/null and b/website/docs/15_minutes_stress_test_report.png differ diff --git a/website/docs/assets/e_signature_rest_api.postman_collection.json b/website/docs/assets/e_signature_rest_api.postman_collection.json new file mode 100644 index 0000000..b4ca9b2 --- /dev/null +++ b/website/docs/assets/e_signature_rest_api.postman_collection.json @@ -0,0 +1,169 @@ +{ + "info": { + "_postman_id": "35d3fced-96c9-407e-8ff5-729df057553e", + "name": "E-signature Rest API", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "name": "PDF Validation", + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n\t\"signedDocument\": {\n\t\t\"name\": \"{{pdf_name_to_validate}}\",\n\t\t\"bytes\": \"{{pdf_base64_to_validate}}\"\n\t\t\n\t}\n}" + }, + "url": { + "raw": "{{protocol}}://{{base_url}}:{{port}}/{{validation_path}}/{{validation_endpoint}}", + "protocol": "{{protocol}}", + "host": [ + "{{base_url}}" + ], + "port": "{{port}}", + "path": [ + "{{validation_path}}", + "{{validation_endpoint}}" + ] + } + }, + "response": [] + }, + { + "name": "PDF Timestamp", + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n\t\"toTimestampDocument\": {\n\t\t\"name\": \"{{pdf_name_to_timestamp}}\",\n\t\t\"bytes\": \"{{pdf_base64_to_timestamp}}\"\n\t}\n}" + }, + "url": { + "raw": "{{protocol}}://{{base_url}}:{{port}}/{{timestamp_path}}/{{timestamp_endpoint}}", + "protocol": "{{protocol}}", + "host": [ + "{{base_url}}" + ], + "port": "{{port}}", + "path": [ + "{{timestamp_path}}", + "{{timestamp_endpoint}}" + ] + } + }, + "response": [] + }, + { + "name": "PDF Signing", + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n\t\"username\": \"{{username}}\",\n\t\"password\": \"{{password}}\",\n\t\"key\": \"{{key}}\",\n\t\"toSignDocument\": {\n\t\t\"name\": \"{{pdf_name_to_sign}}\",\n \"bytes\": \"{{pdf_base64_to_sign}}\"\n\t}\n}" + }, + "url": { + "raw": "{{protocol}}://{{base_url}}:{{port}}/{{signing_path}}/{{signing_endpoint}}", + "protocol": "{{protocol}}", + "host": [ + "{{base_url}}" + ], + "port": "{{port}}", + "path": [ + "{{signing_path}}", + "{{signing_endpoint}}" + ] + } + }, + "response": [] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "variable": [ + { + "key": "signing_path", + "value": "api/v1/signing" + }, + { + "key": "signing_endpoint", + "value": "remoteSignDocumentDetached" + }, + { + "key": "pdf_name_to_sign", + "value": "to_sign.pdf" + }, + { + "key": "pdf_base64_to_sign", + "value": "" + }, + { + "key": "validation_path", + "value": "api/v1/validation" + }, + { + "key": "validation_endpoint", + "value": "validateDocument" + }, + { + "key": "pdf_name_to_validate", + "value": "to_validate.pdf" + }, + { + "key": "pdf_base64_to_validate", + "value": "" + }, + { + "key": "timestamp_path", + "value": "api/v1/timestamping" + }, + { + "key": "timestamp_endpoint", + "value": "remoteTimestampDocument" + }, + { + "key": "pdf_name_to_timestamp", + "value": "to_timestamp.pdf" + }, + { + "key": "pdf_base64_to_timestamp", + "value": "" + } + ] +} \ No newline at end of file diff --git a/website/docs/assets/eseal_environment.postman_environment.json b/website/docs/assets/eseal_environment.postman_environment.json new file mode 100644 index 0000000..695bb5e --- /dev/null +++ b/website/docs/assets/eseal_environment.postman_environment.json @@ -0,0 +1,39 @@ +{ + "id": "48a414c8-3f42-4e99-b7d6-e4d67d0e2638", + "name": "Eseal Environment", + "values": [ + { + "key": "base_url", + "value": "eseal.devel.einfra.grnet.gr", + "enabled": true + }, + { + "key": "port", + "value": "443", + "enabled": true + }, + { + "key": "protocol", + "value": "https", + "enabled": true + }, + { + "key": "username", + "value": "", + "enabled": true + }, + { + "key": "password", + "value": "", + "enabled": true + }, + { + "key": "key", + "value": "", + "enabled": true + } + ], + "_postman_variable_scope": "environment", + "_postman_exported_at": "2021-05-25T10:39:58.731Z", + "_postman_exported_using": "Postman/8.5.0" +} \ No newline at end of file diff --git a/website/docs/errors.md b/website/docs/errors.md new file mode 100644 index 0000000..4b67f8d --- /dev/null +++ b/website/docs/errors.md @@ -0,0 +1,39 @@ +--- +id: errors +title: API Errors +sidebar_label: API Errors +keywords: + - eseal + - e-seal + - errors + - api + - doc + - docs + - documentation + - documents + - pdf + - grnet +--- + + +In case of Error during handling user’s request the API responds using the following schema: + +```json +{ + "error": { + "code": 500, + "message": "Something bad happened", + "status": "INTERNAL" + } +} +``` +## Error Codes + +Message | Code | Status | Details +------|------|----------|------------------ +Malformed JSON body | 400 | BAD_REQUEST | The request body does not represent a valid json. +Field `<>` cannot be empty | 400 | BAD_REQUEST | The request does not contain a required field. +Wrong user credentials | 422 | UNPROCESSABLE_ENTITY | Wrong username or password is being used when trying to access the remote provider http api. +Invalid key or expired TOTP | 422 | UNPROCESSABLE_ENTITY | The provided key does not match the eky that corresponds to the used username/password pair OR the totp that was automatically generated timed out and you should retry. +Internal server error | 500 | INTERNAL_SERVER_ERROR | Internal error that is out of the scope of the client user. +Field `<>` should be encoded in base64 format | 400 | BAD_REQUEST | The request does not contain a required base64 encoded field diff --git a/website/docs/index.md b/website/docs/index.md new file mode 100644 index 0000000..511f5f4 --- /dev/null +++ b/website/docs/index.md @@ -0,0 +1,28 @@ +--- +id: index +title: E-seal REST API Documentation +sidebar_label: Documentation contents +slug: / +keywords: + - eseal + - e-seal + - signing + - validation + - timestamp + - errors + - api + - doc + - docs + - documentation + - documents + - pdf + - grnet +--- + + +- [PDF Signing](signing.md) +- [PDF Validation](validation.md) +- [PDF Timestamp](timestamp.md) +- [API Errors](errors.md) +- [Stress Test Report](stress-test.md) +- [Communicate with E-Signature API](postman.md) diff --git a/website/docs/postman.md b/website/docs/postman.md new file mode 100644 index 0000000..fe97aad --- /dev/null +++ b/website/docs/postman.md @@ -0,0 +1,206 @@ +--- +id: postman +title: Communicate with E-Signature API +sidebar_label: Communicate with E-Signature API +keywords: + - eseal + - e-seal + - validation + - api + - doc + - docs + - documentation + - documents + - pdf + - grnet + - postman + - json +--- + + +### Prerequisites + +- Postman + +### Instructions + +In order to communicate with E-Signature Rest API the following postman components should both be imported on Postman platform. + +- Postman Environment +- Postman Collection + + +#### Postman Environment + +Into Postman Environment, you can find the variables which are important in order to communicate with the API of GRNET. + +The following variables are predefined and should not be changed. + + { + "key": "base_url", + "value": "eseal.devel.einfra.grnet.gr", + "enabled": true + }, + { + "key": "port", + "value": "443", + "enabled": true + }, + { + "key": "protocol", + "value": "https", + "enabled": true + } + + +The `username`, `password` and `key` will be provided by GRNET. + + { + "key": "username", + "value": "", + "enabled": true + }, + { + "key": "password", + "value": "", + "enabled": true + }, + { + "key": "key", + "value": "", + "enabled": true + } + +#### Postman Collection + +Into Postman Collection, you can find the variables which are important in order to execute requests on API. + +The following variables are predefined and should not be changed. + + { + "key": "signing_path", + "value": "api/v1/signing" + }, + { + "key": "signing_endpoint", + "value": "remoteSignDocumentDetached" + }, + { + "key": "validation_path", + "value": "api/v1/validation" + }, + { + "key": "validation_endpoint", + "value": "validateDocument" + }, + { + "key": "timestamp_path", + "value": "api/v1/timestamping" + }, + { + "key": "timestamp_endpoint", + "value": "remoteTimestampDocument" + } + +The following variables are empty and should be filled in appropriately. + + { + "key": "pdf_base64_to_sign", + "value": "" + }, + { + "key": "pdf_base64_to_validate", + "value": "" + }, + { + "key": "pdf_base64_to_timestamp", + "value": "" + } + +The following variables are optional and has already been predefined. These variables can be changed freely. + + { + "key": "pdf_name_to_sign", + "value": "to_sign.pdf" + }, + { + "key": "pdf_name_to_validate", + "value": "to_validate.pdf" + }, + { + "key": "pdf_name_to_timestamp", + "value": "to_timestamp.pdf" + } + +Finally , you can find the following 3 POST requests : + +1. [_PDF Signing_](signing.md#post---sign-a-pdf-document-detached) + +2. [_PDF Timestamp_](timestamp.md) + +3. [_PDF Validation_](validation.md) + + + +### PDF Signing + +In order to sign a pdf : + +1. [_Convert the pdf to Base64 format_](https://base64.guru/converter/encode/pdf) + +2. _Fill in the variable pdf_base64_to_sign_ + +3. _Execute the PDF Signing request_ + +*Response Body :* + +`{ +"signedDocumentBytes": "JVBER..==" +}` + +In order to convert the `signedDocumentBytes` to PDF you can use the following platform [Base64 to PDF](https://base64.guru/converter/decode/pdf). + + + +### PDF Timestamp + +In order to timestamp a pdf : + +1. [_Convert the pdf to Base64 format_](https://base64.guru/converter/encode/pdf) + +2. _Fill in the variable pdf_base64_to_timestamp_ + +3. _Execute the PDF Timestamp request_ + +*Response body :* + +`{ +"timestampedDocumentBytes": "JVBERi0xL..." +}` + +In order to convert the `timestampedDocumentBytes` to PDF you can use the following platform [Base64 to PDF](https://base64.guru/converter/decode/pdf). + +### PDF Validation + +In order to validate a signed/timestamped pdf : + +1) _Get the signedDocumentBytes/timestampedDocumentBytes response parameter respectively_ + +2) _Fill in the variable pdf_base64_to_validate_ + +3) _Execute the PDF Validation request_ + + + + + + + + + + + + + + + diff --git a/website/docs/signing.md b/website/docs/signing.md new file mode 100644 index 0000000..fe1cded --- /dev/null +++ b/website/docs/signing.md @@ -0,0 +1,128 @@ +--- +id: signing +title: PDF Signing API Calls +sidebar_label: PDF Signing API Calls +keywords: + - eseal + - e-seal + - signing + - api + - doc + - docs + - documentation + - documents + - pdf + - grnet +--- + + +## POST - Sign a PDF document + +### Request + +POST @ /api/v1/signing/remoteSignDocument + +### Request Body + +- `username` : Username to be used at the remote provider API call. +The username/password pair maps to a specific eseal. + +- `password` : Password to be used at the remote provider API call. +The username/password pair maps to a specific eseal. + +- `key` : Key that will be used with the TOTP generation. +Each username/password pair corresponds to a specific key. + +- `toSignDocument.bytes` : PDF document to be signed in base64 encoded format + +- `toSignDocument.name`: Placeholder name for the pdf document + + +```json +{ + "username": "example-user", + "password": "example-password", + "key": "example-key", + "toSignDocument": { + "name": "document.pdf", + "bytes": "JVBERi0xLjM..." + } +} +``` + +### Response Body + +```json +{ + "signedDocumentBytes": "JVBER..==" +} +``` + +## POST - Sign a PDF document detached + +This API call does not send the entire PDF to the remote eseal provider for signing +but rather only the digest(hash) of the provided document and finally it combines +the returned signature with the original pdf document.The signature will also be visible +containing an image and the CN/OU from the signing certificate. + +### Request + +POST @ /api/v1/signing/remoteSignDocumentDetached + +### Request Body + +- `username` : Username to be used at the remote provider API call. +The username/password pair maps to a specific eseal. + +- `password` : Password to be used at the remote provider API call. +The username/password pair maps to a specific eseal. + +- `key` : Key that will be used with the TOTP generation. +Each username/password pair corresponds to a specific key. + +- `imageBytes(optional)` : Custom image to be included into the visible signature and +override the default, in base64 encoded format. + +- `toSignDocument.bytes` : PDF document to be signed in base64 encoded format + +- `toSignDocument.name`: Placeholder name for the pdf document + + +```json +{ + "username": "example-user", + "password": "example-password", + "key": "example-key", + "imageBytes": "MJIDdijo...", + "toSignDocument": { + "name": "document.pdf", + "bytes": "JVBERi0xLjM..." + } +} +``` + +### Response Body + +```json +{ + "signedDocumentBytes": "JVBER..==" +} +``` + +### Handling of TOTP + +The generated tokens are being created with the use of the `SHA1 hashing algorithm`. +They are `6 digits long` and have a +`30 seconds duration`, counting from the beginning of the unix epoch. +There are 2 TOTP tokens per minute, one from the `0th - 30th` second and one +from the `30th - 60th` second. +In order to compensate for network latency we apply a fail safe mechanism of 5 seconds before +we send any generated TOTP to the provider's backend, meaning that tokens acquired +between the `25th - 30th` and the `55th - 60th` +seconds of a minute will be waited to expire so a new one can be generated, with enough remaining time, +in order to give a higher success probability for the request. + + + +### Errors +Please refer to section [Errors](errors.md) to see all possible Errors diff --git a/website/docs/signing_detached_stress_test_report.png b/website/docs/signing_detached_stress_test_report.png new file mode 100644 index 0000000..b549cfc Binary files /dev/null and b/website/docs/signing_detached_stress_test_report.png differ diff --git a/website/docs/signing_detached_test_plan.png b/website/docs/signing_detached_test_plan.png new file mode 100644 index 0000000..821db89 Binary files /dev/null and b/website/docs/signing_detached_test_plan.png differ diff --git a/website/docs/signing_test_plan.png b/website/docs/signing_test_plan.png new file mode 100644 index 0000000..0eeb786 Binary files /dev/null and b/website/docs/signing_test_plan.png differ diff --git a/website/docs/stress-test.md b/website/docs/stress-test.md new file mode 100644 index 0000000..3625498 --- /dev/null +++ b/website/docs/stress-test.md @@ -0,0 +1,70 @@ +--- +id: stress-test +title: Stress Test Report +sidebar_label: Stress Test Report +keywords: +- eseal +- e-seal +- stress-test +- api +- doc +- docs +- documentation +- documents +- pdf +- grnet +--- + +## Stress Test Report + +### Stress Test of Remote Signing and Validation + +The stress test was executed on High Availability setup consisted of a load balancer that was sharing the requests +between two machines. The [Remote Signing](signing.md#post---sign-a-pdf-document) and [Validation](validation.md) of pdf document were tested, and the +duration of stress test was 15 minutes. + + +#### Signing Test Plan + +Below the test plan of [Remote Signing endpoint](signing.md#request) is presented. In the following graph, we can see the number of active threads +over time. + + + +![Signing Test Plan](signing_test_plan.png) + +#### Validation Test Plan + +Below the test plan of [Validation endpoint](validation.md#request) is presented. In the following graph, we can see the number of active +threads over time. + + +![Validation Test Plan](validation_test_plan.png) + +#### Stress Test Results + +The above test plans were executed by two clients simultaneously. You can find below the results of the described +testing process. + +![Stress Test Results](15_minutes_stress_test_report.png) + +### Stress Test of Remote Signing Detached + +The stress test was executed on High Availability setup consisted of a load balancer that was sharing the requests +between two machines. The [Remote Signing Detached](signing.md#post---sign-a-pdf-document-detached) of pdf document was tested, and the +duration of stress test was 27 minutes. + +#### Signing Detached Test Plan + +Below the test plan of [Remote Signing Detached endpoint](signing.md#request-1) is presented. In the following graph, we can see the number of active threads +over time. + +![Signing Detached Test Plan](signing_detached_test_plan.png) + +#### Stress Test Results + +The above test plan was executed by one client. You can find below the results of the described +testing process. + +![Stress Test Results](signing_detached_stress_test_report.png) + diff --git a/website/docs/timestamp.md b/website/docs/timestamp.md new file mode 100644 index 0000000..9a5e9ed --- /dev/null +++ b/website/docs/timestamp.md @@ -0,0 +1,55 @@ +--- +id: timestamp +title: PDF Timestamp API Calls +sidebar_label: PDF Timestamp API Calls +keywords: + - eseal + - e-seal + - timestamp + - api + - doc + - docs + - documentation + - documents + - pdf + - grnet +--- + + +## POST - Timestamp PDF Document + +### Request + +POST @ /api/v1/timestamping/remoteTimestampDocument + +### Request Body + + - `toTimestampDocument.bytes` : The pdf document in base64 encoded format + + - `toTimestampDocument.name` : Placeholder name for the pdf document + + - `tspSource(optional)` : The timestamp server that generates the timestamped document. +The possible values are APED or HARICA. The default value is HARICA. + + +```json +{ + "tsaSource" : "APED", + "toTimestampDocument" : { + "bytes" : "JVBERi...", + "name" : "important.pdf" + } +} +``` + +### Response + +```json +{ + "timestampedDocumentBytes": "JVBERi0xL..." +} +``` + +### Errors +Please refer to section [Errors](errors.md) to see all possible Errors + diff --git a/website/docs/validation.md b/website/docs/validation.md new file mode 100644 index 0000000..8c01fe8 --- /dev/null +++ b/website/docs/validation.md @@ -0,0 +1,1383 @@ +--- +id: validation +title: PDF Validation API Calls +sidebar_label: PDF Validation API Calls +keywords: + - eseal + - e-seal + - validation + - api + - doc + - docs + - documentation + - documents + - pdf + - grnet +--- + + +## POST - Validate a PDF Document + +### Request +POST @ /api/v1/validation/validateDocument + +### Request Body + +- `bytes` : The PDF to be validated should be encoded in base64 format +- `name`: Optional name for the pdf document + +```json +{ + "signedDocument" : { + "bytes" : "JVBERi... ", + "name": "important.pdf" + } +} +``` + +### Request Response + +```json +{ + "validationReportaDataHandler": "PD94bWwgdmVyc2lvbj0...", + "DiagnosticData": { + "DocumentName": "important.pdf", + "ValidationDate": "2020-11-10T16:46:18", + "ContainerInfo": null, + "Signature": [ + { + "Id": "S-3C70522FD9A46A58A1B85628826071C464AC88902C2EA15B2BD3C5285069E0EA", + "DAIdentifier": null, + "SignatureFilename": "important.pdf", + "ErrorMessage": null, + "ClaimedSigningTime": "2020-11-10T16:36:37", + "SignatureFormat": "PAdES-BASELINE-T", + "StructuralValidation": { + "Valid": true, + "Message": null + }, + "DigestMatcher": [ + { + "DataFound": true, + "DataIntact": true, + "DigestMethod": "SHA256", + "DigestValue": "y59i6ke9/3n7KDy79zFE+GneN5vztKHPTKqvRKJ5f3U=", + "match": null, + "type": "MESSAGE_DIGEST", + "name": null + } + ], + "BasicSignature": { + "EncryptionAlgoUsedToSignThisToken": "RSA", + "KeyLengthUsedToSignThisToken": "2048", + "DigestAlgoUsedToSignThisToken": "SHA256", + "MaskGenerationFunctionUsedToSignThisToken": null, + "SignatureIntact": false, + "SignatureValid": false + }, + "SigningCertificate": { + "PublicKey": null, + "Certificate": "C-02F3EBCA0163274253BC809D27498DD41BB0316D7E6B066960115DE155589D9C" + }, + "ChainItem": [ + { + "Certificate": "C-02F3EBCA0163274253BC809D27498DD41BB0316D7E6B066960115DE155589D9C" + } + ], + "ContentType": "1.2.840.113549.1.7.1", + "MimeType": null, + "ContentIdentifier": null, + "ContentHints": null, + "SignatureProductionPlace": null, + "CommitmentTypeIndication": [], + "SignerRole": [], + "Policy": { + "Id": "IMPLICIT_POLICY", + "Url": null, + "Description": null, + "Notice": null, + "ZeroHash": false, + "DigestAlgoAndValue": null, + "Asn1Processable": false, + "Identified": false, + "Status": false, + "ProcessingError": null, + "DigestAlgorithmsEqual": false, + "DocumentationReference": null + }, + "SignerInfo": [ + { + "IssuerName": "O=DSS-test, CN=RootSelfSignedFake", + "SerialNumber": 51497007561559, + "Ski": null, + "Current": true + } + ], + "PDFRevision": { + "SignatureFieldName": [ + "Signature1" + ], + "PDFSignatureDictionary": { + "SignerName": null, + "Type": "Sig", + "Filter": "Adobe.PPKLite", + "SubFilter": "ETSI.CAdES.detached", + "ContactInfo": null, + "Reason": null, + "SignatureByteRange": [ + 0, + 9391, + 47281, + 493 + ] + } + }, + "SignerDocumentRepresentations": { + "HashOnly": false, + "DocHashOnly": false + }, + "FoundCertificates": { + "RelatedCertificate": [ + { + "Origin": [ + "SIGNED_DATA" + ], + "CertificateRef": [ + { + "Origin": "SIGNING_CERTIFICATE", + "IssuerSerial": { + "value": "MD4wNKQyMDAxGzAZBgNVBAMMElJvb3RTZWxmU2lnbmVkRmFrZTERMA8GA1UECgwIRFNTLXRlc3QCBi7WFNe7Vw==", + "match": true + }, + "DigestAlgoAndValue": { + "DigestMethod": "SHA256", + "DigestValue": "AvPrygFjJ0JTvICdJ0mN1BuwMW1+awZpYBFd4VVYnZw=", + "match": true + }, + "SerialInfo": null + } + ], + "Certificate": "C-02F3EBCA0163274253BC809D27498DD41BB0316D7E6B066960115DE155589D9C" + } + ], + "OrphanCertificate": [] + }, + "FoundRevocations": { + "RelatedRevocation": [], + "OrphanRevocation": [] + }, + "FoundTimestamp": [ + { + "Timestamp": "T-04107438879EF75A0129DF82864A7BF51CF0508E8C71C8AFB2F16D886E0EB1C7", + "Location": "DOC_TIMESTAMP" + } + ], + "SignatureScope": [ + { + "Scope": "PARTIAL", + "Name": "Partial PDF", + "Description": "The document ByteRange : [0, 9391, 47281, 493]", + "Transformation": null, + "SignerData": "D-2D58AAA29DC086066B313EA6DCC9D43BC9D2AB3E4A4A775F9FD8F3C21EEC7031" + } + ], + "SignatureDigestReference": { + "CanonicalizationMethod": null, + "DigestMethod": "SHA256", + "DigestValue": "EY8QsDccdLEi7y4UIOilFTXOjdfpfps4auYR6oHqa2A=" + }, + "SignatureValue": "IWbu5VDt+AiOwzPY+M4GPWUmcmXUkcGX6dkf45C+oi9Cx3rbfFySOEEoxSM0vM3pXG347JsmKCZJhG+Elsh6dExJpSQg+Ks3OQFbObghTSHtOYZHKfM54pr8BLAD0kdYvGdqDPY+ZRvTYWMlZZnxzpUegh5JR+bypogV7hK6QnGJnIBDz7u6IBd4kun7pWiNN5QfRgxFBt2Nks/cgbgvgLofxKYAp3swOTSYaS4n46Dm422QzOlnyStV9iy2FDVrVfy/yni8WmEzF++juGPUQcGKhNqe+3plNZsNdC9NVLAwYGtk4QZ1ghfScXERqHa0/Aybi9am7u+DZu2N4rJ4Gw==", + "CounterSignature": null, + "Parent": null, + "Duplicated": null + } + ], + "Certificate": [ + { + "Id": "C-02F3EBCA0163274253BC809D27498DD41BB0316D7E6B066960115DE155589D9C", + "SubjectDistinguishedName": [ + { + "value": "o=dss-test,cn=signerfake", + "Format": "CANONICAL" + }, + { + "value": "O=DSS-test,CN=SignerFake", + "Format": "RFC2253" + } + ], + "IssuerDistinguishedName": [ + { + "value": "o=dss-test,cn=rootselfsignedfake", + "Format": "CANONICAL" + }, + { + "value": "O=DSS-test,CN=RootSelfSignedFake", + "Format": "RFC2253" + } + ], + "SerialNumber": 51497007561559, + "SubjectSerialNumber": null, + "CommonName": "SignerFake", + "Locality": null, + "State": null, + "CountryName": null, + "OrganizationIdentifier": null, + "OrganizationName": "DSS-test", + "GivenName": null, + "OrganizationalUnit": null, + "Surname": null, + "Pseudonym": null, + "Email": null, + "subjectAlternativeName": null, + "aiaUrl": [], + "crlUrl": [], + "ocspServerUrl": [], + "Source": [ + "SIGNATURE" + ], + "NotAfter": "2047-07-04T07:57:24", + "NotBefore": "2017-06-08T11:26:01", + "PublicKeySize": 2048, + "PublicKeyEncryptionAlgo": "RSA", + "EntityKey": "PK-3CFCA257859E202BCC83864D02B267B08A997C357AB98D923BBC63F00607C7B6", + "KeyUsage": [ + "keyCertSign", + "crlSign" + ], + "extendedKeyUsagesOid": [], + "PSD2Info": null, + "IdPkixOcspNoCheck": false, + "BasicSignature": { + "EncryptionAlgoUsedToSignThisToken": "RSA", + "KeyLengthUsedToSignThisToken": "?", + "DigestAlgoUsedToSignThisToken": "SHA256", + "MaskGenerationFunctionUsedToSignThisToken": null, + "SignatureIntact": false, + "SignatureValid": false + }, + "SigningCertificate": null, + "ChainItem": [], + "Trusted": false, + "SelfSigned": false, + "certificatePolicy": [], + "qcStatementOid": [], + "qcTypeOid": [], + "SemanticsIdentifier": null, + "TrustedServiceProvider": [], + "CertificateRevocation": [], + "Base64Encoded": null, + "DigestAlgoAndValue": { + "DigestMethod": "SHA256", + "DigestValue": "AvPrygFjJ0JTvICdJ0mN1BuwMW1+awZpYBFd4VVYnZw=", + "match": null + } + }, + { + "Id": "C-E17B87882EAEF6AD4084A13B72E2761D76B01D75447961CA0F3FEA1A92327ED3", + "SubjectDistinguishedName": [ + { + "value": "c=lu,ou=pki-test,o=nowina solutions,cn=self-signed-tsa", + "Format": "CANONICAL" + }, + { + "value": "C=LU,OU=PKI-TEST,O=Nowina Solutions,CN=self-signed-tsa", + "Format": "RFC2253" + } + ], + "IssuerDistinguishedName": [ + { + "value": "c=lu,ou=pki-test,o=nowina solutions,cn=self-signed-tsa", + "Format": "CANONICAL" + }, + { + "value": "C=LU,OU=PKI-TEST,O=Nowina Solutions,CN=self-signed-tsa", + "Format": "RFC2253" + } + ], + "SerialNumber": 100, + "SubjectSerialNumber": null, + "CommonName": "self-signed-tsa", + "Locality": null, + "State": null, + "CountryName": "LU", + "OrganizationIdentifier": null, + "OrganizationName": "Nowina Solutions", + "GivenName": null, + "OrganizationalUnit": "PKI-TEST", + "Surname": null, + "Pseudonym": null, + "Email": null, + "subjectAlternativeName": null, + "aiaUrl": [], + "crlUrl": [], + "ocspServerUrl": [], + "Source": [ + "TIMESTAMP" + ], + "NotAfter": "2021-05-11T04:52:19", + "NotBefore": "2019-07-11T04:52:19", + "PublicKeySize": 2048, + "PublicKeyEncryptionAlgo": "RSA", + "EntityKey": "PK-4A273B388E7DFD8A558EF79476F6E5060E065B0E8BCF13D7E5E93B722987E13D", + "KeyUsage": [ + "digitalSignature" + ], + "extendedKeyUsagesOid": [ + { + "value": "1.3.6.1.5.5.7.3.8", + "Description": "timeStamping" + } + ], + "PSD2Info": null, + "IdPkixOcspNoCheck": false, + "BasicSignature": { + "EncryptionAlgoUsedToSignThisToken": "RSA", + "KeyLengthUsedToSignThisToken": "2048", + "DigestAlgoUsedToSignThisToken": "SHA256", + "MaskGenerationFunctionUsedToSignThisToken": null, + "SignatureIntact": true, + "SignatureValid": true + }, + "SigningCertificate": null, + "ChainItem": [], + "Trusted": false, + "SelfSigned": true, + "certificatePolicy": [], + "qcStatementOid": [], + "qcTypeOid": [], + "SemanticsIdentifier": null, + "TrustedServiceProvider": [], + "CertificateRevocation": null, + "Base64Encoded": null, + "DigestAlgoAndValue": { + "DigestMethod": "SHA256", + "DigestValue": "4XuHiC6u9q1AhKE7cuJ2HXawHXVEeWHKDz/qGpIyftM=", + "match": null + } + } + ], + "Revocation": [], + "Timestamp": [ + { + "Id": "T-04107438879EF75A0129DF82864A7BF51CF0508E8C71C8AFB2F16D886E0EB1C7", + "TimestampFilename": null, + "ArchiveTimestampType": null, + "ProductionTime": "2020-11-10T16:45:38", + "DigestMatcher": [ + { + "DataFound": true, + "DataIntact": true, + "DigestMethod": "SHA512", + "DigestValue": "ocZd9NVh3NQbn/MGp9ou0YysESB9XufDLIokjHDF2BScHtaXRzZPr1Rlff3ZfAY8KXQ6UmHukvZIa7sRG2r+vA==", + "match": null, + "type": "MESSAGE_IMPRINT", + "name": null + } + ], + "BasicSignature": { + "EncryptionAlgoUsedToSignThisToken": "RSA", + "KeyLengthUsedToSignThisToken": "2048", + "DigestAlgoUsedToSignThisToken": "SHA512", + "MaskGenerationFunctionUsedToSignThisToken": null, + "SignatureIntact": true, + "SignatureValid": true + }, + "SigningCertificate": { + "PublicKey": null, + "Certificate": "C-E17B87882EAEF6AD4084A13B72E2761D76B01D75447961CA0F3FEA1A92327ED3" + }, + "ChainItem": [ + { + "Certificate": "C-E17B87882EAEF6AD4084A13B72E2761D76B01D75447961CA0F3FEA1A92327ED3" + } + ], + "SignerInfo": [ + { + "IssuerName": "C=LU, OU=PKI-TEST, O=Nowina Solutions, CN=self-signed-tsa", + "SerialNumber": 100, + "Ski": null, + "Current": true + } + ], + "PDFRevision": { + "SignatureFieldName": [ + "Signature2" + ], + "PDFSignatureDictionary": { + "SignerName": null, + "Type": "DocTimeStamp", + "Filter": "Adobe.PPKLite", + "SubFilter": "ETSI.RFC3161", + "ContactInfo": null, + "Reason": null, + "SignatureByteRange": [ + 0, + 48174, + 67120, + 794 + ] + } + }, + "FoundCertificates": { + "RelatedCertificate": [ + { + "Origin": [ + "SIGNED_DATA" + ], + "CertificateRef": [ + { + "Origin": "SIGNING_CERTIFICATE", + "IssuerSerial": null, + "DigestAlgoAndValue": { + "DigestMethod": "SHA512", + "DigestValue": "D+vlpyV/YfFzThtGtciFjVreab2TxQWNqCzG+0kGa3Vwt5hCDx6ypZuWvh+fq6v0vZ3NojECzYCpSZuYBOS6aQ==", + "match": true + }, + "SerialInfo": null + } + ], + "Certificate": "C-E17B87882EAEF6AD4084A13B72E2761D76B01D75447961CA0F3FEA1A92327ED3" + } + ], + "OrphanCertificate": [] + }, + "FoundRevocations": { + "RelatedRevocation": [], + "OrphanRevocation": [] + }, + "TimestampedObject": [ + { + "Token": "D-2D58AAA29DC086066B313EA6DCC9D43BC9D2AB3E4A4A775F9FD8F3C21EEC7031", + "Category": "SIGNED_DATA" + }, + { + "Token": "S-3C70522FD9A46A58A1B85628826071C464AC88902C2EA15B2BD3C5285069E0EA", + "Category": "SIGNATURE" + }, + { + "Token": "C-02F3EBCA0163274253BC809D27498DD41BB0316D7E6B066960115DE155589D9C", + "Category": "CERTIFICATE" + } + ], + "Base64Encoded": null, + "DigestAlgoAndValue": { + "DigestMethod": "SHA256", + "DigestValue": "BBB0OIee91oBKd+Chkp79RzwUI6MccivsvFtiG4Oscc=", + "match": null + }, + "Type": "SIGNATURE_TIMESTAMP" + } + ], + "OrphanTokens": null, + "SignerData": [ + { + "Id": "D-2D58AAA29DC086066B313EA6DCC9D43BC9D2AB3E4A4A775F9FD8F3C21EEC7031", + "ReferencedName": "Partial PDF", + "DigestAlgoAndValue": { + "DigestMethod": "SHA256", + "DigestValue": "Ci0okC0J7WNDL0zdCVlJ8Qwj88RLnynaVkC6+dQP16g=", + "match": null + } + } + ], + "TrustedList": [] + }, + "SimpleReport": { + "ValidationPolicy": { + "PolicyName": "QES AdESQC TL based", + "PolicyDescription": "Validate electronic signatures and indicates whether they are Advanced electronic Signatures (AdES), AdES supported by a Qualified Certificate (AdES/QC) or a\n\t\tQualified electronic Signature (QES). All certificates and their related chains supporting the signatures are validated against the EU Member State Trusted Lists (this includes\n\t\tsigner's certificate and certificates used to validate certificate validity status services - CRLs, OCSP, and time-stamps).\n\t" + }, + "DocumentName": "important.pdf", + "ValidSignaturesCount": 0, + "SignaturesCount": 1, + "ContainerType": null, + "signatureOrTimestamp": [ + { + "Signature": { + "SigningTime": "2020-11-10T16:36:37", + "BestSignatureTime": "2020-11-10T16:46:18", + "SignedBy": "SignerFake", + "SignatureLevel": { + "value": "N/A", + "description": "Not applicable" + }, + "SignatureScope": [ + { + "value": "The document ByteRange : [0, 9391, 47281, 493]", + "name": "Partial PDF", + "scope": "PARTIAL" + } + ], + "Filename": null, + "CertificateChain": { + "Certificate": [ + { + "id": "C-02F3EBCA0163274253BC809D27498DD41BB0316D7E6B066960115DE155589D9C", + "qualifiedName": "SignerFake" + } + ] + }, + "Indication": "TOTAL_FAILED", + "SubIndication": "SIG_CRYPTO_FAILURE", + "Errors": [ + "Unable to build a certificate chain until a trusted list!", + "The result of the LTV validation process is not acceptable to continue the process!", + "The certificate chain for signature is not trusted, it does not contain a trust anchor.", + "The signature is not intact!", + "The result of the timestamps validation process is not conclusive!", + "The certificate chain for timestamp is not trusted, it does not contain a trust anchor." + ], + "Warnings": [ + "The signature/seal is not a valid AdES digital signature!" + ], + "Infos": [], + "Id": "S-3C70522FD9A46A58A1B85628826071C464AC88902C2EA15B2BD3C5285069E0EA", + "CounterSignature": null, + "ParentId": null, + "SignatureFormat": "PAdES-BASELINE-T", + "ExtensionPeriodMin": null, + "ExtensionPeriodMax": null + } + } + ], + "Semantic": null, + "ValidationTime": "2020-11-10T16:46:18" + }, + "DetailedReport": { + "signatureOrTimestampOrCertificate": [ + { + "Signature": { + "ValidationProcessBasicSignature": { + "Constraint": [ + { + "Name": { + "value": "Is the result of the Basic Validation Process conclusive?", + "NameId": "ADEST_ROBVPIIC" + }, + "Status": "NOT OK", + "Error": { + "value": "The result of the Basic validation process is not conclusive!", + "NameId": "ADEST_ROBVPIIC_ANS" + }, + "Warning": null, + "Info": null, + "AdditionalInfo": null, + "Id": "S-3C70522FD9A46A58A1B85628826071C464AC88902C2EA15B2BD3C5285069E0EA" + } + ], + "Conclusion": { + "Indication": "FAILED", + "SubIndication": "SIG_CRYPTO_FAILURE", + "Errors": [ + { + "value": "The certificate chain for signature is not trusted, it does not contain a trust anchor.", + "NameId": "BBB_XCV_CCCBB_SIG_ANS" + }, + { + "value": "The signature is not intact!", + "NameId": "BBB_CV_ISI_ANS" + } + ], + "Warnings": [], + "Infos": [] + }, + "Title": "Validation Process for Basic Signatures", + "ProofOfExistence": { + "Time": "2020-11-10T16:46:18", + "TimestampId": null + } + }, + "Timestamp": [ + { + "ValidationProcessTimestamp": { + "Constraint": [ + { + "Name": { + "value": "Is the result of the timestamps validation process conclusive?", + "NameId": "ADEST_ROTVPIIC" + }, + "Status": "NOT OK", + "Error": { + "value": "The result of the timestamps validation process is not conclusive!", + "NameId": "ADEST_ROTVPIIC_ANS" + }, + "Warning": null, + "Info": null, + "AdditionalInfo": null, + "Id": "T-04107438879EF75A0129DF82864A7BF51CF0508E8C71C8AFB2F16D886E0EB1C7" + } + ], + "Conclusion": { + "Indication": "INDETERMINATE", + "SubIndication": "NO_CERTIFICATE_CHAIN_FOUND", + "Errors": [ + { + "value": "The certificate chain for timestamp is not trusted, it does not contain a trust anchor.", + "NameId": "BBB_XCV_CCCBB_TSP_ANS" + } + ], + "Warnings": [], + "Infos": [] + }, + "Title": "Validation Process for Timestamps", + "Type": "SIGNATURE_TIMESTAMP", + "ProductionTime": "2020-11-10T16:45:38" + }, + "ValidationTimestampQualification": { + "Constraint": [ + { + "Name": { + "value": "Has a trusted list been reached for the certificate chain?", + "NameId": "QUAL_CERT_TRUSTED_LIST_REACHED" + }, + "Status": "NOT OK", + "Error": { + "value": "Unable to build a certificate chain until a trusted list!", + "NameId": "QUAL_CERT_TRUSTED_LIST_REACHED_ANS" + }, + "Warning": null, + "Info": null, + "AdditionalInfo": null, + "Id": null + } + ], + "Conclusion": { + "Indication": "FAILED", + "SubIndication": null, + "Errors": [ + { + "value": "Unable to build a certificate chain until a trusted list!", + "NameId": "QUAL_CERT_TRUSTED_LIST_REACHED_ANS" + } + ], + "Warnings": [], + "Infos": [] + }, + "Title": "Timestamp Qualification", + "TimestampQualification": "N/A" + }, + "Id": "T-04107438879EF75A0129DF82864A7BF51CF0508E8C71C8AFB2F16D886E0EB1C7" + } + ], + "ValidationProcessLongTermData": { + "Constraint": [ + { + "Name": { + "value": "Is the result of the Basic Validation Process acceptable?", + "NameId": "LTV_ABSV" + }, + "Status": "NOT OK", + "Error": { + "value": "The result of the Basic validation process is not acceptable to continue the process!", + "NameId": "LTV_ABSV_ANS" + }, + "Warning": null, + "Info": null, + "AdditionalInfo": null, + "Id": null + } + ], + "Conclusion": { + "Indication": "FAILED", + "SubIndication": "SIG_CRYPTO_FAILURE", + "Errors": [ + { + "value": "The certificate chain for signature is not trusted, it does not contain a trust anchor.", + "NameId": "BBB_XCV_CCCBB_SIG_ANS" + }, + { + "value": "The signature is not intact!", + "NameId": "BBB_CV_ISI_ANS" + } + ], + "Warnings": [], + "Infos": [] + }, + "Title": "Validation Process for Signatures with Time and Signatures with Long-Term Validation Data", + "ProofOfExistence": { + "Time": "2020-11-10T16:46:18", + "TimestampId": null + } + }, + "ValidationProcessArchivalData": { + "Constraint": [ + { + "Name": { + "value": "Is the result of the LTV validation process acceptable?", + "NameId": "ARCH_LTVV" + }, + "Status": "NOT OK", + "Error": { + "value": "The result of the LTV validation process is not acceptable to continue the process!", + "NameId": "ARCH_LTVV_ANS" + }, + "Warning": null, + "Info": null, + "AdditionalInfo": null, + "Id": null + } + ], + "Conclusion": { + "Indication": "FAILED", + "SubIndication": "SIG_CRYPTO_FAILURE", + "Errors": [ + { + "value": "The certificate chain for signature is not trusted, it does not contain a trust anchor.", + "NameId": "BBB_XCV_CCCBB_SIG_ANS" + }, + { + "value": "The signature is not intact!", + "NameId": "BBB_CV_ISI_ANS" + } + ], + "Warnings": [], + "Infos": [] + }, + "Title": "Validation Process for Signatures with Archival Data", + "ProofOfExistence": { + "Time": "2020-11-10T16:46:18", + "TimestampId": null + } + }, + "ValidationSignatureQualification": { + "ValidationCertificateQualification": [], + "Constraint": [ + { + "Name": { + "value": "Is the signature/seal an acceptable AdES digital signature (ETSI EN 319 102-1)?", + "NameId": "QUAL_IS_ADES" + }, + "Status": "WARNING", + "Error": null, + "Warning": { + "value": "The signature/seal is not a valid AdES digital signature!", + "NameId": "QUAL_IS_ADES_INV" + }, + "Info": null, + "AdditionalInfo": null, + "Id": null + }, + { + "Name": { + "value": "Has a trusted list been reached for the certificate chain?", + "NameId": "QUAL_CERT_TRUSTED_LIST_REACHED" + }, + "Status": "NOT OK", + "Error": { + "value": "Unable to build a certificate chain until a trusted list!", + "NameId": "QUAL_CERT_TRUSTED_LIST_REACHED_ANS" + }, + "Warning": null, + "Info": null, + "AdditionalInfo": null, + "Id": null + } + ], + "Conclusion": { + "Indication": "FAILED", + "SubIndication": null, + "Errors": [ + { + "value": "Unable to build a certificate chain until a trusted list!", + "NameId": "QUAL_CERT_TRUSTED_LIST_REACHED_ANS" + }, + { + "value": "Unable to build a certificate chain until a trusted list!", + "NameId": "QUAL_CERT_TRUSTED_LIST_REACHED_ANS" + } + ], + "Warnings": [ + { + "value": "The signature/seal is not a valid AdES digital signature!", + "NameId": "QUAL_IS_ADES_INV" + } + ], + "Infos": [] + }, + "Title": "Signature Qualification", + "SignatureQualification": "N/A" + }, + "Id": "S-3C70522FD9A46A58A1B85628826071C464AC88902C2EA15B2BD3C5285069E0EA", + "CounterSignature": null + } + } + ], + "BasicBuildingBlocks": [ + { + "FC": null, + "ISC": { + "CertificateChain": { + "ChainItem": [ + { + "Source": "TIMESTAMP", + "Id": "C-E17B87882EAEF6AD4084A13B72E2761D76B01D75447961CA0F3FEA1A92327ED3" + } + ] + }, + "Constraint": [ + { + "Name": { + "value": "Is there an identified candidate for the signing certificate?", + "NameId": "BBB_ICS_ISCI" + }, + "Status": "OK", + "Error": null, + "Warning": null, + "Info": null, + "AdditionalInfo": null, + "Id": null + }, + { + "Name": { + "value": "Is the signed attribute: 'signing-certificate' present?", + "NameId": "BBB_ICS_ISASCP" + }, + "Status": "OK", + "Error": null, + "Warning": null, + "Info": null, + "AdditionalInfo": null, + "Id": null + }, + { + "Name": { + "value": "Is the signed attribute: 'signing-certificate' present only once?", + "NameId": "BBB_ICS_ISASCPU" + }, + "Status": "OK", + "Error": null, + "Warning": null, + "Info": null, + "AdditionalInfo": null, + "Id": null + }, + { + "Name": { + "value": "Is the signed attribute: 'cert-digest' of the certificate present?", + "NameId": "BBB_ICS_ISACDP" + }, + "Status": "OK", + "Error": null, + "Warning": null, + "Info": null, + "AdditionalInfo": null, + "Id": null + }, + { + "Name": { + "value": "Does the certificate digest value match a digest value found in the certificate reference(s)?", + "NameId": "BBB_ICS_ICDVV" + }, + "Status": "OK", + "Error": null, + "Warning": null, + "Info": null, + "AdditionalInfo": null, + "Id": null + } + ], + "Conclusion": { + "Indication": "PASSED", + "SubIndication": null, + "Errors": [], + "Warnings": [], + "Infos": [] + }, + "Title": "Identification of the Signing Certificate" + }, + "VCI": null, + "XCV": { + "SubXCV": [], + "Constraint": [ + { + "Name": { + "value": "Can the certificate chain be built till a trust anchor?", + "NameId": "BBB_XCV_CCCBB" + }, + "Status": "NOT OK", + "Error": { + "value": "The certificate chain for timestamp is not trusted, it does not contain a trust anchor.", + "NameId": "BBB_XCV_CCCBB_TSP_ANS" + }, + "Warning": null, + "Info": null, + "AdditionalInfo": null, + "Id": null + } + ], + "Conclusion": { + "Indication": "INDETERMINATE", + "SubIndication": "NO_CERTIFICATE_CHAIN_FOUND", + "Errors": [ + { + "value": "The certificate chain for timestamp is not trusted, it does not contain a trust anchor.", + "NameId": "BBB_XCV_CCCBB_TSP_ANS" + } + ], + "Warnings": [], + "Infos": [] + }, + "Title": "X509 Certificate Validation" + }, + "CV": { + "Constraint": [ + { + "Name": { + "value": "Has the reference data object been found?", + "NameId": "BBB_CV_IRDOF" + }, + "Status": "OK", + "Error": null, + "Warning": null, + "Info": null, + "AdditionalInfo": "Reference : MESSAGE_IMPRINT", + "Id": null + }, + { + "Name": { + "value": "Is the reference data object intact?", + "NameId": "BBB_CV_IRDOI" + }, + "Status": "OK", + "Error": null, + "Warning": null, + "Info": null, + "AdditionalInfo": "Reference : MESSAGE_IMPRINT", + "Id": null + }, + { + "Name": { + "value": "Is timestamp's signature intact?", + "NameId": "BBB_CV_ISIT" + }, + "Status": "OK", + "Error": null, + "Warning": null, + "Info": null, + "AdditionalInfo": "Id = T-04107438879EF75A0129DF82864A7BF51CF0508E8C71C8AFB2F16D886E0EB1C7", + "Id": null + } + ], + "Conclusion": { + "Indication": "PASSED", + "SubIndication": null, + "Errors": [], + "Warnings": [], + "Infos": [] + }, + "Title": "Cryptographic Verification" + }, + "SAV": { + "CryptographicInfo": { + "Algorithm": "http://www.w3.org/2001/04/xmldsig-more#rsa-sha512", + "KeyLength": "2048", + "Secure": true, + "NotAfter": "2022-12-31T22:00:00" + }, + "Constraint": [ + { + "Name": { + "value": "Are timestamp cryptographic constraints met?", + "NameId": "ATCCM" + }, + "Status": "OK", + "Error": null, + "Warning": null, + "Info": null, + "AdditionalInfo": "Validation time : 2020-11-10 16:46 for token with ID : [T-04107438879EF75A0129DF82864A7BF51CF0508E8C71C8AFB2F16D886E0EB1C7]", + "Id": null + } + ], + "Conclusion": { + "Indication": "PASSED", + "SubIndication": null, + "Errors": [], + "Warnings": [], + "Infos": [] + }, + "Title": "Signature Acceptance Validation", + "ValidationTime": "2020-11-10T16:46:18" + }, + "PSV": null, + "PCV": null, + "VTS": null, + "CertificateChain": { + "ChainItem": [ + { + "Source": "TIMESTAMP", + "Id": "C-E17B87882EAEF6AD4084A13B72E2761D76B01D75447961CA0F3FEA1A92327ED3" + } + ] + }, + "Conclusion": { + "Indication": "INDETERMINATE", + "SubIndication": "NO_CERTIFICATE_CHAIN_FOUND", + "Errors": [ + { + "value": "The certificate chain for timestamp is not trusted, it does not contain a trust anchor.", + "NameId": "BBB_XCV_CCCBB_TSP_ANS" + } + ], + "Warnings": null, + "Infos": null + }, + "Id": "T-04107438879EF75A0129DF82864A7BF51CF0508E8C71C8AFB2F16D886E0EB1C7", + "Type": "TIMESTAMP" + }, + { + "FC": { + "Constraint": [ + { + "Name": { + "value": "Does the signature format correspond to an expected format?", + "NameId": "BBB_FC_IEFF" + }, + "Status": "OK", + "Error": null, + "Warning": null, + "Info": null, + "AdditionalInfo": null, + "Id": null + }, + { + "Name": { + "value": "Is the signature identification not ambiguous?", + "NameId": "BBB_FC_ISD" + }, + "Status": "OK", + "Error": null, + "Warning": null, + "Info": null, + "AdditionalInfo": null, + "Id": null + }, + { + "Name": { + "value": "Is only one SignerInfo present?", + "NameId": "BBB_FC_IOSIP" + }, + "Status": "OK", + "Error": null, + "Warning": null, + "Info": null, + "AdditionalInfo": null, + "Id": null + } + ], + "Conclusion": { + "Indication": "PASSED", + "SubIndication": null, + "Errors": null, + "Warnings": [], + "Infos": [] + }, + "Title": "Format Checking" + }, + "ISC": { + "CertificateChain": { + "ChainItem": [ + { + "Source": "SIGNATURE", + "Id": "C-02F3EBCA0163274253BC809D27498DD41BB0316D7E6B066960115DE155589D9C" + } + ] + }, + "Constraint": [ + { + "Name": { + "value": "Is there an identified candidate for the signing certificate?", + "NameId": "BBB_ICS_ISCI" + }, + "Status": "OK", + "Error": null, + "Warning": null, + "Info": null, + "AdditionalInfo": null, + "Id": null + }, + { + "Name": { + "value": "Is the signed attribute: 'signing-certificate' present?", + "NameId": "BBB_ICS_ISASCP" + }, + "Status": "OK", + "Error": null, + "Warning": null, + "Info": null, + "AdditionalInfo": null, + "Id": null + }, + { + "Name": { + "value": "Is the signed attribute: 'signing-certificate' present only once?", + "NameId": "BBB_ICS_ISASCPU" + }, + "Status": "OK", + "Error": null, + "Warning": null, + "Info": null, + "AdditionalInfo": null, + "Id": null + }, + { + "Name": { + "value": "Is the signed attribute: 'cert-digest' of the certificate present?", + "NameId": "BBB_ICS_ISACDP" + }, + "Status": "OK", + "Error": null, + "Warning": null, + "Info": null, + "AdditionalInfo": null, + "Id": null + }, + { + "Name": { + "value": "Does the certificate digest value match a digest value found in the certificate reference(s)?", + "NameId": "BBB_ICS_ICDVV" + }, + "Status": "OK", + "Error": null, + "Warning": null, + "Info": null, + "AdditionalInfo": null, + "Id": null + }, + { + "Name": { + "value": "Are the issuer distinguished name and the serial number equal?", + "NameId": "BBB_ICS_AIDNASNE" + }, + "Status": "OK", + "Error": null, + "Warning": null, + "Info": null, + "AdditionalInfo": null, + "Id": null + } + ], + "Conclusion": { + "Indication": "PASSED", + "SubIndication": null, + "Errors": null, + "Warnings": [], + "Infos": [] + }, + "Title": "Identification of the Signing Certificate" + }, + "VCI": { + "Constraint": [ + { + "Name": { + "value": "Is the signature policy known?", + "NameId": "BBB_VCI_ISPK" + }, + "Status": "OK", + "Error": null, + "Warning": null, + "Info": null, + "AdditionalInfo": null, + "Id": null + } + ], + "Conclusion": { + "Indication": "PASSED", + "SubIndication": null, + "Errors": null, + "Warnings": [], + "Infos": [] + }, + "Title": "Validation Context Initialization" + }, + "XCV": { + "SubXCV": [], + "Constraint": [ + { + "Name": { + "value": "Can the certificate chain be built till a trust anchor?", + "NameId": "BBB_XCV_CCCBB" + }, + "Status": "NOT OK", + "Error": { + "value": "The certificate chain for signature is not trusted, it does not contain a trust anchor.", + "NameId": "BBB_XCV_CCCBB_SIG_ANS" + }, + "Warning": null, + "Info": null, + "AdditionalInfo": null, + "Id": null + } + ], + "Conclusion": { + "Indication": "INDETERMINATE", + "SubIndication": "NO_CERTIFICATE_CHAIN_FOUND", + "Errors": [ + { + "value": "The certificate chain for signature is not trusted, it does not contain a trust anchor.", + "NameId": "BBB_XCV_CCCBB_SIG_ANS" + } + ], + "Warnings": [], + "Infos": [] + }, + "Title": "X509 Certificate Validation" + }, + "CV": { + "Constraint": [ + { + "Name": { + "value": "Has the reference data object been found?", + "NameId": "BBB_CV_IRDOF" + }, + "Status": "OK", + "Error": null, + "Warning": null, + "Info": null, + "AdditionalInfo": "Reference : MESSAGE_DIGEST", + "Id": null + }, + { + "Name": { + "value": "Is the reference data object intact?", + "NameId": "BBB_CV_IRDOI" + }, + "Status": "OK", + "Error": null, + "Warning": null, + "Info": null, + "AdditionalInfo": "Reference : MESSAGE_DIGEST", + "Id": null + }, + { + "Name": { + "value": "Is the signature intact?", + "NameId": "BBB_CV_ISI" + }, + "Status": "NOT OK", + "Error": { + "value": "The signature is not intact!", + "NameId": "BBB_CV_ISI_ANS" + }, + "Warning": null, + "Info": null, + "AdditionalInfo": "Id = S-3C70522FD9A46A58A1B85628826071C464AC88902C2EA15B2BD3C5285069E0EA", + "Id": null + } + ], + "Conclusion": { + "Indication": "FAILED", + "SubIndication": "SIG_CRYPTO_FAILURE", + "Errors": [ + { + "value": "The signature is not intact!", + "NameId": "BBB_CV_ISI_ANS" + } + ], + "Warnings": [], + "Infos": [] + }, + "Title": "Cryptographic Verification" + }, + "SAV": { + "CryptographicInfo": { + "Algorithm": "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256", + "KeyLength": "2048", + "Secure": true, + "NotAfter": "2022-12-31T22:00:00" + }, + "Constraint": [ + { + "Name": { + "value": "Is the structure of the signature valid?", + "NameId": "BBB_SAV_ISSV" + }, + "Status": "OK", + "Error": null, + "Warning": null, + "Info": null, + "AdditionalInfo": null, + "Id": null + }, + { + "Name": { + "value": "Is the signed qualifying property: 'signing-time' present?", + "NameId": "BBB_SAV_ISQPSTP" + }, + "Status": "OK", + "Error": null, + "Warning": null, + "Info": null, + "AdditionalInfo": null, + "Id": null + }, + { + "Name": { + "value": "Is the signed qualifying property: 'message-digest' or 'SignedProperties' present?", + "NameId": "BBB_SAV_ISQPMDOSPP" + }, + "Status": "OK", + "Error": null, + "Warning": null, + "Info": null, + "AdditionalInfo": null, + "Id": null + }, + { + "Name": { + "value": "Are signature cryptographic constraints met?", + "NameId": "ASCCM" + }, + "Status": "OK", + "Error": null, + "Warning": null, + "Info": null, + "AdditionalInfo": "Validation time : 2020-11-10 16:46 for token with ID : [S-3C70522FD9A46A58A1B85628826071C464AC88902C2EA15B2BD3C5285069E0EA]", + "Id": null + } + ], + "Conclusion": { + "Indication": "PASSED", + "SubIndication": null, + "Errors": null, + "Warnings": [], + "Infos": [] + }, + "Title": "Signature Acceptance Validation", + "ValidationTime": "2020-11-10T16:46:18" + }, + "PSV": null, + "PCV": null, + "VTS": null, + "CertificateChain": { + "ChainItem": [ + { + "Source": "SIGNATURE", + "Id": "C-02F3EBCA0163274253BC809D27498DD41BB0316D7E6B066960115DE155589D9C" + } + ] + }, + "Conclusion": { + "Indication": "FAILED", + "SubIndication": "SIG_CRYPTO_FAILURE", + "Errors": [ + { + "value": "The certificate chain for signature is not trusted, it does not contain a trust anchor.", + "NameId": "BBB_XCV_CCCBB_SIG_ANS" + }, + { + "value": "The signature is not intact!", + "NameId": "BBB_CV_ISI_ANS" + } + ], + "Warnings": null, + "Infos": null + }, + "Id": "S-3C70522FD9A46A58A1B85628826071C464AC88902C2EA15B2BD3C5285069E0EA", + "Type": "SIGNATURE" + } + ], + "TLAnalysis": [], + "ValidationTime": "2020-11-10T16:46:18" + } +} +``` diff --git a/website/docs/validation_test_plan.png b/website/docs/validation_test_plan.png new file mode 100644 index 0000000..6962472 Binary files /dev/null and b/website/docs/validation_test_plan.png differ diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js new file mode 100644 index 0000000..76a5c50 --- /dev/null +++ b/website/docusaurus.config.js @@ -0,0 +1,66 @@ +module.exports = { + title: 'E-SEAL Module', + tagline: 'Signing & Validation of documents', + url: 'https://argoeu.github.io', +// baseUrl: '/', + baseUrl: '/gr.grnet.eseal/', + onBrokenLinks: 'throw', + onBrokenMarkdownLinks: 'warn', + favicon: 'img/grnet-favicon.png', + organizationName: 'ARGOeu', // Usually your GitHub org/user name. + projectName: 'gr.grnet.eseal', // Usually your repo name. + themeConfig: { + navbar: { + title: 'E-SEAL', + logo: { + alt: 'GRNET', + src: 'img/grnet-logo.png', + }, + items: [ + { + to: 'docs/', + activeBasePath: 'docs', + label: 'Docs', + position: 'left', + }, + //{to: 'blog', label: 'Blog', position: 'left'}, + { + //href: 'https://github.com/facebook/docusaurus', + //label: 'GitHub', + //position: 'right', + }, + ], + }, + footer: { + style: 'dark', + logo: { + alt: 'GRNET', + src: 'img/grnet-logo.png', + href: 'http://www.grnet.gr/', + }, + copyright: `Copyright © ${new Date().getFullYear()} GRNET `, + }, + }, + presets: [ + [ + '@docusaurus/preset-classic', + { + docs: { + sidebarPath: require.resolve('./sidebars.js'), + // Please change this to your repo. + //editUrl: + // 'https://github.com/facebook/docusaurus/edit/master/website/', + }, + //blog: { + // showReadingTime: true, + // // Please change this to your repo. + // editUrl: + // 'https://github.com/facebook/docusaurus/edit/master/website/blog/', + //}, + theme: { + customCss: require.resolve('./src/css/custom.css'), + }, + }, + ], + ], +}; diff --git a/website/package.json b/website/package.json new file mode 100644 index 0000000..6f1307d --- /dev/null +++ b/website/package.json @@ -0,0 +1,34 @@ +{ + "name": "website", + "version": "0.0.0", + "private": true, + "scripts": { + "docusaurus": "docusaurus", + "start": "docusaurus start", + "build": "docusaurus build", + "swizzle": "docusaurus swizzle", + "deploy": "docusaurus deploy", + "serve": "docusaurus serve", + "clear": "docusaurus clear" + }, + "dependencies": { + "@docusaurus/core": "2.0.0-alpha.70", + "@docusaurus/preset-classic": "2.0.0-alpha.70", + "@mdx-js/react": "^1.6.21", + "clsx": "^1.1.1", + "react": "^16.8.4", + "react-dom": "^16.8.4" + }, + "browserslist": { + "production": [ + ">0.5%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + } +} \ No newline at end of file diff --git a/website/sidebars.js b/website/sidebars.js new file mode 100644 index 0000000..a75e92c --- /dev/null +++ b/website/sidebars.js @@ -0,0 +1,5 @@ +module.exports = { + someSidebar: { + 'E-signature library': ['index', 'signing', 'validation', 'errors', 'timestamp'], + }, +}; diff --git a/website/src/css/custom.css b/website/src/css/custom.css new file mode 100644 index 0000000..74ba0f2 --- /dev/null +++ b/website/src/css/custom.css @@ -0,0 +1,25 @@ +/* stylelint-disable docusaurus/copyright-header */ +/** + * Any CSS included here will be global. The classic template + * bundles Infima by default. Infima is a CSS framework designed to + * work well for content-centric websites. + */ + +/* You can override the default Infima variables here. */ +:root { + --ifm-color-primary: #25c2a0; + --ifm-color-primary-dark: rgb(33, 175, 144); + --ifm-color-primary-darker: rgb(31, 165, 136); + --ifm-color-primary-darkest: rgb(26, 136, 112); + --ifm-color-primary-light: rgb(70, 203, 174); + --ifm-color-primary-lighter: rgb(102, 212, 189); + --ifm-color-primary-lightest: rgb(146, 224, 208); + --ifm-code-font-size: 95%; +} + +.docusaurus-highlight-code-line { + background-color: rgb(72, 77, 91); + display: block; + margin: 0 calc(-1 * var(--ifm-pre-padding)); + padding: 0 var(--ifm-pre-padding); +} diff --git a/website/src/pages/index.js b/website/src/pages/index.js new file mode 100644 index 0000000..90980ff --- /dev/null +++ b/website/src/pages/index.js @@ -0,0 +1,87 @@ +import React from 'react'; +import clsx from 'clsx'; +import Layout from '@theme/Layout'; +import Link from '@docusaurus/Link'; +import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; +import useBaseUrl from '@docusaurus/useBaseUrl'; +import styles from './styles.module.css'; + +const features = [ + { + title: 'Sing PDF documents', + imageUrl: 'img/undraw_terms.svg', + description: ( + <> + E-seal Module adds qualified e-sealing capabilities. + + ), + }, + { + }, + { + title: 'Validate PDF documents', + imageUrl: 'img/undraw_file.svg', + description: ( + <> + Check if PDF documents contain qualified digital signatures. + + ), + }, +]; + +function Feature({imageUrl, title, description}) { + const imgUrl = useBaseUrl(imageUrl); + return ( +
+ {imgUrl && ( +
+ {title} +
+ )} +

{title}

+

{description}

+
+ ); +} + +function Home() { + const context = useDocusaurusContext(); + const {siteConfig = {}} = context; + return ( + +
+
+

{siteConfig.title}

+

{siteConfig.tagline}

+
+ + Get Started + +
+
+
+
+ {features && features.length > 0 && ( +
+
+
+ {features.map((props, idx) => ( + + ))} +
+
+
+ )} +
+
+ ); +} + +export default Home; diff --git a/website/src/pages/styles.module.css b/website/src/pages/styles.module.css new file mode 100644 index 0000000..c1aa851 --- /dev/null +++ b/website/src/pages/styles.module.css @@ -0,0 +1,37 @@ +/* stylelint-disable docusaurus/copyright-header */ + +/** + * CSS files with the .module.css suffix will be treated as CSS modules + * and scoped locally. + */ + +.heroBanner { + padding: 4rem 0; + text-align: center; + position: relative; + overflow: hidden; +} + +@media screen and (max-width: 966px) { + .heroBanner { + padding: 2rem; + } +} + +.buttons { + display: flex; + align-items: center; + justify-content: center; +} + +.features { + display: flex; + align-items: center; + padding: 2rem 0; + width: 100%; +} + +.featureImage { + height: 200px; + width: 200px; +} diff --git a/website/static/.nojekyll b/website/static/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/website/static/assets/e_signature_rest_api.postman_collection.json b/website/static/assets/e_signature_rest_api.postman_collection.json new file mode 100644 index 0000000..b4ca9b2 --- /dev/null +++ b/website/static/assets/e_signature_rest_api.postman_collection.json @@ -0,0 +1,169 @@ +{ + "info": { + "_postman_id": "35d3fced-96c9-407e-8ff5-729df057553e", + "name": "E-signature Rest API", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "name": "PDF Validation", + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n\t\"signedDocument\": {\n\t\t\"name\": \"{{pdf_name_to_validate}}\",\n\t\t\"bytes\": \"{{pdf_base64_to_validate}}\"\n\t\t\n\t}\n}" + }, + "url": { + "raw": "{{protocol}}://{{base_url}}:{{port}}/{{validation_path}}/{{validation_endpoint}}", + "protocol": "{{protocol}}", + "host": [ + "{{base_url}}" + ], + "port": "{{port}}", + "path": [ + "{{validation_path}}", + "{{validation_endpoint}}" + ] + } + }, + "response": [] + }, + { + "name": "PDF Timestamp", + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n\t\"toTimestampDocument\": {\n\t\t\"name\": \"{{pdf_name_to_timestamp}}\",\n\t\t\"bytes\": \"{{pdf_base64_to_timestamp}}\"\n\t}\n}" + }, + "url": { + "raw": "{{protocol}}://{{base_url}}:{{port}}/{{timestamp_path}}/{{timestamp_endpoint}}", + "protocol": "{{protocol}}", + "host": [ + "{{base_url}}" + ], + "port": "{{port}}", + "path": [ + "{{timestamp_path}}", + "{{timestamp_endpoint}}" + ] + } + }, + "response": [] + }, + { + "name": "PDF Signing", + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n\t\"username\": \"{{username}}\",\n\t\"password\": \"{{password}}\",\n\t\"key\": \"{{key}}\",\n\t\"toSignDocument\": {\n\t\t\"name\": \"{{pdf_name_to_sign}}\",\n \"bytes\": \"{{pdf_base64_to_sign}}\"\n\t}\n}" + }, + "url": { + "raw": "{{protocol}}://{{base_url}}:{{port}}/{{signing_path}}/{{signing_endpoint}}", + "protocol": "{{protocol}}", + "host": [ + "{{base_url}}" + ], + "port": "{{port}}", + "path": [ + "{{signing_path}}", + "{{signing_endpoint}}" + ] + } + }, + "response": [] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "variable": [ + { + "key": "signing_path", + "value": "api/v1/signing" + }, + { + "key": "signing_endpoint", + "value": "remoteSignDocumentDetached" + }, + { + "key": "pdf_name_to_sign", + "value": "to_sign.pdf" + }, + { + "key": "pdf_base64_to_sign", + "value": "" + }, + { + "key": "validation_path", + "value": "api/v1/validation" + }, + { + "key": "validation_endpoint", + "value": "validateDocument" + }, + { + "key": "pdf_name_to_validate", + "value": "to_validate.pdf" + }, + { + "key": "pdf_base64_to_validate", + "value": "" + }, + { + "key": "timestamp_path", + "value": "api/v1/timestamping" + }, + { + "key": "timestamp_endpoint", + "value": "remoteTimestampDocument" + }, + { + "key": "pdf_name_to_timestamp", + "value": "to_timestamp.pdf" + }, + { + "key": "pdf_base64_to_timestamp", + "value": "" + } + ] +} \ No newline at end of file diff --git a/website/static/assets/eseal_environment.postman_environment.json b/website/static/assets/eseal_environment.postman_environment.json new file mode 100644 index 0000000..695bb5e --- /dev/null +++ b/website/static/assets/eseal_environment.postman_environment.json @@ -0,0 +1,39 @@ +{ + "id": "48a414c8-3f42-4e99-b7d6-e4d67d0e2638", + "name": "Eseal Environment", + "values": [ + { + "key": "base_url", + "value": "eseal.devel.einfra.grnet.gr", + "enabled": true + }, + { + "key": "port", + "value": "443", + "enabled": true + }, + { + "key": "protocol", + "value": "https", + "enabled": true + }, + { + "key": "username", + "value": "", + "enabled": true + }, + { + "key": "password", + "value": "", + "enabled": true + }, + { + "key": "key", + "value": "", + "enabled": true + } + ], + "_postman_variable_scope": "environment", + "_postman_exported_at": "2021-05-25T10:39:58.731Z", + "_postman_exported_using": "Postman/8.5.0" +} \ No newline at end of file diff --git a/website/static/img/favicon.ico b/website/static/img/favicon.ico new file mode 100644 index 0000000..c01d54b Binary files /dev/null and b/website/static/img/favicon.ico differ diff --git a/website/static/img/grnet-favicon.png b/website/static/img/grnet-favicon.png new file mode 100644 index 0000000..93a0763 Binary files /dev/null and b/website/static/img/grnet-favicon.png differ diff --git a/website/static/img/grnet-logo.png b/website/static/img/grnet-logo.png new file mode 100644 index 0000000..59ec960 Binary files /dev/null and b/website/static/img/grnet-logo.png differ diff --git a/website/static/img/logo.svg b/website/static/img/logo.svg new file mode 100644 index 0000000..9db6d0d --- /dev/null +++ b/website/static/img/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/website/static/img/undraw_docusaurus_mountain.svg b/website/static/img/undraw_docusaurus_mountain.svg new file mode 100644 index 0000000..431cef2 --- /dev/null +++ b/website/static/img/undraw_docusaurus_mountain.svg @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/website/static/img/undraw_docusaurus_react.svg b/website/static/img/undraw_docusaurus_react.svg new file mode 100644 index 0000000..e417050 --- /dev/null +++ b/website/static/img/undraw_docusaurus_react.svg @@ -0,0 +1,169 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/website/static/img/undraw_docusaurus_tree.svg b/website/static/img/undraw_docusaurus_tree.svg new file mode 100644 index 0000000..a05cc03 --- /dev/null +++ b/website/static/img/undraw_docusaurus_tree.svg @@ -0,0 +1 @@ +docu_tree \ No newline at end of file diff --git a/website/static/img/undraw_file.svg b/website/static/img/undraw_file.svg new file mode 100644 index 0000000..c0642ee --- /dev/null +++ b/website/static/img/undraw_file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/website/static/img/undraw_terms.svg b/website/static/img/undraw_terms.svg new file mode 100644 index 0000000..bc1a764 --- /dev/null +++ b/website/static/img/undraw_terms.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/website/yarn.lock b/website/yarn.lock new file mode 100644 index 0000000..105cbed --- /dev/null +++ b/website/yarn.lock @@ -0,0 +1,10365 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@algolia/autocomplete-core@^1.0.0-alpha.35": + version "1.0.0-alpha.44" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.0.0-alpha.44.tgz#e626dba45f5f3950d6beb0ab055395ef0f7e8bb2" + integrity sha512-2iMXthldMIDXtlbg9omRKLgg1bLo2ZzINAEqwhNjUeyj1ceEyL1ck6FY0VnJpf2LsjmNthHCz2BuFk+nYUeDNA== + dependencies: + "@algolia/autocomplete-shared" "1.0.0-alpha.44" + +"@algolia/autocomplete-preset-algolia@^1.0.0-alpha.35": + version "1.0.0-alpha.44" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.0.0-alpha.44.tgz#0ea0b255d0be10fbe262e281472dd6e4619b62ba" + integrity sha512-DCHwo5ovzg9k2ejUolGNTLFnIA7GpsrkbNJTy1sFbMnYfBmeK8egZPZnEl7lBTr27OaZu7IkWpTepLVSztZyng== + dependencies: + "@algolia/autocomplete-shared" "1.0.0-alpha.44" + +"@algolia/autocomplete-shared@1.0.0-alpha.44": + version "1.0.0-alpha.44" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.0.0-alpha.44.tgz#db13902ad1667e455711b77d08cae1a0feafaa48" + integrity sha512-2oQZPERYV+yNx/yoVWYjZZdOqsitJ5dfxXJjL18yczOXH6ujnsq+DTczSrX+RjzjQdVeJ1UAG053EJQF/FOiMg== + +"@algolia/cache-browser-local-storage@4.8.5": + version "4.8.5" + resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.8.5.tgz#3eb10758c794d3cc8fc4e9f09e339d5b9589dc9c" + integrity sha512-9rs/Yi82ilgifweJamOy4DlJ4xPGsCN/zg+RKy4vjytNhOrkEHLRQC8vPZ3OhD8KVlw9lRQIZTlgjgFl8iMeeA== + dependencies: + "@algolia/cache-common" "4.8.5" + +"@algolia/cache-common@4.8.5": + version "4.8.5" + resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.8.5.tgz#86f8a6878bd2fc5c8d889e48d18d3033faa0bcd8" + integrity sha512-4SvRWnagKtwBFAy8Rsfmv0/Uk53fZL+6dy2idwdx6SjMGKSs0y1Qv+thb4h/k/H5MONisAoT9C2rgZ/mqwh5yw== + +"@algolia/cache-in-memory@4.8.5": + version "4.8.5" + resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.8.5.tgz#13055d54775f99aa4e1ce051e73079d0f207a3e6" + integrity sha512-XBBfqs28FbjwLboY3sxvuzBgYsuXdFsj2mUvkgxfb0GVEzwW4I0NM7KzSPwT+iht55WS1PgIOnynjmhPsrubCw== + dependencies: + "@algolia/cache-common" "4.8.5" + +"@algolia/client-account@4.8.5": + version "4.8.5" + resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.8.5.tgz#92df1dd0a7bea06e329873c7098c72cc4dd8e9d6" + integrity sha512-DjXMpeCdY4J4IDBfowiG6Xl9ec/FhG1NpPQM0Uv4xXsc/TeeZ1JgbgNDhWe9jW0jBEALy+a/RmPrZ0vsxcadsg== + dependencies: + "@algolia/client-common" "4.8.5" + "@algolia/client-search" "4.8.5" + "@algolia/transporter" "4.8.5" + +"@algolia/client-analytics@4.8.5": + version "4.8.5" + resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.8.5.tgz#1aa731a146b347022a0a9e0eb009f2b2f8d9825f" + integrity sha512-PQEY+chbHmZnRJdaWsvUYzDpEPr60az0EPUexdouvXGZId15/SnDaXjnf89F7tYmCzkHdUtG4bSvPzAupQ4AFA== + dependencies: + "@algolia/client-common" "4.8.5" + "@algolia/client-search" "4.8.5" + "@algolia/requester-common" "4.8.5" + "@algolia/transporter" "4.8.5" + +"@algolia/client-common@4.8.5": + version "4.8.5" + resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.8.5.tgz#77e5d9bbfcb421fa8812cdd91943961c64793148" + integrity sha512-Dn8vog2VrGsJeOcBMcSAEIjBtPyogzUBGlh1DtVd0m8GN6q+cImCESl6DY846M2PTYWsLBKBksq37eUfSe9FxQ== + dependencies: + "@algolia/requester-common" "4.8.5" + "@algolia/transporter" "4.8.5" + +"@algolia/client-recommendation@4.8.5": + version "4.8.5" + resolved "https://registry.yarnpkg.com/@algolia/client-recommendation/-/client-recommendation-4.8.5.tgz#f02f8f8ff3983597cae677ec0bc3eb01ae26121a" + integrity sha512-ffawCC1C25rCa8/JU2niRZgwr8aV9b2qsLVMo73GXFzi2lceXPAe9K68mt/BGHU+w7PFUwVHsV2VmB+G/HQRVw== + dependencies: + "@algolia/client-common" "4.8.5" + "@algolia/requester-common" "4.8.5" + "@algolia/transporter" "4.8.5" + +"@algolia/client-search@4.8.5": + version "4.8.5" + resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.8.5.tgz#970a5c91847822dbd82565f97bd2a0c37a5d56e6" + integrity sha512-Ru2MljGZWrSQ0CVsDla11oGEPL/RinmVkLJfBtQ+/pk1868VfpAQFGKtOS/b8/xLrMA0Vm4EfC3Mgclk/p3KJA== + dependencies: + "@algolia/client-common" "4.8.5" + "@algolia/requester-common" "4.8.5" + "@algolia/transporter" "4.8.5" + +"@algolia/logger-common@4.8.5": + version "4.8.5" + resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.8.5.tgz#ef275c532c21424f4b29b26ec2e27de2c973ad95" + integrity sha512-PS6NS6bpED0rAxgCPGhjZJg9why0PnoVEE7ZoCbPq6lsAOc6FPlQLri4OiLyU7wx8RWDoVtOadyzulqAAsfPSQ== + +"@algolia/logger-console@4.8.5": + version "4.8.5" + resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.8.5.tgz#8fe547fdcf76574963503f7c4ff2673e792ae886" + integrity sha512-3+4gLSbwzuGmrb5go3IZNcFIYVMSbB4c8UMtWEJ/gDBtgGZIvT6f/KlvVSOHIhthSxaM3Y13V6Qile/SpGqc6A== + dependencies: + "@algolia/logger-common" "4.8.5" + +"@algolia/requester-browser-xhr@4.8.5": + version "4.8.5" + resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.8.5.tgz#95e01e2dca38358055f08440f46d4f0b9f735280" + integrity sha512-M/Gf2vv/fU4+CqDW+wok7HPpEcLym3NtDzU9zaPzGYI/9X7o36581oyfnzt2pNfsXSQVj5a2pZVUWC3Z4SO27w== + dependencies: + "@algolia/requester-common" "4.8.5" + +"@algolia/requester-common@4.8.5": + version "4.8.5" + resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.8.5.tgz#952dec3b36c14495af158914cd6c0e2c9ce72b5e" + integrity sha512-OIhsdwIrJVAlVlP7cwlt+RoR5AmxAoTGrFokOY9imVmgqXUUljdKO/DjhRL8vwYGFEidZ9efIjAIQ2B3XOhT9A== + +"@algolia/requester-node-http@4.8.5": + version "4.8.5" + resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.8.5.tgz#a1e5a6d23a9a4e78abd5a2416f1a6c232b0a7e14" + integrity sha512-viHAjfo53A3VSE7Bb/nzgpSMZ3prPp2qti7Wg8w7qxhntppKp3Fln6t4Vp+BoPOqruLsj139xXhheAKeRcYa0w== + dependencies: + "@algolia/requester-common" "4.8.5" + +"@algolia/transporter@4.8.5": + version "4.8.5" + resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.8.5.tgz#86f4e286cb4eba6e62f1c0393c33cc17ff262fa9" + integrity sha512-Rb3cMlh/GoJK0+g+49GNA3IvR/EXsDEBwpyM+FOotSwxgiGt1wGBHM0K2v0GHwIEcuww02pl6KMDVlilA+qh0g== + dependencies: + "@algolia/cache-common" "4.8.5" + "@algolia/logger-common" "4.8.5" + "@algolia/requester-common" "4.8.5" + +"@babel/code-frame@7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" + integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== + dependencies: + "@babel/highlight" "^7.8.3" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" + integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== + dependencies: + "@babel/highlight" "^7.12.13" + +"@babel/compat-data@^7.13.0", "@babel/compat-data@^7.13.8": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.13.8.tgz#5b783b9808f15cef71547f1b691f34f8ff6003a6" + integrity sha512-EaI33z19T4qN3xLXsGf48M2cDqa6ei9tPZlfLdb2HC+e/cFtREiRd8hdSqDbwdLB0/+gLwqJmCYASH0z2bUdog== + +"@babel/core@7.12.9": + version "7.12.9" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.9.tgz#fd450c4ec10cdbb980e2928b7aa7a28484593fc8" + integrity sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.5" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helpers" "^7.12.5" + "@babel/parser" "^7.12.7" + "@babel/template" "^7.12.7" + "@babel/traverse" "^7.12.9" + "@babel/types" "^7.12.7" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.19" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/core@^7.12.3": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.13.8.tgz#c191d9c5871788a591d69ea1dc03e5843a3680fb" + integrity sha512-oYapIySGw1zGhEFRd6lzWNLWFX2s5dA/jm+Pw/+59ZdXtjyIuwlXbrId22Md0rgZVop+aVoqow2riXhBLNyuQg== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/generator" "^7.13.0" + "@babel/helper-compilation-targets" "^7.13.8" + "@babel/helper-module-transforms" "^7.13.0" + "@babel/helpers" "^7.13.0" + "@babel/parser" "^7.13.4" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + lodash "^4.17.19" + semver "^6.3.0" + source-map "^0.5.0" + +"@babel/generator@^7.12.5", "@babel/generator@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.0.tgz#bd00d4394ca22f220390c56a0b5b85568ec1ec0c" + integrity sha512-zBZfgvBB/ywjx0Rgc2+BwoH/3H+lDtlgD4hBOpEv5LxRnYsm/753iRuLepqnYlynpjC3AdQxtxsoeHJoEEwOAw== + dependencies: + "@babel/types" "^7.13.0" + jsesc "^2.5.1" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.10.4", "@babel/helper-annotate-as-pure@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz#0f58e86dfc4bb3b1fcd7db806570e177d439b6ab" + integrity sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw== + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz#6bc20361c88b0a74d05137a65cac8d3cbf6f61fc" + integrity sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.12.13" + "@babel/types" "^7.12.13" + +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.13.8": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.8.tgz#02bdb22783439afb11b2f009814bdd88384bd468" + integrity sha512-pBljUGC1y3xKLn1nrx2eAhurLMA8OqBtBP/JwG4U8skN7kf8/aqwwxpV1N6T0e7r6+7uNitIa/fUxPFagSXp3A== + dependencies: + "@babel/compat-data" "^7.13.8" + "@babel/helper-validator-option" "^7.12.17" + browserslist "^4.14.5" + semver "^6.3.0" + +"@babel/helper-create-class-features-plugin@^7.13.0": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.8.tgz#0367bd0a7505156ce018ca464f7ac91ba58c1a04" + integrity sha512-qioaRrKHQbn4hkRKDHbnuQ6kAxmmOF+kzKGnIfxPK4j2rckSJCpKzr/SSTlohSCiE3uAQpNDJ9FIh4baeE8W+w== + dependencies: + "@babel/helper-function-name" "^7.12.13" + "@babel/helper-member-expression-to-functions" "^7.13.0" + "@babel/helper-optimise-call-expression" "^7.12.13" + "@babel/helper-replace-supers" "^7.13.0" + "@babel/helper-split-export-declaration" "^7.12.13" + +"@babel/helper-create-regexp-features-plugin@^7.12.13": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz#a2ac87e9e319269ac655b8d4415e94d38d663cb7" + integrity sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.12.13" + regexpu-core "^4.7.1" + +"@babel/helper-define-polyfill-provider@^0.1.4": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.4.tgz#b618b087c6a0328127e5d53576df818bcee2b15f" + integrity sha512-K5V2GaQZ1gpB+FTXM4AFVG2p1zzhm67n9wrQCJYNzvuLzQybhJyftW7qeDd2uUxPDNdl5Rkon1rOAeUeNDZ28Q== + dependencies: + "@babel/helper-compilation-targets" "^7.13.0" + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/traverse" "^7.13.0" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" + +"@babel/helper-explode-assignable-expression@^7.12.13": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz#17b5c59ff473d9f956f40ef570cf3a76ca12657f" + integrity sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA== + dependencies: + "@babel/types" "^7.13.0" + +"@babel/helper-function-name@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz#93ad656db3c3c2232559fd7b2c3dbdcbe0eb377a" + integrity sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA== + dependencies: + "@babel/helper-get-function-arity" "^7.12.13" + "@babel/template" "^7.12.13" + "@babel/types" "^7.12.13" + +"@babel/helper-get-function-arity@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583" + integrity sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg== + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-hoist-variables@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz#5d5882e855b5c5eda91e0cadc26c6e7a2c8593d8" + integrity sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g== + dependencies: + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.0" + +"@babel/helper-member-expression-to-functions@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.0.tgz#6aa4bb678e0f8c22f58cdb79451d30494461b091" + integrity sha512-yvRf8Ivk62JwisqV1rFRMxiSMDGnN6KH1/mDMmIrij4jztpQNRoHqqMG3U6apYbGRPJpgPalhva9Yd06HlUxJQ== + dependencies: + "@babel/types" "^7.13.0" + +"@babel/helper-module-imports@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz#ec67e4404f41750463e455cc3203f6a32e93fcb0" + integrity sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g== + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.13.0.tgz#42eb4bd8eea68bab46751212c357bfed8b40f6f1" + integrity sha512-Ls8/VBwH577+pw7Ku1QkUWIyRRNHpYlts7+qSqBBFCW3I8QteB9DxfcZ5YJpOwH6Ihe/wn8ch7fMGOP1OhEIvw== + dependencies: + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-replace-supers" "^7.13.0" + "@babel/helper-simple-access" "^7.12.13" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/helper-validator-identifier" "^7.12.11" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.0" + lodash "^4.17.19" + +"@babel/helper-optimise-call-expression@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea" + integrity sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA== + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-plugin-utils@7.10.4": + 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-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz#806526ce125aed03373bc416a828321e3a6a33af" + integrity sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ== + +"@babel/helper-remap-async-to-generator@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz#376a760d9f7b4b2077a9dd05aa9c3927cadb2209" + integrity sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.12.13" + "@babel/helper-wrap-function" "^7.13.0" + "@babel/types" "^7.13.0" + +"@babel/helper-replace-supers@^7.12.13", "@babel/helper-replace-supers@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.13.0.tgz#6034b7b51943094cb41627848cb219cb02be1d24" + integrity sha512-Segd5me1+Pz+rmN/NFBOplMbZG3SqRJOBlY+mA0SxAv6rjj7zJqr1AVr3SfzUVTLCv7ZLU5FycOM/SBGuLPbZw== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.13.0" + "@babel/helper-optimise-call-expression" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.0" + +"@babel/helper-simple-access@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz#8478bcc5cacf6aa1672b251c1d2dde5ccd61a6c4" + integrity sha512-0ski5dyYIHEfwpWGx5GPWhH35j342JaflmCeQmsPWcrOQDtCN6C1zKAVRFVbK53lPW2c9TsuLLSUDf0tIGJ5hA== + dependencies: + "@babel/types" "^7.12.13" + +"@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.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05" + integrity sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg== + dependencies: + "@babel/types" "^7.12.13" + +"@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.17": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831" + integrity sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw== + +"@babel/helper-wrap-function@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz#bdb5c66fda8526ec235ab894ad53a1235c79fcc4" + integrity sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA== + dependencies: + "@babel/helper-function-name" "^7.12.13" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.0" + +"@babel/helpers@^7.12.5", "@babel/helpers@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.13.0.tgz#7647ae57377b4f0408bf4f8a7af01c42e41badc0" + integrity sha512-aan1MeFPxFacZeSz6Ld7YZo5aPuqnKlD7+HZY75xQsueczFccP9A7V05+oe0XpLwHK3oLorPe9eaAUljL7WEaQ== + dependencies: + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.0" + +"@babel/highlight@^7.12.13", "@babel/highlight@^7.8.3": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.13.8.tgz#10b2dac78526424dfc1f47650d0e415dfd9dc481" + integrity sha512-4vrIhfJyfNf+lCtXC2ck1rKSzDwciqF7IWFhXXrSOUC2O5DrVp+w4c6ed4AllTxhTkUP5x2tYj41VaxdVMMRDw== + dependencies: + "@babel/helper-validator-identifier" "^7.12.11" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.12.13", "@babel/parser@^7.12.5", "@babel/parser@^7.12.7", "@babel/parser@^7.13.0", "@babel/parser@^7.13.4": + version "7.13.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.4.tgz#340211b0da94a351a6f10e63671fa727333d13ab" + integrity sha512-uvoOulWHhI+0+1f9L4BoozY7U5cIkZ9PgJqvb041d6vypgUmtVPG4vmGm4pSggjl8BELzvHyUeJSUyEMY6b+qA== + +"@babel/plugin-proposal-async-generator-functions@^7.13.8": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz#87aacb574b3bc4b5603f6fe41458d72a5a2ec4b1" + integrity sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-remap-async-to-generator" "^7.13.0" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-proposal-class-properties@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz#146376000b94efd001e57a40a88a525afaab9f37" + integrity sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.13.0" + "@babel/helper-plugin-utils" "^7.13.0" + +"@babel/plugin-proposal-dynamic-import@^7.13.8": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz#876a1f6966e1dec332e8c9451afda3bebcdf2e1d" + integrity sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-proposal-export-namespace-from@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz#393be47a4acd03fa2af6e3cde9b06e33de1b446d" + integrity sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-json-strings@^7.13.8": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz#bf1fb362547075afda3634ed31571c5901afef7b" + integrity sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-proposal-logical-assignment-operators@^7.13.8": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz#93fa78d63857c40ce3c8c3315220fd00bfbb4e1a" + integrity sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1", "@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz#3730a31dafd3c10d8ccd10648ed80a2ac5472ef3" + integrity sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-proposal-numeric-separator@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz#bd9da3188e787b5120b4f9d465a8261ce67ed1db" + integrity sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@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-object-rest-spread@^7.13.8": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz#5d210a4d727d6ce3b18f9de82cc99a3964eed60a" + integrity sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g== + dependencies: + "@babel/compat-data" "^7.13.8" + "@babel/helper-compilation-targets" "^7.13.8" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.13.0" + +"@babel/plugin-proposal-optional-catch-binding@^7.13.8": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz#3ad6bd5901506ea996fc31bdcf3ccfa2bed71107" + integrity sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-proposal-optional-chaining@^7.12.1", "@babel/plugin-proposal-optional-chaining@^7.13.8": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.8.tgz#e39df93efe7e7e621841babc197982e140e90756" + integrity sha512-hpbBwbTgd7Cz1QryvwJZRo1U0k1q8uyBmeXOSQUjdg/A2TASkhR/rz7AyqZ/kS8kbpsNA80rOYbxySBJAqmhhQ== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-private-methods@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz#04bd4c6d40f6e6bbfa2f57e2d8094bad900ef787" + integrity sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.13.0" + "@babel/helper-plugin-utils" "^7.13.0" + +"@babel/plugin-proposal-unicode-property-regex@^7.12.13", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz#bebde51339be829c17aaaaced18641deb62b39ba" + integrity sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-async-generators@^7.8.4": + 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.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-dynamic-import@^7.8.3": + 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.3": + 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-jsx@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz#9d9d357cc818aa7ae7935917c1257f67677a0926" + integrity sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-jsx@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz#044fb81ebad6698fe62c478875575bcbb9b70f15" + integrity sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@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.3": + 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.3", "@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": + 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.3": + 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.3": + 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.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz#c5f0fa6e249f5b739727f923540cf7a806130178" + integrity sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-typescript@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.13.tgz#9dff111ca64154cef0f4dc52cf843d9f12ce4474" + integrity sha512-cHP3u1JiUiG2LFDKbXnwVad81GvfyIOmCD6HIEId6ojrY0Drfy2q1jw7BwN7dE84+kTnBjLkXoL3IEy/3JPu2w== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-arrow-functions@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz#10a59bebad52d637a027afa692e8d5ceff5e3dae" + integrity sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + +"@babel/plugin-transform-async-to-generator@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz#8e112bf6771b82bf1e974e5e26806c5c99aa516f" + integrity sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg== + dependencies: + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-remap-async-to-generator" "^7.13.0" + +"@babel/plugin-transform-block-scoped-functions@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz#a9bf1836f2a39b4eb6cf09967739de29ea4bf4c4" + integrity sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-block-scoping@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz#f36e55076d06f41dfd78557ea039c1b581642e61" + integrity sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-classes@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz#0265155075c42918bf4d3a4053134176ad9b533b" + integrity sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.12.13" + "@babel/helper-function-name" "^7.12.13" + "@babel/helper-optimise-call-expression" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-replace-supers" "^7.13.0" + "@babel/helper-split-export-declaration" "^7.12.13" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz#845c6e8b9bb55376b1fa0b92ef0bdc8ea06644ed" + integrity sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + +"@babel/plugin-transform-destructuring@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz#c5dce270014d4e1ebb1d806116694c12b7028963" + integrity sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + +"@babel/plugin-transform-dotall-regex@^7.12.13", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz#3f1601cc29905bfcb67f53910f197aeafebb25ad" + integrity sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-duplicate-keys@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz#6f06b87a8b803fd928e54b81c258f0a0033904de" + integrity sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-exponentiation-operator@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz#4d52390b9a273e651e4aba6aee49ef40e80cd0a1" + integrity sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-for-of@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz#c799f881a8091ac26b54867a845c3e97d2696062" + integrity sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + +"@babel/plugin-transform-function-name@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz#bb024452f9aaed861d374c8e7a24252ce3a50051" + integrity sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ== + dependencies: + "@babel/helper-function-name" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-literals@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz#2ca45bafe4a820197cf315794a4d26560fe4bdb9" + integrity sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-member-expression-literals@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz#5ffa66cd59b9e191314c9f1f803b938e8c081e40" + integrity sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-modules-amd@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz#19f511d60e3d8753cc5a6d4e775d3a5184866cc3" + integrity sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ== + dependencies: + "@babel/helper-module-transforms" "^7.13.0" + "@babel/helper-plugin-utils" "^7.13.0" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-commonjs@^7.13.8": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz#7b01ad7c2dcf2275b06fa1781e00d13d420b3e1b" + integrity sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw== + dependencies: + "@babel/helper-module-transforms" "^7.13.0" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-simple-access" "^7.12.13" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.13.8": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz#6d066ee2bff3c7b3d60bf28dec169ad993831ae3" + integrity sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A== + dependencies: + "@babel/helper-hoist-variables" "^7.13.0" + "@babel/helper-module-transforms" "^7.13.0" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-validator-identifier" "^7.12.11" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-umd@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz#8a3d96a97d199705b9fd021580082af81c06e70b" + integrity sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw== + dependencies: + "@babel/helper-module-transforms" "^7.13.0" + "@babel/helper-plugin-utils" "^7.13.0" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz#2213725a5f5bbbe364b50c3ba5998c9599c5c9d9" + integrity sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.13" + +"@babel/plugin-transform-new-target@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz#e22d8c3af24b150dd528cbd6e685e799bf1c351c" + integrity sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-object-super@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz#b4416a2d63b8f7be314f3d349bd55a9c1b5171f7" + integrity sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-replace-supers" "^7.12.13" + +"@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz#8fa7603e3097f9c0b7ca1a4821bc2fb52e9e5007" + integrity sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + +"@babel/plugin-transform-property-literals@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz#4e6a9e37864d8f1b3bc0e2dce7bf8857db8b1a81" + integrity sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-react-constant-elements@^7.12.1": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.12.13.tgz#f8ee56888545d53d80f766b3cc1563ab2c241f92" + integrity sha512-qmzKVTn46Upvtxv8LQoQ8mTCdUC83AOVQIQm57e9oekLT5cmK9GOMOfcWhe8jMNx4UJXn/UDhVZ/7lGofVNeDQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-react-display-name@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.13.tgz#c28effd771b276f4647411c9733dbb2d2da954bd" + integrity sha512-MprESJzI9O5VnJZrL7gg1MpdqmiFcUv41Jc7SahxYsNP2kDkFqClxxTZq+1Qv4AFCamm+GXMRDQINNn+qrxmiA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-react-jsx-development@^7.12.12": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.17.tgz#f510c0fa7cd7234153539f9a362ced41a5ca1447" + integrity sha512-BPjYV86SVuOaudFhsJR1zjgxxOhJDt6JHNoD48DxWEIxUCAMjV1ys6DYw4SDYZh0b1QsS2vfIA9t/ZsQGsDOUQ== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.12.17" + +"@babel/plugin-transform-react-jsx@^7.12.13", "@babel/plugin-transform-react-jsx@^7.12.17": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.17.tgz#dd2c1299f5e26de584939892de3cfc1807a38f24" + integrity sha512-mwaVNcXV+l6qJOuRhpdTEj8sT/Z0owAVWf9QujTZ0d2ye9X/K+MTOTSizcgKOj18PGnTc/7g1I4+cIUjsKhBcw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.12.13" + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-jsx" "^7.12.13" + "@babel/types" "^7.12.17" + +"@babel/plugin-transform-react-pure-annotations@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.12.1.tgz#05d46f0ab4d1339ac59adf20a1462c91b37a1a42" + integrity sha512-RqeaHiwZtphSIUZ5I85PEH19LOSzxfuEazoY7/pWASCAIBuATQzpSVD+eT6MebeeZT2F4eSL0u4vw6n4Nm0Mjg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-regenerator@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz#b628bcc9c85260ac1aeb05b45bde25210194a2f5" + integrity sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-reserved-words@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz#7d9988d4f06e0fe697ea1d9803188aa18b472695" + integrity sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-runtime@^7.12.1": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.13.8.tgz#8c9a16db6cb6c2a1f748e36ae23558b92d223010" + integrity sha512-6UbZ7P0FuuJiiUyRCfDgLw4PIG9bR2x6swHocv4qNZItkhXad0WsN6YX0deILuyZY2++meDKiDMuSVcejDZN0Q== + dependencies: + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" + babel-plugin-polyfill-corejs2 "^0.1.4" + babel-plugin-polyfill-corejs3 "^0.1.3" + babel-plugin-polyfill-regenerator "^0.1.2" + semver "^6.3.0" + +"@babel/plugin-transform-shorthand-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz#db755732b70c539d504c6390d9ce90fe64aff7ad" + integrity sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-spread@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz#84887710e273c1815ace7ae459f6f42a5d31d5fd" + integrity sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + +"@babel/plugin-transform-sticky-regex@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz#760ffd936face73f860ae646fb86ee82f3d06d1f" + integrity sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-template-literals@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz#a36049127977ad94438dee7443598d1cefdf409d" + integrity sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + +"@babel/plugin-transform-typeof-symbol@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz#785dd67a1f2ea579d9c2be722de8c84cb85f5a7f" + integrity sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-typescript@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.13.0.tgz#4a498e1f3600342d2a9e61f60131018f55774853" + integrity sha512-elQEwluzaU8R8dbVuW2Q2Y8Nznf7hnjM7+DSCd14Lo5fF63C9qNLbwZYbmZrtV9/ySpSUpkRpQXvJb6xyu4hCQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.13.0" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-typescript" "^7.12.13" + +"@babel/plugin-transform-unicode-escapes@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz#840ced3b816d3b5127dd1d12dcedc5dead1a5e74" + integrity sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-unicode-regex@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz#b52521685804e155b1202e83fc188d34bb70f5ac" + integrity sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/preset-env@^7.12.1": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.13.8.tgz#1133d7ae806d6bf981b7a1a49e336d4d88db1953" + integrity sha512-Sso1xOpV4S3ofnxW2DsWTE5ziRk62jEAKLGuQ+EJHC+YHTbFG38QUTixO3JVa1cYET9gkJhO1pMu+/+2dDhKvw== + dependencies: + "@babel/compat-data" "^7.13.8" + "@babel/helper-compilation-targets" "^7.13.8" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-validator-option" "^7.12.17" + "@babel/plugin-proposal-async-generator-functions" "^7.13.8" + "@babel/plugin-proposal-class-properties" "^7.13.0" + "@babel/plugin-proposal-dynamic-import" "^7.13.8" + "@babel/plugin-proposal-export-namespace-from" "^7.12.13" + "@babel/plugin-proposal-json-strings" "^7.13.8" + "@babel/plugin-proposal-logical-assignment-operators" "^7.13.8" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.8" + "@babel/plugin-proposal-numeric-separator" "^7.12.13" + "@babel/plugin-proposal-object-rest-spread" "^7.13.8" + "@babel/plugin-proposal-optional-catch-binding" "^7.13.8" + "@babel/plugin-proposal-optional-chaining" "^7.13.8" + "@babel/plugin-proposal-private-methods" "^7.13.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.12.13" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.12.13" + "@babel/plugin-transform-arrow-functions" "^7.13.0" + "@babel/plugin-transform-async-to-generator" "^7.13.0" + "@babel/plugin-transform-block-scoped-functions" "^7.12.13" + "@babel/plugin-transform-block-scoping" "^7.12.13" + "@babel/plugin-transform-classes" "^7.13.0" + "@babel/plugin-transform-computed-properties" "^7.13.0" + "@babel/plugin-transform-destructuring" "^7.13.0" + "@babel/plugin-transform-dotall-regex" "^7.12.13" + "@babel/plugin-transform-duplicate-keys" "^7.12.13" + "@babel/plugin-transform-exponentiation-operator" "^7.12.13" + "@babel/plugin-transform-for-of" "^7.13.0" + "@babel/plugin-transform-function-name" "^7.12.13" + "@babel/plugin-transform-literals" "^7.12.13" + "@babel/plugin-transform-member-expression-literals" "^7.12.13" + "@babel/plugin-transform-modules-amd" "^7.13.0" + "@babel/plugin-transform-modules-commonjs" "^7.13.8" + "@babel/plugin-transform-modules-systemjs" "^7.13.8" + "@babel/plugin-transform-modules-umd" "^7.13.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.13" + "@babel/plugin-transform-new-target" "^7.12.13" + "@babel/plugin-transform-object-super" "^7.12.13" + "@babel/plugin-transform-parameters" "^7.13.0" + "@babel/plugin-transform-property-literals" "^7.12.13" + "@babel/plugin-transform-regenerator" "^7.12.13" + "@babel/plugin-transform-reserved-words" "^7.12.13" + "@babel/plugin-transform-shorthand-properties" "^7.12.13" + "@babel/plugin-transform-spread" "^7.13.0" + "@babel/plugin-transform-sticky-regex" "^7.12.13" + "@babel/plugin-transform-template-literals" "^7.13.0" + "@babel/plugin-transform-typeof-symbol" "^7.12.13" + "@babel/plugin-transform-unicode-escapes" "^7.12.13" + "@babel/plugin-transform-unicode-regex" "^7.12.13" + "@babel/preset-modules" "^0.1.4" + "@babel/types" "^7.13.0" + babel-plugin-polyfill-corejs2 "^0.1.4" + babel-plugin-polyfill-corejs3 "^0.1.3" + babel-plugin-polyfill-regenerator "^0.1.2" + core-js-compat "^3.9.0" + semver "^6.3.0" + +"@babel/preset-modules@^0.1.4": + 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/preset-react@^7.12.5": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.12.13.tgz#5f911b2eb24277fa686820d5bd81cad9a0602a0a" + integrity sha512-TYM0V9z6Abb6dj1K7i5NrEhA13oS5ujUYQYDfqIBXYHOc2c2VkFgc+q9kyssIyUfy4/hEwqrgSlJ/Qgv8zJLsA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-transform-react-display-name" "^7.12.13" + "@babel/plugin-transform-react-jsx" "^7.12.13" + "@babel/plugin-transform-react-jsx-development" "^7.12.12" + "@babel/plugin-transform-react-pure-annotations" "^7.12.1" + +"@babel/preset-typescript@^7.12.1": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.13.0.tgz#ab107e5f050609d806fbb039bec553b33462c60a" + integrity sha512-LXJwxrHy0N3f6gIJlYbLta1D9BDtHpQeqwzM0LIfjDlr6UE/D5Mc7W4iDiQzaE+ks0sTjT26ArcHWnJVt0QiHw== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-validator-option" "^7.12.17" + "@babel/plugin-transform-typescript" "^7.13.0" + +"@babel/runtime-corejs3@^7.12.5": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.13.8.tgz#149749463be6692e3688584130e4300beba0e93c" + integrity sha512-iaInhjy1BbDnqc7pZiIXAfWvBnczgWobHceR4Wkhs5tWZG8aIazBYH0Vo73lixecHKh3Vy9yqbQBqVDrmcVDlQ== + dependencies: + core-js-pure "^3.0.0" + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.8.4": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.8.tgz#cc886a85c072df1de23670dc1aa59fc116c4017c" + integrity sha512-CwQljpw6qSayc0fRG1soxHAKs1CnQMOChm4mlQP6My0kf9upVGizj/KhlTTgyUnETmHpcUXjaluNAkteRFuafg== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.12.13", "@babel/template@^7.12.7": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" + integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/parser" "^7.12.13" + "@babel/types" "^7.12.13" + +"@babel/traverse@^7.12.5", "@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.13.0.tgz#6d95752475f86ee7ded06536de309a65fc8966cc" + integrity sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/generator" "^7.13.0" + "@babel/helper-function-name" "^7.12.13" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/parser" "^7.13.0" + "@babel/types" "^7.13.0" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.19" + +"@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.12.17", "@babel/types@^7.12.6", "@babel/types@^7.12.7", "@babel/types@^7.13.0", "@babel/types@^7.4.4": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.0.tgz#74424d2816f0171b4100f0ab34e9a374efdf7f80" + integrity sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA== + dependencies: + "@babel/helper-validator-identifier" "^7.12.11" + lodash "^4.17.19" + to-fast-properties "^2.0.0" + +"@csstools/convert-colors@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" + integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== + +"@docsearch/css@3.0.0-alpha.33": + version "3.0.0-alpha.33" + resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.0.0-alpha.33.tgz#36c8d61ec001d678b501adf49117413dd9c41fa3" + integrity sha512-7k/d960WaCRPxZqKwasSH2+pmKW+IeQ14zvS8t7T59OeW24G4N9xuLnpBf1XZ6IyS2AS3KPwRomwRX78qpETVg== + +"@docsearch/react@^3.0.0-alpha.31": + version "3.0.0-alpha.33" + resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-3.0.0-alpha.33.tgz#2f8b5d90990b54b59db1a90e405d8008178e972a" + integrity sha512-XOhaUsxiq62umpGMfgzey45H6Id7qOa2DyJJOIpZHEeo5uFVkxc7Qamng+ETdUIn9ql8tWRPzjTh5OAtjJAgxw== + dependencies: + "@algolia/autocomplete-core" "^1.0.0-alpha.35" + "@algolia/autocomplete-preset-algolia" "^1.0.0-alpha.35" + "@docsearch/css" "3.0.0-alpha.33" + algoliasearch "^4.0.0" + +"@docusaurus/core@2.0.0-alpha.70": + version "2.0.0-alpha.70" + resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.0.0-alpha.70.tgz#81bff8b093421a0c740fac02903dd23938806077" + integrity sha512-ccDcr5eb5T3C6k7VoqTclBFwjVkIHK1zISdhqzRNVl8AZTql1bYMvGUJP+2WbF6RSdmsGTNWreaUlrJc00dQqw== + dependencies: + "@babel/core" "^7.12.3" + "@babel/generator" "^7.12.5" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" + "@babel/plugin-proposal-optional-chaining" "^7.12.1" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-transform-runtime" "^7.12.1" + "@babel/preset-env" "^7.12.1" + "@babel/preset-react" "^7.12.5" + "@babel/preset-typescript" "^7.12.1" + "@babel/runtime" "^7.12.5" + "@babel/runtime-corejs3" "^7.12.5" + "@babel/traverse" "^7.12.5" + "@docusaurus/cssnano-preset" "2.0.0-alpha.70" + "@docusaurus/types" "2.0.0-alpha.70" + "@docusaurus/utils" "2.0.0-alpha.70" + "@docusaurus/utils-validation" "2.0.0-alpha.70" + "@endiliey/static-site-generator-webpack-plugin" "^4.0.0" + "@svgr/webpack" "^5.4.0" + babel-loader "^8.2.1" + babel-plugin-dynamic-import-node "2.3.0" + boxen "^4.2.0" + cache-loader "^4.1.0" + chalk "^3.0.0" + chokidar "^3.4.3" + clean-css "^4.2.3" + commander "^4.0.1" + copy-webpack-plugin "^6.3.0" + core-js "^2.6.5" + css-loader "^3.4.2" + del "^5.1.0" + detect-port "^1.3.0" + eta "^1.11.0" + express "^4.17.1" + file-loader "^6.2.0" + fs-extra "^9.0.1" + globby "^10.0.1" + html-minifier-terser "^5.1.1" + html-tags "^3.1.0" + html-webpack-plugin "^4.5.0" + import-fresh "^3.2.2" + inquirer "^7.2.0" + is-root "^2.1.0" + joi "^17.2.1" + leven "^3.1.0" + lodash "^4.17.20" + lodash.flatmap "^4.5.0" + lodash.has "^4.5.2" + lodash.isplainobject "^4.0.6" + lodash.isstring "^4.0.1" + mini-css-extract-plugin "^0.8.0" + nprogress "^0.2.0" + null-loader "^3.0.0" + optimize-css-assets-webpack-plugin "^5.0.4" + pnp-webpack-plugin "^1.6.4" + postcss-loader "^3.0.0" + postcss-preset-env "^6.7.0" + react-dev-utils "^10.2.1" + react-helmet "^6.1.0" + react-loadable "^5.5.0" + react-loadable-ssr-addon "^0.3.0" + react-router "^5.2.0" + react-router-config "^5.1.1" + react-router-dom "^5.2.0" + resolve-pathname "^3.0.0" + semver "^6.3.0" + serve-handler "^6.1.3" + shelljs "^0.8.4" + std-env "^2.2.1" + terser-webpack-plugin "^4.1.0" + update-notifier "^4.1.0" + url-loader "^4.1.1" + wait-on "^5.2.0" + webpack "^4.44.1" + webpack-bundle-analyzer "^3.6.1" + webpack-dev-server "^3.11.0" + webpack-merge "^4.2.2" + webpackbar "^4.0.0" + +"@docusaurus/cssnano-preset@2.0.0-alpha.70": + version "2.0.0-alpha.70" + resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.0-alpha.70.tgz#75dc56a71dc365a450729fd109b86fab72a6f560" + integrity sha512-Zwk3SrlE5r/z5j/tjDcs4XoyeoyymCtEovoxLWLV7wb+iR1qb+Jdso4TRShAepbW/ff6SzjCZ8hRy8ahXPD9TA== + dependencies: + cssnano-preset-advanced "^4.0.7" + postcss "^7.0.2" + postcss-combine-duplicated-selectors "^9.1.0" + postcss-sort-media-queries "^1.7.26" + +"@docusaurus/mdx-loader@2.0.0-alpha.70": + version "2.0.0-alpha.70" + resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-alpha.70.tgz#4cc3c92a5a89ffdc8313da998d4646564940b3e7" + integrity sha512-CDR4O4z7wO5/S8O3TAggCynnuBIGIlUT9q9uhhkDe8h5XDhF8n8d6bwqir0O+fUMN3EnyrMq6z1g4IDRB5G2vw== + dependencies: + "@babel/parser" "^7.12.5" + "@babel/traverse" "^7.12.5" + "@docusaurus/core" "2.0.0-alpha.70" + "@docusaurus/utils" "2.0.0-alpha.70" + "@mdx-js/mdx" "^1.6.21" + "@mdx-js/react" "^1.6.21" + escape-html "^1.0.3" + file-loader "^6.2.0" + fs-extra "^9.0.1" + github-slugger "^1.3.0" + gray-matter "^4.0.2" + loader-utils "^2.0.0" + mdast-util-to-string "^1.1.0" + remark-emoji "^2.1.0" + stringify-object "^3.3.0" + unist-util-visit "^2.0.2" + url-loader "^4.1.1" + webpack "^4.44.1" + +"@docusaurus/plugin-content-blog@2.0.0-alpha.70": + version "2.0.0-alpha.70" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.0-alpha.70.tgz#795a5ddf181dfb314873a5dc33010d1a5bd94d28" + integrity sha512-qWXlSDovkhCZLJR0Wz4e3YcNjlelpuSNkS1rJ8sI1ehs/n32lj7A/nVoRfS/LnOMfIciY48vVPr64VLb6dfEeg== + dependencies: + "@docusaurus/core" "2.0.0-alpha.70" + "@docusaurus/mdx-loader" "2.0.0-alpha.70" + "@docusaurus/types" "2.0.0-alpha.70" + "@docusaurus/utils" "2.0.0-alpha.70" + "@docusaurus/utils-validation" "2.0.0-alpha.70" + chalk "^3.0.0" + feed "^4.2.1" + fs-extra "^9.0.1" + globby "^10.0.1" + joi "^17.2.1" + loader-utils "^1.2.3" + lodash "^4.17.20" + reading-time "^1.2.0" + remark-admonitions "^1.2.1" + webpack "^4.44.1" + +"@docusaurus/plugin-content-docs@2.0.0-alpha.70": + version "2.0.0-alpha.70" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.0-alpha.70.tgz#42dfa40786e819b42974dd167048b190b37bbee5" + integrity sha512-LZre12Q0sxLgi2XgjQbNQMV+jFG7v0+8hRzgBL+iCRiLCa4NlV7+M6mEHJGJJXSKqbfH7CelaUOESqEgPpVQXQ== + dependencies: + "@docusaurus/core" "2.0.0-alpha.70" + "@docusaurus/mdx-loader" "2.0.0-alpha.70" + "@docusaurus/types" "2.0.0-alpha.70" + "@docusaurus/utils" "2.0.0-alpha.70" + "@docusaurus/utils-validation" "2.0.0-alpha.70" + chalk "^3.0.0" + execa "^3.4.0" + fs-extra "^9.0.1" + globby "^10.0.1" + import-fresh "^3.2.2" + joi "^17.2.1" + loader-utils "^1.2.3" + lodash "^4.17.19" + lodash.flatmap "^4.5.0" + lodash.groupby "^4.6.0" + lodash.pick "^4.4.0" + lodash.pickby "^4.6.0" + lodash.sortby "^4.6.0" + remark-admonitions "^1.2.1" + shelljs "^0.8.4" + utility-types "^3.10.0" + webpack "^4.44.1" + +"@docusaurus/plugin-content-pages@2.0.0-alpha.70": + version "2.0.0-alpha.70" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.0-alpha.70.tgz#6cb937c9601d92bb616c7d95974d780d1a708ef7" + integrity sha512-HiFa5l1RDs155ATyYKkPtyIs/d6WJgSAyVfY5ji0Bsixp/K/Kh9YUZYMeTfeMIdhGYe3AAJz+PSZHYRpwTo1wA== + dependencies: + "@docusaurus/core" "2.0.0-alpha.70" + "@docusaurus/mdx-loader" "2.0.0-alpha.70" + "@docusaurus/types" "2.0.0-alpha.70" + "@docusaurus/utils" "2.0.0-alpha.70" + "@docusaurus/utils-validation" "2.0.0-alpha.70" + globby "^10.0.1" + joi "^17.2.1" + loader-utils "^1.2.3" + lodash "^4.17.19" + minimatch "^3.0.4" + remark-admonitions "^1.2.1" + slash "^3.0.0" + webpack "^4.44.1" + +"@docusaurus/plugin-debug@2.0.0-alpha.70": + version "2.0.0-alpha.70" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-2.0.0-alpha.70.tgz#7a41d24151a92195311c85ab827656cf705a0c68" + integrity sha512-h/x5KtS/YJerhY6C6sJOaP9gMaSVnjj1qZ6r9E/IFujQJ7bSKnk1unqBQpVXADkQhP081ENPL01ubc0/JbE1Mw== + dependencies: + "@docusaurus/core" "2.0.0-alpha.70" + "@docusaurus/types" "2.0.0-alpha.70" + "@docusaurus/utils" "2.0.0-alpha.70" + react-json-view "^1.19.1" + +"@docusaurus/plugin-google-analytics@2.0.0-alpha.70": + version "2.0.0-alpha.70" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.0.0-alpha.70.tgz#9476314353d585716cbdd408319ff30bdbda4f87" + integrity sha512-Ah9W83ZnA0VvmflKNuGq5f/CaEjWJxhjkISQn09/ykEvXfWV33000Bhck4RoCr5YxD+GBEBT5suG5LKH7Qkigw== + dependencies: + "@docusaurus/core" "2.0.0-alpha.70" + +"@docusaurus/plugin-google-gtag@2.0.0-alpha.70": + version "2.0.0-alpha.70" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.0.0-alpha.70.tgz#a90e54830a6f95a83cf51b82e7e6adcf6a699dc1" + integrity sha512-K3s894PqMPQnGXEZs0bSs2bRE3bVXFYSb/RN+K9sNd7zxGuOX4UytuvpXP+1r0Hj/YTwQIjj7AKsND0ZpDJHyw== + dependencies: + "@docusaurus/core" "2.0.0-alpha.70" + +"@docusaurus/plugin-sitemap@2.0.0-alpha.70": + version "2.0.0-alpha.70" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.0-alpha.70.tgz#1eb02e4a4ecf5fb2bdf641a6f962ae421ff86916" + integrity sha512-ev9yNLPoeHP03jTz67daGd7yA7YhUwHeoWz14SyiKuU7OYtwL/8SJTn/V5kMDRl7o8FRQt9T//mRkpa270hmXw== + dependencies: + "@docusaurus/core" "2.0.0-alpha.70" + "@docusaurus/types" "2.0.0-alpha.70" + fs-extra "^9.0.1" + joi "^17.2.1" + sitemap "^3.2.2" + +"@docusaurus/preset-classic@2.0.0-alpha.70": + version "2.0.0-alpha.70" + resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-2.0.0-alpha.70.tgz#7857f606eecdbaa34f8df83d62812908be02126f" + integrity sha512-Zx98KryJjHiqzGisWKR0glXl0HXuf/YbcK9yUl6ySyS+6cIMAuGMS0HGLgbvvEmYjywz7nMLpijzGderEOihjQ== + dependencies: + "@docusaurus/core" "2.0.0-alpha.70" + "@docusaurus/plugin-content-blog" "2.0.0-alpha.70" + "@docusaurus/plugin-content-docs" "2.0.0-alpha.70" + "@docusaurus/plugin-content-pages" "2.0.0-alpha.70" + "@docusaurus/plugin-debug" "2.0.0-alpha.70" + "@docusaurus/plugin-google-analytics" "2.0.0-alpha.70" + "@docusaurus/plugin-google-gtag" "2.0.0-alpha.70" + "@docusaurus/plugin-sitemap" "2.0.0-alpha.70" + "@docusaurus/theme-classic" "2.0.0-alpha.70" + "@docusaurus/theme-search-algolia" "2.0.0-alpha.70" + +"@docusaurus/theme-classic@2.0.0-alpha.70": + version "2.0.0-alpha.70" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-2.0.0-alpha.70.tgz#58e2dceee1076980700865df460e771e8d78cb68" + integrity sha512-lKU+fgSd08fo3LNYTw31Wty7RgAdFm8bEOwBNkKZcCFnatTSG4qyDbrDZclCQT/SpXSv9XIEKUc0irg2IH6Qrg== + dependencies: + "@docusaurus/core" "2.0.0-alpha.70" + "@docusaurus/plugin-content-blog" "2.0.0-alpha.70" + "@docusaurus/plugin-content-docs" "2.0.0-alpha.70" + "@docusaurus/plugin-content-pages" "2.0.0-alpha.70" + "@docusaurus/theme-common" "2.0.0-alpha.70" + "@docusaurus/types" "2.0.0-alpha.70" + "@docusaurus/utils" "2.0.0-alpha.70" + "@docusaurus/utils-validation" "2.0.0-alpha.70" + "@mdx-js/mdx" "^1.6.21" + "@mdx-js/react" "^1.6.21" + "@types/react-toggle" "^4.0.2" + clsx "^1.1.1" + copy-text-to-clipboard "^2.2.0" + infima "0.2.0-alpha.18" + joi "^17.2.1" + lodash "^4.17.19" + parse-numeric-range "^1.2.0" + prism-react-renderer "^1.1.1" + prismjs "^1.22.0" + prop-types "^15.7.2" + react-router-dom "^5.2.0" + react-toggle "^4.1.1" + +"@docusaurus/theme-common@2.0.0-alpha.70": + version "2.0.0-alpha.70" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-2.0.0-alpha.70.tgz#fa42aef2ec1b535d37f72fc978a3138c49667a37" + integrity sha512-Ge/dLGPCJhtyvumSMg0BlWcF00d1Qd2KnHf8kL/0nTxe257yNTHIOK95LKhIPAdcVgxG+ge9N0XcBm4KaubASQ== + dependencies: + "@docusaurus/core" "2.0.0-alpha.70" + "@docusaurus/plugin-content-blog" "2.0.0-alpha.70" + "@docusaurus/plugin-content-docs" "2.0.0-alpha.70" + "@docusaurus/plugin-content-pages" "2.0.0-alpha.70" + "@docusaurus/types" "2.0.0-alpha.70" + +"@docusaurus/theme-search-algolia@2.0.0-alpha.70": + version "2.0.0-alpha.70" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.0-alpha.70.tgz#7f41241e0d22e89438817a3d4a27d880116c06c1" + integrity sha512-xuoWZ+HUKzn1A5vPlNZM8mtyRL5uo15o34OX/i7HkTRmBVymWO1bBE0lECfDVJU2JUYGmwjpDXhZzNLDZmZRWg== + dependencies: + "@docsearch/react" "^3.0.0-alpha.31" + "@docusaurus/core" "2.0.0-alpha.70" + "@docusaurus/theme-common" "2.0.0-alpha.70" + "@docusaurus/utils" "2.0.0-alpha.70" + algoliasearch "^4.0.0" + algoliasearch-helper "^3.1.1" + clsx "^1.1.1" + eta "^1.11.0" + joi "^17.2.1" + lodash "^4.17.19" + +"@docusaurus/types@2.0.0-alpha.70": + version "2.0.0-alpha.70" + resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.0.0-alpha.70.tgz#44b98290919cca2505aea334daecf762c7537d10" + integrity sha512-QoHmMiJhRDq5P/4o3eUIiJebdwRjShFlal01DST5B8MZo4k0ogl57FNHqJvIHc93NgonZzFlvC/auLlBnc/d4Q== + dependencies: + "@types/webpack" "^4.41.0" + commander "^4.0.1" + querystring "0.2.0" + webpack-merge "^4.2.2" + +"@docusaurus/utils-validation@2.0.0-alpha.70": + version "2.0.0-alpha.70" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.0.0-alpha.70.tgz#04f24a7b3a4568ca164a8c1a4cf0caa8ba5caa6e" + integrity sha512-GJonaRjiJtlCk1+RfKA9f0YwRsSRGFMVbl6DrFidTgs4FmRb0hQsN4fnllsBvBJtbDZYwPTQ3T7c4cKJ/Ll7bQ== + dependencies: + "@docusaurus/utils" "2.0.0-alpha.70" + chalk "^3.0.0" + joi "^17.2.1" + +"@docusaurus/utils@2.0.0-alpha.70": + version "2.0.0-alpha.70" + resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.0.0-alpha.70.tgz#01779efcb4ff3bf39f9e74b3ef06fc2c8a43633a" + integrity sha512-xNSUcE7fGcneH00CPCEY0SP5V7H6pLEcu620UiU/m1367tCMsmv+MZcnII2ACcjAtvhjS22v/KLippM3VeTXqQ== + dependencies: + "@docusaurus/types" "2.0.0-alpha.70" + chalk "^3.0.0" + escape-string-regexp "^2.0.0" + fs-extra "^9.0.1" + gray-matter "^4.0.2" + lodash "^4.17.20" + lodash.camelcase "^4.3.0" + lodash.kebabcase "^4.1.1" + resolve-pathname "^3.0.0" + +"@endiliey/static-site-generator-webpack-plugin@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@endiliey/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.0.tgz#94bfe58fd83aeda355de797fcb5112adaca3a6b1" + integrity sha512-3MBqYCs30qk1OBRC697NqhGouYbs71D1B8hrk/AFJC6GwF2QaJOQZtA1JYAaGSe650sZ8r5ppRTtCRXepDWlng== + dependencies: + bluebird "^3.7.1" + cheerio "^0.22.0" + eval "^0.1.4" + url "^0.11.0" + webpack-sources "^1.4.3" + +"@hapi/hoek@^9.0.0": + version "9.1.1" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.1.1.tgz#9daf5745156fd84b8e9889a2dc721f0c58e894aa" + integrity sha512-CAEbWH7OIur6jEOzaai83jq3FmKmv4PmX1JYfs9IrYcGEVI/lyL1EXJGCj7eFVJ0bg5QR8LMxBlEtA+xKiLpFw== + +"@hapi/topo@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.0.0.tgz#c19af8577fa393a06e9c77b60995af959be721e7" + integrity sha512-tFJlT47db0kMqVm3H4nQYgn6Pwg10GTZHb1pwmSiv1K4ks6drQOtfEF5ZnPjkvC+y4/bUPHK+bc87QvLcL+WMw== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@mdx-js/mdx@^1.6.21": + version "1.6.22" + resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-1.6.22.tgz#8a723157bf90e78f17dc0f27995398e6c731f1ba" + integrity sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA== + dependencies: + "@babel/core" "7.12.9" + "@babel/plugin-syntax-jsx" "7.12.1" + "@babel/plugin-syntax-object-rest-spread" "7.8.3" + "@mdx-js/util" "1.6.22" + babel-plugin-apply-mdx-type-prop "1.6.22" + babel-plugin-extract-import-names "1.6.22" + camelcase-css "2.0.1" + detab "2.0.4" + hast-util-raw "6.0.1" + lodash.uniq "4.5.0" + mdast-util-to-hast "10.0.1" + remark-footnotes "2.0.0" + remark-mdx "1.6.22" + remark-parse "8.0.3" + remark-squeeze-paragraphs "4.0.0" + style-to-object "0.3.0" + unified "9.2.0" + unist-builder "2.0.3" + unist-util-visit "2.0.3" + +"@mdx-js/react@^1.6.21": + version "1.6.22" + resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-1.6.22.tgz#ae09b4744fddc74714ee9f9d6f17a66e77c43573" + integrity sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg== + +"@mdx-js/util@1.6.22": + version "1.6.22" + resolved "https://registry.yarnpkg.com/@mdx-js/util/-/util-1.6.22.tgz#219dfd89ae5b97a8801f015323ffa4b62f45718b" + integrity sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA== + +"@mrmlnc/readdir-enhanced@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" + integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== + dependencies: + call-me-maybe "^1.0.1" + glob-to-regexp "^0.3.0" + +"@nodelib/fs.scandir@2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69" + integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA== + dependencies: + "@nodelib/fs.stat" "2.0.4" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655" + integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q== + +"@nodelib/fs.stat@^1.1.2": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" + integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063" + integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow== + dependencies: + "@nodelib/fs.scandir" "2.1.4" + fastq "^1.6.0" + +"@npmcli/move-file@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" + integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== + dependencies: + mkdirp "^1.0.4" + rimraf "^3.0.2" + +"@sideway/address@^4.1.0": + version "4.1.1" + resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.1.tgz#9e321e74310963fdf8eebfbee09c7bd69972de4d" + integrity sha512-+I5aaQr3m0OAmMr7RQ3fR9zx55sejEYR2BFJaxL+zT3VM2611X0SHvPWIbAUBZVTn/YzYKbV8gJ2oT/QELknfQ== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@sideway/formula@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.0.tgz#fe158aee32e6bd5de85044be615bc08478a0a13c" + integrity sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg== + +"@sideway/pinpoint@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" + integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== + +"@sindresorhus/is@^0.14.0": + version "0.14.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" + integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== + +"@svgr/babel-plugin-add-jsx-attribute@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz#81ef61947bb268eb9d50523446f9c638fb355906" + integrity sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg== + +"@svgr/babel-plugin-remove-jsx-attribute@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz#6b2c770c95c874654fd5e1d5ef475b78a0a962ef" + integrity sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg== + +"@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz#25621a8915ed7ad70da6cea3d0a6dbc2ea933efd" + integrity sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA== + +"@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz#0b221fc57f9fcd10e91fe219e2cd0dd03145a897" + integrity sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ== + +"@svgr/babel-plugin-svg-dynamic-title@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz#139b546dd0c3186b6e5db4fefc26cb0baea729d7" + integrity sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg== + +"@svgr/babel-plugin-svg-em-dimensions@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz#6543f69526632a133ce5cabab965deeaea2234a0" + integrity sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw== + +"@svgr/babel-plugin-transform-react-native-svg@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz#00bf9a7a73f1cad3948cdab1f8dfb774750f8c80" + integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q== + +"@svgr/babel-plugin-transform-svg-component@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz#583a5e2a193e214da2f3afeb0b9e8d3250126b4a" + integrity sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ== + +"@svgr/babel-preset@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-5.5.0.tgz#8af54f3e0a8add7b1e2b0fcd5a882c55393df327" + integrity sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "^5.4.0" + "@svgr/babel-plugin-remove-jsx-attribute" "^5.4.0" + "@svgr/babel-plugin-remove-jsx-empty-expression" "^5.0.1" + "@svgr/babel-plugin-replace-jsx-attribute-value" "^5.0.1" + "@svgr/babel-plugin-svg-dynamic-title" "^5.4.0" + "@svgr/babel-plugin-svg-em-dimensions" "^5.4.0" + "@svgr/babel-plugin-transform-react-native-svg" "^5.4.0" + "@svgr/babel-plugin-transform-svg-component" "^5.5.0" + +"@svgr/core@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-5.5.0.tgz#82e826b8715d71083120fe8f2492ec7d7874a579" + integrity sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ== + dependencies: + "@svgr/plugin-jsx" "^5.5.0" + camelcase "^6.2.0" + cosmiconfig "^7.0.0" + +"@svgr/hast-util-to-babel-ast@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz#5ee52a9c2533f73e63f8f22b779f93cd432a5461" + integrity sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ== + dependencies: + "@babel/types" "^7.12.6" + +"@svgr/plugin-jsx@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz#1aa8cd798a1db7173ac043466d7b52236b369000" + integrity sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA== + dependencies: + "@babel/core" "^7.12.3" + "@svgr/babel-preset" "^5.5.0" + "@svgr/hast-util-to-babel-ast" "^5.5.0" + svg-parser "^2.0.2" + +"@svgr/plugin-svgo@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz#02da55d85320549324e201c7b2e53bf431fcc246" + integrity sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ== + dependencies: + cosmiconfig "^7.0.0" + deepmerge "^4.2.2" + svgo "^1.2.2" + +"@svgr/webpack@^5.4.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-5.5.0.tgz#aae858ee579f5fa8ce6c3166ef56c6a1b381b640" + integrity sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g== + dependencies: + "@babel/core" "^7.12.3" + "@babel/plugin-transform-react-constant-elements" "^7.12.1" + "@babel/preset-env" "^7.12.1" + "@babel/preset-react" "^7.12.5" + "@svgr/core" "^5.5.0" + "@svgr/plugin-jsx" "^5.5.0" + "@svgr/plugin-svgo" "^5.5.0" + loader-utils "^2.0.0" + +"@szmarczak/http-timer@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" + integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== + dependencies: + defer-to-connect "^1.0.1" + +"@types/anymatch@*": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" + integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA== + +"@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/hast@^2.0.0": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.1.tgz#b16872f2a6144c7025f296fb9636a667ebb79cd9" + integrity sha512-viwwrB+6xGzw+G1eWpF9geV3fnsDgXqHG+cqgiHrvQfDUW5hzhCyV7Sy3UJxhfRFBsgky2SSW33qi/YrIkjX5Q== + dependencies: + "@types/unist" "*" + +"@types/html-minifier-terser@^5.0.0": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#3c9ee980f1a10d6021ae6632ca3e79ca2ec4fb50" + integrity sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA== + +"@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6": + version "7.0.7" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" + integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== + +"@types/mdast@^3.0.0": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.3.tgz#2d7d671b1cd1ea3deb306ea75036c2a0407d2deb" + integrity sha512-SXPBMnFVQg1s00dlMCc/jCdvPqdE4mXaMMCeRlxLDmTAEoegHT53xKtkDnzDTOcmMHUfcjyf36/YYZ6SxRdnsw== + dependencies: + "@types/unist" "*" + +"@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.31" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.31.tgz#72286bd33d137aa0d152d47ec7c1762563d34055" + integrity sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/parse5@^5.0.0": + version "5.0.3" + resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-5.0.3.tgz#e7b5aebbac150f8b5fdd4a46e7f0bd8e65e19109" + integrity sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw== + +"@types/prop-types@*": + version "15.7.3" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" + integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== + +"@types/q@^1.5.1": + version "1.5.4" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" + integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== + +"@types/react-toggle@^4.0.2": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/react-toggle/-/react-toggle-4.0.2.tgz#46ffa5af1a55de5f25d0aa78ef0b557b5c8bf276" + integrity sha512-sHqfoKFnL0YU2+OC4meNEC8Ptx9FE8/+nFeFvNcdBa6ANA8KpAzj3R9JN8GtrvlLgjKDoYgI7iILgXYcTPo2IA== + dependencies: + "@types/react" "*" + +"@types/react@*": + version "17.0.2" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.2.tgz#3de24c4efef902dd9795a49c75f760cbe4f7a5a8" + integrity sha512-Xt40xQsrkdvjn1EyWe1Bc0dJLcil/9x2vAuW7ya+PuQip4UYUaXyhzWmAbwRsdMgwOFHpfp7/FFZebDU6Y8VHA== + dependencies: + "@types/prop-types" "*" + csstype "^3.0.2" + +"@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@*", "@types/tapable@^1.0.5": + 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.12.0" + resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.12.0.tgz#2bb061c269441620d46b946350c8f16d52ef37c5" + integrity sha512-sYAF+CF9XZ5cvEBkI7RtrG9g2GtMBkviTnBxYYyq+8BWvO4QtXfwwR6a2LFwCi4evMKZfpv6U43ViYvv17Wz3Q== + dependencies: + source-map "^0.6.1" + +"@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2", "@types/unist@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e" + integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ== + +"@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.41.0", "@types/webpack@^4.41.8": + 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.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" + integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== + dependencies: + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + +"@webassemblyjs/floating-point-hex-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" + integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== + +"@webassemblyjs/helper-api-error@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" + integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== + +"@webassemblyjs/helper-buffer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" + integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== + +"@webassemblyjs/helper-code-frame@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" + integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== + dependencies: + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/helper-fsm@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" + integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== + +"@webassemblyjs/helper-module-context@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" + integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== + dependencies: + "@webassemblyjs/ast" "1.9.0" + +"@webassemblyjs/helper-wasm-bytecode@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" + integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== + +"@webassemblyjs/helper-wasm-section@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" + integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + +"@webassemblyjs/ieee754@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" + integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" + integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" + integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== + +"@webassemblyjs/wasm-edit@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" + integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/helper-wasm-section" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-opt" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/wasm-gen@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" + integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wasm-opt@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" + integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + +"@webassemblyjs/wasm-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" + integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wast-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" + integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/floating-point-hex-parser" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-code-frame" "1.9.0" + "@webassemblyjs/helper-fsm" "1.9.0" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/wast-printer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" + integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + "@xtuc/long" "4.2.2" + +"@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== + +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" + +acorn-walk@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + +acorn@^6.4.1: + version "6.4.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== + +acorn@^7.1.1: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +address@1.1.2, address@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" + integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== + +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, 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.1.0, ajv@^6.10.2, 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" + +algoliasearch-helper@^3.1.1: + version "3.4.4" + resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.4.4.tgz#f2eb46bc4d2f6fed82c7201b8ac4ce0a1988ae67" + integrity sha512-OjyVLjykaYKCMxxRMZNiwLp8CS310E0qAeIY2NaublcmLAh8/SL19+zYHp7XCLtMem2ZXwl3ywMiA32O9jszuw== + dependencies: + events "^1.1.1" + +algoliasearch@^4.0.0: + version "4.8.5" + resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.8.5.tgz#17a97b01c46c1ac5c1cd99d950d65e7064c8b8a9" + integrity sha512-GjKjpeevpePEJYinGokASNtIkl1t5EseNMlqDNAc+sXE8+iyyeqTyiJsN7bwlRG2BIremuslE/NlwdEfUuBLJw== + dependencies: + "@algolia/cache-browser-local-storage" "4.8.5" + "@algolia/cache-common" "4.8.5" + "@algolia/cache-in-memory" "4.8.5" + "@algolia/client-account" "4.8.5" + "@algolia/client-analytics" "4.8.5" + "@algolia/client-common" "4.8.5" + "@algolia/client-recommendation" "4.8.5" + "@algolia/client-search" "4.8.5" + "@algolia/logger-common" "4.8.5" + "@algolia/logger-console" "4.8.5" + "@algolia/requester-browser-xhr" "4.8.5" + "@algolia/requester-common" "4.8.5" + "@algolia/requester-node-http" "4.8.5" + "@algolia/transporter" "4.8.5" + +alphanum-sort@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + +ansi-align@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" + integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== + dependencies: + string-width "^3.0.0" + +ansi-colors@^3.0.0: + version "3.2.4" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" + integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== + +ansi-escapes@^4.2.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + dependencies: + type-fest "^0.11.0" + +ansi-html@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +ansi-styles@^3.2.0, 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" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +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" + +aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + +array-flatten@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + +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-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +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= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= + +asap@~2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" + +assert@^1.1.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== + dependencies: + object-assign "^4.1.1" + util "0.10.3" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +autoprefixer@^9.4.7, autoprefixer@^9.6.1: + version "9.8.6" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.6.tgz#3b73594ca1bf9266320c5acf1588d74dea74210f" + integrity sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg== + dependencies: + browserslist "^4.12.0" + caniuse-lite "^1.0.30001109" + colorette "^1.2.1" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^7.0.32" + postcss-value-parser "^4.1.0" + +axios@^0.21.1: + version "0.21.1" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" + integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== + dependencies: + follow-redirects "^1.10.0" + +babel-code-frame@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +babel-loader@^8.2.1: + 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-apply-mdx-type-prop@1.6.22: + version "1.6.22" + resolved "https://registry.yarnpkg.com/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.22.tgz#d216e8fd0de91de3f1478ef3231e05446bc8705b" + integrity sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ== + dependencies: + "@babel/helper-plugin-utils" "7.10.4" + "@mdx-js/util" "1.6.22" + +babel-plugin-dynamic-import-node@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" + integrity sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ== + dependencies: + object.assign "^4.1.0" + +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" + +babel-plugin-extract-import-names@1.6.22: + version "1.6.22" + resolved "https://registry.yarnpkg.com/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.22.tgz#de5f9a28eb12f3eb2578bf74472204e66d1a13dc" + integrity sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ== + dependencies: + "@babel/helper-plugin-utils" "7.10.4" + +babel-plugin-polyfill-corejs2@^0.1.4: + version "0.1.8" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.8.tgz#54ef37b1c4b2311e515029e8f1f07bbd4d7a5321" + integrity sha512-kB5/xNR9GYDuRmVlL9EGfdKBSUVI/9xAU7PCahA/1hbC2Jbmks9dlBBYjHF9IHMNY2jV/G2lIG7z0tJIW27Rog== + dependencies: + "@babel/compat-data" "^7.13.0" + "@babel/helper-define-polyfill-provider" "^0.1.4" + semver "^6.1.1" + +babel-plugin-polyfill-corejs3@^0.1.3: + version "0.1.6" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.6.tgz#ed1b02fba4885e0892e06094e27865f499758d27" + integrity sha512-IkYhCxPrjrUWigEmkMDXYzM5iblzKCdCD8cZrSAkQOyhhJm26DcG+Mxbx13QT//Olkpkg/AlRdT2L+Ww4Ciphw== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.1.4" + core-js-compat "^3.8.1" + +babel-plugin-polyfill-regenerator@^0.1.2: + version "0.1.5" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.5.tgz#f42a58fd86a1c97fbe3a2752d80a4a3e017203e1" + integrity sha512-EyhBA6uN94W97lR7ecQVTvH9F5tIIdEw3ZqHuU4zekMlW82k5cXNXniiB7PRxQm06BqAjVr4sDT1mOy4RcphIA== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.1.4" + +bail@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" + integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== + +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= + +base16@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/base16/-/base16-1.0.0.tgz#e297f60d7ec1014a7a971a39ebc8a98c0b681e70" + integrity sha1-4pf2DX7BAUp6lxo568ipjAtoHnA= + +base64-js@^1.0.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= + +bfj@^6.1.1: + version "6.1.2" + resolved "https://registry.yarnpkg.com/bfj/-/bfj-6.1.2.tgz#325c861a822bcb358a41c78a33b8e6e2086dde7f" + integrity sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw== + dependencies: + bluebird "^3.5.5" + check-types "^8.0.3" + hoopy "^0.1.4" + tryer "^1.0.1" + +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@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +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== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bluebird@^3.5.5, bluebird@^3.7.1: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.0.0, bn.js@^5.1.1: + version "5.2.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" + integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== + +body-parser@1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" + integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== + dependencies: + bytes "3.1.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.7.2" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.7.0" + raw-body "2.4.0" + type-is "~1.6.17" + +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +boxen@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" + integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== + dependencies: + ansi-align "^3.0.0" + camelcase "^5.3.1" + chalk "^3.0.0" + cli-boxes "^2.2.0" + string-width "^4.1.0" + term-size "^2.1.0" + type-fest "^0.8.1" + widest-line "^3.1.0" + +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@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +braces@^3.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" + +brorand@^1.0.1, brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== + dependencies: + bn.js "^5.0.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.3" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + +browserslist@4.10.0: + version "4.10.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.10.0.tgz#f179737913eaf0d2b98e4926ac1ca6a15cbcc6a9" + integrity sha512-TpfK0TDgv71dzuTsEAlQiHeWQ/tiPqgNZVdv046fvNtBZrjbv2O3TsWCDU0AWGJJKCF/KsjNdLzR9hXOsh/CfA== + dependencies: + caniuse-lite "^1.0.30001035" + electron-to-chromium "^1.3.378" + node-releases "^1.1.52" + pkg-up "^3.1.0" + +browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.3, browserslist@^4.6.4: + version "4.16.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.3.tgz#340aa46940d7db878748567c5dea24a48ddf3717" + integrity sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw== + dependencies: + caniuse-lite "^1.0.30001181" + colorette "^1.2.1" + electron-to-chromium "^1.3.649" + escalade "^3.1.1" + node-releases "^1.1.70" + +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== + +buffer-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== + +buffer-json@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/buffer-json/-/buffer-json-2.0.0.tgz#f73e13b1e42f196fe2fd67d001c7d7107edd7c23" + integrity sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + +buffer@^4.3.0: + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + +cacache@^12.0.2: + version "12.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" + integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + +cacache@^15.0.5: + version "15.0.5" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.5.tgz#69162833da29170d6732334643c60e005f5f17d0" + integrity sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A== + dependencies: + "@npmcli/move-file" "^1.0.1" + chownr "^2.0.0" + fs-minipass "^2.0.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^6.0.0" + minipass "^3.1.1" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^1.0.3" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^8.0.0" + tar "^6.0.2" + unique-filename "^1.1.1" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +cache-loader@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cache-loader/-/cache-loader-4.1.0.tgz#9948cae353aec0a1fcb1eafda2300816ec85387e" + integrity sha512-ftOayxve0PwKzBF/GLsZNC9fJBXl8lkZE3TOsjkboHfVHVkL39iUEs1FO07A33mizmci5Dudt38UZrrYXDtbhw== + dependencies: + buffer-json "^2.0.0" + find-cache-dir "^3.0.0" + loader-utils "^1.2.3" + mkdirp "^0.5.1" + neo-async "^2.6.1" + schema-utils "^2.0.0" + +cacheable-request@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" + integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^3.0.0" + lowercase-keys "^2.0.0" + normalize-url "^4.1.0" + responselike "^1.0.2" + +call-bind@^1.0.0, call-bind@^1.0.2: + 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" + +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + dependencies: + caller-callsite "^2.0.0" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camel-case@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== + dependencies: + pascal-case "^3.1.2" + tslib "^2.0.3" + +camelcase-css@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + +camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +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-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001181: + version "1.0.30001192" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001192.tgz#b848ebc0ab230cf313d194a4775a30155d50ae40" + integrity sha512-63OrUnwJj5T1rUmoyqYTdRWBqFFxZFlyZnRRjDR8NSUQFB6A+j/uBORU/SyJ5WzDLg4SPiZH40hQCBNdZ/jmAw== + +ccount@^1.0.0, ccount@^1.0.3: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043" + integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg== + +chalk@2.4.2, chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: + 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" + +chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +character-entities-legacy@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" + integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== + +character-entities@^1.0.0: + version "1.2.4" + resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b" + integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== + +character-reference-invalid@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" + integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +check-types@^8.0.3: + version "8.0.3" + resolved "https://registry.yarnpkg.com/check-types/-/check-types-8.0.3.tgz#3356cca19c889544f2d7a95ed49ce508a0ecf552" + integrity sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ== + +cheerio@^0.22.0: + version "0.22.0" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.22.0.tgz#a9baa860a3f9b595a6b81b1a86873121ed3a269e" + integrity sha1-qbqoYKP5tZWmuBsahocxIe06Jp4= + dependencies: + css-select "~1.2.0" + dom-serializer "~0.1.0" + entities "~1.1.1" + htmlparser2 "^3.9.1" + lodash.assignin "^4.0.9" + lodash.bind "^4.1.4" + lodash.defaults "^4.0.1" + lodash.filter "^4.4.0" + lodash.flatten "^4.2.0" + lodash.foreach "^4.3.0" + lodash.map "^4.4.0" + lodash.merge "^4.4.0" + lodash.pick "^4.2.1" + lodash.reduce "^4.4.0" + lodash.reject "^4.4.0" + lodash.some "^4.4.0" + +chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + +chokidar@^3.3.0, chokidar@^3.4.1, chokidar@^3.4.3: + 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" + +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +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" + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +ci-info@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.1.1.tgz#9a32fcefdf7bcdb6f0a7e1c0f8098ec57897b80a" + integrity sha512-kdRWLBIJwdsYJWYJFtAFFYxybguqeF91qpZaggjG5Nf8QKdizFG2hjqvaTXbxFIcYbSaD74KpAXv6BSm17DHEQ== + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +classnames@^2.2.5: + version "2.2.6" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" + integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== + +clean-css@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" + integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== + dependencies: + source-map "~0.6.0" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-boxes@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" + integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-width@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" + integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== + +cli-width@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" + integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== + +clipboard@^2.0.0: + version "2.0.6" + resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-2.0.6.tgz#52921296eec0fdf77ead1749421b21c968647376" + integrity sha512-g5zbiixBRk/wyKakSwCKd7vQXDjFnAMGHoEyBogG/bw9kTD9GvdAvaoRR1ALcEzt3pVKxZR0pViekPMIS0QyGg== + dependencies: + good-listener "^1.2.2" + select "^1.1.2" + tiny-emitter "^2.0.0" + +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +clone-response@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" + integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= + dependencies: + mimic-response "^1.0.0" + +clsx@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188" + integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA== + +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + +collapse-white-space@^1.0.2: + version "1.0.6" + resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287" + integrity sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ== + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0, color-convert@^1.9.1: + 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-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +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= + +color-name@^1.0.0, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-string@^1.5.4: + version "1.5.4" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.4.tgz#dd51cd25cfee953d138fe4002372cc3d0e504cb6" + integrity sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.0.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/color/-/color-3.1.3.tgz#ca67fb4e7b97d611dcde39eceed422067d91596e" + integrity sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ== + dependencies: + color-convert "^1.9.1" + color-string "^1.5.4" + +colorette@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" + integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== + +comma-separated-tokens@^1.0.0: + version "1.0.8" + resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" + integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== + +commander@^2.18.0, 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@^4.0.1, commander@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +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= + +concat-stream@^1.5.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +configstore@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" + integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== + dependencies: + dot-prop "^5.2.0" + graceful-fs "^4.1.2" + make-dir "^3.0.0" + unique-string "^2.0.0" + write-file-atomic "^3.0.0" + xdg-basedir "^4.0.0" + +connect-history-api-fallback@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" + integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== + +consola@^2.10.0: + version "2.15.3" + resolved "https://registry.yarnpkg.com/consola/-/consola-2.15.3.tgz#2e11f98d6a4be71ff72e0bdf07bd23e12cb61550" + integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw== + +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + +content-disposition@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" + integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ= + +content-disposition@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== + dependencies: + safe-buffer "5.1.2" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +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" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +copy-text-to-clipboard@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/copy-text-to-clipboard/-/copy-text-to-clipboard-2.2.0.tgz#329dd6daf8c42034c763ace567418401764579ae" + integrity sha512-WRvoIdnTs1rgPMkgA2pUOa/M4Enh2uzCwdKsOMYNAJiz/4ZvEJgmbF4OmninPmlFdAWisfeh0tH+Cpf7ni3RqQ== + +copy-webpack-plugin@^6.3.0: + version "6.4.1" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-6.4.1.tgz#138cd9b436dbca0a6d071720d5414848992ec47e" + integrity sha512-MXyPCjdPVx5iiWyl40Va3JGh27bKzOTNY3NjUTrosD2q7dR/cLD0013uqJ3BpFbUjyONINjb6qI7nDIJujrMbA== + dependencies: + cacache "^15.0.5" + fast-glob "^3.2.4" + find-cache-dir "^3.3.1" + glob-parent "^5.1.1" + globby "^11.0.1" + loader-utils "^2.0.0" + normalize-path "^3.0.0" + p-limit "^3.0.2" + schema-utils "^3.0.0" + serialize-javascript "^5.0.1" + webpack-sources "^1.4.3" + +core-js-compat@^3.8.1, core-js-compat@^3.9.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.9.1.tgz#4e572acfe90aff69d76d8c37759d21a5c59bb455" + integrity sha512-jXAirMQxrkbiiLsCx9bQPJFA6llDadKMpYrBJQJ3/c4/vsPP/fAf29h24tviRlvwUL6AmY5CHLu2GvjuYviQqA== + dependencies: + browserslist "^4.16.3" + semver "7.0.0" + +core-js-pure@^3.0.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.9.1.tgz#677b322267172bd490e4464696f790cbc355bec5" + integrity sha512-laz3Zx0avrw9a4QEIdmIblnVuJz8W51leY9iLThatCsFawWxC3sE4guASC78JbCin+DkwMpCdp1AVAuzL/GN7A== + +core-js@^2.6.5: + version "2.6.12" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" + integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== + +core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cosmiconfig@^5.0.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +cosmiconfig@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" + integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + +create-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-fetch@^3.0.4: + version "3.0.6" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.0.6.tgz#3a4040bc8941e653e0e9cf17f29ebcd177d3365c" + integrity sha512-KBPUbqgFjzWlVcURG+Svp9TlhA5uliYtiNx/0r8nv0pdypeQCRJ9IaSIc3q/x3q8t3F75cHuwxVql1HFGHCNJQ== + dependencies: + node-fetch "2.6.1" + +cross-spawn@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" + integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +cross-spawn@^6.0.0: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^7.0.0: + 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" + +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +crypto-random-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" + integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== + +css-blank-pseudo@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" + integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== + dependencies: + postcss "^7.0.5" + +css-color-names@0.0.4, css-color-names@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= + +css-declaration-sorter@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" + integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== + dependencies: + postcss "^7.0.1" + timsort "^0.3.0" + +css-has-pseudo@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee" + integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^5.0.0-rc.4" + +css-loader@^3.4.2: + version "3.6.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.6.0.tgz#2e4b2c7e6e2d27f8c8f28f61bffcd2e6c91ef645" + integrity sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ== + dependencies: + camelcase "^5.3.1" + cssesc "^3.0.0" + icss-utils "^4.1.1" + loader-utils "^1.2.3" + normalize-path "^3.0.0" + postcss "^7.0.32" + postcss-modules-extract-imports "^2.0.0" + postcss-modules-local-by-default "^3.0.2" + postcss-modules-scope "^2.2.0" + postcss-modules-values "^3.0.0" + postcss-value-parser "^4.1.0" + schema-utils "^2.7.0" + semver "^6.3.0" + +css-prefers-color-scheme@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz#6f830a2714199d4f0d0d0bb8a27916ed65cff1f4" + integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== + dependencies: + postcss "^7.0.5" + +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + +css-select@^2.0.0, css-select@^2.0.2: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-select@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= + dependencies: + boolbase "~1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "~1.0.1" + +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + +css-tree@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.2.tgz#9ae393b5dafd7dae8a622475caec78d3d8fbd7b5" + integrity sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-what@2.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" + integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== + +css-what@^3.2.1: + version "3.4.2" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" + integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== + +cssdb@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" + integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== + +cssesc@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" + integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== + +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== + +cssnano-preset-advanced@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/cssnano-preset-advanced/-/cssnano-preset-advanced-4.0.7.tgz#d981527b77712e2f3f3f09c73313e9b71b278b88" + integrity sha512-j1O5/DQnaAqEyFFQfC+Z/vRlLXL3LxJHN+lvsfYqr7KgPH74t69+Rsy2yXkovWNaJjZYBpdz2Fj8ab2nH7pZXw== + dependencies: + autoprefixer "^9.4.7" + cssnano-preset-default "^4.0.7" + postcss-discard-unused "^4.0.1" + postcss-merge-idents "^4.0.1" + postcss-reduce-idents "^4.0.2" + postcss-zindex "^4.0.1" + +cssnano-preset-default@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" + integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== + dependencies: + css-declaration-sorter "^4.0.1" + cssnano-util-raw-cache "^4.0.1" + postcss "^7.0.0" + postcss-calc "^7.0.1" + postcss-colormin "^4.0.3" + postcss-convert-values "^4.0.1" + postcss-discard-comments "^4.0.2" + postcss-discard-duplicates "^4.0.2" + postcss-discard-empty "^4.0.1" + postcss-discard-overridden "^4.0.1" + postcss-merge-longhand "^4.0.11" + postcss-merge-rules "^4.0.3" + postcss-minify-font-values "^4.0.2" + postcss-minify-gradients "^4.0.2" + postcss-minify-params "^4.0.2" + postcss-minify-selectors "^4.0.2" + postcss-normalize-charset "^4.0.1" + postcss-normalize-display-values "^4.0.2" + postcss-normalize-positions "^4.0.2" + postcss-normalize-repeat-style "^4.0.2" + postcss-normalize-string "^4.0.2" + postcss-normalize-timing-functions "^4.0.2" + postcss-normalize-unicode "^4.0.1" + postcss-normalize-url "^4.0.1" + postcss-normalize-whitespace "^4.0.2" + postcss-ordered-values "^4.1.2" + postcss-reduce-initial "^4.0.3" + postcss-reduce-transforms "^4.0.2" + postcss-svgo "^4.0.2" + postcss-unique-selectors "^4.0.1" + +cssnano-util-get-arguments@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" + integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= + +cssnano-util-get-match@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" + integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= + +cssnano-util-raw-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" + integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== + dependencies: + postcss "^7.0.0" + +cssnano-util-same-parent@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" + integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== + +cssnano@^4.1.10: + version "4.1.10" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" + integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== + dependencies: + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.7" + is-resolvable "^1.0.0" + postcss "^7.0.0" + +csso@^4.0.2: + version "4.2.0" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" + integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== + dependencies: + css-tree "^1.1.2" + +csstype@^3.0.2: + version "3.0.7" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.7.tgz#2a5fb75e1015e84dd15692f71e89a1450290950b" + integrity sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g== + +cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" + integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^3.1.1, debug@^3.2.6: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.1.0, debug@^4.1.1: + 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.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= + dependencies: + mimic-response "^1.0.0" + +deep-equal@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + +default-gateway@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" + integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== + dependencies: + execa "^1.0.0" + ip-regex "^2.1.0" + +defer-to-connect@^1.0.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" + integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== + +define-properties@^1.1.2, 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" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +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" + +del@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/del/-/del-5.1.0.tgz#d9487c94e367410e6eff2925ee58c0c84a75b3a7" + integrity sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA== + dependencies: + globby "^10.0.1" + graceful-fs "^4.2.2" + is-glob "^4.0.1" + is-path-cwd "^2.2.0" + is-path-inside "^3.0.1" + p-map "^3.0.0" + rimraf "^3.0.0" + slash "^3.0.0" + +delegate@^3.1.2: + version "3.2.0" + resolved "https://registry.yarnpkg.com/delegate/-/delegate-3.2.0.tgz#b66b71c3158522e8ab5744f720d8ca0c2af59166" + integrity sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw== + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +detab@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/detab/-/detab-2.0.4.tgz#b927892069aff405fbb9a186fe97a44a92a94b43" + integrity sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g== + dependencies: + repeat-string "^1.5.4" + +detect-node@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" + integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== + +detect-port-alt@1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" + integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== + dependencies: + address "^1.0.1" + debug "^2.6.0" + +detect-port@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.3.0.tgz#d9c40e9accadd4df5cac6a782aefd014d573d1f1" + integrity sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ== + dependencies: + address "^1.0.1" + debug "^2.6.0" + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dir-glob@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" + integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag== + dependencies: + arrify "^1.0.1" + path-type "^3.0.0" + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= + +dns-packet@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" + integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= + dependencies: + buffer-indexof "^1.0.0" + +dom-converter@^0.2: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + +dom-serializer@0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +dom-serializer@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" + integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA== + dependencies: + domelementtype "^1.3.0" + entities "^1.1.1" + +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + +domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e" + integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w== + +domhandler@^2.3.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" + integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== + dependencies: + domelementtype "1" + +domutils@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^1.5.1, domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +dot-prop@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" + integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== + dependencies: + is-obj "^2.0.0" + +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= + +duplexer@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +ejs@^2.6.1: + version "2.7.4" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" + integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== + +electron-to-chromium@^1.3.378, electron-to-chromium@^1.3.649: + version "1.3.675" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.675.tgz#7ad29f98d7b48da581554eb28bb9a71fd5fd4956" + integrity sha512-GEQw+6dNWjueXGkGfjgm7dAMtXfEqrfDG3uWcZdeaD4cZ3dKYdPRQVruVXQRXtPLtOr5GNVVlNLRMChOZ611pQ== + +elliptic@^6.5.3: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +"emoji-regex@>=6.0.0 <=6.1.1": + version "6.1.1" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.1.1.tgz#c6cd0ec1b0642e2a3c67a1137efc5e796da4f88e" + integrity sha1-xs0OwbBkLio8Z6ETfvxeeW2k+I4= + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= + +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== + +emoticon@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/emoticon/-/emoticon-3.2.0.tgz#c008ca7d7620fac742fe1bf4af8ff8fed154ae7f" + integrity sha512-SNujglcLTTg+lDAcApPNgEdudaqQFiAbJCqzjNxJkvN9vAwCGi0uu8IUVvx+f16h+V44KCY6Y2yboroc9pilHg== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enhanced-resolve@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" + integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" + +entities@^1.1.1, entities@~1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +errno@^0.1.3, errno@~0.1.7: + version "0.1.8" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== + dependencies: + prr "~1.0.1" + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.17.2: + version "1.17.7" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c" + integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.2" + is-regex "^1.1.1" + object-inspect "^1.8.0" + object-keys "^1.1.1" + object.assign "^4.1.1" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + +es-abstract@^1.18.0-next.2: + version "1.18.0-next.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.2.tgz#088101a55f0541f595e7e057199e27ddc8f3a5c2" + integrity sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.2" + is-negative-zero "^2.0.1" + is-regex "^1.1.1" + object-inspect "^1.9.0" + object-keys "^1.1.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.3" + string.prototype.trimstart "^1.0.3" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +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-goat@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" + integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== + +escape-html@^1.0.3, escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@2.0.0, escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^1.0.2, 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@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esrecurse@^4.1.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== + +eta@^1.11.0: + version "1.12.1" + resolved "https://registry.yarnpkg.com/eta/-/eta-1.12.1.tgz#d985766591676c323f02dfc48a67539212745937" + integrity sha512-H8npoci2J/7XiPnVcCVulBSPsTNGvGaINyMjQDU8AFqp9LGsEYS88g2CiU+d01Sg44WtX7o4nb8wUJ9vnI+tiA== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +eval@^0.1.4: + version "0.1.6" + resolved "https://registry.yarnpkg.com/eval/-/eval-0.1.6.tgz#9620d7d8c85515e97e6b47c5814f46ae381cb3cc" + integrity sha512-o0XUw+5OGkXw4pJZzQoXUk+H87DHuC+7ZE//oSrRGtatTmr12oTnLfg6QOq9DyTt0c/p4TwzgmkKrBzWTSizyQ== + dependencies: + require-like ">= 0.1.1" + +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" + integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= + +events@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +eventsource@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" + integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== + dependencies: + original "^1.0.0" + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89" + integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + p-finally "^2.0.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +express@^4.16.3, express@^4.17.1: + version "4.17.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" + integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== + dependencies: + accepts "~1.3.7" + array-flatten "1.1.1" + body-parser "1.19.0" + content-disposition "0.5.3" + content-type "~1.0.4" + cookie "0.4.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.1.2" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.5" + qs "6.7.0" + range-parser "~1.2.1" + safe-buffer "5.1.2" + send "0.17.1" + serve-static "1.14.1" + setprototypeof "1.1.1" + statuses "~1.5.0" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +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-glob@^2.0.2: + version "2.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" + integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== + dependencies: + "@mrmlnc/readdir-enhanced" "^2.2.1" + "@nodelib/fs.stat" "^1.1.2" + glob-parent "^3.1.0" + is-glob "^4.0.0" + merge2 "^1.2.3" + micromatch "^3.1.10" + +fast-glob@^3.0.3, fast-glob@^3.1.1, fast-glob@^3.2.4: + version "3.2.5" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661" + integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.0" + merge2 "^1.3.0" + micromatch "^4.0.2" + picomatch "^2.2.1" + +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== + +fast-url-parser@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/fast-url-parser/-/fast-url-parser-1.1.3.tgz#f4af3ea9f34d8a271cf58ad2b3759f431f0b318d" + integrity sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0= + dependencies: + punycode "^1.3.2" + +fastq@^1.6.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.0.tgz#bb9fb955a07130a918eb63c1f5161cc32a5d0858" + integrity sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g== + dependencies: + reusify "^1.0.4" + +faye-websocket@^0.11.3: + version "0.11.3" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" + integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== + dependencies: + websocket-driver ">=0.5.1" + +fbemitter@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/fbemitter/-/fbemitter-3.0.0.tgz#00b2a1af5411254aab416cd75f9e6289bee4bff3" + integrity sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw== + dependencies: + fbjs "^3.0.0" + +fbjs-css-vars@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz#216551136ae02fe255932c3ec8775f18e2c078b8" + integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== + +fbjs@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-3.0.0.tgz#0907067fb3f57a78f45d95f1eacffcacd623c165" + integrity sha512-dJd4PiDOFuhe7vk4F80Mba83Vr2QuK86FoxtgPmzBqEJahncp+13YCmfoa53KHCo6OnlXLG7eeMWPfB5CrpVKg== + dependencies: + cross-fetch "^3.0.4" + fbjs-css-vars "^1.0.0" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.18" + +feed@^4.2.1: + version "4.2.2" + resolved "https://registry.yarnpkg.com/feed/-/feed-4.2.2.tgz#865783ef6ed12579e2c44bbef3c9113bc4956a7e" + integrity sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ== + dependencies: + xml-js "^1.6.11" + +figgy-pudding@^3.5.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" + integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== + +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +file-loader@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" + integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +filesize@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.0.1.tgz#f850b509909c7c86f7e450ea19006c31c2ed3d2f" + integrity sha512-u4AYWPgbI5GBhs6id1KdImZWn5yfyFrrQ8OWZdN7ZMfA8Bf4HcO0BGo9bmUIEV8yrp8I1xVfJ/dn90GtFNNJcg== + +filesize@^3.6.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" + integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg== + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +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" + +finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-cache-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-cache-dir@^3.0.0, 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.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@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +flatten@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" + integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== + +flush-write-stream@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + +flux@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/flux/-/flux-4.0.1.tgz#7843502b02841d4aaa534af0b373034a1f75ee5c" + integrity sha512-emk4RCvJ8RzNP2lNpphKnG7r18q8elDYNAPx7xn+bDeOIo9FFfxEfIQ2y6YbQNmnsGD3nH1noxtLE64Puz1bRQ== + dependencies: + fbemitter "^3.0.0" + fbjs "^3.0.0" + +follow-redirects@^1.0.0, follow-redirects@^1.10.0: + version "1.13.3" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.3.tgz#e5598ad50174c1bc4e872301e82ac2cd97f90267" + integrity sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA== + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +fork-ts-checker-webpack-plugin@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz#a1642c0d3e65f50c2cc1742e9c0a80f441f86b19" + integrity sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ== + dependencies: + babel-code-frame "^6.22.0" + chalk "^2.4.1" + chokidar "^3.3.0" + micromatch "^3.1.10" + minimatch "^3.0.4" + semver "^5.6.0" + tapable "^1.0.0" + worker-rpc "^0.1.0" + +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-extra@^9.0.1: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +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@^1.2.7: + version "1.2.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + +fsevents@~2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +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, gensync@^1.0.0-beta.2: + 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-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2: + version "1.1.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== + +get-stream@^4.0.0, get-stream@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^5.0.0, get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +github-slugger@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.3.0.tgz#9bd0a95c5efdfc46005e82a906ef8e2a059124c9" + integrity sha512-gwJScWVNhFYSRDvURk/8yhcFBee6aFjye2a7Lhb2bUyRulpIoek9p0I9Kt7PT67d/nUlZbFu8L9RLiA0woQN8Q== + dependencies: + emoji-regex ">=6.0.0 <=6.1.1" + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-parent@^5.1.0, glob-parent@^5.1.1, 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.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= + +glob@^7.0.0, glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: + 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" + +global-dirs@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.1.0.tgz#e9046a49c806ff04d6c1825e196c8f0091e8df4d" + integrity sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ== + dependencies: + ini "1.3.7" + +global-modules@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + +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@8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d" + integrity sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w== + dependencies: + array-union "^1.0.1" + dir-glob "2.0.0" + fast-glob "^2.0.2" + glob "^7.1.2" + ignore "^3.3.5" + pify "^3.0.0" + slash "^1.0.0" + +globby@^10.0.1: + version "10.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543" + integrity sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg== + dependencies: + "@types/glob" "^7.1.1" + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.0.3" + glob "^7.1.3" + ignore "^5.1.1" + merge2 "^1.2.3" + slash "^3.0.0" + +globby@^11.0.1: + version "11.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.2.tgz#1af538b766a3b540ebfb58a32b2e2d5897321d83" + integrity sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" + +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" + +good-listener@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50" + integrity sha1-1TswzfkxPf+33JoNR3CWqm0UXFA= + dependencies: + delegate "^3.1.2" + +got@^9.6.0: + version "9.6.0" + resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" + integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== + dependencies: + "@sindresorhus/is" "^0.14.0" + "@szmarczak/http-timer" "^1.1.2" + cacheable-request "^6.0.0" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^4.1.0" + lowercase-keys "^1.0.1" + mimic-response "^1.0.1" + p-cancelable "^1.0.0" + to-readable-stream "^1.0.0" + url-parse-lax "^3.0.0" + +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2: + version "4.2.6" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" + integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== + +gray-matter@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-4.0.2.tgz#9aa379e3acaf421193fce7d2a28cebd4518ac454" + integrity sha512-7hB/+LxrOjq/dd8APlK0r24uL/67w7SkYnfwhNFwg/VDIGWGmduTDYf3WNstLW2fbbmRwrDGCVSJ2isuf2+4Hw== + dependencies: + js-yaml "^3.11.0" + kind-of "^6.0.2" + section-matter "^1.0.0" + strip-bom-string "^1.0.0" + +gzip-size@5.1.1, gzip-size@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" + integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== + dependencies: + duplexer "^0.1.1" + pify "^4.0.1" + +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + +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.2" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" + integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has-yarn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" + integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== + +has@^1.0.0, 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" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hast-to-hyperscript@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz#9b67fd188e4c81e8ad66f803855334173920218d" + integrity sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA== + dependencies: + "@types/unist" "^2.0.3" + comma-separated-tokens "^1.0.0" + property-information "^5.3.0" + space-separated-tokens "^1.0.0" + style-to-object "^0.3.0" + unist-util-is "^4.0.0" + web-namespaces "^1.0.0" + +hast-util-from-parse5@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-5.0.3.tgz#3089dc0ee2ccf6ec8bc416919b51a54a589e097c" + integrity sha512-gOc8UB99F6eWVWFtM9jUikjN7QkWxB3nY0df5Z0Zq1/Nkwl5V4hAAsl0tmwlgWl/1shlTF8DnNYLO8X6wRV9pA== + dependencies: + ccount "^1.0.3" + hastscript "^5.0.0" + property-information "^5.0.0" + web-namespaces "^1.1.2" + xtend "^4.0.1" + +hast-util-from-parse5@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz#554e34abdeea25ac76f5bd950a1f0180e0b3bc2a" + integrity sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA== + dependencies: + "@types/parse5" "^5.0.0" + hastscript "^6.0.0" + property-information "^5.0.0" + vfile "^4.0.0" + vfile-location "^3.2.0" + web-namespaces "^1.0.0" + +hast-util-parse-selector@^2.0.0: + version "2.2.5" + resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz#d57c23f4da16ae3c63b3b6ca4616683313499c3a" + integrity sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ== + +hast-util-raw@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-6.0.1.tgz#973b15930b7529a7b66984c98148b46526885977" + integrity sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig== + dependencies: + "@types/hast" "^2.0.0" + hast-util-from-parse5 "^6.0.0" + hast-util-to-parse5 "^6.0.0" + html-void-elements "^1.0.0" + parse5 "^6.0.0" + unist-util-position "^3.0.0" + vfile "^4.0.0" + web-namespaces "^1.0.0" + xtend "^4.0.0" + zwitch "^1.0.0" + +hast-util-to-parse5@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz#1ec44650b631d72952066cea9b1445df699f8479" + integrity sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ== + dependencies: + hast-to-hyperscript "^9.0.0" + property-information "^5.0.0" + web-namespaces "^1.0.0" + xtend "^4.0.0" + zwitch "^1.0.0" + +hastscript@^5.0.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-5.1.2.tgz#bde2c2e56d04c62dd24e8c5df288d050a355fb8a" + integrity sha512-WlztFuK+Lrvi3EggsqOkQ52rKbxkXL3RwB6t5lwoa8QLMemoWfBuL43eDrwOamJyR7uKQKdmKYaBH1NZBiIRrQ== + dependencies: + comma-separated-tokens "^1.0.0" + hast-util-parse-selector "^2.0.0" + property-information "^5.0.0" + space-separated-tokens "^1.0.0" + +hastscript@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-6.0.0.tgz#e8768d7eac56c3fdeac8a92830d58e811e5bf640" + integrity sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w== + dependencies: + "@types/hast" "^2.0.0" + comma-separated-tokens "^1.0.0" + hast-util-parse-selector "^2.0.0" + property-information "^5.0.0" + space-separated-tokens "^1.0.0" + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +hex-color-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" + integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== + +history@^4.9.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" + integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew== + dependencies: + "@babel/runtime" "^7.1.2" + loose-envify "^1.2.0" + resolve-pathname "^3.0.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + value-equal "^1.0.1" + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hoist-non-react-statics@^3.1.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + +hoopy@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" + integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +hsl-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" + integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= + +hsla-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" + integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= + +html-comment-regex@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" + integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== + +html-entities@^1.3.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc" + integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== + +html-minifier-terser@^5.0.1, html-minifier-terser@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#922e96f1f3bb60832c2634b79884096389b1f054" + integrity sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg== + dependencies: + camel-case "^4.1.1" + clean-css "^4.2.3" + commander "^4.1.1" + he "^1.2.0" + param-case "^3.0.3" + relateurl "^0.2.7" + terser "^4.6.3" + +html-tags@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140" + integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg== + +html-void-elements@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483" + integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w== + +html-webpack-plugin@^4.5.0: + version "4.5.2" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.5.2.tgz#76fc83fa1a0f12dd5f7da0404a54e2699666bc12" + integrity sha512-q5oYdzjKUIPQVjOosjgvCHQOv9Ett9CYYHlgvJeXG0qQvdSojnBq4vAdQBwn1+yGveAwHCoe/rMR86ozX3+c2A== + dependencies: + "@types/html-minifier-terser" "^5.0.0" + "@types/tapable" "^1.0.5" + "@types/webpack" "^4.41.8" + html-minifier-terser "^5.0.1" + loader-utils "^1.2.3" + lodash "^4.17.20" + pretty-error "^2.1.1" + tapable "^1.1.3" + util.promisify "1.0.0" + +htmlparser2@^3.10.1, htmlparser2@^3.9.1: + version "3.10.1" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" + integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== + dependencies: + domelementtype "^1.3.1" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^3.1.1" + +http-cache-semantics@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" + integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= + +http-errors@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-parser-js@>=0.5.1: + version "0.5.3" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" + integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== + +http-proxy-middleware@0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" + integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== + dependencies: + http-proxy "^1.17.0" + is-glob "^4.0.0" + lodash "^4.17.11" + micromatch "^3.1.10" + +http-proxy@^1.17.0: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= + +human-signals@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== + +iconv-lite@0.4.24, iconv-lite@^0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +icss-utils@^4.0.0, icss-utils@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" + integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== + dependencies: + postcss "^7.0.14" + +ieee754@^1.1.4: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= + +ignore@^3.3.5: + version "3.3.10" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" + integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== + +ignore@^5.1.1, ignore@^5.1.4: + version "5.1.8" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" + integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== + +immer@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/immer/-/immer-1.10.0.tgz#bad67605ba9c810275d91e1c2a47d4582e98286d" + integrity sha512-O3sR1/opvCDGLEVcvrGTMtLac8GJ5IwZC4puPrLuRj3l7ICKvkmA0vGuU9OW8mV9WIBRnaxp5GJh9IEAaNOoYg== + +import-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= + dependencies: + import-from "^2.1.0" + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +import-fresh@^3.2.1, import-fresh@^3.2.2: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + integrity sha1-M1238qev/VOqpHHUuAId7ja387E= + dependencies: + resolve-from "^3.0.0" + +import-lazy@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" + integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= + +import-local@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== + dependencies: + pkg-dir "^3.0.0" + resolve-cwd "^2.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +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= + +infer-owner@^1.0.3, infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + +infima@0.2.0-alpha.18: + version "0.2.0-alpha.18" + resolved "https://registry.yarnpkg.com/infima/-/infima-0.2.0-alpha.18.tgz#8ac62711f13ef99b1f4a45b3ac14571722a2ccf6" + integrity sha512-ndSEffXzjgM/eiSm5jpLTX6ON9MmylzxqBnV2bTiC3kCSyDYdvzTs+bSwf+C4TWayuqnRTnBK1JUePo3m6Bnfg== + +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, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84" + integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ== + +ini@^1.3.5, ini@~1.3.0: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +inline-style-parser@0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1" + integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== + +inquirer@7.0.4: + version "7.0.4" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.4.tgz#99af5bde47153abca23f5c7fc30db247f39da703" + integrity sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ== + dependencies: + ansi-escapes "^4.2.1" + chalk "^2.4.2" + cli-cursor "^3.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.15" + mute-stream "0.0.8" + run-async "^2.2.0" + rxjs "^6.5.3" + string-width "^4.1.0" + strip-ansi "^5.1.0" + through "^2.3.6" + +inquirer@^7.2.0: + version "7.3.3" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" + integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== + dependencies: + ansi-escapes "^4.2.1" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.19" + mute-stream "0.0.8" + run-async "^2.4.0" + rxjs "^6.6.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + +internal-ip@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" + integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== + dependencies: + default-gateway "^4.2.0" + ipaddr.js "^1.9.0" + +interpret@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== + +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= + +ip@^1.1.0, ip@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= + +ipaddr.js@1.9.1, ipaddr.js@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= + +is-absolute-url@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" + integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-alphabetical@1.0.4, is-alphabetical@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" + integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== + +is-alphanumerical@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" + integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A== + dependencies: + is-alphabetical "^1.0.0" + is-decimal "^1.0.0" + +is-arguments@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9" + integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg== + dependencies: + call-bind "^1.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + dependencies: + binary-extensions "^1.0.0" + +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-buffer@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + +is-callable@^1.1.4, is-callable@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" + integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== + +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + +is-color-stop@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" + integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= + dependencies: + css-color-names "^0.0.4" + hex-color-regex "^1.1.0" + hsl-regex "^1.0.0" + hsla-regex "^1.0.0" + rgb-regex "^1.0.1" + rgba-regex "^1.0.0" + +is-core-module@^2.2.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-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + +is-decimal@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" + integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + +is-docker@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156" + integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw== + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.0, 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-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0, 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-hexadecimal@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" + integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== + +is-installed-globally@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" + integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== + dependencies: + global-dirs "^2.0.1" + is-path-inside "^3.0.1" + +is-negative-zero@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" + integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== + +is-npm@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" + integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig== + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +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-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-path-cwd@^2.0.0, is-path-cwd@^2.2.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-path-inside@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" + integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== + +is-plain-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + +is-plain-obj@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-regex@^1.0.4, is-regex@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251" + integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg== + dependencies: + call-bind "^1.0.2" + has-symbols "^1.0.1" + +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= + +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + +is-root@2.1.0, is-root@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" + integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +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== + +is-svg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" + integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== + dependencies: + html-comment-regex "^1.1.0" + +is-symbol@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + dependencies: + has-symbols "^1.0.1" + +is-typedarray@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-whitespace-character@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7" + integrity sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w== + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-word-character@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230" + integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + +is-wsl@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +is-yarn-global@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" + integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +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= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +jest-worker@^26.5.0: + 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" + +joi@^17.2.1, joi@^17.3.0: + version "17.4.0" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.4.0.tgz#b5c2277c8519e016316e49ababd41a1908d9ef20" + integrity sha512-F4WiW2xaV6wc1jxete70Rw4V/VuMd6IN+a5ilZsxG4uYtUXWu2kq9W5P2dz30e7Gmw8RCbY/u/uk+dMPma9tAg== + dependencies: + "@hapi/hoek" "^9.0.0" + "@hapi/topo" "^5.0.0" + "@sideway/address" "^4.1.0" + "@sideway/formula" "^3.0.0" + "@sideway/pinpoint" "^2.0.0" + +"js-tokens@^3.0.0 || ^4.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== + +js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= + +js-yaml@^3.11.0, js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +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-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= + +json-parse-better-errors@^1.0.1, 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-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +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== + +json3@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" + integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== + +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.2.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" + integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== + dependencies: + minimist "^1.2.5" + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +keyv@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" + integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== + dependencies: + json-buffer "3.0.0" + +killable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" + integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + 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" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +last-call-webpack-plugin@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" + integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== + dependencies: + lodash "^4.17.5" + webpack-sources "^1.1.0" + +latest-version@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" + integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== + dependencies: + package-json "^6.3.0" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + +loader-runner@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" + integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== + +loader-utils@1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" + integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== + dependencies: + big.js "^5.2.2" + emojis-list "^2.0.0" + json5 "^1.0.1" + +loader-utils@^1.1.0, loader-utils@^1.2.3, 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@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +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" + +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= + +lodash.assignin@^4.0.9: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.assignin/-/lodash.assignin-4.2.0.tgz#ba8df5fb841eb0a3e8044232b0e263a8dc6a28a2" + integrity sha1-uo31+4QesKPoBEIysOJjqNxqKKI= + +lodash.bind@^4.1.4: + version "4.2.1" + resolved "https://registry.yarnpkg.com/lodash.bind/-/lodash.bind-4.2.1.tgz#7ae3017e939622ac31b7d7d7dcb1b34db1690d35" + integrity sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU= + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= + +lodash.chunk@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.chunk/-/lodash.chunk-4.2.0.tgz#66e5ce1f76ed27b4303d8c6512e8d1216e8106bc" + integrity sha1-ZuXOH3btJ7QwPYxlEujRIW6BBrw= + +lodash.curry@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.curry/-/lodash.curry-4.1.1.tgz#248e36072ede906501d75966200a86dab8b23170" + integrity sha1-JI42By7ekGUB11lmIAqG2riyMXA= + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + +lodash.defaults@^4.0.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" + integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= + +lodash.filter@^4.4.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.filter/-/lodash.filter-4.6.0.tgz#668b1d4981603ae1cc5a6fa760143e480b4c4ace" + integrity sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4= + +lodash.flatmap@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.flatmap/-/lodash.flatmap-4.5.0.tgz#ef8cbf408f6e48268663345305c6acc0b778702e" + integrity sha1-74y/QI9uSCaGYzRTBcaswLd4cC4= + +lodash.flatten@^4.2.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" + integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= + +lodash.flow@^3.3.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/lodash.flow/-/lodash.flow-3.5.0.tgz#87bf40292b8cf83e4e8ce1a3ae4209e20071675a" + integrity sha1-h79AKSuM+D5OjOGjrkIJ4gBxZ1o= + +lodash.foreach@^4.3.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53" + integrity sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM= + +lodash.groupby@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.groupby/-/lodash.groupby-4.6.0.tgz#0b08a1dcf68397c397855c3239783832df7403d1" + integrity sha1-Cwih3PaDl8OXhVwyOXg4Mt90A9E= + +lodash.has@^4.5.2: + version "4.5.2" + resolved "https://registry.yarnpkg.com/lodash.has/-/lodash.has-4.5.2.tgz#d19f4dc1095058cccbe2b0cdf4ee0fe4aa37c862" + integrity sha1-0Z9NwQlQWMzL4rDN9O4P5Ko3yGI= + +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= + +lodash.isstring@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" + integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= + +lodash.kebabcase@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" + integrity sha1-hImxyw0p/4gZXM7KRI/21swpXDY= + +lodash.map@^4.4.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" + integrity sha1-dx7Hg540c9nEzeKLGTlMNWL09tM= + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + +lodash.merge@^4.4.0: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.padstart@^4.6.1: + version "4.6.1" + resolved "https://registry.yarnpkg.com/lodash.padstart/-/lodash.padstart-4.6.1.tgz#d2e3eebff0d9d39ad50f5cbd1b52a7bce6bb611b" + integrity sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs= + +lodash.pick@^4.2.1, lodash.pick@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" + integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM= + +lodash.pickby@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.pickby/-/lodash.pickby-4.6.0.tgz#7dea21d8c18d7703a27c704c15d3b84a67e33aff" + integrity sha1-feoh2MGNdwOifHBMFdO4SmfjOv8= + +lodash.reduce@^4.4.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.reduce/-/lodash.reduce-4.6.0.tgz#f1ab6b839299ad48f784abbf476596f03b914d3b" + integrity sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs= + +lodash.reject@^4.4.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.reject/-/lodash.reject-4.6.0.tgz#80d6492dc1470864bbf583533b651f42a9f52415" + integrity sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU= + +lodash.some@^4.4.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d" + integrity sha1-G7nzFO9ri63tE7VJFpsqlF62jk0= + +lodash.sortby@^4.6.0, lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + +lodash.template@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" + integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.templatesettings "^4.0.0" + +lodash.templatesettings@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" + integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== + dependencies: + lodash._reinterpolate "^3.0.0" + +lodash.toarray@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" + integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE= + +lodash.uniq@4.5.0, lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + +lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.5: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +loglevel@^1.6.8: + version "1.7.1" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197" + integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + +lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +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@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +make-dir@^3.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" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +markdown-escapes@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535" + integrity sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg== + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +mdast-squeeze-paragraphs@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz#7c4c114679c3bee27ef10b58e2e015be79f1ef97" + integrity sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ== + dependencies: + unist-util-remove "^2.0.0" + +mdast-util-definitions@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz#c5c1a84db799173b4dcf7643cda999e440c24db2" + integrity sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ== + dependencies: + unist-util-visit "^2.0.0" + +mdast-util-to-hast@10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz#0cfc82089494c52d46eb0e3edb7a4eb2aea021eb" + integrity sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA== + dependencies: + "@types/mdast" "^3.0.0" + "@types/unist" "^2.0.0" + mdast-util-definitions "^4.0.0" + mdurl "^1.0.0" + unist-builder "^2.0.0" + unist-util-generated "^1.0.0" + unist-util-position "^3.0.0" + unist-util-visit "^2.0.0" + +mdast-util-to-string@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz#27055500103f51637bd07d01da01eb1967a43527" + integrity sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A== + +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== + +mdurl@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" + integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +memory-fs@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +memory-fs@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +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== + +merge2@^1.2.3, merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +microevent.ts@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" + integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== + +micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +micromatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" + integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== + dependencies: + braces "^3.0.1" + picomatch "^2.0.5" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.46.0, "mime-db@>= 1.43.0 < 2": + version "1.46.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.46.0.tgz#6267748a7f799594de3cbc8cde91def349661cee" + integrity sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ== + +mime-db@~1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" + integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ== + +mime-types@2.1.18: + version "2.1.18" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" + integrity sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ== + dependencies: + mime-db "~1.33.0" + +mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.24: + version "2.1.29" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.29.tgz#1d4ab77da64b91f5f72489df29236563754bb1b2" + integrity sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ== + dependencies: + mime-db "1.46.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.4.4: + version "2.5.2" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" + integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== + +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== + +mimic-response@^1.0.0, mimic-response@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +mini-create-react-context@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz#072171561bfdc922da08a60c2197a497cc2d1d5e" + integrity sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ== + dependencies: + "@babel/runtime" "^7.12.1" + tiny-warning "^1.0.3" + +mini-css-extract-plugin@^0.8.0: + version "0.8.2" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.2.tgz#a875e169beb27c88af77dd962771c9eedc3da161" + integrity sha512-a3Y4of27Wz+mqK3qrcd3VhYz6cU0iW5x3Sgvqzbj+XmlrSizmvu8QQMl5oMYJjgHOC4iyt+w7l4umP+dQeW3bw== + dependencies: + loader-utils "^1.1.0" + normalize-url "1.9.1" + schema-utils "^1.0.0" + webpack-sources "^1.1.0" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +minimatch@3.0.4, 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== + +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.2: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0, minipass@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" + integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== + dependencies: + yallist "^4.0.0" + +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +mkdirp@^1.0.3, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +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== + +ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= + +multicast-dns@^6.0.1: + version "6.2.3" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== + dependencies: + dns-packet "^1.3.1" + thunky "^1.0.2" + +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +nan@^2.12.1: + version "2.14.2" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" + integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + +neo-async@^2.5.0, neo-async@^2.6.1: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +node-emoji@^1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.10.0.tgz#8886abd25d9c7bb61802a658523d1f8d2a89b2da" + integrity sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw== + dependencies: + lodash.toarray "^4.4.0" + +node-fetch@2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" + integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== + +node-forge@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" + integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== + +node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.11.0" + vm-browserify "^1.0.1" + +node-releases@^1.1.52, node-releases@^1.1.70: + version "1.1.71" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb" + integrity sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg== + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +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== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + +normalize-url@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + +normalize-url@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== + +normalize-url@^4.1.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" + integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +npm-run-path@^4.0.0: + 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" + +nprogress@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/nprogress/-/nprogress-0.2.0.tgz#cb8f34c53213d895723fcbab907e9422adbcafb1" + integrity sha1-y480xTIT2JVyP8urkH6UIq28r7E= + +nth-check@^1.0.2, nth-check@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +null-loader@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/null-loader/-/null-loader-3.0.0.tgz#3e2b6c663c5bda8c73a54357d8fa0708dc61b245" + integrity sha512-hf5sNLl8xdRho4UPBOOeoIwT3WhjYcMUQm0zj44EhD6UscMAz72o2udpoDFBgykucdEDGIcd6SXbc/G6zssbzw== + dependencies: + loader-utils "^1.2.3" + schema-utils "^1.0.0" + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-inspect@^1.8.0, object-inspect@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" + integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== + +object-is@^1.0.1: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +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-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.0, object.assign@^4.1.1, object.assign@^4.1.2: + 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" + +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz#1bd63aeacf0d5d2d2f31b5e393b03a7c601a23f7" + integrity sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +object.values@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.3.tgz#eaa8b1e17589f02f698db093f7c62ee1699742ee" + integrity sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + has "^1.0.3" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.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.0: + 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" + +open@^7.0.2: + version "7.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + +opener@^1.5.1: + version "1.5.2" + resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" + integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== + +opn@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" + integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== + dependencies: + is-wsl "^1.1.0" + +optimize-css-assets-webpack-plugin@^5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.4.tgz#85883c6528aaa02e30bbad9908c92926bb52dc90" + integrity sha512-wqd6FdI2a5/FdoiCNNkEvLeA//lHHfG24Ln2Xm2qqdIk4aOlsR18jwpyOihqQ8849W3qu2DX8fOYxpvTMj+93A== + dependencies: + cssnano "^4.1.10" + last-call-webpack-plugin "^3.0.0" + +original@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" + integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== + dependencies: + url-parse "^1.4.3" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +p-cancelable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" + integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-finally@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" + integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== + +p-limit@^2.0.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: + 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@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.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-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-map@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== + dependencies: + aggregate-error "^3.0.0" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-retry@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" + integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== + dependencies: + retry "^0.12.0" + +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== + +package-json@^6.3.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" + integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== + dependencies: + got "^9.6.0" + registry-auth-token "^4.0.0" + registry-url "^5.0.0" + semver "^6.2.0" + +pako@~1.0.5: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parallel-transform@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== + dependencies: + cyclist "^1.0.1" + inherits "^2.0.3" + readable-stream "^2.1.5" + +param-case@^3.0.3: + version "3.0.4" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.6" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== + dependencies: + asn1.js "^5.2.0" + browserify-aes "^1.0.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-entities@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" + integrity sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ== + dependencies: + character-entities "^1.0.0" + character-entities-legacy "^1.0.0" + character-reference-invalid "^1.0.0" + is-alphanumerical "^1.0.0" + is-decimal "^1.0.0" + is-hexadecimal "^1.0.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-json@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse-numeric-range@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/parse-numeric-range/-/parse-numeric-range-1.2.0.tgz#aa70b00f29624ed13e9f943e9461b306e386b0fa" + integrity sha512-1q2tXpAOplPxcl8vrIGPWz1dJxxfmdRkCFcpxxMBerDnGuuHalOWF/xj9L8Nn5XoTUoB/6F0CeQBp2fMgkOYFg== + +parse5@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" + integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== + +parse5@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +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, 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@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +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== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +path-to-regexp@2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-2.2.1.tgz#90b617025a16381a879bc82a38d4e8bdeb2bcf45" + integrity sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ== + +path-to-regexp@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" + integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== + dependencies: + isarray "0.0.1" + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pbkdf2@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94" + integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +picomatch@^2.0.4, picomatch@^2.0.5, 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@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + +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@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +pkg-dir@^4.1.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-up@3.1.0, pkg-up@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" + integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== + dependencies: + find-up "^3.0.0" + +pnp-webpack-plugin@^1.6.4: + version "1.6.4" + resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" + integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== + dependencies: + ts-pnp "^1.1.6" + +portfinder@^1.0.26: + version "1.0.28" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" + integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== + dependencies: + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.5" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +postcss-attribute-case-insensitive@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880" + integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^6.0.2" + +postcss-calc@^7.0.1: + version "7.0.5" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.5.tgz#f8a6e99f12e619c2ebc23cf6c486fdc15860933e" + integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg== + dependencies: + postcss "^7.0.27" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.2" + +postcss-color-functional-notation@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0" + integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-gray@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz#532a31eb909f8da898ceffe296fdc1f864be8547" + integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-color-hex-alpha@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388" + integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== + dependencies: + postcss "^7.0.14" + postcss-values-parser "^2.0.1" + +postcss-color-mod-function@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d" + integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-rebeccapurple@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77" + integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-colormin@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" + integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== + dependencies: + browserslist "^4.0.0" + color "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-combine-duplicated-selectors@^9.1.0: + version "9.4.0" + resolved "https://registry.yarnpkg.com/postcss-combine-duplicated-selectors/-/postcss-combine-duplicated-selectors-9.4.0.tgz#dae866debae5f93b58e13e6cc69419105e91336a" + integrity sha512-rMnO1H3wgR1T6QSlK3i8Slz9p3xD+0yOi4J7qwh/5PGR3z8jbgYvRlNKAIvXDtGBQbJKoWs4df5skL3a/fdUEA== + dependencies: + postcss "^7.0.0" + postcss-selector-parser "^6.0.0" + +postcss-convert-values@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" + integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-custom-media@^7.0.8: + version "7.0.8" + resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c" + integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== + dependencies: + postcss "^7.0.14" + +postcss-custom-properties@^8.0.11: + version "8.0.11" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97" + integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== + dependencies: + postcss "^7.0.17" + postcss-values-parser "^2.0.1" + +postcss-custom-selectors@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba" + integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-dir-pseudo-class@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2" + integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-discard-comments@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" + integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== + dependencies: + postcss "^7.0.0" + +postcss-discard-duplicates@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" + integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== + dependencies: + postcss "^7.0.0" + +postcss-discard-empty@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" + integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== + dependencies: + postcss "^7.0.0" + +postcss-discard-overridden@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" + integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== + dependencies: + postcss "^7.0.0" + +postcss-discard-unused@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-4.0.1.tgz#ee7cc66af8c7e8c19bd36f12d09c4bde4039abea" + integrity sha512-/3vq4LU0bLH2Lj4NYN7BTf2caly0flUB7Xtrk9a5K3yLuXMkHMqMO/x3sDq8W2b1eQFSCyY0IVz2L+0HP8kUUA== + dependencies: + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + uniqs "^2.0.0" + +postcss-double-position-gradients@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e" + integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== + dependencies: + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-env-function@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7" + integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-focus-visible@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e" + integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== + dependencies: + postcss "^7.0.2" + +postcss-focus-within@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680" + integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== + dependencies: + postcss "^7.0.2" + +postcss-font-variant@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz#42d4c0ab30894f60f98b17561eb5c0321f502641" + integrity sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA== + dependencies: + postcss "^7.0.2" + +postcss-gap-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715" + integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== + dependencies: + postcss "^7.0.2" + +postcss-image-set-function@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288" + integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-initial@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.2.tgz#f018563694b3c16ae8eaabe3c585ac6319637b2d" + integrity sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA== + dependencies: + lodash.template "^4.5.0" + postcss "^7.0.2" + +postcss-lab-function@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e" + integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-load-config@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.2.tgz#c5ea504f2c4aef33c7359a34de3573772ad7502a" + integrity sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw== + dependencies: + cosmiconfig "^5.0.0" + import-cwd "^2.0.0" + +postcss-loader@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" + integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== + dependencies: + loader-utils "^1.1.0" + postcss "^7.0.0" + postcss-load-config "^2.0.0" + schema-utils "^1.0.0" + +postcss-logical@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5" + integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== + dependencies: + postcss "^7.0.2" + +postcss-media-minmax@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5" + integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== + dependencies: + postcss "^7.0.2" + +postcss-merge-idents@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-4.0.1.tgz#b7df282a92f052ea0a66c62d8f8812e6d2cbed23" + integrity sha512-43S/VNdF6II0NZ31YxcvNYq4gfURlPAAsJW/z84avBXQCaP4I4qRHUH18slW/SOlJbcxxCobflPNUApYDddS7A== + dependencies: + cssnano-util-same-parent "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-merge-longhand@^4.0.11: + version "4.0.11" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" + integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== + dependencies: + css-color-names "0.0.4" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + stylehacks "^4.0.0" + +postcss-merge-rules@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" + integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + cssnano-util-same-parent "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + vendors "^1.0.0" + +postcss-minify-font-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" + integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-gradients@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" + integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + is-color-stop "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-params@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" + integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== + dependencies: + alphanum-sort "^1.0.0" + browserslist "^4.0.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + uniqs "^2.0.0" + +postcss-minify-selectors@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" + integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== + dependencies: + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +postcss-modules-extract-imports@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" + integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== + dependencies: + postcss "^7.0.5" + +postcss-modules-local-by-default@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz#bb14e0cc78279d504dbdcbfd7e0ca28993ffbbb0" + integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw== + dependencies: + icss-utils "^4.1.1" + postcss "^7.0.32" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" + integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^6.0.0" + +postcss-modules-values@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" + integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== + dependencies: + icss-utils "^4.0.0" + postcss "^7.0.6" + +postcss-nesting@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052" + integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== + dependencies: + postcss "^7.0.2" + +postcss-normalize-charset@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" + integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== + dependencies: + postcss "^7.0.0" + +postcss-normalize-display-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" + integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-positions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" + integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== + dependencies: + cssnano-util-get-arguments "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-repeat-style@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" + integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-string@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" + integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== + dependencies: + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-timing-functions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" + integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-unicode@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" + integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-url@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" + integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-whitespace@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" + integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-ordered-values@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" + integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== + dependencies: + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-overflow-shorthand@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30" + integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== + dependencies: + postcss "^7.0.2" + +postcss-page-break@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf" + integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== + dependencies: + postcss "^7.0.2" + +postcss-place@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62" + integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-preset-env@^6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5" + integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== + dependencies: + autoprefixer "^9.6.1" + browserslist "^4.6.4" + caniuse-lite "^1.0.30000981" + css-blank-pseudo "^0.1.4" + css-has-pseudo "^0.10.0" + css-prefers-color-scheme "^3.1.1" + cssdb "^4.4.0" + postcss "^7.0.17" + postcss-attribute-case-insensitive "^4.0.1" + postcss-color-functional-notation "^2.0.1" + postcss-color-gray "^5.0.0" + postcss-color-hex-alpha "^5.0.3" + postcss-color-mod-function "^3.0.3" + postcss-color-rebeccapurple "^4.0.1" + postcss-custom-media "^7.0.8" + postcss-custom-properties "^8.0.11" + postcss-custom-selectors "^5.1.2" + postcss-dir-pseudo-class "^5.0.0" + postcss-double-position-gradients "^1.0.0" + postcss-env-function "^2.0.2" + postcss-focus-visible "^4.0.0" + postcss-focus-within "^3.0.0" + postcss-font-variant "^4.0.0" + postcss-gap-properties "^2.0.0" + postcss-image-set-function "^3.0.1" + postcss-initial "^3.0.0" + postcss-lab-function "^2.0.1" + postcss-logical "^3.0.0" + postcss-media-minmax "^4.0.0" + postcss-nesting "^7.0.0" + postcss-overflow-shorthand "^2.0.0" + postcss-page-break "^2.0.0" + postcss-place "^4.0.1" + postcss-pseudo-class-any-link "^6.0.0" + postcss-replace-overflow-wrap "^3.0.0" + postcss-selector-matches "^4.0.0" + postcss-selector-not "^4.0.0" + +postcss-pseudo-class-any-link@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1" + integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-reduce-idents@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-4.0.2.tgz#30447a6ec20941e78e21bd4482a11f569c4f455b" + integrity sha512-Tz70Ri10TclPoCtFfftjFVddx3fZGUkr0dEDbIEfbYhFUOFQZZ77TEqRrU0e6TvAvF+Wa5VVzYTpFpq0uwFFzw== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-reduce-initial@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" + integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + +postcss-reduce-transforms@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" + integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== + dependencies: + cssnano-util-get-match "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-replace-overflow-wrap@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c" + integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== + dependencies: + postcss "^7.0.2" + +postcss-selector-matches@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff" + integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-not@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz#263016eef1cf219e0ade9a913780fc1f48204cbf" + integrity sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-parser@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" + integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== + dependencies: + dot-prop "^5.2.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" + integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== + dependencies: + cssesc "^2.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: + 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-sort-media-queries@^1.7.26: + version "1.31.21" + resolved "https://registry.yarnpkg.com/postcss-sort-media-queries/-/postcss-sort-media-queries-1.31.21.tgz#3225ec6eb490402602284ac99963b80461783cee" + integrity sha512-h+HbXXfOVFeLvCJOzl/Z9SqQ25MNpG/73k71756ftisaaJy75h06/Dn6KOwC4OCMN10ewT2PXMzHV03JNKwBbg== + dependencies: + postcss "^7.0.27" + sort-css-media-queries "1.5.0" + +postcss-svgo@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" + integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== + dependencies: + is-svg "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + svgo "^1.0.0" + +postcss-unique-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" + integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== + dependencies: + alphanum-sort "^1.0.0" + postcss "^7.0.0" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" + integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== + +postcss-value-parser@^4.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-values-parser@^2.0.0, postcss-values-parser@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" + integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-zindex@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-4.0.1.tgz#8db6a4cec3111e5d3fd99ea70abeda61873d10c1" + integrity sha512-d/8BlQcUdEugZNRM9AdCA2V4fqREUtn/wcixLN3L6ITgc2P/FMcVVYz8QZkhItWT9NB5qr8wuN2dJCE4/+dlrA== + dependencies: + has "^1.0.0" + postcss "^7.0.0" + uniqs "^2.0.0" + +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.35" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" + integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +prepend-http@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= + +pretty-error@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6" + integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw== + dependencies: + lodash "^4.17.20" + renderkid "^2.0.4" + +pretty-time@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pretty-time/-/pretty-time-1.1.0.tgz#ffb7429afabb8535c346a34e41873adf3d74dd0e" + integrity sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA== + +prism-react-renderer@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-1.2.0.tgz#5ad4f90c3e447069426c8a53a0eafde60909cdf4" + integrity sha512-GHqzxLYImx1iKN1jJURcuRoA/0ygCcNhfGw1IT8nPIMzarmKQ3Nc+JcG0gi8JXQzuh0C5ShE4npMIoqNin40hg== + +prismjs@^1.22.0: + version "1.23.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.23.0.tgz#d3b3967f7d72440690497652a9d40ff046067f33" + integrity sha512-c29LVsqOaLbBHuIbsTxaKENh1N2EQBOHaWv7gkHN4dgRbxSREqDnDbtFJYdpPauS4YCplMSNCABQ6Eeor69bAA== + optionalDependencies: + clipboard "^2.0.0" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + +prop-types@^15.5.0, prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2: + version "15.7.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + +property-information@^5.0.0, property-information@^5.3.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.6.0.tgz#61675545fb23002f245c6540ec46077d4da3ed69" + integrity sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA== + dependencies: + xtend "^4.0.0" + +proxy-addr@~2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" + integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.9.1" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@^1.2.4, punycode@^1.3.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +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== + +pupa@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" + integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== + dependencies: + escape-goat "^2.0.0" + +pure-color@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/pure-color/-/pure-color-1.3.0.tgz#1fe064fb0ac851f0de61320a8bf796836422f33e" + integrity sha1-H+Bk+wrIUfDeYTIKi/eWg2Qi8z4= + +q@^1.1.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + +qs@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" + integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== + +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + +queue-microtask@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.2.tgz#abf64491e6ecf0f38a6502403d4cda04f372dfd3" + integrity sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg== + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, 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" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" + integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" + integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== + dependencies: + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" + unpipe "1.0.0" + +rc@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +react-base16-styling@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/react-base16-styling/-/react-base16-styling-0.6.0.tgz#ef2156d66cf4139695c8a167886cb69ea660792c" + integrity sha1-7yFW1mz0E5aVyKFniGy2nqZgeSw= + dependencies: + base16 "^1.0.0" + lodash.curry "^4.0.1" + lodash.flow "^3.3.0" + pure-color "^1.2.0" + +react-dev-utils@^10.2.1: + version "10.2.1" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-10.2.1.tgz#f6de325ae25fa4d546d09df4bb1befdc6dd19c19" + integrity sha512-XxTbgJnYZmxuPtY3y/UV0D8/65NKkmaia4rXzViknVnZeVlklSh8u6TnaEYPfAi/Gh1TP4mEOXHI6jQOPbeakQ== + dependencies: + "@babel/code-frame" "7.8.3" + address "1.1.2" + browserslist "4.10.0" + chalk "2.4.2" + cross-spawn "7.0.1" + detect-port-alt "1.1.6" + escape-string-regexp "2.0.0" + filesize "6.0.1" + find-up "4.1.0" + fork-ts-checker-webpack-plugin "3.1.1" + global-modules "2.0.0" + globby "8.0.2" + gzip-size "5.1.1" + immer "1.10.0" + inquirer "7.0.4" + is-root "2.1.0" + loader-utils "1.2.3" + open "^7.0.2" + pkg-up "3.1.0" + react-error-overlay "^6.0.7" + recursive-readdir "2.2.2" + shell-quote "1.7.2" + strip-ansi "6.0.0" + text-table "0.2.0" + +react-dom@^16.8.4: + version "16.14.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.14.0.tgz#7ad838ec29a777fb3c75c3a190f661cf92ab8b89" + integrity sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + scheduler "^0.19.1" + +react-error-overlay@^6.0.7: + version "6.0.9" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a" + integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew== + +react-fast-compare@^3.1.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb" + integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== + +react-helmet@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/react-helmet/-/react-helmet-6.1.0.tgz#a750d5165cb13cf213e44747502652e794468726" + integrity sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw== + dependencies: + object-assign "^4.1.1" + prop-types "^15.7.2" + react-fast-compare "^3.1.1" + react-side-effect "^2.1.0" + +react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-json-view@^1.19.1: + version "1.21.1" + resolved "https://registry.yarnpkg.com/react-json-view/-/react-json-view-1.21.1.tgz#221b3ec1f84d7225c1cbb56c504ab3e1d06e66ab" + integrity sha512-AonvGea4nWlsnNXCbnSdUHsetyNS8rUMhbFHS9eFaDB1oeaxgHcVsqo5LhGRMvWybfDdjVUo0xzDoMQP7jbrXw== + dependencies: + flux "^4.0.1" + react-base16-styling "^0.6.0" + react-lifecycles-compat "^3.0.4" + react-textarea-autosize "^6.1.0" + +react-lifecycles-compat@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" + integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== + +react-loadable-ssr-addon@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/react-loadable-ssr-addon/-/react-loadable-ssr-addon-0.3.0.tgz#ae9b2d3b11721930f8d8255476d288c0e9f9290f" + integrity sha512-E+lnmDakV0k6ut6R2J77vurwCOwTKEwKlHs9S62G8ez+ujecLPcqjt3YAU8M58kIGjp2QjFlZ7F9QWkq/mr6Iw== + dependencies: + "@babel/runtime" "^7.10.3" + +react-loadable@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/react-loadable/-/react-loadable-5.5.0.tgz#582251679d3da86c32aae2c8e689c59f1196d8c4" + integrity sha512-C8Aui0ZpMd4KokxRdVAm2bQtI03k2RMRNzOB+IipV3yxFTSVICv7WoUr5L9ALB5BmKO1iHgZtWM8EvYG83otdg== + dependencies: + prop-types "^15.5.0" + +react-router-config@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/react-router-config/-/react-router-config-5.1.1.tgz#0f4263d1a80c6b2dc7b9c1902c9526478194a988" + integrity sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg== + dependencies: + "@babel/runtime" "^7.1.2" + +react-router-dom@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.2.0.tgz#9e65a4d0c45e13289e66c7b17c7e175d0ea15662" + integrity sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA== + dependencies: + "@babel/runtime" "^7.1.2" + history "^4.9.0" + loose-envify "^1.3.1" + prop-types "^15.6.2" + react-router "5.2.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + +react-router@5.2.0, react-router@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.2.0.tgz#424e75641ca8747fbf76e5ecca69781aa37ea293" + integrity sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw== + dependencies: + "@babel/runtime" "^7.1.2" + history "^4.9.0" + hoist-non-react-statics "^3.1.0" + loose-envify "^1.3.1" + mini-create-react-context "^0.4.0" + path-to-regexp "^1.7.0" + prop-types "^15.6.2" + react-is "^16.6.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + +react-side-effect@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/react-side-effect/-/react-side-effect-2.1.1.tgz#66c5701c3e7560ab4822a4ee2742dee215d72eb3" + integrity sha512-2FoTQzRNTncBVtnzxFOk2mCpcfxQpenBMbk5kSVBg5UcPqV9fRbgY2zhb7GTWWOlpFmAxhClBDlIq8Rsubz1yQ== + +react-textarea-autosize@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-6.1.0.tgz#df91387f8a8f22020b77e3833c09829d706a09a5" + integrity sha512-F6bI1dgib6fSvG8so1HuArPUv+iVEfPliuLWusLF+gAKz0FbB4jLrWUrTAeq1afnPT2c9toEZYUdz/y1uKMy4A== + dependencies: + prop-types "^15.6.0" + +react-toggle@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/react-toggle/-/react-toggle-4.1.1.tgz#2317f67bf918ea3508a96b09dd383efd9da572af" + integrity sha512-+wXlMcSpg8SmnIXauMaZiKpR+r2wp2gMUteroejp2UTSqGTVvZLN+m9EhMzFARBKEw7KpQOwzCyfzeHeAndQGw== + dependencies: + classnames "^2.2.5" + +react@^16.8.4: + version "16.14.0" + resolved "https://registry.yarnpkg.com/react/-/react-16.14.0.tgz#94d776ddd0aaa37da3eda8fc5b6b18a4c9a3114d" + integrity sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +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" + +reading-time@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/reading-time/-/reading-time-1.3.0.tgz#d13e74431589a4a9038669f24d5acbc08bbb015d" + integrity sha512-RJ8J5O6UvrclfZpcPSPuKusrdRfoY7uXXoYOOdeswZNtSkQaewT3919yz6RyloDBR+iwcUyz5zGOUjhgvfuv3g== + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= + dependencies: + resolve "^1.1.6" + +recursive-readdir@2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" + integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== + dependencies: + minimatch "3.0.4" + +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" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexp.prototype.flags@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" + integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +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" + +registry-auth-token@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250" + integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw== + dependencies: + rc "^1.2.8" + +registry-url@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" + integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== + dependencies: + rc "^1.2.8" + +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.7" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.7.tgz#c00164e1e6713c2e3ee641f1701c4b7aa0a7f86c" + integrity sha512-ib77G0uxsA2ovgiYbCVGx4Pv3PSttAx2vIwidqQzbL2U5S4Q+j00HdSAneSBuyVcMvEnTXMjiGgB+DlXozVhpQ== + dependencies: + jsesc "~0.5.0" + +rehype-parse@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/rehype-parse/-/rehype-parse-6.0.2.tgz#aeb3fdd68085f9f796f1d3137ae2b85a98406964" + integrity sha512-0S3CpvpTAgGmnz8kiCyFLGuW5yA4OQhyNTm/nwPopZ7+PI11WnGl1TTWTGv/2hPEe/g2jRLlhVVSsoDH8waRug== + dependencies: + hast-util-from-parse5 "^5.0.0" + parse5 "^5.0.0" + xtend "^4.0.0" + +relateurl@^0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= + +remark-admonitions@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/remark-admonitions/-/remark-admonitions-1.2.1.tgz#87caa1a442aa7b4c0cafa04798ed58a342307870" + integrity sha512-Ji6p68VDvD+H1oS95Fdx9Ar5WA2wcDA4kwrrhVU7fGctC6+d3uiMICu7w7/2Xld+lnU7/gi+432+rRbup5S8ow== + dependencies: + rehype-parse "^6.0.2" + unified "^8.4.2" + unist-util-visit "^2.0.1" + +remark-emoji@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/remark-emoji/-/remark-emoji-2.1.0.tgz#69165d1181b98a54ad5d9ef811003d53d7ebc7db" + integrity sha512-lDddGsxXURV01WS9WAiS9rO/cedO1pvr9tahtLhr6qCGFhHG4yZSJW3Ha4Nw9Uk1hLNmUBtPC0+m45Ms+xEitg== + dependencies: + emoticon "^3.2.0" + node-emoji "^1.10.0" + unist-util-visit "^2.0.2" + +remark-footnotes@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/remark-footnotes/-/remark-footnotes-2.0.0.tgz#9001c4c2ffebba55695d2dd80ffb8b82f7e6303f" + integrity sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ== + +remark-mdx@1.6.22: + version "1.6.22" + resolved "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-1.6.22.tgz#06a8dab07dcfdd57f3373af7f86bd0e992108bbd" + integrity sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ== + dependencies: + "@babel/core" "7.12.9" + "@babel/helper-plugin-utils" "7.10.4" + "@babel/plugin-proposal-object-rest-spread" "7.12.1" + "@babel/plugin-syntax-jsx" "7.12.1" + "@mdx-js/util" "1.6.22" + is-alphabetical "1.0.4" + remark-parse "8.0.3" + unified "9.2.0" + +remark-parse@8.0.3: + version "8.0.3" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-8.0.3.tgz#9c62aa3b35b79a486454c690472906075f40c7e1" + integrity sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q== + dependencies: + ccount "^1.0.0" + collapse-white-space "^1.0.2" + is-alphabetical "^1.0.0" + is-decimal "^1.0.0" + is-whitespace-character "^1.0.0" + is-word-character "^1.0.0" + markdown-escapes "^1.0.0" + parse-entities "^2.0.0" + repeat-string "^1.5.4" + state-toggle "^1.0.0" + trim "0.0.1" + trim-trailing-lines "^1.0.0" + unherit "^1.0.4" + unist-util-remove-position "^2.0.0" + vfile-location "^3.0.0" + xtend "^4.0.1" + +remark-squeeze-paragraphs@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz#76eb0e085295131c84748c8e43810159c5653ead" + integrity sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw== + dependencies: + mdast-squeeze-paragraphs "^4.0.0" + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +renderkid@^2.0.4: + version "2.0.5" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.5.tgz#483b1ac59c6601ab30a7a596a5965cabccfdd0a5" + integrity sha512-ccqoLg+HLOHq1vdfYNm4TBeaCDIi1FLt3wGojTDSvdewUv65oTmI3cnT2E4hRjl1gzKZIPK+KZrXzlUYKnR+vQ== + dependencies: + css-select "^2.0.2" + dom-converter "^0.2" + htmlparser2 "^3.10.1" + lodash "^4.17.20" + strip-ansi "^3.0.0" + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +repeat-string@^1.5.4, repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +"require-like@>= 0.1.1": + version "0.1.2" + resolved "https://registry.yarnpkg.com/require-like/-/require-like-0.1.2.tgz#ad6f30c13becd797010c468afa775c0c0a6b47fa" + integrity sha1-rW8wwTvs15cBDEaK+ndcDAprR/o= + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= + dependencies: + resolve-from "^3.0.0" + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-pathname@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" + integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@^1.1.6, resolve@^1.14.2, resolve@^1.3.2: + version "1.20.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + +responselike@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= + dependencies: + lowercase-keys "^1.0.0" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rgb-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" + integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= + +rgba-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" + integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= + +rimraf@^2.5.4, 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" + +rimraf@^3.0.0, rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +run-async@^2.2.0, run-async@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= + dependencies: + aproba "^1.1.1" + +rxjs@^6.5.3, rxjs@^6.6.0, rxjs@^6.6.3: + version "6.6.6" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.6.tgz#14d8417aa5a07c5e633995b525e1e3c0dec03b70" + integrity sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg== + dependencies: + tslib "^1.9.0" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, 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== + +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.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-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sax@^1.2.4, sax@~1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +scheduler@^0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" + integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== + dependencies: + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" + +schema-utils@^2.0.0, schema-utils@^2.6.5, schema-utils@^2.7.0: + 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" + +section-matter@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/section-matter/-/section-matter-1.0.0.tgz#e9041953506780ec01d59f292a19c7b850b84167" + integrity sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA== + dependencies: + extend-shallow "^2.0.1" + kind-of "^6.0.0" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= + +select@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d" + integrity sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0= + +selfsigned@^1.10.8: + version "1.10.8" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.8.tgz#0d17208b7d12c33f8eac85c41835f27fc3d81a30" + integrity sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w== + dependencies: + node-forge "^0.10.0" + +semver-diff@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" + integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== + dependencies: + semver "^6.3.0" + +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, semver@^5.6.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, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +send@0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.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" + +serve-handler@^6.1.3: + version "6.1.3" + resolved "https://registry.yarnpkg.com/serve-handler/-/serve-handler-6.1.3.tgz#1bf8c5ae138712af55c758477533b9117f6435e8" + integrity sha512-FosMqFBNrLyeiIDvP1zgO6YoTzFYHxLDEIavhlmQ+knB2Z7l1t+kGLHkZIDN7UVWqQAmKI3D20A6F6jo3nDd4w== + dependencies: + bytes "3.0.0" + content-disposition "0.5.2" + fast-url-parser "1.1.3" + mime-types "2.1.18" + minimatch "3.0.4" + path-is-inside "1.0.2" + path-to-regexp "2.2.1" + range-parser "1.2.0" + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.14.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.1" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.4, setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.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@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +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== + +shell-quote@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" + integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== + +shelljs@^0.8.4: + version "0.8.4" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2" + integrity sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ== + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + dependencies: + is-arrayish "^0.3.1" + +sitemap@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/sitemap/-/sitemap-3.2.2.tgz#3f77c358fa97b555c879e457098e39910095c62b" + integrity sha512-TModL/WU4m2q/mQcrDgNANn0P4LwprM9MMvG4hu5zP4c6IIKs2YLTu6nXXnNr8ODW/WFtxKggiJ1EGn2W0GNmg== + dependencies: + lodash.chunk "^4.2.0" + lodash.padstart "^4.6.1" + whatwg-url "^7.0.0" + xmlbuilder "^13.0.0" + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +sockjs-client@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.5.0.tgz#2f8ff5d4b659e0d092f7aba0b7c386bd2aa20add" + integrity sha512-8Dt3BDi4FYNrCFGTL/HtwVzkARrENdwOUf1ZoW/9p3M8lZdFT35jVdrHza+qgxuG9H3/shR4cuX/X9umUrjP8Q== + dependencies: + debug "^3.2.6" + eventsource "^1.0.7" + faye-websocket "^0.11.3" + inherits "^2.0.4" + json3 "^3.3.3" + url-parse "^1.4.7" + +sockjs@^0.3.21: + version "0.3.21" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.21.tgz#b34ffb98e796930b60a0cfa11904d6a339a7d417" + integrity sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw== + dependencies: + faye-websocket "^0.11.3" + uuid "^3.4.0" + websocket-driver "^0.7.4" + +sort-css-media-queries@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/sort-css-media-queries/-/sort-css-media-queries-1.5.0.tgz#8f605ad372caad0b81be010311882c046e738093" + integrity sha512-QofNE7CEVH1AKdhS7L9IPbV9UtyQYNXyw++8lC+xG6iOLlpzsmncZRiKbihTAESvZ8wOhwnPoesHbMrehrQyyw== + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= + dependencies: + is-plain-obj "^1.0.0" + +source-list-map@^2.0.0: + 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-resolve@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@~0.5.12, 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-url@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== + +source-map@^0.5.0, source-map@^0.5.6: + 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.0, 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== + +space-separated-tokens@^1.0.0: + version "1.1.5" + resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" + integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +ssri@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" + integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== + dependencies: + figgy-pudding "^3.5.1" + +ssri@^8.0.0: + version "8.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" + integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== + dependencies: + minipass "^3.1.1" + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +state-toggle@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe" + integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ== + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +std-env@^2.2.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/std-env/-/std-env-2.3.0.tgz#66d4a4a4d5224242ed8e43f5d65cfa9095216eee" + integrity sha512-4qT5B45+Kjef2Z6pE0BkskzsH0GO7GrND0wGlTM1ioUe3v0dGYx9ZJH0Aro/YyA8fqQ5EyIKDRjZojJYMFTflw== + dependencies: + ci-info "^3.0.0" + +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +stream-shift@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string-width@^4.0.0, string-width@^4.1.0: + version "4.2.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" + integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string.prototype.trimend@^1.0.1, string.prototype.trimend@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" + integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +string.prototype.trimstart@^1.0.1, string.prototype.trimstart@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" + integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +string_decoder@^1.0.0, string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +stringify-object@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== + dependencies: + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" + +strip-ansi@6.0.0, strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-bom-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" + integrity sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI= + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +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== + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + +style-to-object@0.3.0, style-to-object@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46" + integrity sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA== + dependencies: + inline-style-parser "0.1.1" + +stylehacks@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" + integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +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@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.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" + +svg-parser@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" + integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== + +svgo@^1.0.0, svgo@^1.2.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== + dependencies: + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + +tapable@^1.0.0, tapable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + +tar@^6.0.2: + version "6.1.0" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.0.tgz#d1724e9bcc04b977b18d5c573b333a2207229a83" + integrity sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^3.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + +term-size@^2.1.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" + integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== + +terser-webpack-plugin@^1.4.3: + version "1.4.5" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" + integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== + dependencies: + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^4.0.0" + source-map "^0.6.1" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" + +terser-webpack-plugin@^4.1.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz#28daef4a83bd17c1db0297070adc07fc8cfc6a9a" + integrity sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ== + dependencies: + cacache "^15.0.5" + find-cache-dir "^3.3.1" + jest-worker "^26.5.0" + p-limit "^3.0.2" + schema-utils "^3.0.0" + serialize-javascript "^5.0.1" + source-map "^0.6.1" + terser "^5.3.4" + webpack-sources "^1.4.3" + +terser@^4.1.2, terser@^4.6.3: + version "4.8.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" + integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + +terser@^5.3.4: + version "5.6.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.6.0.tgz#138cdf21c5e3100b1b3ddfddf720962f88badcd2" + integrity sha512-vyqLMoqadC1uR0vywqOZzriDYzgEkNJFK4q9GeyOBHIbiECHiWLKcWfbQWAUaPfxkjDhapSlZB9f7fkMrvkVjA== + dependencies: + commander "^2.20.0" + source-map "~0.7.2" + source-map-support "~0.5.19" + +text-table@0.2.0, text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +through2@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +timers-browserify@^2.0.4: + version "2.0.12" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" + integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== + dependencies: + setimmediate "^1.0.4" + +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + +tiny-emitter@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423" + integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q== + +tiny-invariant@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.1.0.tgz#634c5f8efdc27714b7f386c35e6760991d230875" + integrity sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw== + +tiny-warning@^1.0.0, tiny-warning@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" + integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= + +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-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-readable-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" + integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +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" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= + dependencies: + punycode "^2.1.0" + +trim-trailing-lines@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz#bd4abbec7cc880462f10b2c8b5ce1d8d1ec7c2c0" + integrity sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ== + +trim@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" + integrity sha1-WFhUf2spB1fulczMZm+1AITEYN0= + +trough@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" + integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== + +tryer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" + integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== + +ts-pnp@^1.1.6: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" + integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== + +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== + +tslib@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" + integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= + +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +type-is@~1.6.17, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +ua-parser-js@^0.7.18: + version "0.7.24" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.24.tgz#8d3ecea46ed4f1f1d63ec25f17d8568105dc027c" + integrity sha512-yo+miGzQx5gakzVK3QFfN0/L9uVhosXBBO7qmnk7c2iw1IhL212wfA3zbnI54B0obGwC/5NWub/iT9sReMx+Fw== + +unherit@^1.0.4: + version "1.1.3" + resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22" + integrity sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ== + dependencies: + inherits "^2.0.0" + xtend "^4.0.0" + +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== + +unified@9.2.0: + version "9.2.0" + resolved "https://registry.yarnpkg.com/unified/-/unified-9.2.0.tgz#67a62c627c40589edebbf60f53edfd4d822027f8" + integrity sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg== + dependencies: + bail "^1.0.0" + extend "^3.0.0" + is-buffer "^2.0.0" + is-plain-obj "^2.0.0" + trough "^1.0.0" + vfile "^4.0.0" + +unified@^8.4.2: + version "8.4.2" + resolved "https://registry.yarnpkg.com/unified/-/unified-8.4.2.tgz#13ad58b4a437faa2751a4a4c6a16f680c500fff1" + integrity sha512-JCrmN13jI4+h9UAyKEoGcDZV+i1E7BLFuG7OsaDvTXI5P0qhHX+vZO/kOhz9jn8HGENDKbwSeB0nVOg4gVStGA== + dependencies: + bail "^1.0.0" + extend "^3.0.0" + is-plain-obj "^2.0.0" + trough "^1.0.0" + vfile "^4.0.0" + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= + +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + +unique-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" + integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== + dependencies: + crypto-random-string "^2.0.0" + +unist-builder@2.0.3, unist-builder@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-2.0.3.tgz#77648711b5d86af0942f334397a33c5e91516436" + integrity sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw== + +unist-util-generated@^1.0.0: + version "1.1.6" + resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-1.1.6.tgz#5ab51f689e2992a472beb1b35f2ce7ff2f324d4b" + integrity sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg== + +unist-util-is@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.0.4.tgz#3e9e8de6af2eb0039a59f50c9b3e99698a924f50" + integrity sha512-3dF39j/u423v4BBQrk1AQ2Ve1FxY5W3JKwXxVFzBODQ6WEvccguhgp802qQLKSnxPODE6WuRZtV+ohlUg4meBA== + +unist-util-position@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-3.1.0.tgz#1c42ee6301f8d52f47d14f62bbdb796571fa2d47" + integrity sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA== + +unist-util-remove-position@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz#5d19ca79fdba712301999b2b73553ca8f3b352cc" + integrity sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA== + dependencies: + unist-util-visit "^2.0.0" + +unist-util-remove@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unist-util-remove/-/unist-util-remove-2.0.1.tgz#fa13c424ff8e964f3aa20d1098b9a690c6bfaa39" + integrity sha512-YtuetK6o16CMfG+0u4nndsWpujgsHDHHLyE0yGpJLLn5xSjKeyGyzEBOI2XbmoUHCYabmNgX52uxlWoQhcvR7Q== + dependencies: + unist-util-is "^4.0.0" + +unist-util-stringify-position@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz#cce3bfa1cdf85ba7375d1d5b17bdc4cada9bd9da" + integrity sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g== + dependencies: + "@types/unist" "^2.0.2" + +unist-util-visit-parents@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz#65a6ce698f78a6b0f56aa0e88f13801886cdaef6" + integrity sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^4.0.0" + +unist-util-visit@2.0.3, unist-util-visit@^2.0.0, unist-util-visit@^2.0.1, unist-util-visit@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.3.tgz#c3703893146df47203bb8a9795af47d7b971208c" + integrity sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^4.0.0" + unist-util-visit-parents "^3.0.0" + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +update-notifier@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.3.tgz#be86ee13e8ce48fb50043ff72057b5bd598e1ea3" + integrity sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A== + dependencies: + boxen "^4.2.0" + chalk "^3.0.0" + configstore "^5.0.1" + has-yarn "^2.1.0" + import-lazy "^2.1.0" + is-ci "^2.0.0" + is-installed-globally "^0.3.1" + is-npm "^4.0.0" + is-yarn-global "^0.3.0" + latest-version "^5.0.0" + pupa "^2.0.1" + semver-diff "^3.1.1" + xdg-basedir "^4.0.0" + +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" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +url-loader@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2" + integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== + dependencies: + loader-utils "^2.0.0" + mime-types "^2.1.27" + schema-utils "^3.0.0" + +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= + dependencies: + prepend-http "^2.0.0" + +url-parse@^1.4.3, url-parse@^1.4.7: + version "1.5.1" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.1.tgz#d5fa9890af8a5e1f274a2c98376510f6425f6e3b" + integrity sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util.promisify@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + +util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + +util@0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= + dependencies: + inherits "2.0.1" + +util@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== + dependencies: + inherits "2.0.3" + +utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= + +utility-types@^3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.10.0.tgz#ea4148f9a741015f05ed74fd615e1d20e6bed82b" + integrity sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg== + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@^3.3.2, uuid@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +value-equal@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" + integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +vendors@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" + integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== + +vfile-location@^3.0.0, vfile-location@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-3.2.0.tgz#d8e41fbcbd406063669ebf6c33d56ae8721d0f3c" + integrity sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA== + +vfile-message@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.4.tgz#5b43b88171d409eae58477d13f23dd41d52c371a" + integrity sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ== + dependencies: + "@types/unist" "^2.0.0" + unist-util-stringify-position "^2.0.0" + +vfile@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.2.1.tgz#03f1dce28fc625c625bc6514350fbdb00fa9e624" + integrity sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA== + dependencies: + "@types/unist" "^2.0.0" + is-buffer "^2.0.0" + unist-util-stringify-position "^2.0.0" + vfile-message "^2.0.0" + +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + +wait-on@^5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-5.2.1.tgz#05b66fcb4d7f5da01537f03e7cf96e8836422996" + integrity sha512-H2F986kNWMU9hKlI9l/ppO6tN8ZSJd35yBljMLa1/vjzWP++Qh6aXyt77/u7ySJFZQqBtQxnvm/xgG48AObXcw== + dependencies: + axios "^0.21.1" + joi "^17.3.0" + lodash "^4.17.20" + minimist "^1.2.5" + rxjs "^6.6.3" + +watchpack-chokidar2@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" + integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== + dependencies: + chokidar "^2.1.8" + +watchpack@^1.7.4: + version "1.7.5" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" + integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== + dependencies: + graceful-fs "^4.1.2" + neo-async "^2.5.0" + optionalDependencies: + chokidar "^3.4.1" + watchpack-chokidar2 "^2.0.1" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +web-namespaces@^1.0.0, web-namespaces@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-1.1.4.tgz#bc98a3de60dadd7faefc403d1076d529f5e030ec" + integrity sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw== + +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + +webpack-bundle-analyzer@^3.6.1: + version "3.9.0" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.9.0.tgz#f6f94db108fb574e415ad313de41a2707d33ef3c" + integrity sha512-Ob8amZfCm3rMB1ScjQVlbYYUEJyEjdEtQ92jqiFUYt5VkEeO2v5UMbv49P/gnmCZm3A6yaFQzCBvpZqN4MUsdA== + dependencies: + acorn "^7.1.1" + acorn-walk "^7.1.1" + bfj "^6.1.1" + chalk "^2.4.1" + commander "^2.18.0" + ejs "^2.6.1" + express "^4.16.3" + filesize "^3.6.1" + gzip-size "^5.0.0" + lodash "^4.17.19" + mkdirp "^0.5.1" + opener "^1.5.1" + ws "^6.0.0" + +webpack-dev-middleware@^3.7.2: + version "3.7.3" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz#0639372b143262e2b84ab95d3b91a7597061c2c5" + integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ== + dependencies: + memory-fs "^0.4.1" + mime "^2.4.4" + mkdirp "^0.5.1" + range-parser "^1.2.1" + webpack-log "^2.0.0" + +webpack-dev-server@^3.11.0: + version "3.11.2" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz#695ebced76a4929f0d5de7fd73fafe185fe33708" + integrity sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ== + dependencies: + ansi-html "0.0.7" + bonjour "^3.5.0" + chokidar "^2.1.8" + compression "^1.7.4" + connect-history-api-fallback "^1.6.0" + debug "^4.1.1" + del "^4.1.1" + express "^4.17.1" + html-entities "^1.3.1" + http-proxy-middleware "0.19.1" + import-local "^2.0.0" + internal-ip "^4.3.0" + ip "^1.1.5" + is-absolute-url "^3.0.3" + killable "^1.0.1" + loglevel "^1.6.8" + opn "^5.5.0" + p-retry "^3.0.1" + portfinder "^1.0.26" + schema-utils "^1.0.0" + selfsigned "^1.10.8" + semver "^6.3.0" + serve-index "^1.9.1" + sockjs "^0.3.21" + sockjs-client "^1.5.0" + spdy "^4.0.2" + strip-ansi "^3.0.1" + supports-color "^6.1.0" + url "^0.11.0" + webpack-dev-middleware "^3.7.2" + webpack-log "^2.0.0" + ws "^6.2.1" + yargs "^13.3.2" + +webpack-log@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" + integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== + dependencies: + ansi-colors "^3.0.0" + uuid "^3.3.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, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: + 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@^4.44.1: + version "4.46.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542" + integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/wasm-edit" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + acorn "^6.4.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.5.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.3" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.7.4" + webpack-sources "^1.4.1" + +webpackbar@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/webpackbar/-/webpackbar-4.0.0.tgz#ee7a87f16077505b5720551af413c8ecd5b1f780" + integrity sha512-k1qRoSL/3BVuINzngj09nIwreD8wxV4grcuhHTD8VJgUbGcy8lQSPqv+bM00B7F+PffwIsQ8ISd4mIwRbr23eQ== + dependencies: + ansi-escapes "^4.2.1" + chalk "^2.4.2" + consola "^2.10.0" + figures "^3.0.0" + pretty-time "^1.1.0" + std-env "^2.2.1" + text-table "^0.2.0" + wrap-ansi "^6.0.0" + +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +whatwg-url@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@^1.2.9, which@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +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" + +widest-line@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== + dependencies: + string-width "^4.0.0" + +worker-farm@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" + integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== + dependencies: + errno "~0.1.7" + +worker-rpc@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5" + integrity sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg== + dependencies: + microevent.ts "~0.1.1" + +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrap-ansi@^6.0.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + +ws@^6.0.0, ws@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" + integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== + dependencies: + async-limiter "~1.0.0" + +xdg-basedir@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" + integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== + +xml-js@^1.6.11: + version "1.6.11" + resolved "https://registry.yarnpkg.com/xml-js/-/xml-js-1.6.11.tgz#927d2f6947f7f1c19a316dd8eea3614e8b18f8e9" + integrity sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g== + dependencies: + sax "^1.2.4" + +xmlbuilder@^13.0.0: + version "13.0.2" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-13.0.2.tgz#02ae33614b6a047d1c32b5389c1fdacb2bce47a7" + integrity sha512-Eux0i2QdDYKbdbA6AM6xE4m6ZTZr4G4xF9kahI2ukSEMCzwce2eX9WlTI5J3s+NU7hpasFsr8hWIONae7LluAQ== + +xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" + integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +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== + +yaml@^1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" + integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== + +yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@^13.3.2: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" + +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== + +zwitch@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920" + integrity sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==