From 677d6e6a3cfd311cd018fed280a0c75c9b4577b4 Mon Sep 17 00:00:00 2001 From: dark0ghost Date: Sun, 23 Jan 2022 16:14:03 +0300 Subject: [PATCH 01/32] 1. migrate to gradle from maven 2. migrate from socket 0.8 to 2.0: https://socketio.github.io/socket.io-client-java/migrating_from_1_x.html --- .gitignore | 4 + build.gradle | 40 ++++ gradle.properties | 1 + gradle/wrapper/gradle-wrapper.properties | 5 + gradlew | 185 ++++++++++++++++++ gradlew.bat | 89 +++++++++ pom.xml | 92 --------- settings.gradle | 2 + .../DonationAlerts/DonationAlerts.java | 79 +++----- .../igorlink/command/DonateSubCommand.java | 27 ++- .../command/DonationExecutorCommand.java | 69 ++++--- .../igorlink/command/FilterSubCommand.java | 5 +- .../igorlink/command/ReloadSubCommand.java | 4 +- src/main/resources/config.yml | 96 --------- src/main/resources/plugin.yml | 15 -- 15 files changed, 406 insertions(+), 307 deletions(-) create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat delete mode 100644 pom.xml create mode 100644 settings.gradle delete mode 100644 src/main/resources/config.yml delete mode 100644 src/main/resources/plugin.yml diff --git a/.gitignore b/.gitignore index 4788b4b..d137771 100644 --- a/.gitignore +++ b/.gitignore @@ -111,3 +111,7 @@ buildNumber.properties # Common working directory run/ + +#gradle +.gradle + diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..d9dd3dd --- /dev/null +++ b/build.gradle @@ -0,0 +1,40 @@ +plugins { + id 'org.jetbrains.kotlin.jvm' version '1.6.10' + id 'java' +} + +group 'org.example' +version '1.0-SNAPSHOT' + +repositories { + mavenCentral() + maven { + url = 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/' + + content { + includeGroup 'org.bukkit' + includeGroup 'org.spigotmc' + } + } + maven { + url = 'https://papermc.io/repo/repository/maven-public/' + } +} + +dependencies { + implementation "org.jetbrains.kotlin:kotlin-stdlib" + + implementation "io.papermc.paper:paper-api:1.18.1-R0.1-SNAPSHOT" + implementation 'io.socket:engine.io-client:2.0.0' + implementation 'io.socket:socket.io-client:2.0.1' + implementation "org.json:json:20190722" + + + + testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.2' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.2' +} + +test { + useJUnitPlatform() +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..29e08e8 --- /dev/null +++ b/gradle.properties @@ -0,0 +1 @@ +kotlin.code.style=official \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..ffed3a2 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100755 index 0000000..744e882 --- /dev/null +++ b/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 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. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +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 +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MSYS* | MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +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 + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..ac1b06f --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem 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, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/pom.xml b/pom.xml deleted file mode 100644 index 7e5181b..0000000 --- a/pom.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - 4.0.0 - - IgorLink - DonationExecutor - 1.0-SNAPSHOT - jar - - DonationExecutor - - Executes donations - - 1.8 - UTF-8 - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.8.1 - - ${java.version} - ${java.version} - - - - org.apache.maven.plugins - maven-shade-plugin - 3.2.4 - - - package - - shade - - - false - - - - - - - - src/main/resources - true - - - - - - - mvnrepo-repo - https://papermc.io/repo/repository/maven-public/ - - - sonatype - https://oss.sonatype.org/content/groups/public/ - - - - - - io.papermc.paper - paper-api - 1.18.1-R0.1-SNAPSHOT - provided - - - io.socket - engine.io-client - 0.8.3 - - - io.socket - socket.io-client - 0.8.3 - - - org.json - json - 20190722 - - - - - diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..8921d78 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,2 @@ +rootProject.name = 'DonationExecutor' + diff --git a/src/main/java/igorlink/DonationAlerts/DonationAlerts.java b/src/main/java/igorlink/DonationAlerts/DonationAlerts.java index c4ca073..cc520fe 100644 --- a/src/main/java/igorlink/DonationAlerts/DonationAlerts.java +++ b/src/main/java/igorlink/DonationAlerts/DonationAlerts.java @@ -2,87 +2,67 @@ import igorlink.donationexecutor.DonationExecutor; import igorlink.donationexecutor.executionsstaff.Donation; +import io.socket.emitter.Emitter; import org.bukkit.Bukkit; import org.bukkit.scheduler.BukkitRunnable; import io.socket.emitter.Emitter.Listener; import io.socket.client.IO; import io.socket.client.Socket; +import org.checkerframework.framework.qual.Unused; import org.json.JSONException; import org.json.JSONObject; import java.net.URI; import java.net.URISyntaxException; +import java.util.Objects; + import static igorlink.service.Utils.logToConsole; public class DonationAlerts { - private Listener connectListener; - private Listener disconectListener; - private Listener donationListener; - private Listener errorListener; - - private URI url; - private Socket socket; + private final Socket socket; public DonationAlerts(String server) throws URISyntaxException { - url = new URI(server); + URI url = new URI(server); socket = IO.socket(url); - connectListener = new Listener() { - @Override - public void call(Object... arg0) { - logToConsole("Произведено успешное подключение!"); - } - }; + Listener connectListener = arg0 -> logToConsole("Произведено успешное подключение!"); - disconectListener = new Listener() { - @Override - public void call(Object... arg0) { - logToConsole("Соединение разорвано!"); - } - }; + Listener disconectListener = arg0 -> logToConsole("Соединение разорвано!"); - donationListener = new Listener() { - @Override - public void call(Object... arg0) { + Listener donationListener = arg0 -> { - JSONObject json = new JSONObject((String) arg0[0]); - json.toString(); - new BukkitRunnable() { - @Override - public void run() { + JSONObject json = new JSONObject((String) arg0[0]); + json.toString(); + new BukkitRunnable() { + @Override + public void run() { - if ( (json.isNull("username")) || (json.isNull("amount_formatted"))) { - return; - } + if ((json.isNull("username")) || (json.isNull("amount_formatted"))) { + return; + } - if ((json.getString("amount_formatted")).length() <= 1) { - return; - } + if ((json.getString("amount_formatted")).length() <= 1) { + return; + } - DonationExecutor.getInstance().listOfStreamerPlayers - .addToDonationsQueue(new Donation(Bukkit.getConsoleSender(), - json.getString("username"), - json.getString("amount_formatted"), - json.getString("message"))); + DonationExecutor.getInstance().listOfStreamerPlayers + .addToDonationsQueue(new Donation(Bukkit.getConsoleSender(), + json.getString("username"), + json.getString("amount_formatted"), + json.getString("message"))); - } - }.runTask(Bukkit.getPluginManager().getPlugin("DonationExecutor")); + } + }.runTask(Objects.requireNonNull(Bukkit.getPluginManager().getPlugin("DonationExecutor"))); - } }; - errorListener = new Listener() { - @Override - public void call(Object... arg0) { - logToConsole("Произошла ошибка подключения к Donation Alerts!"); - } - }; + Listener errorListener = arg0 -> logToConsole("Произошла ошибка подключения к Donation Alerts!"); socket.on(Socket.EVENT_CONNECT, connectListener) .on(Socket.EVENT_DISCONNECT, disconectListener) - .on(Socket.EVENT_ERROR, errorListener) + .on(Socket.EVENT_CONNECT_ERROR, errorListener) .on("donation", donationListener); } @@ -97,6 +77,7 @@ public void Disconnect() throws JSONException { socket.disconnect(); } + @Deprecated public boolean getConnected() { return socket.connected(); } diff --git a/src/main/java/igorlink/command/DonateSubCommand.java b/src/main/java/igorlink/command/DonateSubCommand.java index 3e4c1b3..cd534ff 100644 --- a/src/main/java/igorlink/command/DonateSubCommand.java +++ b/src/main/java/igorlink/command/DonateSubCommand.java @@ -9,9 +9,9 @@ public static void onDonateCommand(CommandSender sender, String[] args) { int i; //Getting donation's amount - String donationAmount = new String(); - String donationUsername = new String(); - String donationMessage = new String(); + String donationAmount; + StringBuilder donationUsername = new StringBuilder(); + StringBuilder donationMessage = new StringBuilder(); //Getting donation's amount donationAmount = args[0]; @@ -20,24 +20,21 @@ public static void onDonateCommand(CommandSender sender, String[] args) { for (i = 1; i <= args.length - 1; i++) { if (args[i].equals("##")) { break; - } - else { - if (i==1) { - donationUsername = donationUsername + args[i]; - } - else { - donationUsername = ' ' + donationUsername + args[i]; + } else { + if (i == 1) { + donationUsername.append(args[i]); + } else { + donationUsername = new StringBuilder(' ' + donationUsername.toString() + args[i]); } } } //Все, что после символов ## - это сообщение - for (i = i+1; i <= args.length - 1; i++) - { - donationMessage = donationMessage + args[i] + ' '; + for (i = i + 1; i <= args.length - 1; i++) { + donationMessage.append(args[i]).append(' '); } - //Отправляем донат на исполнение - DonationExecutor.getInstance().listOfStreamerPlayers.addToDonationsQueue(new Donation(sender, donationUsername, donationAmount+".00", donationMessage)); + //Отправляем Донат на исполнение + DonationExecutor.getInstance().listOfStreamerPlayers.addToDonationsQueue(new Donation(sender, donationUsername.toString(), donationAmount + ".00", donationMessage.toString())); } } diff --git a/src/main/java/igorlink/command/DonationExecutorCommand.java b/src/main/java/igorlink/command/DonationExecutorCommand.java index fae90d7..04380dc 100644 --- a/src/main/java/igorlink/command/DonationExecutorCommand.java +++ b/src/main/java/igorlink/command/DonationExecutorCommand.java @@ -17,52 +17,49 @@ public Boolean execute(CommandSender sender, String label, String[] args) { if (args.length == 0) { return false; } - try { - //Если команда - это reload, где не должно быть доп аргументов, то вызываем функцию релоуда конфига - if (args[0].equals("reload")) { - if (args.length == 1) { - ReloadSubCommand.onReloadCommand(sender); - return true; - } - } else if (args[0].equals("donate")) { - //Инициализируем список аргментов для новой сабфункции - //Если команда - donate, где нужен минимум 1 доп аргумент, создаем новый массив аргументов со смещением 1, и вызываем функцию обработки доната - if (args.length >= 2) { - //Инициализируем список новых аргументов для субкоманды - newArgs = new String[args.length - 1]; - //Создаем новый список аргументов, копируя старый со смещением 1 - System.arraycopy(args, 1, newArgs, 0, args.length - 1); - //Вызываем обработку доната - DonateSubCommand.onDonateCommand(sender, newArgs); - //Возвращаем true, к все прошло успешно - return true; - } - } else if (args[0].equals("filter")) { - if ((args.length == 2) && (args[1].equals("on")) || (args[1].equals("off"))) { - //Инициализируем список новых аргументов для субкоманды - newArgs = new String[args.length - 1]; - //Создаем новый список аргументов, копируя старый со смещением 1 - System.arraycopy(args, 1, newArgs, 0, args.length - 1); - //Вызываем обработку доната - FilterSubCommand.onFilterCommand(sender, newArgs); - //Возвращаем true, к все прошло успешно - return true; - } + switch (args[0]) { + case "reload": + if (args.length == 1) { + ReloadSubCommand.onReloadCommand(sender); + return true; + } + break; + case "donate": + //Инициализируем список аргментов для новой сабфункции + //Если команда - donate, где нужен минимум 1 доп аргумент, создаем новый массив аргументов со смещением 1, и вызываем функцию обработки доната + if (args.length >= 2) { + //Инициализируем список новых аргументов для субкоманды + newArgs = new String[args.length - 1]; + //Создаем новый список аргументов, копируя старый со смещением 1 + System.arraycopy(args, 1, newArgs, 0, args.length - 1); + //Вызываем обработку доната + DonateSubCommand.onDonateCommand(sender, newArgs); + //Возвращаем true, к все прошло успешно + return true; + } + break; + case "filter": + if ((args.length == 2) && (args[1].equals("on")) || (args[1].equals("off"))) { + //Инициализируем список новых аргументов для субкоманды + newArgs = new String[args.length - 1]; + //Создаем новый список аргументов, копируя старый со смещением 1 + System.arraycopy(args, 1, newArgs, 0, args.length - 1); + //Вызываем обработку доната + FilterSubCommand.onFilterCommand(sender, newArgs); + //Возвращаем true, к все прошло успешно + return true; + } + break; } - } catch (Exception e) { - //Если получили exception, сообщаем о нем и выдаем сообщение об ошибке в консоль e.printStackTrace(); logToConsole("Произошла неизвестная ошибка при выполнении команды!"); return false; - } - //Если ничего не выполнилось - в команде была ошибка return false; } - } diff --git a/src/main/java/igorlink/command/FilterSubCommand.java b/src/main/java/igorlink/command/FilterSubCommand.java index b6c8402..71df7d1 100644 --- a/src/main/java/igorlink/command/FilterSubCommand.java +++ b/src/main/java/igorlink/command/FilterSubCommand.java @@ -8,7 +8,7 @@ public class FilterSubCommand { public static void onFilterCommand(CommandSender sender, String[] args) { - if (args[0].toLowerCase().equals("on")) { + if (args[0].equalsIgnoreCase("on")) { MainConfig.turnFilterOn(); Utils.logToConsole("Фильтр никнеймов донатеров §bВКЛЮЧЕН"); if (sender instanceof Player) { @@ -18,9 +18,8 @@ public static void onFilterCommand(CommandSender sender, String[] args) { MainConfig.turnFilterOff(); Utils.logToConsole("Фильтр никнеймов донатеров §bВЫКЛЮЧЕН"); if (sender instanceof Player) { - Utils.sendSysMsgToPlayer((Player) sender,"Фильтр никнеймов донатеров §bВЫКЛЮЧЕН"); + Utils.sendSysMsgToPlayer((Player) sender, "Фильтр никнеймов донатеров §bВЫКЛЮЧЕН"); } } - } } diff --git a/src/main/java/igorlink/command/ReloadSubCommand.java b/src/main/java/igorlink/command/ReloadSubCommand.java index 5c59c0c..0a6beb2 100644 --- a/src/main/java/igorlink/command/ReloadSubCommand.java +++ b/src/main/java/igorlink/command/ReloadSubCommand.java @@ -5,12 +5,14 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.Objects; + public class ReloadSubCommand { public static void onReloadCommand(CommandSender sender){ MainConfig.loadMainConfig(true); Utils.logToConsole("Настройки успешно обновлены!"); if (sender instanceof Player) { - Utils.sendSysMsgToPlayer(((Player) sender).getPlayer(), "Настройки успешно обновлены!"); + Utils.sendSysMsgToPlayer(Objects.requireNonNull(((Player) sender).getPlayer()), "Настройки успешно обновлены!"); } } } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml deleted file mode 100644 index f24a9d8..0000000 --- a/src/main/resources/config.yml +++ /dev/null @@ -1,96 +0,0 @@ -# Секретный токен Donation Alerts. -# Находится на Donation Alerts на странице "Настройки" -> "Основные настройки". -DonationAlertsToken: - -# Никнеймы стримеров в игре ЧЕРЕЗ ЗАПЯТУЮ БЕЗ ПРОБЕЛОВ! -# Не забудьте про цветовые коды, если используете их -StreamersNamesList: Evropejets,mdenz3 - -# Точные суммы донатов для событий -DonationAmounts: - # Имя первого стримера (ДОЛЖЕН СОВПАДАТЬ С ПЕРВЫМ ЗНАЧЕНИЕМ, УКАЗАННЫМ В StreamersNamesList) - Evropejets: - # Насрать стримеру в инвентарь подписанными стаками говна - ShitToInventory: 62 - # Выбить предмет из рук - DropActiveItem: 65 - # Дать леща - толчок вперед, который отнимет 1 сердечко - Lesch: 67 - # Дать хлеб в количестве N кусков - GiveBread: 82 - # Выдать определенное количество алмазов (настраивается дальше) - GiveDiamonds: 132 - # Заспавнятся несколько сотрудников НКВД, которые заходят увести вас в ГУЛАГ - CallNKVD: 142 - # Дать очень смачный пинок под зад, который отнимет 1.5 сердечка - PowerKick: 152 - # В вашем инвентаре будет случайным образом заменено N слотов (по умолчанию -5) - # на некие предметы (по умолчанию - камни) - RandomChange: 197 - # Заспавнить крипера за спиной - SpawnCreeper: 202 - # Уничтожить вещи, выпавшие после последней смерти - ClearLastDeathDrop: 214 - # Все прирученные игроком кошки снова станут дикими, а прирученные волки, - # помимо этого, еще и нападут на игрока, который был их хозяином - TamedBecomesEnemies: 252 - # Заспавнить исполинского Иосифа Сталина, испепеляющий все вокруг - CallStalin: 352 - # Оставить игроку лишь полсердечка - HalfHeart: 602 - # Через N секунд (по умолчанию - 3) произойдет взрыв с радиусом M - # (по умолчанию - 20) вокруг игрока - BigBoom: 2002 - # Выдать целый стак алмазов - GiveStackOfDiamonds: 2012 - # Имя второго стримера (ДОЛЖЕН СОВПАДАТЬ СО ВТОРЫМ ЗНАЧЕНИЕМ, УКАЗАННЫМ В StreamersNamesList) - mdenz3: - # Насрать стримеру в инвентарь подписанными стаками говна - ShitToInventory: 61 - # Выбить предмет из рук - DropActiveItem: 64 - # Дать леща - толчок вперед, который отнимет 1 сердечко - Lesch: 66 - # Дать хлеб в количестве N кусков - GiveBread: 81 - # Выдать определенное количество алмазов (настраивается дальше) - GiveDiamonds: 131 - # Заспавнятся несколько сотрудников НКВД, которые заходят увести вас в ГУЛАГ - CallNKVD: 141 - # Дать очень смачный пинок под зад, который отнимет 1.5 сердечка - PowerKick: 151 - # В вашем инвентаре будет случайным образом заменено N слотов (по умолчанию -5) - # на некие предметы (по умолчанию - камни) - RandomChange: 196 - # Заспавнить крипера за спиной - SpawnCreeper: 201 - # Уничтожить вещи, выпавшие после последней смерти - ClearLastDeathDrop: 213 - # Все прирученные игроком кошки снова станут дикими, а прирученные волки, - # помимо этого, еще и нападут на игрока, который был их хозяином - TamedBecomesEnemies: 251 - # Заспавнить исполинского Иосифа Сталина, испепеляющий все вокруг - CallStalin: 351 - # Оставить игроку лишь полсердечка - HalfHeart: 601 - # Через N секунд (по умолчанию - 3) произойдет взрыв с радиусом M - # (по умолчанию - 20) вокруг игрока - BigBoom: 2001 - # Выдать целый стак алмазов - GiveStackOfDiamonds: 2011 - -# Сколько блоков говна игроки будут получать в инвентарь от ShitToInventory -DirtAmount: 10 -# Сколько алмазов игроки будут получать в инвентарь от GiveDiamonds -DiamondsAmount: 4 -# Сколько хлеба игроки будут получать в инвентарь от GiveBread -BreadAmount: 4 -# Радиус взрыва от BigBoom -BigBoomRadius: 20 - -TwitchFilter: true -BlacklistedSubstrings: негр,пидо,пида,niga,нигр,ниге,додик,петух,петуч,куколд,симп,kukold,cuckold,fag,хуе,хуй,даун,кады,кадь,kadb,4e4e,4e4n,cheche,chechn,4echn,che4n,4eche,4eche -WhitelistedSubstrings: книг,нигерия - - - diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml deleted file mode 100644 index d0af3eb..0000000 --- a/src/main/resources/plugin.yml +++ /dev/null @@ -1,15 +0,0 @@ -name: DonationExecutor -version: 0.2 Beta -main: igorlink.donationexecutor.DonationExecutor -api-version: 1.18 -authors: [Igor Link] -description: Executes donations -commands: - donationexecutor: { - aliases: [d], - description: "Позволяет имитировать донаты для тестов или для воспроизведения события вручную", - usage: "§c[DonationExecutor] §fДоступные команды: \n - §c/d §7donate §b<СУММА> <ИМЯ> §7## §b<СООБЩЕНИЕ>§f - сымитировать донат\n - §c/d §7reload§f - перезагрузить настройки из конфига - " - } From 46782f8fd05bd2c97c0640b80e66a59a23bec7c6 Mon Sep 17 00:00:00 2001 From: dark0ghost Date: Sun, 23 Jan 2022 16:15:51 +0300 Subject: [PATCH 02/32] return file: config.xml & plugin.xml --- src/main/resources/config.yml | 96 +++++++++++++++++++++++++++++++++++ src/main/resources/plugin.yml | 15 ++++++ 2 files changed, 111 insertions(+) create mode 100644 src/main/resources/config.yml create mode 100644 src/main/resources/plugin.yml diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml new file mode 100644 index 0000000..f24a9d8 --- /dev/null +++ b/src/main/resources/config.yml @@ -0,0 +1,96 @@ +# Секретный токен Donation Alerts. +# Находится на Donation Alerts на странице "Настройки" -> "Основные настройки". +DonationAlertsToken: + +# Никнеймы стримеров в игре ЧЕРЕЗ ЗАПЯТУЮ БЕЗ ПРОБЕЛОВ! +# Не забудьте про цветовые коды, если используете их +StreamersNamesList: Evropejets,mdenz3 + +# Точные суммы донатов для событий +DonationAmounts: + # Имя первого стримера (ДОЛЖЕН СОВПАДАТЬ С ПЕРВЫМ ЗНАЧЕНИЕМ, УКАЗАННЫМ В StreamersNamesList) + Evropejets: + # Насрать стримеру в инвентарь подписанными стаками говна + ShitToInventory: 62 + # Выбить предмет из рук + DropActiveItem: 65 + # Дать леща - толчок вперед, который отнимет 1 сердечко + Lesch: 67 + # Дать хлеб в количестве N кусков + GiveBread: 82 + # Выдать определенное количество алмазов (настраивается дальше) + GiveDiamonds: 132 + # Заспавнятся несколько сотрудников НКВД, которые заходят увести вас в ГУЛАГ + CallNKVD: 142 + # Дать очень смачный пинок под зад, который отнимет 1.5 сердечка + PowerKick: 152 + # В вашем инвентаре будет случайным образом заменено N слотов (по умолчанию -5) + # на некие предметы (по умолчанию - камни) + RandomChange: 197 + # Заспавнить крипера за спиной + SpawnCreeper: 202 + # Уничтожить вещи, выпавшие после последней смерти + ClearLastDeathDrop: 214 + # Все прирученные игроком кошки снова станут дикими, а прирученные волки, + # помимо этого, еще и нападут на игрока, который был их хозяином + TamedBecomesEnemies: 252 + # Заспавнить исполинского Иосифа Сталина, испепеляющий все вокруг + CallStalin: 352 + # Оставить игроку лишь полсердечка + HalfHeart: 602 + # Через N секунд (по умолчанию - 3) произойдет взрыв с радиусом M + # (по умолчанию - 20) вокруг игрока + BigBoom: 2002 + # Выдать целый стак алмазов + GiveStackOfDiamonds: 2012 + # Имя второго стримера (ДОЛЖЕН СОВПАДАТЬ СО ВТОРЫМ ЗНАЧЕНИЕМ, УКАЗАННЫМ В StreamersNamesList) + mdenz3: + # Насрать стримеру в инвентарь подписанными стаками говна + ShitToInventory: 61 + # Выбить предмет из рук + DropActiveItem: 64 + # Дать леща - толчок вперед, который отнимет 1 сердечко + Lesch: 66 + # Дать хлеб в количестве N кусков + GiveBread: 81 + # Выдать определенное количество алмазов (настраивается дальше) + GiveDiamonds: 131 + # Заспавнятся несколько сотрудников НКВД, которые заходят увести вас в ГУЛАГ + CallNKVD: 141 + # Дать очень смачный пинок под зад, который отнимет 1.5 сердечка + PowerKick: 151 + # В вашем инвентаре будет случайным образом заменено N слотов (по умолчанию -5) + # на некие предметы (по умолчанию - камни) + RandomChange: 196 + # Заспавнить крипера за спиной + SpawnCreeper: 201 + # Уничтожить вещи, выпавшие после последней смерти + ClearLastDeathDrop: 213 + # Все прирученные игроком кошки снова станут дикими, а прирученные волки, + # помимо этого, еще и нападут на игрока, который был их хозяином + TamedBecomesEnemies: 251 + # Заспавнить исполинского Иосифа Сталина, испепеляющий все вокруг + CallStalin: 351 + # Оставить игроку лишь полсердечка + HalfHeart: 601 + # Через N секунд (по умолчанию - 3) произойдет взрыв с радиусом M + # (по умолчанию - 20) вокруг игрока + BigBoom: 2001 + # Выдать целый стак алмазов + GiveStackOfDiamonds: 2011 + +# Сколько блоков говна игроки будут получать в инвентарь от ShitToInventory +DirtAmount: 10 +# Сколько алмазов игроки будут получать в инвентарь от GiveDiamonds +DiamondsAmount: 4 +# Сколько хлеба игроки будут получать в инвентарь от GiveBread +BreadAmount: 4 +# Радиус взрыва от BigBoom +BigBoomRadius: 20 + +TwitchFilter: true +BlacklistedSubstrings: негр,пидо,пида,niga,нигр,ниге,додик,петух,петуч,куколд,симп,kukold,cuckold,fag,хуе,хуй,даун,кады,кадь,kadb,4e4e,4e4n,cheche,chechn,4echn,che4n,4eche,4eche +WhitelistedSubstrings: книг,нигерия + + + diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml new file mode 100644 index 0000000..d0af3eb --- /dev/null +++ b/src/main/resources/plugin.yml @@ -0,0 +1,15 @@ +name: DonationExecutor +version: 0.2 Beta +main: igorlink.donationexecutor.DonationExecutor +api-version: 1.18 +authors: [Igor Link] +description: Executes donations +commands: + donationexecutor: { + aliases: [d], + description: "Позволяет имитировать донаты для тестов или для воспроизведения события вручную", + usage: "§c[DonationExecutor] §fДоступные команды: \n + §c/d §7donate §b<СУММА> <ИМЯ> §7## §b<СООБЩЕНИЕ>§f - сымитировать донат\n + §c/d §7reload§f - перезагрузить настройки из конфига + " + } From c8a1ca1501c350b6afbe9e4504a411d8e327affd Mon Sep 17 00:00:00 2001 From: dark0ghost Date: Sun, 23 Jan 2022 16:16:38 +0300 Subject: [PATCH 03/32] optimize import --- .../java/igorlink/DonationAlerts/DonationAlerts.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/main/java/igorlink/DonationAlerts/DonationAlerts.java b/src/main/java/igorlink/DonationAlerts/DonationAlerts.java index cc520fe..c3135dc 100644 --- a/src/main/java/igorlink/DonationAlerts/DonationAlerts.java +++ b/src/main/java/igorlink/DonationAlerts/DonationAlerts.java @@ -2,15 +2,14 @@ import igorlink.donationexecutor.DonationExecutor; import igorlink.donationexecutor.executionsstaff.Donation; -import io.socket.emitter.Emitter; -import org.bukkit.Bukkit; -import org.bukkit.scheduler.BukkitRunnable; -import io.socket.emitter.Emitter.Listener; import io.socket.client.IO; import io.socket.client.Socket; -import org.checkerframework.framework.qual.Unused; +import io.socket.emitter.Emitter.Listener; +import org.bukkit.Bukkit; +import org.bukkit.scheduler.BukkitRunnable; import org.json.JSONException; import org.json.JSONObject; + import java.net.URI; import java.net.URISyntaxException; import java.util.Objects; @@ -34,7 +33,6 @@ public DonationAlerts(String server) throws URISyntaxException { Listener donationListener = arg0 -> { JSONObject json = new JSONObject((String) arg0[0]); - json.toString(); new BukkitRunnable() { @Override public void run() { From 2fece43705808f6696187a339d935ea2871ca030 Mon Sep 17 00:00:00 2001 From: dark0ghost Date: Sun, 23 Jan 2022 16:21:24 +0300 Subject: [PATCH 04/32] rewrite code in MainConfig --- .../executionsstaff/Donation.java | 11 ++++---- .../ListOfStreamerPlayers.java | 6 ++--- .../java/igorlink/service/MainConfig.java | 25 +++++++++---------- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/main/java/igorlink/donationexecutor/executionsstaff/Donation.java b/src/main/java/igorlink/donationexecutor/executionsstaff/Donation.java index 6a33bda..3843709 100644 --- a/src/main/java/igorlink/donationexecutor/executionsstaff/Donation.java +++ b/src/main/java/igorlink/donationexecutor/executionsstaff/Donation.java @@ -1,5 +1,7 @@ package igorlink.donationexecutor.executionsstaff; + +import kotlin.Suppress; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; @@ -10,6 +12,7 @@ public class Donation { private String message; private String executionName = null; + @Suppress(names = "Unused constructor") public Donation(String _username, String _amount, String _message) { new Donation(Bukkit.getConsoleSender(), _username, _amount, _message); } @@ -41,13 +44,11 @@ public String getMessage() { return message; } - public String getexecutionName() { + public String getExecutionName() { return executionName; } - public void setexecutionName(String _executionName) { + public void setExecutionName(String _executionName) { executionName = _executionName; } - - -} +} \ No newline at end of file diff --git a/src/main/java/igorlink/donationexecutor/executionsstaff/ListOfStreamerPlayers.java b/src/main/java/igorlink/donationexecutor/executionsstaff/ListOfStreamerPlayers.java index f6d44aa..08f2673 100644 --- a/src/main/java/igorlink/donationexecutor/executionsstaff/ListOfStreamerPlayers.java +++ b/src/main/java/igorlink/donationexecutor/executionsstaff/ListOfStreamerPlayers.java @@ -29,8 +29,8 @@ public void run() { if (donation==null) { continue; } - Utils.logToConsole("Отправлен на выполнение донат §b" + donation.getexecutionName() + "§f для стримера §b" + sp.getName() + "§f от донатера §b" + donation.getName()); - Executor.DoExecute(donation.getSender(), sp.getName(), donation.getName(), donation.getAmount(), donation.getMessage(), donation.getexecutionName()); + Utils.logToConsole("Отправлен на выполнение донат §b" + donation.getExecutionName() + "§f для стримера §b" + sp.getName() + "§f от донатера §b" + donation.getName()); + Executor.DoExecute(donation.getSender(), sp.getName(), donation.getName(), donation.getAmount(), donation.getMessage(), donation.getExecutionName()); } } @@ -68,7 +68,7 @@ public void addToDonationsQueue(Donation donation) { for (StreamerPlayer sp : listOfStreamerPlayers) { execution = sp.checkExecution(Utils.cutOffKopeykis(donation.getAmount())); if (!(execution == null)) { - donation.setexecutionName(execution); + donation.setExecutionName(execution); sp.putDonationToQueue(donation); Utils.logToConsole("Донат от §b" + donation.getName() + "§f в размере §b" + donation.getAmount() + " руб.§f был обработан и отправлен в очередь на выполнение."); return; diff --git a/src/main/java/igorlink/service/MainConfig.java b/src/main/java/igorlink/service/MainConfig.java index cc81967..ef69735 100644 --- a/src/main/java/igorlink/service/MainConfig.java +++ b/src/main/java/igorlink/service/MainConfig.java @@ -3,14 +3,13 @@ import igorlink.donationexecutor.DonationExecutor; import org.bukkit.configuration.file.FileConfiguration; import org.jetbrains.annotations.NotNull; -import java.util.ArrayList; + +import java.util.*; + import static igorlink.service.Utils.*; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; public class MainConfig { - private static HashMap> donationAmountsHashMap = new HashMap>(); + private static final HashMap> donationAmountsHashMap = new HashMap<>(); private static FileConfiguration config = DonationExecutor.getInstance().getConfig(); public static int dirtAmount = 0; public static int diamondsAmount = 0; @@ -60,18 +59,18 @@ public static void loadMainConfig(Boolean isReload) { logToConsole("При чтении файла конфигурации было добавлено §b" + DonationExecutor.getInstance().listOfStreamerPlayers.getNumberOfStreamers() + "§f стримеров."); - dirtAmount = Integer.valueOf(config.getString("DirtAmount")); - diamondsAmount = Integer.valueOf(config.getString("DiamondsAmount")); - breadAmount = Integer.valueOf(config.getString("BreadAmount")); - bigBoomRadius = Integer.valueOf(config.getString("BigBoomRadius")); + dirtAmount = Integer.parseInt(Objects.requireNonNull(config.getString("DirtAmount"))); + diamondsAmount = Integer.parseInt(Objects.requireNonNull(config.getString("DiamondsAmount"))); + breadAmount = Integer.parseInt(Objects.requireNonNull(config.getString("BreadAmount"))); + bigBoomRadius = Integer.parseInt(Objects.requireNonNull(config.getString("BigBoomRadius"))); token = config.getString("DonationAlertsToken"); - listOfBlackListedSubstrings = Arrays.asList(config.getString("BlacklistedSubstrings").split(",")); - listOfWhiteListedSubstrings = Arrays.asList(config.getString("WhitelistedSubstrings").split(",")); + listOfBlackListedSubstrings = Arrays.asList(Objects.requireNonNull(config.getString("BlacklistedSubstrings")).split(",")); + listOfWhiteListedSubstrings = Arrays.asList(Objects.requireNonNull(config.getString("WhitelistedSubstrings")).split(",")); - if (config.getString("TwitchFilter") == "true") { + if (Objects.equals(config.getString("TwitchFilter"), "true")) { twitchFilter = true; - } else if (config.getString("TwitchFilter") == "false") { + } else if (Objects.equals(config.getString("TwitchFilter"), "false")) { twitchFilter = false; } else { From 45fc902fbe6194ac2e3e07bf42b5a280c403f527 Mon Sep 17 00:00:00 2001 From: dark0ghost Date: Sun, 23 Jan 2022 16:28:41 +0300 Subject: [PATCH 05/32] fix stringWithPlayersNames: added NotNull or exception --- src/main/java/igorlink/service/MainConfig.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/igorlink/service/MainConfig.java b/src/main/java/igorlink/service/MainConfig.java index ef69735..a1ba838 100644 --- a/src/main/java/igorlink/service/MainConfig.java +++ b/src/main/java/igorlink/service/MainConfig.java @@ -51,8 +51,8 @@ public static void loadMainConfig(Boolean isReload) { config = DonationExecutor.getInstance().getConfig(); - String stringWithPlayersNames = config.getString("StreamersNamesList"); - List streamerPlayersNamesList = new ArrayList(Arrays.asList(stringWithPlayersNames.split(","))); + @NotNull String stringWithPlayersNames = Objects.requireNonNull(config.getString("StreamersNamesList")); + List streamerPlayersNamesList = new ArrayList<>(Arrays.asList(stringWithPlayersNames.split(","))); for (String playerName : streamerPlayersNamesList) { DonationExecutor.getInstance().listOfStreamerPlayers.addStreamerPlayer(playerName); } From d06faea46f0ae1247c1a174ca50be923305bdae6 Mon Sep 17 00:00:00 2001 From: dark0ghost Date: Sun, 23 Jan 2022 16:44:45 +0300 Subject: [PATCH 06/32] added annotation for experimental api --- .../igorlink/donationexecutor/Executor.java | 2 +- .../java/igorlink/service/MainConfig.java | 24 ++++------ src/main/java/igorlink/service/Utils.java | 48 +++++++++++-------- .../dark0ghost/annotations/ExperimentalApi.kt | 6 +++ 4 files changed, 43 insertions(+), 37 deletions(-) create mode 100644 src/main/kotlin/dark0ghost/annotations/ExperimentalApi.kt diff --git a/src/main/java/igorlink/donationexecutor/Executor.java b/src/main/java/igorlink/donationexecutor/Executor.java index 4ff2e9c..225ff8e 100644 --- a/src/main/java/igorlink/donationexecutor/Executor.java +++ b/src/main/java/igorlink/donationexecutor/Executor.java @@ -36,7 +36,7 @@ public static void DoExecute(CommandSender sender, String streamerName, String d _donationUsername = donationUsername; } - Boolean canContinue = true; + boolean canContinue = true; //Определяем игрока (если он оффлайн - не выполняем донат и пишем об этом в консоль), а также определяем мир, местоположение и направление игрока Player streamerPlayer = getPlayer(streamerName); if (streamerPlayer == null) { diff --git a/src/main/java/igorlink/service/MainConfig.java b/src/main/java/igorlink/service/MainConfig.java index a1ba838..54d4504 100644 --- a/src/main/java/igorlink/service/MainConfig.java +++ b/src/main/java/igorlink/service/MainConfig.java @@ -1,6 +1,7 @@ package igorlink.service; import igorlink.donationexecutor.DonationExecutor; +import kotlin.Suppress; import org.bukkit.configuration.file.FileConfiguration; import org.jetbrains.annotations.NotNull; @@ -25,7 +26,7 @@ public MainConfig() { } //Геттер конфига - public static FileConfiguration getConfig(){ + public static FileConfiguration getConfig() { return config; } @@ -52,7 +53,7 @@ public static void loadMainConfig(Boolean isReload) { config = DonationExecutor.getInstance().getConfig(); @NotNull String stringWithPlayersNames = Objects.requireNonNull(config.getString("StreamersNamesList")); - List streamerPlayersNamesList = new ArrayList<>(Arrays.asList(stringWithPlayersNames.split(","))); + List streamerPlayersNamesList = new ArrayList<>(Arrays.asList(stringWithPlayersNames.split(","))); for (String playerName : streamerPlayersNamesList) { DonationExecutor.getInstance().listOfStreamerPlayers.addStreamerPlayer(playerName); } @@ -72,16 +73,11 @@ public static void loadMainConfig(Boolean isReload) { twitchFilter = true; } else if (Objects.equals(config.getString("TwitchFilter"), "false")) { twitchFilter = false; - } - else { + } else { logToConsole("Ошибка при чтении значение TwitchFilter"); } - - } - - public static void turnFilterOn() { twitchFilter = true; config.set("TwitchFilter", "true"); @@ -92,26 +88,24 @@ public static void turnFilterOff() { config.set("TwitchFilter", "false"); } + @Suppress(names = "UNUSED_METHOD") public static Boolean getFilterStatus() { return twitchFilter; } - public static HashMap getNameAndExecution (@NotNull String donationAmount) { - String thisDonateForStreamerName = null; + @Suppress(names = "UNUSED_METHOD") + public static HashMap getNameAndExecution(@NotNull String donationAmount) { + @Suppress(names = "UNUSED_PARAMETER") String thisDonateForStreamerName = null; String nameOfExecution = null; for (String p : donationAmountsHashMap.keySet()) { if (donationAmountsHashMap.get(p).containsKey(donationAmount)) { - HashMap temp = new HashMap(); - thisDonateForStreamerName = p; + HashMap temp = new HashMap<>(); nameOfExecution = donationAmountsHashMap.get(p).get(donationAmount); temp.put("name", p); temp.put("execution", nameOfExecution); return temp; } } - return null; } - - } diff --git a/src/main/java/igorlink/service/Utils.java b/src/main/java/igorlink/service/Utils.java index debc62b..2934d82 100644 --- a/src/main/java/igorlink/service/Utils.java +++ b/src/main/java/igorlink/service/Utils.java @@ -1,19 +1,35 @@ package igorlink.service; import com.destroystokyo.paper.Title; +import dark0ghost.annotations.ExperimentalApi; import igorlink.donationexecutor.DonationExecutor; +import kotlin.Suppress; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.entity.Player; import org.bukkit.util.Vector; +import org.jetbrains.annotations.NotNull; + import java.math.BigInteger; import java.util.Arrays; import java.util.HashMap; import java.util.List; +import java.util.Objects; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Utils { + + @ExperimentalApi(message = "use in isBlackListed") + private static @NotNull String validateText (@NotNull String validationText) { + for (String ss : MainConfig.listOfWhiteListedSubstrings) { + if (validationText.contains(ss)) { + validationText = validationText.replace(ss, ""); + } + } + return validationText; + } + public static Boolean isPluginActive; //Вывод сообщения в консоль @@ -38,10 +54,10 @@ public static byte[] decodeUsingBigInteger(String hexString) { public static Boolean CheckNameAndToken() { isPluginActive = true; - if ((DonationExecutor.getInstance().getConfig().getString("DonationAlertsToken") == "") || (DonationExecutor.getInstance().getConfig().getString("DonationAlertsToken") == null)) { + if ((Objects.equals(DonationExecutor.getInstance().getConfig().getString("DonationAlertsToken"), "")) || (DonationExecutor.getInstance().getConfig().getString("DonationAlertsToken") == null)) { logToConsole("Вы не указали свой токен DonationAlerts в файле конфигурации плагина, поэтому сейчас плагин не работает."); isPluginActive = false; - } else if ((DonationExecutor.getInstance().getConfig().getString("Nickname") == "") || (DonationExecutor.getInstance().getConfig().getString("Nickname") == "")) { + } else if ((Objects.equals(DonationExecutor.getInstance().getConfig().getString("Nickname"), "")) || (Objects.equals(DonationExecutor.getInstance().getConfig().getString("Nickname"), ""))) { logToConsole("Вы не указали свой игровой никнейм в файле конфигурации плагина, поэтому сейчас плагин не работает."); isPluginActive = false; } @@ -60,11 +76,11 @@ public static void announce(String donaterName, String subText, String alterSubt player.sendMessage("§c[DE] §fДонатер §c" + _donaterName, "§f" + subText); } - if (_donaterName == "") { + if (Objects.equals(_donaterName, "")) { _donaterName = "Кто-то"; } for (Player p : Bukkit.getOnlinePlayers()) { - if (!(p.getName() == player.getName())) { + if (!(p.getName().equals(player.getName()))) { p.sendMessage("§c[DE] §fДонатер §c" + _donaterName + " §f" + alterSubtext + " §b" + player.getName()); } } @@ -87,25 +103,24 @@ public static Vector genVec(Location a, Location b) { } public static Vector locToVec(Location loc) { - Vector vec = new Vector(loc.getX(), loc.getY(), loc.getZ()); - return vec; + return new Vector(loc.getX(), loc.getY(), loc.getZ()); } public static String cutOffKopeykis(String donationAmountWithKopeykis) { - String amountWithoutKopeykis = ""; + StringBuilder amountWithoutKopeykis = new StringBuilder(); for (int i = 0; i <= donationAmountWithKopeykis.length() - 1; i++) { if (donationAmountWithKopeykis.charAt(i) == '.') { break; - } else if (donationAmountWithKopeykis.charAt(i) == ' ') { + } + if (donationAmountWithKopeykis.charAt(i) == ' ') { continue; - } else { - amountWithoutKopeykis = amountWithoutKopeykis + donationAmountWithKopeykis.charAt(i); } + amountWithoutKopeykis.append(donationAmountWithKopeykis.charAt(i)); } - - return amountWithoutKopeykis; + return amountWithoutKopeykis.toString(); } + @Suppress(names = "UNUSED_PARAMETER") public static Boolean isBlackListed(String text) { HashMap> mapOfSynonimousChars = new HashMap>(); @@ -171,13 +186,6 @@ public static Boolean isBlackListed(String text) { return false; } -// for (String ss : MainConfig.listOfWhiteListedSubstrings) { -// if (validationText.contains(ss)) { -// validationText = validationText.replace(ss, ""); -// } -// } - - if (!(validationText.matches("[a-zа-я0-9$!ё]*"))) { return true; } @@ -239,10 +247,8 @@ public static Boolean isBlackListed(String text) { } } } - return false; } - } diff --git a/src/main/kotlin/dark0ghost/annotations/ExperimentalApi.kt b/src/main/kotlin/dark0ghost/annotations/ExperimentalApi.kt new file mode 100644 index 0000000..28333e2 --- /dev/null +++ b/src/main/kotlin/dark0ghost/annotations/ExperimentalApi.kt @@ -0,0 +1,6 @@ +package dark0ghost.annotations + +@RequiresOptIn(message = "This API is experimental. It may be changed in the future without notice.") +@Retention(AnnotationRetention.BINARY) +@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION) +annotation class ExperimentalApi(val message: String) From e52d7e785a661f2df3df0c97bbc48d8d7d093a59 Mon Sep 17 00:00:00 2001 From: dark0ghost Date: Sun, 23 Jan 2022 16:58:47 +0300 Subject: [PATCH 07/32] migrate text from code to Text object --- .../igorlink/donationexecutor/Executor.java | 207 +++++++++--------- .../dark0ghost/annotations/MagicConst.kt | 4 + .../kotlin/dark0ghost/annotations/Text.kt | 7 + 3 files changed, 111 insertions(+), 107 deletions(-) create mode 100644 src/main/kotlin/dark0ghost/annotations/MagicConst.kt create mode 100644 src/main/kotlin/dark0ghost/annotations/Text.kt diff --git a/src/main/java/igorlink/donationexecutor/Executor.java b/src/main/java/igorlink/donationexecutor/Executor.java index 225ff8e..baceb61 100644 --- a/src/main/java/igorlink/donationexecutor/Executor.java +++ b/src/main/java/igorlink/donationexecutor/Executor.java @@ -1,35 +1,48 @@ package igorlink.donationexecutor; + +import dark0ghost.annotations.MagicConst; import igorlink.service.MainConfig; -import net.md_5.bungee.api.ChatMessageType; -import net.md_5.bungee.api.chat.TextComponent; -import org.bukkit.*; +import kotlin.Suppress; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.World; import org.bukkit.attribute.Attribute; import org.bukkit.command.CommandSender; import org.bukkit.entity.*; import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; -import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.util.Vector; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Objects; import static igorlink.service.Utils.*; -import static java.lang.Math.*; +import static java.lang.Math.random; +import static java.lang.Math.round; import static org.bukkit.Bukkit.getPlayer; public class Executor { - public static String nameOfStreamerPlayer; - public static String nameOfSecondStreamerPlayer; + + private @MagicConst static final int eventOneHealth = 1; + private @MagicConst static final int eventZeroHealth = 1; + private @MagicConst static final double rotateAroundY = 1.5708; + + public @Suppress(names = "UNUSED_PARAMETER") + static String nameOfStreamerPlayer; + public @Suppress(names = "UNUSED_PARAMETER") + static String nameOfSecondStreamerPlayer; public static List executionsList = new ArrayList<>(Arrays.asList("ShitToInventory", "Lesch", "DropActiveItem", "PowerKick", "ClearLastDeathDrop", "SpawnCreeper", "GiveDiamonds", "GiveStackOfDiamonds", "GiveBread", "CallNKVD", "CallStalin", "RandomChange", "TamedBecomesEnemies", "HalfHeart", "BigBoom")); - public static void DoExecute(CommandSender sender, String streamerName, String donationUsername, String fullDonationAmount, String donationMessage, String executionName) { //Если имя донатера не указано - устанавливаем в качестве имени "Кто-то" - String _donationUsername; + @Suppress(names = "UNUSED_PARAMETER") String _donationUsername; if (donationUsername.equals("")) { _donationUsername = "Кто-то"; } else { @@ -51,71 +64,37 @@ public static void DoExecute(CommandSender sender, String streamerName, String d } Location streamerPlayerLocation = streamerPlayer.getLocation(); - World world = streamerPlayer.getWorld(); - Vector direction = streamerPlayerLocation.getDirection(); + @Suppress(names = "UNUSED_PARAMETER") World world = streamerPlayer.getWorld(); + @Suppress(names = "UNUSED_PARAMETER") Vector direction = streamerPlayerLocation.getDirection(); //streamerPlayer.sendActionBar(donationMessage); switch (executionName) { - case "ShitToInventory": - shitToInventory(streamerPlayer, donationUsername); - break; - case "Lesch": - lesch(streamerPlayer, donationUsername); - break; - case "DropActiveItem": - dropActiveItem(streamerPlayer, donationUsername); - break; - case "PowerKick": - powerKick(streamerPlayer, donationUsername); - break; - case "ClearLastDeathDrop": - clearLastDeathDrop(streamerPlayer, donationUsername); - break; - case "SpawnCreeper": - spawnCreeper(streamerPlayer, donationUsername); - break; - case "GiveDiamonds": - giveDiamonds(streamerPlayer, donationUsername); - break; - case "GiveStackOfDiamonds": - giveStackOfDiamonds(streamerPlayer, donationUsername); - break; - case "GiveBread": - giveBread(streamerPlayer, donationUsername); - break; - case "CallNKVD": - callNKVD(streamerPlayer, donationUsername); - break; - case "CallStalin": - callStalin(streamerPlayer, donationUsername); - break; - case "RandomChange": - randomChange(streamerPlayer, donationUsername); - break; - case "TamedBecomesEnemies": - tamedBecomesEnemies(streamerPlayer, donationUsername); - break; - case "HalfHeart": - halfHeart(streamerPlayer, donationUsername); - break; - case "BigBoom": - bigBoom(streamerPlayer, donationUsername); - break; + case "ShitToInventory" -> shitToInventory(streamerPlayer, donationUsername); + case "Lesch" -> lesch(streamerPlayer, donationUsername); + case "DropActiveItem" -> dropActiveItem(streamerPlayer, donationUsername); + case "PowerKick" -> powerKick(streamerPlayer, donationUsername); + case "ClearLastDeathDrop" -> clearLastDeathDrop(streamerPlayer, donationUsername); + case "SpawnCreeper" -> spawnCreeper(streamerPlayer, donationUsername); + case "GiveDiamonds" -> giveDiamonds(streamerPlayer, donationUsername); + case "GiveStackOfDiamonds" -> giveStackOfDiamonds(streamerPlayer, donationUsername); + case "GiveBread" -> giveBread(streamerPlayer, donationUsername); + case "CallNKVD" -> callNKVD(streamerPlayer, donationUsername); + case "CallStalin" -> callStalin(streamerPlayer, donationUsername); + case "RandomChange" -> randomChange(streamerPlayer, donationUsername); + case "TamedBecomesEnemies" -> tamedBecomesEnemies(streamerPlayer, donationUsername); + case "HalfHeart" -> halfHeart(streamerPlayer, donationUsername); + case "BigBoom" -> bigBoom(streamerPlayer, donationUsername); } - } - - - - public static void shitToInventory (Player player, String donationUsername) { + public static void shitToInventory(Player player, String donationUsername) { announce(donationUsername, "насрал тебе в инвентарь", "насрал в инвентарь", player, true); Material itemType = Material.DIRT; ItemStack itemStack = new ItemStack(itemType, 64); ItemMeta meta = itemStack.getItemMeta(); meta.setDisplayName("§cГОВНО ОТ §f" + donationUsername.toUpperCase()); - meta.setLore(Arrays.asList("§7Это говно ужасно вонюче и занимает много места")); + meta.setLore(List.of("§7Это говно ужасно вонюче и занимает много места")); itemStack.setItemMeta(meta); for (int i = 0; i < MainConfig.dirtAmount; i++) { @@ -123,47 +102,47 @@ public static void shitToInventory (Player player, String donationUsername) { } } - public static void dropActiveItem (Player player, String donationUsername) { + public static void dropActiveItem(Player player, String donationUsername) { if (player.getEquipment().getItemInMainHand().getType() == Material.AIR) { announce(donationUsername, "безуспешно пытался выбить у тебя предмет из рук", "безуспешно пытался выбить предмет из рук", player, true); } else { announce(donationUsername, "выбил у тебя предмет из рук", "выбил предмет из рук", player, true); - ((HumanEntity) player).dropItem(true); + player.dropItem(true); player.updateInventory(); } } - public static void lesch (Player player, String donationUsername) { + public static void lesch(Player player, String donationUsername) { announce(donationUsername, "дал тебе леща", "дал леща", player, true); Vector direction = player.getLocation().getDirection(); direction.setY(0); direction.normalize(); direction.setY(0.3); player.setVelocity(direction.multiply(0.8)); - if (player.getHealth()>2.0D) { - player.setHealth(player.getHealth()-2); + if (player.getHealth() > 2.0D) { + player.setHealth(player.getHealth() - 2); } else { - player.setHealth(0); + player.setHealth(eventZeroHealth); } - ((org.bukkit.entity.Player) player).playSound(player.getLocation(), Sound.ENTITY_PLAYER_HURT, 1, 1); + player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_HURT, 1, 1); } - public static void powerKick (Player player, String donationUsername) { + public static void powerKick(Player player, String donationUsername) { announce(donationUsername, "дал тебе смачного пинка под зад", "дал смачного пинка под зад", player, true); Vector direction = player.getLocation().getDirection(); direction.setY(0); direction.normalize(); direction.setY(0.5); player.setVelocity(direction.multiply(1.66)); - if (player.getHealth()>3.0D) { - player.setHealth(player.getHealth()-3); + if (player.getHealth() > 3.0D) { + player.setHealth(player.getHealth() - 3); } else { - player.setHealth(0); + player.setHealth(eventZeroHealth); } - ((org.bukkit.entity.Player) player).playSound(player.getLocation(), Sound.ENTITY_PLAYER_HURT, 1, 1); + player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_HURT, 1, 1); } - public static void clearLastDeathDrop (Player player, String donationUsername) { + public static void clearLastDeathDrop(Player player, String donationUsername) { //Remove Last Death Dropped Items if (DonationExecutor.getInstance().listOfStreamerPlayers.getStreamerPlayer(player.getName()).removeDeathDrop()) { announce(donationUsername, "уничтожил твой посмертный дроп...", "уничтожил посмертный дроп", player, true); @@ -172,7 +151,7 @@ public static void clearLastDeathDrop (Player player, String donationUsername) { } } - public static void spawnCreeper (Player player, String donationUsername) { + public static void spawnCreeper(Player player, String donationUsername) { //Spawn Creepers Vector direction = player.getLocation().getDirection(); announce(donationUsername, "прислал тебе в подарок крипера...", "прислал крипера в подарок", player, true); @@ -182,41 +161,41 @@ public static void spawnCreeper (Player player, String donationUsername) { } - public static void giveDiamonds (Player player, String donationUsername) { + public static void giveDiamonds(Player player, String donationUsername) { //Give some diamonds to the player announce(donationUsername, "насыпал тебе алмазов!", "насыпал алмазов", player, true); Material itemType = Material.DIAMOND; ItemStack itemStack = new ItemStack(itemType, MainConfig.diamondsAmount); ItemMeta meta = itemStack.getItemMeta(); meta.setDisplayName("§bАлмаз"); - meta.setLore(Arrays.asList("§7Эти алмазы подарил §f" + donationUsername)); + meta.setLore(List.of("§7Эти алмазы подарил §f" + donationUsername)); itemStack.setItemMeta(meta); - Item diamonds = player.getWorld().dropItemNaturally(player.getLocation(), itemStack); + @Suppress(names = "UNUSED_PARAMETER") Item diamonds = player.getWorld().dropItemNaturally(player.getLocation(), itemStack); } - public static void giveStackOfDiamonds (Player player, String donationUsername) { + public static void giveStackOfDiamonds(Player player, String donationUsername) { announce(donationUsername, "насыпал тебе алмазов!", "насыпал алмазов", player, true); Material itemType = Material.DIAMOND; ItemStack itemStack = new ItemStack(itemType, 64); ItemMeta meta = itemStack.getItemMeta(); meta.setDisplayName("§bАлмаз"); - meta.setLore(Arrays.asList("§7Эти алмазы подарил §f" + donationUsername)); + meta.setLore(List.of("§7Эти алмазы подарил §f" + donationUsername)); itemStack.setItemMeta(meta); - Item diamonds = player.getWorld().dropItemNaturally(player.getLocation(), itemStack); + @Suppress(names = "UNUSED_PARAMETER") Item diamonds = player.getWorld().dropItemNaturally(player.getLocation(), itemStack); } - public static void giveBread (Player player, String donationUsername) { + public static void giveBread(Player player, String donationUsername) { announce(donationUsername, "дал тебе хлеба!", "дал хлеба", player, true); Material itemType = Material.BREAD; ItemStack itemStack = new ItemStack(itemType, 4); ItemMeta meta = itemStack.getItemMeta(); meta.setDisplayName("§bХлеб"); - meta.setLore(Arrays.asList("§7Этот хлеб подарил §f" + donationUsername)); + meta.setLore(List.of("§7Этот хлеб подарил §f" + donationUsername)); itemStack.setItemMeta(meta); - Item bread = player.getWorld().dropItemNaturally(player.getLocation(), itemStack); + @Suppress(names = "UNUSED_PARAMETER") Item bread = player.getWorld().dropItemNaturally(player.getLocation(), itemStack); } - public static void callNKVD (Player player, String donationUsername) { + public static void callNKVD(Player player, String donationUsername) { Vector direction = player.getLocation().getDirection(); LivingEntity nkvdMob; announce(donationUsername, "хочет отправить тебя в ГУЛАГ!", "хочет отправить в ГУЛАГ", player, true); @@ -225,28 +204,28 @@ public static void callNKVD (Player player, String donationUsername) { for (int i = 1; i <= 3; i++) { Location newloc = player.getLocation().clone(); Vector newdir = direction.clone(); - newdir = newdir.rotateAroundY(1.5708 * i).multiply(2); + newdir = newdir.rotateAroundY(rotateAroundY * i).multiply(2); newloc.add(newdir); nkvdMob = (LivingEntity) player.getWorld().spawnEntity(newloc, EntityType.ZOMBIE); nkvdMob.setCustomName("§cСотрудник НКВД"); - nkvdMob.getEquipment().setItem(EquipmentSlot.HAND, new ItemStack(Material.IRON_SWORD)); - nkvdMob.getAttribute(Attribute.GENERIC_MOVEMENT_SPEED).setBaseValue(0.3); + Objects.requireNonNull(nkvdMob.getEquipment()).setItem(EquipmentSlot.HAND, new ItemStack(Material.IRON_SWORD)); + Objects.requireNonNull(nkvdMob.getAttribute(Attribute.GENERIC_MOVEMENT_SPEED)).setBaseValue(0.3); } } - public static void callStalin (Player player, String donationUsername) { + public static void callStalin(Player player, String donationUsername) { announce(donationUsername, "призвал Сталина разобраться с тобой!", "призвал Сталина разобраться с", player, true); DonationExecutor.giantMobManager.addMob(player.getLocation(), "§cИосиф Сталин"); } - public static void randomChange (Player player, String donationUsername) { + public static void randomChange(Player player, String donationUsername) { announce(donationUsername, "подменил тебе кое-что на камни...", "призвал Сталина разобраться с", player, true); int[] randoms = new int[5]; for (int i = 0; i <= 4; i++) { int temp = 0; - Boolean isUnique = false; + boolean isUnique = false; while (!isUnique) { temp = (int) (round(random() * 35)); isUnique = true; @@ -259,38 +238,55 @@ public static void randomChange (Player player, String donationUsername) { } } randoms[i] = temp; - } - String replacedItems = new String(""); + StringBuilder replacedItems = new StringBuilder(); int replacedCounter = 0; for (int i = 0; i <= 4; i++) { if (!(player.getInventory().getItem(randoms[i]) == null)) { replacedCounter++; if (replacedCounter > 1) { - replacedItems = replacedItems + "§f, "; + replacedItems.append("§f, "); } - replacedItems = replacedItems + "§b" + player.getInventory().getItem(randoms[i]).getAmount() + " §f" + player.getInventory().getItem(randoms[i]).getI18NDisplayName().toString(); + replacedItems + .append("§b") + .append( + Objects + .requireNonNull( + player + .getInventory() + .getItem(randoms[i]) + ) + .getAmount()) + .append(" §f") + .append( + Objects + .requireNonNull( + player + .getInventory() + .getItem(randoms[i]) + ) + .getI18NDisplayName()); } player.getInventory().setItem(randoms[i], new ItemStack(Material.STONE, 1)); } if (replacedCounter == 0) { - sendSysMsgToPlayer(player,"§cТебе повезло: все камни попали в пустые слоты!"); + sendSysMsgToPlayer(player, "§cТебе повезло: все камни попали в пустые слоты!"); } else { - sendSysMsgToPlayer(player,"§cБыли заменены следующие предметусы: §f" + replacedItems); + sendSysMsgToPlayer(player, "§cБыли заменены следующие предметусы: §f" + replacedItems); } } - public static void halfHeart (Player player, String donationUsername) { - player.setHealth(1); + public static void halfHeart(Player player, String donationUsername) { + player.setHealth(eventOneHealth); announce(donationUsername, "оставил тебе лишь полсердечка...", "оставил лишь полсердечка", player, true); } - public static void tamedBecomesEnemies (Player player, String donationUsername) { + public static void tamedBecomesEnemies(Player player, String donationUsername) { announce(donationUsername, "настроил твоих питомцев против тебя!", "настроил прирученных питомцев против", player, true); for (Entity e : player.getWorld().getEntitiesByClasses(Wolf.class, Cat.class)) { - if (((Tameable) e).isTamed() && ((Tameable) e).getOwner().getName().equals(player.getName())) { + if (((Tameable) e).isTamed() && Objects.equals(Objects.requireNonNull(((Tameable) e).getOwner()).getName(), player.getName())) { if (e instanceof Cat) { ((Tameable) e).setOwner(null); ((Cat) e).setSitting(false); @@ -305,11 +301,8 @@ public static void tamedBecomesEnemies (Player player, String donationUsername) } } - public static void bigBoom (Player player, String donationUsername) { + public static void bigBoom(Player player, String donationUsername) { announce(donationUsername, "сейчас тебя РАЗНЕСЕТ В КЛОЧЬЯ!!!", "сейчас РАЗНЕСЕТ В КЛОЧЬЯ", player, true); player.getWorld().createExplosion(player.getLocation(), MainConfig.bigBoomRadius, true); - } - - } diff --git a/src/main/kotlin/dark0ghost/annotations/MagicConst.kt b/src/main/kotlin/dark0ghost/annotations/MagicConst.kt new file mode 100644 index 0000000..5e03139 --- /dev/null +++ b/src/main/kotlin/dark0ghost/annotations/MagicConst.kt @@ -0,0 +1,4 @@ +package dark0ghost.annotations + +@Target(AnnotationTarget.FIELD) +annotation class MagicConst diff --git a/src/main/kotlin/dark0ghost/annotations/Text.kt b/src/main/kotlin/dark0ghost/annotations/Text.kt new file mode 100644 index 0000000..5920132 --- /dev/null +++ b/src/main/kotlin/dark0ghost/annotations/Text.kt @@ -0,0 +1,7 @@ +package dark0ghost.annotations + +object Text { + object ExecutorText { + + } +} \ No newline at end of file From c5d1e3318102f4bfc59d67dfb8f560f8b3eea401 Mon Sep 17 00:00:00 2001 From: dark0ghost <40036029+dark0ghost@users.noreply.github.com> Date: Sun, 23 Jan 2022 17:09:19 +0300 Subject: [PATCH 08/32] Create gradle-publish.yml --- .github/workflows/gradle-publish.yml | 45 ++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 .github/workflows/gradle-publish.yml diff --git a/.github/workflows/gradle-publish.yml b/.github/workflows/gradle-publish.yml new file mode 100644 index 0000000..26bc0df --- /dev/null +++ b/.github/workflows/gradle-publish.yml @@ -0,0 +1,45 @@ +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. +# This workflow will build a package using Gradle and then publish it to GitHub packages when a release is created +# For more information see: https://github.com/actions/setup-java/blob/main/docs/advanced-usage.md#Publishing-using-gradle + +name: Gradle Package + +on: + release: + types: [created] + +jobs: + build: + + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 11 + uses: actions/setup-java@v2 + with: + java-version: '11' + distribution: 'temurin' + server-id: github # Value of the distributionManagement/repository/id field of the pom.xml + settings-path: ${{ github.workspace }} # location for the settings.xml file + + - name: Build with Gradle + uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021 + with: + arguments: build + + # The USERNAME and TOKEN need to correspond to the credentials environment variables used in + # the publishing section of your build.gradle + - name: Publish to GitHub Packages + uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021 + with: + arguments: publish + env: + USERNAME: ${{ github.actor }} + TOKEN: ${{ secrets.GITHUB_TOKEN }} From 0e37cba8c6498982f2438178aae682fbcd134e7e Mon Sep 17 00:00:00 2001 From: dark0ghost <40036029+dark0ghost@users.noreply.github.com> Date: Sun, 23 Jan 2022 17:09:49 +0300 Subject: [PATCH 09/32] Create gradle.yml --- .github/workflows/gradle.yml | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 .github/workflows/gradle.yml diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml new file mode 100644 index 0000000..09d78e5 --- /dev/null +++ b/.github/workflows/gradle.yml @@ -0,0 +1,31 @@ +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. +# This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time +# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle + +name: Java CI with Gradle + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 11 + uses: actions/setup-java@v2 + with: + java-version: '11' + distribution: 'temurin' + - name: Build with Gradle + uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021 + with: + arguments: build From 0e43748530b12c0d177ef92a33d190a8040db83d Mon Sep 17 00:00:00 2001 From: dark0ghost Date: Sun, 23 Jan 2022 18:33:43 +0300 Subject: [PATCH 10/32] migrate text from code to Text obj and remove if-else -> if-return --- .github/workflows/gradle-publish.yml | 4 +- .github/workflows/gradle.yml | 4 +- build.gradle | 7 +-- .../DonationAlerts/DonationAlerts.java | 4 +- .../igorlink/command/AbstractCommand.java | 6 +- .../igorlink/command/DonateSubCommand.java | 4 +- .../igorlink/command/FilterSubCommand.java | 11 ++-- .../igorlink/command/ReloadSubCommand.java | 6 +- .../donationexecutor/EventListener.java | 2 +- .../igorlink/donationexecutor/Executor.java | 54 ++++++++-------- .../executionsstaff/Donation.java | 4 +- .../executionsstaff/GiantMobManager.java | 62 +++++++++---------- .../ListOfStreamerPlayers.java | 5 +- .../executionsstaff/StreamerPlayer.java | 8 +-- src/main/java/igorlink/service/Utils.java | 2 +- .../kotlin/dark0ghost/annotations/Text.kt | 7 --- .../dark0ghost/annotations/ExperimentalApi.kt | 2 +- .../dark0ghost/annotations/MagicConst.kt | 2 +- .../kotlin/org/dark0ghost/annotations/Text.kt | 57 +++++++++++++++++ 19 files changed, 151 insertions(+), 100 deletions(-) delete mode 100644 src/main/kotlin/dark0ghost/annotations/Text.kt rename src/main/kotlin/{ => org}/dark0ghost/annotations/ExperimentalApi.kt (87%) rename src/main/kotlin/{ => org}/dark0ghost/annotations/MagicConst.kt (63%) create mode 100644 src/main/kotlin/org/dark0ghost/annotations/Text.kt diff --git a/.github/workflows/gradle-publish.yml b/.github/workflows/gradle-publish.yml index 26bc0df..ad2a28b 100644 --- a/.github/workflows/gradle-publish.yml +++ b/.github/workflows/gradle-publish.yml @@ -21,10 +21,10 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Set up JDK 11 + - name: Set up JDK 17 uses: actions/setup-java@v2 with: - java-version: '11' + java-version: '17' distribution: 'temurin' server-id: github # Value of the distributionManagement/repository/id field of the pom.xml settings-path: ${{ github.workspace }} # location for the settings.xml file diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index 09d78e5..a495d9f 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -20,10 +20,10 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Set up JDK 11 + - name: Set up JDK 17 uses: actions/setup-java@v2 with: - java-version: '11' + java-version: '17' distribution: 'temurin' - name: Build with Gradle uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021 diff --git a/build.gradle b/build.gradle index d9dd3dd..b14133d 100644 --- a/build.gradle +++ b/build.gradle @@ -3,8 +3,8 @@ plugins { id 'java' } -group 'org.example' -version '1.0-SNAPSHOT' +group 'igorlink' +version '1.18' repositories { mavenCentral() @@ -21,6 +21,7 @@ repositories { } } + dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib" @@ -29,8 +30,6 @@ dependencies { implementation 'io.socket:socket.io-client:2.0.1' implementation "org.json:json:20190722" - - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.2' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.2' } diff --git a/src/main/java/igorlink/DonationAlerts/DonationAlerts.java b/src/main/java/igorlink/DonationAlerts/DonationAlerts.java index c3135dc..a065f36 100644 --- a/src/main/java/igorlink/DonationAlerts/DonationAlerts.java +++ b/src/main/java/igorlink/DonationAlerts/DonationAlerts.java @@ -28,7 +28,7 @@ public DonationAlerts(String server) throws URISyntaxException { Listener connectListener = arg0 -> logToConsole("Произведено успешное подключение!"); - Listener disconectListener = arg0 -> logToConsole("Соединение разорвано!"); + Listener disconnectListener = arg0 -> logToConsole("Соединение разорвано!"); Listener donationListener = arg0 -> { @@ -59,7 +59,7 @@ public void run() { Listener errorListener = arg0 -> logToConsole("Произошла ошибка подключения к Donation Alerts!"); socket.on(Socket.EVENT_CONNECT, connectListener) - .on(Socket.EVENT_DISCONNECT, disconectListener) + .on(Socket.EVENT_DISCONNECT, disconnectListener) .on(Socket.EVENT_CONNECT_ERROR, errorListener) .on("donation", donationListener); } diff --git a/src/main/java/igorlink/command/AbstractCommand.java b/src/main/java/igorlink/command/AbstractCommand.java index d62bf86..5981ba5 100644 --- a/src/main/java/igorlink/command/AbstractCommand.java +++ b/src/main/java/igorlink/command/AbstractCommand.java @@ -21,10 +21,6 @@ public AbstractCommand(String command) { @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { - if (execute(sender, label, args)) { - return true; - } else { - return false; - } + return execute(sender, label, args); } } diff --git a/src/main/java/igorlink/command/DonateSubCommand.java b/src/main/java/igorlink/command/DonateSubCommand.java index cd534ff..c604e14 100644 --- a/src/main/java/igorlink/command/DonateSubCommand.java +++ b/src/main/java/igorlink/command/DonateSubCommand.java @@ -34,7 +34,9 @@ public static void onDonateCommand(CommandSender sender, String[] args) { donationMessage.append(args[i]).append(' '); } + String amount = donationAmount + ".00"; + //Отправляем Донат на исполнение - DonationExecutor.getInstance().listOfStreamerPlayers.addToDonationsQueue(new Donation(sender, donationUsername.toString(), donationAmount + ".00", donationMessage.toString())); + DonationExecutor.getInstance().listOfStreamerPlayers.addToDonationsQueue(new Donation(sender, donationUsername.toString(), amount, donationMessage.toString())); } } diff --git a/src/main/java/igorlink/command/FilterSubCommand.java b/src/main/java/igorlink/command/FilterSubCommand.java index 71df7d1..bf6cfda 100644 --- a/src/main/java/igorlink/command/FilterSubCommand.java +++ b/src/main/java/igorlink/command/FilterSubCommand.java @@ -5,20 +5,23 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import static org.dark0ghost.annotations.Text.RU.FilterSubCommandText.FILTER_OFF_TEXT; +import static org.dark0ghost.annotations.Text.RU.FilterSubCommandText.FILTER_ON_TEXT; + public class FilterSubCommand { public static void onFilterCommand(CommandSender sender, String[] args) { if (args[0].equalsIgnoreCase("on")) { MainConfig.turnFilterOn(); - Utils.logToConsole("Фильтр никнеймов донатеров §bВКЛЮЧЕН"); + Utils.logToConsole(FILTER_ON_TEXT); if (sender instanceof Player) { - Utils.sendSysMsgToPlayer((Player) sender, "Фильтр никнеймов донатеров §bВКЛЮЧЕН"); + Utils.sendSysMsgToPlayer((Player) sender, FILTER_ON_TEXT); } } else { MainConfig.turnFilterOff(); - Utils.logToConsole("Фильтр никнеймов донатеров §bВЫКЛЮЧЕН"); + Utils.logToConsole(FILTER_OFF_TEXT); if (sender instanceof Player) { - Utils.sendSysMsgToPlayer((Player) sender, "Фильтр никнеймов донатеров §bВЫКЛЮЧЕН"); + Utils.sendSysMsgToPlayer((Player) sender, FILTER_OFF_TEXT); } } } diff --git a/src/main/java/igorlink/command/ReloadSubCommand.java b/src/main/java/igorlink/command/ReloadSubCommand.java index 0a6beb2..1d90a6f 100644 --- a/src/main/java/igorlink/command/ReloadSubCommand.java +++ b/src/main/java/igorlink/command/ReloadSubCommand.java @@ -7,12 +7,14 @@ import java.util.Objects; +import static org.dark0ghost.annotations.Text.RU.ReloadSubCommandText.UPDATE_SETTINGS_TEXT; + public class ReloadSubCommand { public static void onReloadCommand(CommandSender sender){ MainConfig.loadMainConfig(true); - Utils.logToConsole("Настройки успешно обновлены!"); + Utils.logToConsole(UPDATE_SETTINGS_TEXT); if (sender instanceof Player) { - Utils.sendSysMsgToPlayer(Objects.requireNonNull(((Player) sender).getPlayer()), "Настройки успешно обновлены!"); + Utils.sendSysMsgToPlayer(Objects.requireNonNull(((Player) sender).getPlayer()), UPDATE_SETTINGS_TEXT); } } } diff --git a/src/main/java/igorlink/donationexecutor/EventListener.java b/src/main/java/igorlink/donationexecutor/EventListener.java index cf0748c..0f793fb 100644 --- a/src/main/java/igorlink/donationexecutor/EventListener.java +++ b/src/main/java/igorlink/donationexecutor/EventListener.java @@ -12,7 +12,7 @@ public class EventListener implements Listener { - private Map projectiles = new HashMap(); + private final Map projectiles = new HashMap<>(); //Отмена горения НКВДшников @EventHandler diff --git a/src/main/java/igorlink/donationexecutor/Executor.java b/src/main/java/igorlink/donationexecutor/Executor.java index baceb61..4f13bb8 100644 --- a/src/main/java/igorlink/donationexecutor/Executor.java +++ b/src/main/java/igorlink/donationexecutor/Executor.java @@ -1,6 +1,6 @@ package igorlink.donationexecutor; -import dark0ghost.annotations.MagicConst; +import org.dark0ghost.annotations.MagicConst; import igorlink.service.MainConfig; import kotlin.Suppress; import org.bukkit.Location; @@ -24,6 +24,7 @@ import static java.lang.Math.random; import static java.lang.Math.round; import static org.bukkit.Bukkit.getPlayer; +import static org.dark0ghost.annotations.Text.RU.ExecutorText.*; public class Executor { @@ -44,7 +45,7 @@ public static void DoExecute(CommandSender sender, String streamerName, String d //Если имя донатера не указано - устанавливаем в качестве имени "Кто-то" @Suppress(names = "UNUSED_PARAMETER") String _donationUsername; if (donationUsername.equals("")) { - _donationUsername = "Кто-то"; + _donationUsername = UNIDENTIFIED_USER_NAME; } else { _donationUsername = donationUsername; } @@ -89,12 +90,12 @@ public static void DoExecute(CommandSender sender, String streamerName, String d } public static void shitToInventory(Player player, String donationUsername) { - announce(donationUsername, "насрал тебе в инвентарь", "насрал в инвентарь", player, true); + announce(donationUsername, SHIT_INVENTORY_EVENT_TEXT, SHIT_INVENTORY_EVENT_TEXT, player, true); Material itemType = Material.DIRT; ItemStack itemStack = new ItemStack(itemType, 64); ItemMeta meta = itemStack.getItemMeta(); meta.setDisplayName("§cГОВНО ОТ §f" + donationUsername.toUpperCase()); - meta.setLore(List.of("§7Это говно ужасно вонюче и занимает много места")); + meta.setLore(List.of(SHIT_INVENTORY_LORE)); itemStack.setItemMeta(meta); for (int i = 0; i < MainConfig.dirtAmount; i++) { @@ -104,16 +105,16 @@ public static void shitToInventory(Player player, String donationUsername) { public static void dropActiveItem(Player player, String donationUsername) { if (player.getEquipment().getItemInMainHand().getType() == Material.AIR) { - announce(donationUsername, "безуспешно пытался выбить у тебя предмет из рук", "безуспешно пытался выбить предмет из рук", player, true); - } else { - announce(donationUsername, "выбил у тебя предмет из рук", "выбил предмет из рук", player, true); - player.dropItem(true); - player.updateInventory(); + announce(donationUsername, FAIL_DROP_EVENT_TEXT, FAIL_DROP_EVENT_TEXT, player, true); + return; } + announce(donationUsername, SUCCESS_DROP_EVENT_TEXT, SUCCESS_DROP_EVENT_TEXT, player, true); + player.dropItem(true); + player.updateInventory(); } public static void lesch(Player player, String donationUsername) { - announce(donationUsername, "дал тебе леща", "дал леща", player, true); + announce(donationUsername, LESH_EVENT_TEXT, LESH_EVENT_TEXT, player, true); Vector direction = player.getLocation().getDirection(); direction.setY(0); direction.normalize(); @@ -128,7 +129,7 @@ public static void lesch(Player player, String donationUsername) { } public static void powerKick(Player player, String donationUsername) { - announce(donationUsername, "дал тебе смачного пинка под зад", "дал смачного пинка под зад", player, true); + announce(donationUsername, KICK_EVENT_TEXT, KICK_EVENT_TEXT, player, true); Vector direction = player.getLocation().getDirection(); direction.setY(0); direction.normalize(); @@ -145,25 +146,24 @@ public static void powerKick(Player player, String donationUsername) { public static void clearLastDeathDrop(Player player, String donationUsername) { //Remove Last Death Dropped Items if (DonationExecutor.getInstance().listOfStreamerPlayers.getStreamerPlayer(player.getName()).removeDeathDrop()) { - announce(donationUsername, "уничтожил твой посмертный дроп...", "уничтожил посмертный дроп", player, true); - } else { - announce(donationUsername, "безуспешно пытался уничтожить твой посмертный дроп...", "безуспешно пытался уничтожить посмертный дроп", player, true); + announce(donationUsername, SUCCESS_CLEAR_DROP_EVENT_TEXT + SPECIAL_END_TEXT, SUCCESS_CLEAR_DROP_EVENT_TEXT, player, true); + return; } + announce(donationUsername, FAIL_CLEAR_DROP_EVENT_TEXT + SPECIAL_END_TEXT, FAIL_CLEAR_DROP_EVENT_TEXT, player, true); } public static void spawnCreeper(Player player, String donationUsername) { //Spawn Creepers Vector direction = player.getLocation().getDirection(); - announce(donationUsername, "прислал тебе в подарок крипера...", "прислал крипера в подарок", player, true); + announce(donationUsername, SPAWN_CREEPER_EVENT_TEXT + SPECIAL_END_TEXT, SPAWN_CREEPER_EVENT_TEXT, player, true); direction.setY(0); direction.normalize(); player.getWorld().spawnEntity(player.getLocation().clone().subtract(direction.multiply(1)), EntityType.CREEPER); - } public static void giveDiamonds(Player player, String donationUsername) { //Give some diamonds to the player - announce(donationUsername, "насыпал тебе алмазов!", "насыпал алмазов", player, true); + announce(donationUsername, GIVE_DIAMOND_EVENT_TEXT, GIVE_DIAMOND_EVENT_TEXT, player, true); Material itemType = Material.DIAMOND; ItemStack itemStack = new ItemStack(itemType, MainConfig.diamondsAmount); ItemMeta meta = itemStack.getItemMeta(); @@ -174,7 +174,7 @@ public static void giveDiamonds(Player player, String donationUsername) { } public static void giveStackOfDiamonds(Player player, String donationUsername) { - announce(donationUsername, "насыпал тебе алмазов!", "насыпал алмазов", player, true); + announce(donationUsername, GIVE_DIAMOND_EVENT_TEXT, GIVE_DIAMOND_EVENT_TEXT, player, true); Material itemType = Material.DIAMOND; ItemStack itemStack = new ItemStack(itemType, 64); ItemMeta meta = itemStack.getItemMeta(); @@ -185,7 +185,7 @@ public static void giveStackOfDiamonds(Player player, String donationUsername) { } public static void giveBread(Player player, String donationUsername) { - announce(donationUsername, "дал тебе хлеба!", "дал хлеба", player, true); + announce(donationUsername, BREAD_EVENT_SUBTEXT, BREAD_EVENT_ALERT_TEXT, player, true); Material itemType = Material.BREAD; ItemStack itemStack = new ItemStack(itemType, 4); ItemMeta meta = itemStack.getItemMeta(); @@ -198,7 +198,7 @@ public static void giveBread(Player player, String donationUsername) { public static void callNKVD(Player player, String donationUsername) { Vector direction = player.getLocation().getDirection(); LivingEntity nkvdMob; - announce(donationUsername, "хочет отправить тебя в ГУЛАГ!", "хочет отправить в ГУЛАГ", player, true); + announce(donationUsername, NKVD_EVENT_TEXT, NKVD_EVENT_TEXT, player, true); direction.setY(0); direction.normalize(); for (int i = 1; i <= 3; i++) { @@ -215,12 +215,12 @@ public static void callNKVD(Player player, String donationUsername) { } public static void callStalin(Player player, String donationUsername) { - announce(donationUsername, "призвал Сталина разобраться с тобой!", "призвал Сталина разобраться с", player, true); + announce(donationUsername, STALING_EVENT_TEXT + "тобой!" , STALING_EVENT_TEXT, player, true); DonationExecutor.giantMobManager.addMob(player.getLocation(), "§cИосиф Сталин"); } public static void randomChange(Player player, String donationUsername) { - announce(donationUsername, "подменил тебе кое-что на камни...", "призвал Сталина разобраться с", player, true); + announce(donationUsername, RANDOM_EVENT_TEXT, STALING_EVENT_TEXT, player, true); int[] randoms = new int[5]; for (int i = 0; i <= 4; i++) { @@ -273,18 +273,18 @@ public static void randomChange(Player player, String donationUsername) { if (replacedCounter == 0) { sendSysMsgToPlayer(player, "§cТебе повезло: все камни попали в пустые слоты!"); - } else { - sendSysMsgToPlayer(player, "§cБыли заменены следующие предметусы: §f" + replacedItems); + return; } + sendSysMsgToPlayer(player, "§cБыли заменены следующие предметусы: §f" + replacedItems); } public static void halfHeart(Player player, String donationUsername) { player.setHealth(eventOneHealth); - announce(donationUsername, "оставил тебе лишь полсердечка...", "оставил лишь полсердечка", player, true); + announce(donationUsername, HALF_HEART_EVENT_TEXT + SPECIAL_END_TEXT, HALF_HEART_EVENT_TEXT, player, true); } public static void tamedBecomesEnemies(Player player, String donationUsername) { - announce(donationUsername, "настроил твоих питомцев против тебя!", "настроил прирученных питомцев против", player, true); + announce(donationUsername, ENEMIES_EVENT_TEXT, ENEMIES_EVENT_TEXT, player, true); for (Entity e : player.getWorld().getEntitiesByClasses(Wolf.class, Cat.class)) { if (((Tameable) e).isTamed() && Objects.equals(Objects.requireNonNull(((Tameable) e).getOwner()).getName(), player.getName())) { if (e instanceof Cat) { @@ -302,7 +302,7 @@ public static void tamedBecomesEnemies(Player player, String donationUsername) { } public static void bigBoom(Player player, String donationUsername) { - announce(donationUsername, "сейчас тебя РАЗНЕСЕТ В КЛОЧЬЯ!!!", "сейчас РАЗНЕСЕТ В КЛОЧЬЯ", player, true); + announce(donationUsername, BOOM_EVENT_TEXT, BOOM_EVENT_TEXT, player, true); player.getWorld().createExplosion(player.getLocation(), MainConfig.bigBoomRadius, true); } } diff --git a/src/main/java/igorlink/donationexecutor/executionsstaff/Donation.java b/src/main/java/igorlink/donationexecutor/executionsstaff/Donation.java index 3843709..ee132da 100644 --- a/src/main/java/igorlink/donationexecutor/executionsstaff/Donation.java +++ b/src/main/java/igorlink/donationexecutor/executionsstaff/Donation.java @@ -5,6 +5,8 @@ import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; +import static org.dark0ghost.annotations.Text.RU.DonationText.DEFAULT_NAME; + public class Donation { private CommandSender sender; private String username; @@ -20,7 +22,7 @@ public Donation(String _username, String _amount, String _message) { public Donation(CommandSender _sender, String _username, String _amount, String _message) { sender = _sender; if (_username.equals("")) { - username = "Аноним"; + username = DEFAULT_NAME; } else { username = _username; } diff --git a/src/main/java/igorlink/donationexecutor/executionsstaff/GiantMobManager.java b/src/main/java/igorlink/donationexecutor/executionsstaff/GiantMobManager.java index 082ee21..cc3b2d6 100644 --- a/src/main/java/igorlink/donationexecutor/executionsstaff/GiantMobManager.java +++ b/src/main/java/igorlink/donationexecutor/executionsstaff/GiantMobManager.java @@ -3,6 +3,7 @@ import com.destroystokyo.paper.event.entity.EntityRemoveFromWorldEvent; import igorlink.donationexecutor.DonationExecutor; import io.papermc.paper.event.entity.EntityMoveEvent; +import kotlin.Suppress; import org.bukkit.*; import org.bukkit.entity.*; import org.bukkit.event.EventHandler; @@ -25,8 +26,8 @@ import org.bukkit.event.Listener; public class GiantMobManager { - private HashMap listOfMobLists = new HashMap(); - private HashMap listOfGiantMob = new HashMap(); + private final HashMap> listOfMobLists = new HashMap<>(); + private @Suppress(names = "UNUSED_PARAMETER") final HashMap listOfGiantMob = new HashMap<>(); //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ @@ -71,7 +72,7 @@ private void addMobToList(@NotNull GiantMob newGiantMob) { if (listOfMobLists.containsKey(newGiantMob.getName())) { listOfMobLists.get(newGiantMob.getName()).put(newGiantMob.getUUID(), newGiantMob); } else { - listOfMobLists.put(newGiantMob.getName(), new HashMap()); + listOfMobLists.put(newGiantMob.getName(), new HashMap()); listOfMobLists.get(newGiantMob.getName()).put(newGiantMob.getUUID(), newGiantMob); } @@ -87,7 +88,7 @@ private void removeMobFromList(@NotNull LivingEntity giantMob) { //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //Класс гигантского моба - private class GiantMob { + private static class GiantMob { private int timesThisGiantMobIsOnOnePlace = 0; private String thisGiantMobPlayerCurrentTargetName = null; private int stepsAfterHiding = 0; @@ -96,7 +97,6 @@ private class GiantMob { final private int howManySnowballsMobLaunches = 4; final private Boolean SnowballsFollowingTarget = false; - final private int giantMobTrackingRange = 40; final private static int timeBeforeThisGiantMobForgetHisTarget = 5; final private static int ticksBetweenSnowballsShots = 7; @@ -118,7 +118,7 @@ public GiantMob(@NotNull Location playerLocation, String mobName) { this.giantMobLivingEntity.setGravity(true); this.giantMobLivingEntity.setRemoveWhenFarAway(false); this.thisGiantMobUUID = giantMobLivingEntity.getUniqueId(); - this.giantMobLivingEntity.getEquipment().setItem(EquipmentSlot.HAND, new ItemStack(Material.IRON_SWORD)); + Objects.requireNonNull(this.giantMobLivingEntity.getEquipment()).setItem(EquipmentSlot.HAND, new ItemStack(Material.IRON_SWORD)); //Заставляем бегать и стрелять this.makeGiantMobAttackWithFireballs(); @@ -153,21 +153,22 @@ public UUID getUUID() { //Поиск ближайшей цели private LivingEntity findGiantMobTarget() { //получаем список ближайших врагов dв радиусе sralinShootingRadius - Double sralinShootingRadius = (double) giantMobTrackingRange; + int giantMobTrackingRange = 40; + double sralinShootingRadius = (double) giantMobTrackingRange; List listOfNearbyEntities = giantMobLivingEntity.getNearbyEntities(sralinShootingRadius, sralinShootingRadius, sralinShootingRadius); List listOfNearbyPlayers = new ArrayList<>(); List listOfNearbyLivingEntities = new ArrayList<>(); //Пробегаемся и ищем игроков for (Entity e : listOfNearbyEntities) { - RayTraceResult rtRes1 = null; - RayTraceResult rtRes2 = null; - RayTraceResult rtRes3 = null; - RayTraceResult rtRes4 = null; - RayTraceResult rtRes5 = null; - RayTraceResult rtRes6 = null; - RayTraceResult rtRes7 = null; - RayTraceResult rtRes8 = null; + RayTraceResult rtRes1; + RayTraceResult rtRes2; + RayTraceResult rtRes3; + RayTraceResult rtRes4; + RayTraceResult rtRes5; + RayTraceResult rtRes6; + RayTraceResult rtRes7; + RayTraceResult rtRes8; if (e instanceof LivingEntity) { //Позиции псевдоглаз вокруг головы с каждой стороны @@ -181,10 +182,10 @@ private LivingEntity findGiantMobTarget() { rtRes2 = giantMobLivingEntity.getWorld().rayTraceBlocks(rtGiantMobPseudoEyesPos2, genVec(rtGiantMobPseudoEyesPos2, ((LivingEntity) e).getEyeLocation()), rtGiantMobPseudoEyesPos2.distance(((LivingEntity) e).getEyeLocation()), FluidCollisionMode.NEVER, true); rtRes3 = giantMobLivingEntity.getWorld().rayTraceBlocks(rtGiantMobPseudoEyesPos3, genVec(rtGiantMobPseudoEyesPos3, ((LivingEntity) e).getEyeLocation()), rtGiantMobPseudoEyesPos3.distance(((LivingEntity) e).getEyeLocation()), FluidCollisionMode.NEVER, true); rtRes4 = giantMobLivingEntity.getWorld().rayTraceBlocks(rtGiantMobPseudoEyesPos4, genVec(rtGiantMobPseudoEyesPos4, ((LivingEntity) e).getEyeLocation()), rtGiantMobPseudoEyesPos4.distance(((LivingEntity) e).getEyeLocation()), FluidCollisionMode.NEVER, true); - rtRes5 = giantMobLivingEntity.getWorld().rayTraceBlocks(rtGiantMobPseudoEyesPos1, genVec(rtGiantMobPseudoEyesPos1, ((LivingEntity) e).getLocation()), rtGiantMobPseudoEyesPos1.distance(((LivingEntity) e).getLocation()), FluidCollisionMode.NEVER, true); - rtRes6 = giantMobLivingEntity.getWorld().rayTraceBlocks(rtGiantMobPseudoEyesPos2, genVec(rtGiantMobPseudoEyesPos2, ((LivingEntity) e).getLocation()), rtGiantMobPseudoEyesPos2.distance(((LivingEntity) e).getLocation()), FluidCollisionMode.NEVER, true); - rtRes7 = giantMobLivingEntity.getWorld().rayTraceBlocks(rtGiantMobPseudoEyesPos3, genVec(rtGiantMobPseudoEyesPos3, ((LivingEntity) e).getLocation()), rtGiantMobPseudoEyesPos3.distance(((LivingEntity) e).getLocation()), FluidCollisionMode.NEVER, true); - rtRes8 = giantMobLivingEntity.getWorld().rayTraceBlocks(rtGiantMobPseudoEyesPos4, genVec(rtGiantMobPseudoEyesPos4, ((LivingEntity) e).getLocation()), rtGiantMobPseudoEyesPos4.distance(((LivingEntity) e).getLocation()), FluidCollisionMode.NEVER, true); + rtRes5 = giantMobLivingEntity.getWorld().rayTraceBlocks(rtGiantMobPseudoEyesPos1, genVec(rtGiantMobPseudoEyesPos1, e.getLocation()), rtGiantMobPseudoEyesPos1.distance(((LivingEntity) e).getLocation()), FluidCollisionMode.NEVER, true); + rtRes6 = giantMobLivingEntity.getWorld().rayTraceBlocks(rtGiantMobPseudoEyesPos2, genVec(rtGiantMobPseudoEyesPos2, e.getLocation()), rtGiantMobPseudoEyesPos2.distance(((LivingEntity) e).getLocation()), FluidCollisionMode.NEVER, true); + rtRes7 = giantMobLivingEntity.getWorld().rayTraceBlocks(rtGiantMobPseudoEyesPos3, genVec(rtGiantMobPseudoEyesPos3, e.getLocation()), rtGiantMobPseudoEyesPos3.distance(((LivingEntity) e).getLocation()), FluidCollisionMode.NEVER, true); + rtRes8 = giantMobLivingEntity.getWorld().rayTraceBlocks(rtGiantMobPseudoEyesPos4, genVec(rtGiantMobPseudoEyesPos4, e.getLocation()), rtGiantMobPseudoEyesPos4.distance(((LivingEntity) e).getLocation()), FluidCollisionMode.NEVER, true); //Если Сталин может из любой позиции поврота голвоы увидеть верх или низ цели, то эта цель вносится в список кандидатов if ((rtRes1 == null) || (rtRes2 == null) || (rtRes3 == null) || (rtRes4 == null) || (rtRes5 == null) || (rtRes6 == null) || (rtRes7 == null) || (rtRes8 == null)) { @@ -237,21 +238,19 @@ private LivingEntity findGiantMobTarget() { if ( (!(target instanceof Player)) && (!(thisGiantMobPlayerCurrentTargetName == null)) ) { //Если прошлая цель-игрок существует, и он не мертв и находится в том же мире, что и наш моб - if ( (!(getPlayer(thisGiantMobPlayerCurrentTargetName).isDead())) && (getPlayer(thisGiantMobPlayerCurrentTargetName).getWorld() == giantMobLivingEntity.getWorld()) ) { + if ( (!(Objects.requireNonNull(getPlayer(thisGiantMobPlayerCurrentTargetName)).isDead())) && (Objects.requireNonNull(getPlayer(thisGiantMobPlayerCurrentTargetName)).getWorld() == giantMobLivingEntity.getWorld()) ) { //Если не подошло время забыть о нем и он не стал спектэйтором, фокусим моба на него - if ((stepsAfterHiding <= timeBeforeThisGiantMobForgetHisTarget * 2) && (!(getPlayer(thisGiantMobPlayerCurrentTargetName).getGameMode()==GameMode.SPECTATOR)) && (!(getPlayer(thisGiantMobPlayerCurrentTargetName).getGameMode()==GameMode.CREATIVE))){ + if ((stepsAfterHiding <= timeBeforeThisGiantMobForgetHisTarget * 2) && (!(Objects.requireNonNull(getPlayer(thisGiantMobPlayerCurrentTargetName)).getGameMode()==GameMode.SPECTATOR)) && (!(getPlayer(thisGiantMobPlayerCurrentTargetName).getGameMode()==GameMode.CREATIVE))){ target = getPlayer(thisGiantMobPlayerCurrentTargetName); stepsAfterHiding++; - } else { + return target; + } //если подошло время забыть про него - забываем stepsAfterHiding = 0; thisGiantMobPlayerCurrentTargetName = null; - } - } } - //Возвращаем ближайшее ентити (игрок в приоритете) return target; } @@ -276,7 +275,7 @@ public void run() { //Если Сталин уже помер, отрубаем задание this.cancel(); return; - } else { + } //Если не помер, находим ближайшую цель (игроки в приоритете) LivingEntity target; target = thisGiantMob.findGiantMobTarget(); @@ -383,7 +382,6 @@ public void run() { } }.runTaskLater(DonationExecutor.getInstance(), 7); } - } } }.runTaskTimer(DonationExecutor.getInstance(), 0, 10); } @@ -479,9 +477,8 @@ public void run() { if ( (snowball.isDead()) || finalTarget.isDead() || (!(finalTarget.getWorld() == snowball.getWorld())) || (!(DonationExecutor.isRunning)) ) { this.cancel(); return; - } else { - snowball.setVelocity(genVec(snowball.getLocation(), finalTarget.getEyeLocation())); } + snowball.setVelocity(genVec(snowball.getLocation(), finalTarget.getEyeLocation())); } }.runTaskTimer(DonationExecutor.getInstance(), finali * ticksBetweenSnowballsShots, 1); } @@ -500,7 +497,7 @@ public void run() { //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //Проверка всех добавлений и удалений из мира, чтобы ловить и упаковывать подходящих гигантов или удалять их из списка - private class GiantMobEventListener implements Listener{ + private static class GiantMobEventListener implements Listener{ GiantMobManager thisInstanceOfGiantMobManager; private GiantMobEventListener(GiantMobManager _thisInstanceOfGiantMobManager) { @@ -527,7 +524,8 @@ public void onGiantMobDamage(EntityDamageEvent e){ if ( (e.getEntity() instanceof Giant) && ((e.getCause() == EntityDamageEvent.DamageCause.FALL) || (e.getCause() == EntityDamageEvent.DamageCause.BLOCK_EXPLOSION) || (e.getCause() == EntityDamageEvent.DamageCause.FIRE) || (e.getCause() == EntityDamageEvent.DamageCause.FIRE_TICK))) { e.setCancelled(true); // sendSysMsgToPlayer(getPlayer(Executor.nameOfStreamerPlayer), "Cancelled DMG from: " + e.getCause().toString()); - } else if (e.getEntity() instanceof Giant) { + } + if (e.getEntity() instanceof Giant) { // sendSysMsgToPlayer(getPlayer(Executor.nameOfStreamerPlayer), "Passed DMG from: " + e.getCause().toString()); } } @@ -572,6 +570,4 @@ public void onComeTooClose(EntityMoveEvent e){ } } - - } diff --git a/src/main/java/igorlink/donationexecutor/executionsstaff/ListOfStreamerPlayers.java b/src/main/java/igorlink/donationexecutor/executionsstaff/ListOfStreamerPlayers.java index 08f2673..68a3a1e 100644 --- a/src/main/java/igorlink/donationexecutor/executionsstaff/ListOfStreamerPlayers.java +++ b/src/main/java/igorlink/donationexecutor/executionsstaff/ListOfStreamerPlayers.java @@ -8,9 +8,10 @@ import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; +import java.util.Objects; public class ListOfStreamerPlayers { - private List listOfStreamerPlayers = new ArrayList(); + private final List listOfStreamerPlayers = new ArrayList(); //Таймер будет выполнять донаты из очередей игроков каждые 2 сек, если они живы и онлайн - выполняем донат и убираем его из очереди public ListOfStreamerPlayers() { @@ -24,7 +25,7 @@ public void run() { for (StreamerPlayer sp : listOfStreamerPlayers) { if ( !(Bukkit.getPlayer(sp.getName()) == null) ) { - if (!(Bukkit.getPlayer(sp.getName()).isDead())) { + if (!(Objects.requireNonNull(Bukkit.getPlayer(sp.getName())).isDead())) { Donation donation = sp.takeDonationFromQueue(); if (donation==null) { continue; diff --git a/src/main/java/igorlink/donationexecutor/executionsstaff/StreamerPlayer.java b/src/main/java/igorlink/donationexecutor/executionsstaff/StreamerPlayer.java index 2d89de3..679aae6 100644 --- a/src/main/java/igorlink/donationexecutor/executionsstaff/StreamerPlayer.java +++ b/src/main/java/igorlink/donationexecutor/executionsstaff/StreamerPlayer.java @@ -16,10 +16,10 @@ import java.util.*; public class StreamerPlayer { - private String streamerPlayerName; - private List listOfDeathDropItems = new ArrayList(); - private Queue listOfQueuedDonations = new LinkedList(); - private HashMap listOfAmounts = new HashMap(); + private final String streamerPlayerName; + private final List listOfDeathDropItems = new ArrayList(); + private final Queue listOfQueuedDonations = new LinkedList(); + private final HashMap listOfAmounts = new HashMap(); //Инициализация нового объекта стримера-игрока diff --git a/src/main/java/igorlink/service/Utils.java b/src/main/java/igorlink/service/Utils.java index 2934d82..aeaf154 100644 --- a/src/main/java/igorlink/service/Utils.java +++ b/src/main/java/igorlink/service/Utils.java @@ -1,7 +1,7 @@ package igorlink.service; import com.destroystokyo.paper.Title; -import dark0ghost.annotations.ExperimentalApi; +import org.dark0ghost.annotations.ExperimentalApi; import igorlink.donationexecutor.DonationExecutor; import kotlin.Suppress; import org.bukkit.Bukkit; diff --git a/src/main/kotlin/dark0ghost/annotations/Text.kt b/src/main/kotlin/dark0ghost/annotations/Text.kt deleted file mode 100644 index 5920132..0000000 --- a/src/main/kotlin/dark0ghost/annotations/Text.kt +++ /dev/null @@ -1,7 +0,0 @@ -package dark0ghost.annotations - -object Text { - object ExecutorText { - - } -} \ No newline at end of file diff --git a/src/main/kotlin/dark0ghost/annotations/ExperimentalApi.kt b/src/main/kotlin/org/dark0ghost/annotations/ExperimentalApi.kt similarity index 87% rename from src/main/kotlin/dark0ghost/annotations/ExperimentalApi.kt rename to src/main/kotlin/org/dark0ghost/annotations/ExperimentalApi.kt index 28333e2..a1c63fb 100644 --- a/src/main/kotlin/dark0ghost/annotations/ExperimentalApi.kt +++ b/src/main/kotlin/org/dark0ghost/annotations/ExperimentalApi.kt @@ -1,4 +1,4 @@ -package dark0ghost.annotations +package org.dark0ghost.annotations @RequiresOptIn(message = "This API is experimental. It may be changed in the future without notice.") @Retention(AnnotationRetention.BINARY) diff --git a/src/main/kotlin/dark0ghost/annotations/MagicConst.kt b/src/main/kotlin/org/dark0ghost/annotations/MagicConst.kt similarity index 63% rename from src/main/kotlin/dark0ghost/annotations/MagicConst.kt rename to src/main/kotlin/org/dark0ghost/annotations/MagicConst.kt index 5e03139..86a1798 100644 --- a/src/main/kotlin/dark0ghost/annotations/MagicConst.kt +++ b/src/main/kotlin/org/dark0ghost/annotations/MagicConst.kt @@ -1,4 +1,4 @@ -package dark0ghost.annotations +package org.dark0ghost.annotations @Target(AnnotationTarget.FIELD) annotation class MagicConst diff --git a/src/main/kotlin/org/dark0ghost/annotations/Text.kt b/src/main/kotlin/org/dark0ghost/annotations/Text.kt new file mode 100644 index 0000000..7cf8eb3 --- /dev/null +++ b/src/main/kotlin/org/dark0ghost/annotations/Text.kt @@ -0,0 +1,57 @@ +package org.dark0ghost.annotations + +object Text { + object RU { + object ExecutorText { + const val SPECIAL_END_TEXT: String = "...." + + const val UNIDENTIFIED_USER_NAME: String = "Кто-то" + + const val SHIT_INVENTORY_EVENT_TEXT: String = "насрал тебе в инвентарь" + const val SHIT_INVENTORY_LORE: String = "§7Это говно ужасно вонюче и занимает много места" + + const val FAIL_DROP_EVENT_TEXT: String = "безуспешно пытался выбить у тебя предмет из рук" + const val SUCCESS_DROP_EVENT_TEXT: String = "выбил у тебя предмет из рук" + + const val LESH_EVENT_TEXT: String = "дал тебе леща" + + const val KICK_EVENT_TEXT: String = "дал тебе смачного пинка под зад" + + const val SUCCESS_CLEAR_DROP_EVENT_TEXT: String = "уничтожил твой посмертный дроп" + const val FAIL_CLEAR_DROP_EVENT_TEXT: String = "безуспешно пытался уничтожить твой посмертный дроп" + + const val SPAWN_CREEPER_EVENT_TEXT: String = "прислал тебе в подарок крипера" + + const val GIVE_DIAMOND_EVENT_TEXT: String = "насыпал тебе алмазов!" + + const val BREAD_EVENT_SUBTEXT: String = "дал тебе хлеба!" + const val BREAD_EVENT_ALERT_TEXT: String = "дал хлеба" + + const val NKVD_EVENT_TEXT: String = "хочет отправить тебя в ГУЛАГ!" + + const val STALING_EVENT_TEXT: String = "призвал Сталина разобраться с" + + const val RANDOM_EVENT_TEXT: String = "подменил тебе кое-что на камни..." + + const val HALF_HEART_EVENT_TEXT: String = "оставил тебе лишь полсердечка" + + const val ENEMIES_EVENT_TEXT: String = "настроил твоих питомцев против тебя!" + + const val BOOM_EVENT_TEXT: String = "сейчас тебя РАЗНЕСЕТ В КЛОЧЬЯ!!!" + + } + + object FilterSubCommandText { + const val FILTER_ON_TEXT: String = "Фильтр никнеймов донатеров §bВКЛЮЧЕН" + const val FILTER_OFF_TEXT: String = "Фильтр никнеймов донатеров §bВЫКЛЮЧЕН" + } + + object ReloadSubCommandText { + const val UPDATE_SETTINGS_TEXT: String = "Настройки успешно обновлены!" + } + + object DonationText { + const val DEFAULT_NAME: String = "Аноним" + } + } +} \ No newline at end of file From 94199a6fd03b435afed753d0a8f58377b62e7343 Mon Sep 17 00:00:00 2001 From: dark0ghost Date: Sun, 23 Jan 2022 18:50:00 +0300 Subject: [PATCH 11/32] fix gradle settings --- .gitignore | 3 +- build.gradle | 9 ++ .../META-INF/DonationExecutor.kotlin_module | Bin 0 -> 62 bytes .../DonationExecutor10SNAPSHOTjar-classes.txt | 1 + build/kotlin/compileKotlin/build-history.bin | Bin 0 -> 31 bytes .../caches-jvm/inputs/source-to-output.tab | Bin 0 -> 4096 bytes .../inputs/source-to-output.tab.keystream | Bin 0 -> 4096 bytes .../inputs/source-to-output.tab.keystream.len | Bin 0 -> 8 bytes .../inputs/source-to-output.tab.len | Bin 0 -> 8 bytes .../inputs/source-to-output.tab.values.at | Bin 0 -> 1254 bytes .../caches-jvm/inputs/source-to-output.tab_i | Bin 0 -> 32768 bytes .../inputs/source-to-output.tab_i.len | Bin 0 -> 8 bytes .../jvm/kotlin/class-attributes.tab | Bin 0 -> 4096 bytes .../jvm/kotlin/class-attributes.tab.keystream | Bin 0 -> 4096 bytes .../kotlin/class-attributes.tab.keystream.len | Bin 0 -> 8 bytes .../jvm/kotlin/class-attributes.tab.len | Bin 0 -> 8 bytes .../jvm/kotlin/class-attributes.tab.values.at | Bin 0 -> 73 bytes .../jvm/kotlin/class-attributes.tab_i | Bin 0 -> 32768 bytes .../jvm/kotlin/class-attributes.tab_i.len | Bin 0 -> 8 bytes .../jvm/kotlin/class-fq-name-to-source.tab | Bin 0 -> 4096 bytes .../class-fq-name-to-source.tab.keystream | Bin 0 -> 4096 bytes .../class-fq-name-to-source.tab.keystream.len | Bin 0 -> 8 bytes .../kotlin/class-fq-name-to-source.tab.len | Bin 0 -> 8 bytes .../class-fq-name-to-source.tab.values.at | Bin 0 -> 674 bytes .../jvm/kotlin/class-fq-name-to-source.tab_i | Bin 0 -> 32768 bytes .../kotlin/class-fq-name-to-source.tab_i.len | Bin 0 -> 8 bytes .../caches-jvm/jvm/kotlin/constants.tab | Bin 0 -> 4096 bytes .../jvm/kotlin/constants.tab.keystream | Bin 0 -> 4096 bytes .../jvm/kotlin/constants.tab.keystream.len | Bin 0 -> 8 bytes .../caches-jvm/jvm/kotlin/constants.tab.len | Bin 0 -> 8 bytes .../jvm/kotlin/constants.tab.values.at | Bin 0 -> 2515 bytes .../caches-jvm/jvm/kotlin/constants.tab_i | Bin 0 -> 32768 bytes .../caches-jvm/jvm/kotlin/constants.tab_i.len | Bin 0 -> 8 bytes .../jvm/kotlin/internal-name-to-source.tab | Bin 0 -> 4096 bytes .../internal-name-to-source.tab.keystream | Bin 0 -> 4096 bytes .../internal-name-to-source.tab.keystream.len | Bin 0 -> 8 bytes .../kotlin/internal-name-to-source.tab.len | Bin 0 -> 8 bytes .../internal-name-to-source.tab.values.at | Bin 0 -> 741 bytes .../jvm/kotlin/internal-name-to-source.tab_i | Bin 0 -> 32768 bytes .../kotlin/internal-name-to-source.tab_i.len | Bin 0 -> 8 bytes .../caches-jvm/jvm/kotlin/package-parts.tab | Bin 0 -> 4096 bytes .../jvm/kotlin/package-parts.tab.keystream | Bin 0 -> 4096 bytes .../kotlin/package-parts.tab.keystream.len | Bin 0 -> 8 bytes .../jvm/kotlin/package-parts.tab.len | Bin 0 -> 8 bytes .../jvm/kotlin/package-parts.tab.values.at | Bin 0 -> 52 bytes .../caches-jvm/jvm/kotlin/package-parts.tab_i | Bin 0 -> 32768 bytes .../jvm/kotlin/package-parts.tab_i.len | Bin 0 -> 8 bytes .../caches-jvm/jvm/kotlin/proto.tab | Bin 0 -> 4096 bytes .../caches-jvm/jvm/kotlin/proto.tab.keystream | Bin 0 -> 4096 bytes .../jvm/kotlin/proto.tab.keystream.len | Bin 0 -> 8 bytes .../caches-jvm/jvm/kotlin/proto.tab.len | Bin 0 -> 8 bytes .../caches-jvm/jvm/kotlin/proto.tab.values.at | Bin 0 -> 2248 bytes .../caches-jvm/jvm/kotlin/proto.tab_i | Bin 0 -> 32768 bytes .../caches-jvm/jvm/kotlin/proto.tab_i.len | Bin 0 -> 8 bytes .../jvm/kotlin/source-to-classes.tab | Bin 0 -> 4096 bytes .../kotlin/source-to-classes.tab.keystream | Bin 0 -> 4096 bytes .../source-to-classes.tab.keystream.len | Bin 0 -> 8 bytes .../jvm/kotlin/source-to-classes.tab.len | Bin 0 -> 8 bytes .../kotlin/source-to-classes.tab.values.at | Bin 0 -> 580 bytes .../jvm/kotlin/source-to-classes.tab_i | Bin 0 -> 32768 bytes .../jvm/kotlin/source-to-classes.tab_i.len | Bin 0 -> 8 bytes .../caches-jvm/jvm/kotlin/subtypes.tab | Bin 0 -> 4096 bytes .../jvm/kotlin/subtypes.tab.keystream | Bin 0 -> 4096 bytes .../jvm/kotlin/subtypes.tab.keystream.len | Bin 0 -> 8 bytes .../caches-jvm/jvm/kotlin/subtypes.tab.len | Bin 0 -> 8 bytes .../jvm/kotlin/subtypes.tab.values.at | Bin 0 -> 156 bytes .../caches-jvm/jvm/kotlin/subtypes.tab_i | Bin 0 -> 32768 bytes .../caches-jvm/jvm/kotlin/subtypes.tab_i.len | Bin 0 -> 8 bytes .../caches-jvm/jvm/kotlin/supertypes.tab | Bin 0 -> 4096 bytes .../jvm/kotlin/supertypes.tab.keystream | Bin 0 -> 4096 bytes .../jvm/kotlin/supertypes.tab.keystream.len | Bin 0 -> 8 bytes .../caches-jvm/jvm/kotlin/supertypes.tab.len | Bin 0 -> 8 bytes .../jvm/kotlin/supertypes.tab.values.at | Bin 0 -> 89 bytes .../caches-jvm/jvm/kotlin/supertypes.tab_i | Bin 0 -> 32768 bytes .../jvm/kotlin/supertypes.tab_i.len | Bin 0 -> 8 bytes .../caches-jvm/lookups/counters.tab | 2 + .../caches-jvm/lookups/file-to-id.tab | Bin 0 -> 4096 bytes .../lookups/file-to-id.tab.keystream | Bin 0 -> 4096 bytes .../lookups/file-to-id.tab.keystream.len | Bin 0 -> 8 bytes .../caches-jvm/lookups/file-to-id.tab.len | Bin 0 -> 8 bytes .../lookups/file-to-id.tab.values.at | Bin 0 -> 73 bytes .../caches-jvm/lookups/file-to-id.tab_i | Bin 0 -> 32768 bytes .../caches-jvm/lookups/file-to-id.tab_i.len | Bin 0 -> 8 bytes .../caches-jvm/lookups/id-to-file.tab | Bin 0 -> 4096 bytes .../lookups/id-to-file.tab.keystream | Bin 0 -> 4096 bytes .../lookups/id-to-file.tab.keystream.len | Bin 0 -> 8 bytes .../caches-jvm/lookups/id-to-file.tab.len | Bin 0 -> 8 bytes .../lookups/id-to-file.tab.values.at | Bin 0 -> 366 bytes .../caches-jvm/lookups/id-to-file.tab_i | Bin 0 -> 32768 bytes .../caches-jvm/lookups/id-to-file.tab_i.len | Bin 0 -> 8 bytes .../caches-jvm/lookups/lookups.tab | Bin 0 -> 4096 bytes .../caches-jvm/lookups/lookups.tab.keystream | Bin 0 -> 4096 bytes .../lookups/lookups.tab.keystream.len | Bin 0 -> 8 bytes .../caches-jvm/lookups/lookups.tab.len | Bin 0 -> 8 bytes .../caches-jvm/lookups/lookups.tab.values.at | Bin 0 -> 499 bytes .../caches-jvm/lookups/lookups.tab_i | Bin 0 -> 32768 bytes .../caches-jvm/lookups/lookups.tab_i.len | Bin 0 -> 8 bytes build/kotlin/compileKotlin/last-build.bin | Bin 0 -> 18 bytes build/resources/main/config.yml | 96 ++++++++++++++++++ build/resources/main/plugin.yml | 15 +++ .../compileJava/previous-compilation-data.bin | Bin 0 -> 776061 bytes build/tmp/jar/MANIFEST.MF | 2 + .../igorlink/command/FilterSubCommand.java | 4 +- .../igorlink/command/ReloadSubCommand.java | 2 +- .../igorlink/donationexecutor/Executor.java | 4 +- .../executionsstaff/Donation.java | 2 +- src/main/java/igorlink/service/Utils.java | 2 +- .../{ => annotations}/ExperimentalApi.kt | 2 +- .../{ => annotations}/MagicConst.kt | 2 +- .../annotations/{ => configs}/Text.kt | 2 +- .../kotlin/org/dark0ghost/annotations/main.kt | 5 + 111 files changed, 142 insertions(+), 11 deletions(-) create mode 100644 build/classes/kotlin/main/META-INF/DonationExecutor.kotlin_module create mode 100644 build/kotlin/DonationExecutor10SNAPSHOTjar-classes.txt create mode 100644 build/kotlin/compileKotlin/build-history.bin create mode 100644 build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab create mode 100644 build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab.keystream create mode 100644 build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab.keystream.len create mode 100644 build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab.len create mode 100644 build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab.values.at create mode 100644 build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab_i create mode 100644 build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab_i.len create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.keystream create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.len create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.values.at create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab_i create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab_i.len create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab.keystream create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab.keystream.len create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab.len create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab.values.at create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab_i create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab_i.len create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab.keystream create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab.keystream.len create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab.len create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab.values.at create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab_i create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab_i.len create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.keystream create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.keystream.len create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.len create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.values.at create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab_i create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab_i.len create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.len create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab_i create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab.keystream create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab.len create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab.values.at create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab_i create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab_i.len create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/supertypes.tab create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/supertypes.tab.keystream create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/supertypes.tab.len create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/supertypes.tab.values.at create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/supertypes.tab_i create mode 100644 build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/supertypes.tab_i.len create mode 100644 build/kotlin/compileKotlin/caches-jvm/lookups/counters.tab create mode 100644 build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab create mode 100644 build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.keystream create mode 100644 build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.keystream.len create mode 100644 build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.len create mode 100644 build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.values.at create mode 100644 build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab_i create mode 100644 build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab_i.len create mode 100644 build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab create mode 100644 build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.keystream create mode 100644 build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.keystream.len create mode 100644 build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.len create mode 100644 build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.values.at create mode 100644 build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab_i create mode 100644 build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab_i.len create mode 100644 build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab create mode 100644 build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.keystream create mode 100644 build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.keystream.len create mode 100644 build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.len create mode 100644 build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.values.at create mode 100644 build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab_i create mode 100644 build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab_i.len create mode 100644 build/kotlin/compileKotlin/last-build.bin create mode 100644 build/resources/main/config.yml create mode 100644 build/resources/main/plugin.yml create mode 100644 build/tmp/compileJava/previous-compilation-data.bin create mode 100644 build/tmp/jar/MANIFEST.MF rename src/main/kotlin/org/dark0ghost/annotations/{ => annotations}/ExperimentalApi.kt (84%) rename src/main/kotlin/org/dark0ghost/annotations/{ => annotations}/MagicConst.kt (56%) rename src/main/kotlin/org/dark0ghost/annotations/{ => configs}/Text.kt (98%) create mode 100644 src/main/kotlin/org/dark0ghost/annotations/main.kt diff --git a/.gitignore b/.gitignore index d137771..147c4fc 100644 --- a/.gitignore +++ b/.gitignore @@ -18,7 +18,6 @@ out/ *.ctxt # Package Files # -*.jar *.war *.nar *.ear @@ -114,4 +113,6 @@ run/ #gradle .gradle +*.jar +!gradle/wrapper/gradle-wrapper.jar diff --git a/build.gradle b/build.gradle index b14133d..8ce2aa2 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,7 @@ plugins { id 'org.jetbrains.kotlin.jvm' version '1.6.10' id 'java' + id 'java-library' } group 'igorlink' @@ -21,8 +22,16 @@ repositories { } } +jar { + archiveBaseName = 'DonationExecutor' + archiveVersion = '1.0-SNAPSHOT' +} dependencies { + implementation fileTree( + dir: 'libs', + include: ['*.jar'] + ) implementation "org.jetbrains.kotlin:kotlin-stdlib" implementation "io.papermc.paper:paper-api:1.18.1-R0.1-SNAPSHOT" diff --git a/build/classes/kotlin/main/META-INF/DonationExecutor.kotlin_module b/build/classes/kotlin/main/META-INF/DonationExecutor.kotlin_module new file mode 100644 index 0000000000000000000000000000000000000000..153e5ef7eaf0089bede83db682832b9b022f884d GIT binary patch literal 62 zcmZQzU|?ooU|R10AS+;?f?J) literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab b/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab new file mode 100644 index 0000000000000000000000000000000000000000..67a10f2c203da1a3fcbb69c3784805e57b6bcca1 GIT binary patch literal 4096 zcmbR3vzw0r2v|S_38a>*t93BPUCn#-xF zyW9R~D$2>y$U&%&I+PWYr#q*9R{YYCafq3^HG w?1Qb#fA8e=C&^}>TneKT9->6`kEMo@$*_0WTT z@nz+i+1Z_C$qIp^O>6AP^0XwI?$A2vJQ}|OcdDR&0X5*>lLdkA$u`^7+ovLL+U2^= z*m01Gvrd6?=-8ROl7?xR9&<5)G-pZ)yu>)&`)(JW@`P05yI zE;z-A-7v|TUs+pCd{FrHkQ@R??8v-H;aG#?kI>h^s9AluI)LGUvzs?}`8oniDV0aN zAC5U`4Ti^Mt5Ff~zu00pc-yjjPoX#UBWVN7=d;`@P$*%wa literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab_i b/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab_i new file mode 100644 index 0000000000000000000000000000000000000000..402fdc9d361ba03f5d314ced3f11e58516b42299 GIT binary patch literal 32768 zcmeIuu?;{_07cQCQ0c@5R#96(qLJ7`sZ_Fo8SEud`Wt*L&Z}?pPRK(Ri~s=w1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!CtQfi-qpy>}0D836(W z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C&6qw@YbEx_sUU!)Q0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+KvH0dMO%zVG87OX R@OgnbK5WYC^FQBq@CJSO2z~$n literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab_i.len b/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab_i.len new file mode 100644 index 0000000000000000000000000000000000000000..131e265740f37d77b7c4a3676d2a7704ca3e4a29 GIT binary patch literal 8 McmZQz0D%Su009U9fdBvi literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab new file mode 100644 index 0000000000000000000000000000000000000000..99afa6f828211bc72fd7272783c1c56a4aa95ceb GIT binary patch literal 4096 zcmeH@O$tCz6h@gDVKK@kY{c9GY{A${>$^Q49I{C X$bbyUfDFih49I{C$bbyUz>k3wlP@T? literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.keystream b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.keystream new file mode 100644 index 0000000000000000000000000000000000000000..c87ca820f84114745cc44951075c2f9a1b70824f GIT binary patch literal 4096 zcmeIvF%H5o3EOTDwYIsmF)1bwLU9_msguww|{VoM|Y$ z*6t}$4Ka(7df_;Gmt${(?<^~|hu&`zV`p-{E@<*Z;es~wn)sDJK>@(GEm)>g1 z(bj`Xm`3a~awp%a4VU3wNY@cJx%tYrLd`s%v-eT>dyQ%C0tEpGKmY;|fB*y_009U< K00I#BQ{W8^H>3Oj literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len new file mode 100644 index 0000000000000000000000000000000000000000..8a9e20afa423db682bec482d9e4e469727f38e63 GIT binary patch literal 8 McmZQz00G7|006cCt^fc4 literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.len b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.len new file mode 100644 index 0000000000000000000000000000000000000000..fa606b628b9821e4e1a5e524f5973b5db3fb44ba GIT binary patch literal 8 LcmZQz0D}Vn0LTEr literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.values.at b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.values.at new file mode 100644 index 0000000000000000000000000000000000000000..de0b0a4a4d0e6581b17d6a120b66a4daa7a0149a GIT binary patch literal 73 zcmdOA@JLNeNi9+cN=?o$N>OmjFH#6dEh^3|E=kQR@klJr@J%cTOUx-v4KB$qN=#2> IWMIIG09dpV3;+NC literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab_i b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab_i new file mode 100644 index 0000000000000000000000000000000000000000..d0d730c814d0a6f97718d7be0de991dc6b719755 GIT binary patch literal 32768 zcmeIup$fuK6b9gdASQhXqei>Ff{)+}m;|FHF&Z@}g2kpR8LeiU$za!L^wzO724k{s z?Vfwj&VRnB5!E6e0RjXF5FkK+009C72oNAZfB*pk1PBlyK!89>U>Pc#YrIWeC=eh( zAg91S^bg+6Q_kOLCqRGz0Rn$1a1N=5w@3dk!wXG-009C72oNAZfB*pk1PBlyK!5;& z3<9h0_RyVvGqiY0fB*pk1PBlyK!5-N0t5&UAV7cs0RjXFluY0f^33X^PRU}4Lx2DQ z0t6BQ>u?&kC%r_`p)vx;u<7Ty*i~j>ixMC}fB*pk1PBlyK!5-N0t5&UAV7cs0RjXF d5FkK+009C72oNYhU>;_)?ytCjQAU(l;0N!K6{i3I literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab_i.len b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab_i.len new file mode 100644 index 0000000000000000000000000000000000000000..131e265740f37d77b7c4a3676d2a7704ca3e4a29 GIT binary patch literal 8 McmZQz0D%Su009U9fdBvi literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab new file mode 100644 index 0000000000000000000000000000000000000000..ea670db4b10ba6012837b49cc46c5a1b77fefa21 GIT binary patch literal 4096 zcmbR3vzw0r2sl6l3%+Fd71*Aut*OqaiRF e0;3@?8UmvsFd71*Aut*OqaiRF0;3^7AOrxvz9%XG literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream new file mode 100644 index 0000000000000000000000000000000000000000..c87ca820f84114745cc44951075c2f9a1b70824f GIT binary patch literal 4096 zcmeIvF%H5o3EOTDwYIsmF)1bwLU9_msguww|{VoM|Y$ z*6t}$4Ka(7df_;Gmt${(?<^~|hu&`zV`p-{E@<*Z;es~wn)sDJK>@(GEm)>g1 z(bj`Xm`3a~awp%a4VU3wNY@cJx%tYrLd`s%v-eT>dyQ%C0tEpGKmY;|fB*y_009U< K00I#BQ{W8^H>3Oj literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len new file mode 100644 index 0000000000000000000000000000000000000000..8a9e20afa423db682bec482d9e4e469727f38e63 GIT binary patch literal 8 McmZQz00G7|006cCt^fc4 literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len new file mode 100644 index 0000000000000000000000000000000000000000..fa606b628b9821e4e1a5e524f5973b5db3fb44ba GIT binary patch literal 8 LcmZQz0D}Vn0LTEr literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at new file mode 100644 index 0000000000000000000000000000000000000000..dfe718f5b6370eec2fcd53c24cf930f273302042 GIT binary patch literal 674 zcmeH^!3u&v6h-|M7p|LrAFf{)+}m;|FHF&Z@}g2kpR8LeiU$za!L^wzO724k{s z?Vfwj&VRnB5!E6e0RjXF5FkK+009C72oNAZfB*pk1PBlyK!89>U>Pc#YrIWeC=eh( zAg91S^bg+6Q_kOLCqRGz0Rn$1a1N=5w@3dk!wXG-009C72oNAZfB*pk1PBlyK!5;& z3<9h0_RyVvGqiY0fB*pk1PBlyK!5-N0t5&UAV7cs0RjXFluY0f^33X^PRU}4Lx2DQ z0t6BQ>u?&kC%r_`p)vx;u<7Ty*i~j>ixMC}fB*pk1PBlyK!5-N0t5&UAV7cs0RjXF d5FkK+009C72oNYhU>;_)?ytCjQAU(l;0N!K6{i3I literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len new file mode 100644 index 0000000000000000000000000000000000000000..131e265740f37d77b7c4a3676d2a7704ca3e4a29 GIT binary patch literal 8 McmZQz0D%Su009U9fdBvi literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab new file mode 100644 index 0000000000000000000000000000000000000000..b6acc76e880dd01add5a7f7f6e139ea074dc1221 GIT binary patch literal 4096 zcmbR3vzw0r2v|S_39zyUU~F&4>=WN#!NKMEbCYi7GGMx%K>a&%tu=NR88 z=0p`HmY~H=&{vAZJwml^cy`wsrqz)5|J0DXrP)Hhuj3iZBI;Z7Lzp4{H{Un(U!dPb cd+&iq0SZun0u-PC1t>rP3Q&Lo6!=4d4d_8zGXMYp literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab.keystream.len b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab.keystream.len new file mode 100644 index 0000000000000000000000000000000000000000..003bc0ebfc327ee4e08df4a177e7f368d2dea681 GIT binary patch literal 8 LcmZQz0D}(z0Qdm$ literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab.len b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab.len new file mode 100644 index 0000000000000000000000000000000000000000..93a595bd1bbabaf1bd4ee4909ac49e65e67fa3f4 GIT binary patch literal 8 LcmZQz0D}bp0H^?= literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab.values.at b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab.values.at new file mode 100644 index 0000000000000000000000000000000000000000..9b0898febb12cc73e26d8c84829ef93cc68c901f GIT binary patch literal 2515 zcmbuBZEqV@5QQ&vgoFe*bEvXYKkWvSUY$Q{YqNwiX}(K~DHh z{3Sl~OL)%MPBw1broyXT-@SY9oS8FcW_K&JhJ#nbQS@y1@_h6vYMhUv0qAEI4F|7WNr6IP1RU6l3-9jLlt)9fi6!e_(4?wQ_ju*APBqQHw2omL0P2 z`NU9I6Z$kD2gy z*s-yPk$q=njFs>?vYLJGu;aTdPfFIcrUMsvzQfZJ@caDdt;)>4cFKm2^SF#lxU&pV zF%gU7rvUfhU2NYP?UrK0c#Z89My-iE6>EEhd(8I$$a238e3giCmUGODo>kx>Z#f(q zJ65nAW)HAg#GO^xIVJ5iTsYylgHsQ$;FN%O0ZS3JU|RDd{uobZGrNc9hfZE9w4tuX zbuMLJ++ra1yfhOTskl^%7!^Tf%ki%q=AdN#HA-skckGgWYtA-cR#Iq^gEF!yOmr&I z>`vh1P@WuAS=sj49Cu}_0Kb+H$U6aN?lXBilk49RJ<}D7?@4iND!9u2vPe zs_uq%H*He^k@2b>U`weha?RT=;i$eMIMW+5<6$T)=6Kh>uti6H0`iKjduaNMNP;yy zkqO0r{lDP8O#=R|7~kVuro@jav)H3NBawAR`l?Y?D6I(xK8L;QRPGY1z5r%l(W(S} g0c5=~(B?yWdkXgvP<7&pfmN(CA4&_pQ8e!V2NH-nr~m)} literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab_i b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab_i new file mode 100644 index 0000000000000000000000000000000000000000..f2db8b332b8625983ecbeb503d18d42f27ed6850 GIT binary patch literal 32768 zcmeIuu?c`M6h+aXE@JOIjw6!b36Nd^q}KrHSRf6Q9tEQzFd71* kAut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0yshd0LoJ+fyUAFHR%qF#Gw)txFF90t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0_79|I%WGn;7qpZtY@QDNSOb^}2d5x@VpM0RjXFeSnEDq8~2%LkOPe|RU{AdV_hQMeD jjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kgRc_9D*#r_JH literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab.keystream b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab.keystream new file mode 100644 index 0000000000000000000000000000000000000000..f277ce0a33cb3bac01fe5201f32e2938c1af8c76 GIT binary patch literal 4096 zcmeIu0SN#g3;;o^m|*r0Lkt8JVFO)%%pv?mxa?<0*R#u*enZsELu0vJX}YXN0s{;% VzyJdbFu(u<3^2d|0}OmV@BlK@4B!9& literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab.keystream.len b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab.keystream.len new file mode 100644 index 0000000000000000000000000000000000000000..4b05c55616d8e7ba6c6ba69d59c4aac06af9a686 GIT binary patch literal 8 LcmZQz00Sie04e|@ literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab.len b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab.len new file mode 100644 index 0000000000000000000000000000000000000000..2a17e6e5bd9e7704741c2a3ae485eb2d2e302b87 GIT binary patch literal 8 LcmZQz0D}$y0FVHQ literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab.values.at b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab.values.at new file mode 100644 index 0000000000000000000000000000000000000000..46d6744972241d5e158860b121c8dcc129d1d042 GIT binary patch literal 52 zcmdOA@JLNeNi9+cN=?o$N>OmjFH#6dEh^3|E=kQR@klJr@J%cTOUx-v4KB$qN=#2> HWMBjU-P#fc literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab_i b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab_i new file mode 100644 index 0000000000000000000000000000000000000000..53ff3f699e167548a73c4d1ef3fc09dfe5293d14 GIT binary patch literal 32768 zcmeIuF%1A95Cp*^$ior^Ev5;G_)yIX*kaPsBLV~n5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAW$T*-e>MJigq>x2oNAZfB*pk1PBly cK!5-N0t5&UAV7cs0RjXF5FkK+0D*4;7w~EV(*OVf literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab_i.len b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab_i.len new file mode 100644 index 0000000000000000000000000000000000000000..131e265740f37d77b7c4a3676d2a7704ca3e4a29 GIT binary patch literal 8 McmZQz0D%Su009U9fdBvi literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab new file mode 100644 index 0000000000000000000000000000000000000000..970d4090fdaf8f47eb54d1cce2317cc500ca566c GIT binary patch literal 4096 zcmeH@!3}~y5Jlzcfp{a)HXt@(5nQ<%3!nwhv;YMdsexDsM-%j*-?za{hzBe9Kbd{I zJCixQ=5S3{WF3x}&3w6mni2^=%bA3CsF={(eILvJ*#F0Y{d)$su!7xNI>Q3?@c5GM uaC}NR%QJX_w%GbTkHWF)XOFIl1#}xNFH#5*}aCiG{%4P96GRo9}iM zY^+r%H}*|6#|n{HF%Z_hK5Z)#z#C-cjumW2#xiB0NWPEpav)IJ=RLhcNXO}IACguGX%r{;6xNa=ol%H1cz-*0q#7Xx=^3h=`7bxG_1 gAD(pM%uGrIL_h>YKmYKm`5*9}WMuQvd(} literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.keystream.len b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.keystream.len new file mode 100644 index 0000000000000000000000000000000000000000..7e3f09775a3501a624dd0afa21e4eee80d54c40e GIT binary patch literal 8 McmZQz00G9k008Fz-v9sr literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.len b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.len new file mode 100644 index 0000000000000000000000000000000000000000..fd5292d4bdcdb76028e1eb3dd4835aa24aab9241 GIT binary patch literal 8 LcmZQz0D}tv0N4Q0 literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.values.at b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.values.at new file mode 100644 index 0000000000000000000000000000000000000000..b7ce3588c3a52ca3599340a114fc6f3f3696abde GIT binary patch literal 2248 zcmb_eZEw<06uuNzYDMT6d&8J4W+t04W6=-JEiozdc2r6sZNd4esiU%P&@QE0_6ziX zEHUA;iQi33`~m(VPs@u85?ybrX?X*C z;9HJgH3w&P^RjLBt}M-WJ+o_lLBa1Z&r%x{OK}fb1lKG}F%Py z$6wk<@N~Lw4F;eDZVNlR^0|3!mU^bsEor`IJKZD139b`{!Z+6G70A8-SA;g%iROt` zG^8n5OrjV6DyeRE?b8Yf^#e6CWY+-~dXl*#gYqy*=Eq%W4im|8nxSrKilc^f3LKZv z?w^QHUFU<{9h7wICZtR5?6wi5wq|+1B}3w!I59mTP9;-Ibc{O<-VA#7uiV>eE66sa z&qVbNM4?Pn61kfmn5*Cb>2HXl? z$Fqav=V*|;nfDb^i+_bfnuc~rBYu%Cn>R%!-6l%14)PnK7+pKDD2*A}pZ|mGg+A~2XdlbX2w3D> zvOa2ou6$?rJK?=@V5rVD}u%@Y3DZMF!9 XguTfjVJ~(_$kTNQS@R#Gr=j;R5R)bc literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab_i b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab_i new file mode 100644 index 0000000000000000000000000000000000000000..f177528f465667ac89fe6f57fc5fe075263709ee GIT binary patch literal 32768 zcmeIuu}VTw7{Kv^B0_KAB<=0)uI)ij;v&*mw1|_7C{B%y>f|JDYA+D92Ze)R5q*mf za3{~L-(Ai*?4*>!M2oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009E!6X-{BZQFS*U%6re1PBlyK!5-N0t5&U zAdtVnED|plpU3=5ixn>8c=zGwy4X}o!x(7S=dGf1&J!R&fB=D<1)d{rzqq-|xltQ| za|^5^;Cr_@oV&yQ1PBlyK!5-N0t5&UAV7cs0RjXF5I70k$IsVoV|3bE|Chio`KBHY literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab_i.len b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab_i.len new file mode 100644 index 0000000000000000000000000000000000000000..131e265740f37d77b7c4a3676d2a7704ca3e4a29 GIT binary patch literal 8 McmZQz0D%Su009U9fdBvi literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab new file mode 100644 index 0000000000000000000000000000000000000000..a8a0931dd8c127a54ca78cad16633c8094b07ba0 GIT binary patch literal 4096 zcmbR3vzw0r2v|S_334r2_Ttk!DmNMeqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8Umvs HKsW>d3t$&v literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream new file mode 100644 index 0000000000000000000000000000000000000000..cbf0474db589e72361bff34cb74f371ae840f6ec GIT binary patch literal 4096 zcmeIu!3x4K490OEW@qCgD085KILg4Igjs9p){HiXJ-*%1>+m9cxg@85;CHWDbGtNk z_c)$SMLG2}vX2x*hq5F&dU6Uo_m-^0F^aN!iTUep=E){M+NeAnCch18e$u_N^L<^u vX-S?|Cwqx6?=p3EUPAlTp@pUdHW&y%00Izz00bZa0SG_<0uX?}e+hg5l-zK( literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len new file mode 100644 index 0000000000000000000000000000000000000000..64db2a7b387cf0acc1ec471c68e65caf914081a3 GIT binary patch literal 8 McmZQz00Bl*002J#Hvj+t literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.len b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.len new file mode 100644 index 0000000000000000000000000000000000000000..93a595bd1bbabaf1bd4ee4909ac49e65e67fa3f4 GIT binary patch literal 8 LcmZQz0D}bp0H^?= literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at new file mode 100644 index 0000000000000000000000000000000000000000..939fdce7bb31f2efe08c05cc1190925a0c6acfe3 GIT binary patch literal 580 zcmb7>F>Av>425s$+TY+ppwJ<1mUb*5jR^!paoVm$^{E$;vt)EK_;>af)#(-w!QM2y z_dV$;cRK`+npIef`m7Mm-cS=IL$)2HV+rji#10Q83IPlEBpPxLdU^~;NtOe%7#Ins zi+S6(sMHJ?i0hVamnX4E{MCr>BCg$PBBz8v^=6>k2=RO4?yoRv;U5Yqf5+Y)Ch8W| z$MbaQV%uZg4ZWNrUS{|TiiUdVzBke|z<#d3!YJS`{d4wy75;zNId@d*%H3T#qy*yq G*zyM;nA-aQ literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab_i b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab_i new file mode 100644 index 0000000000000000000000000000000000000000..3d97db35aea962e44c3eceeb676467a36178bd65 GIT binary patch literal 32768 zcmeIuu?;{_07cQCQ0c@5R#96(qLJ7`sZ_Fo8SEud`Wt*L&Z}?pPRK(Ri~s=w1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!CtQfhl%dy>}0D836(W z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C&6jeSnEDq8~2%LkOPe|RU{AdV_hQMeD jjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kgRc_9D*#r_JH literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab.keystream b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab.keystream new file mode 100644 index 0000000000000000000000000000000000000000..27705764af2d572ca2ae969d14e553c04e4d92af GIT binary patch literal 4096 zcmeIuF%1A93;-}JU<40H;Utjlng8H}v=Z7+*4;5?MAoXE(J)}ZfB^#r3>YwAz<>b* H20j~jh$#l_ literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len new file mode 100644 index 0000000000000000000000000000000000000000..c54fd0d994e56194f26ab957b17021b591efabe2 GIT binary patch literal 8 LcmZQz00SWa02%-j literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab.len b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab.len new file mode 100644 index 0000000000000000000000000000000000000000..2a17e6e5bd9e7704741c2a3ae485eb2d2e302b87 GIT binary patch literal 8 LcmZQz0D}$y0FVHQ literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab.values.at b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab.values.at new file mode 100644 index 0000000000000000000000000000000000000000..cc5d6831a1cf00d789647772e8f3a21252804ca4 GIT binary patch literal 156 zcma*fF$#k~5Jq8-vL`UHu@51^Mi7PcKkl$QM0b{%3FP>(wM+M!_g$KS5J|&Kt7r^Q z(J+x3n^W-tmPgbVwht{XibUM>qN$D0_cdiPZ&8XkoTb>QAKyyK`@vwlRqp=WMkHSE G2j)M@>N{!x literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab_i b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab_i new file mode 100644 index 0000000000000000000000000000000000000000..5117c8c36a98a6ab81e723acbec94d4a63c6ae3c GIT binary patch literal 32768 zcmeIuF%1A95Cp*^*hCBo4f;?7BA#wmz!sC19uXiwfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C73I*nSjk8zb(ux290t5&UAV7cs c0RjXF5FkK+009C72oNAZfB*pk1PFW=xU?Yxz5oCK literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab_i.len b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab_i.len new file mode 100644 index 0000000000000000000000000000000000000000..131e265740f37d77b7c4a3676d2a7704ca3e4a29 GIT binary patch literal 8 McmZQz0D%Su009U9fdBvi literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/supertypes.tab b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/supertypes.tab new file mode 100644 index 0000000000000000000000000000000000000000..e15fe28d2ff8670b75601933105d9132331fa846 GIT binary patch literal 4096 zcmbR3vzw0r2$(A literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/supertypes.tab.keystream b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/supertypes.tab.keystream new file mode 100644 index 0000000000000000000000000000000000000000..014ad7387988f490b567bd2051dd32db09a382c7 GIT binary patch literal 4096 zcmeIuAr62r5JXW<)PTVgg5(ezXvzj?n|1}q2aCgD{-`lC;`ONnw@TUDu%&8FVoWBc vDb`n?uI!7RKAIdu*6!nMmY~b{oLNHOmjFH#6dEh^3|E=kQR@klJr@J%cTOUx-v4KB$qN=#1` aVi3&EFUiTw({s$r%P&bR$;{8gCI$e5v>*Ne literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/supertypes.tab_i b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/supertypes.tab_i new file mode 100644 index 0000000000000000000000000000000000000000..a4dcc32aab4e26e4e3a594ddcf0f0ab55b2c293f GIT binary patch literal 32768 zcmeIuF%^I?3`Nl#5P)UIT42CL6x2g4Af(+pvF6;2KhwK$#2JnN0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyKwuMSYk7LU+rvPB009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ tfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+KskYX6q literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/supertypes.tab_i.len b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/supertypes.tab_i.len new file mode 100644 index 0000000000000000000000000000000000000000..131e265740f37d77b7c4a3676d2a7704ca3e4a29 GIT binary patch literal 8 McmZQz0D%Su009U9fdBvi literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/lookups/counters.tab b/build/kotlin/compileKotlin/caches-jvm/lookups/counters.tab new file mode 100644 index 0000000..26d3b09 --- /dev/null +++ b/build/kotlin/compileKotlin/caches-jvm/lookups/counters.tab @@ -0,0 +1,2 @@ +4 +0 \ No newline at end of file diff --git a/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab b/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab new file mode 100644 index 0000000000000000000000000000000000000000..63d7f772f7067cb53f7825d83db4587a5c8e6ac3 GIT binary patch literal 4096 zcmbR3vzw0r2v|S_3VeD55`5Rm=?r1wDW#iw^vZZrf&Ltr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%%E Ha0mbZ`mPuC literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.keystream b/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.keystream new file mode 100644 index 0000000000000000000000000000000000000000..cbf0474db589e72361bff34cb74f371ae840f6ec GIT binary patch literal 4096 zcmeIu!3x4K490OEW@qCgD085KILg4Igjs9p){HiXJ-*%1>+m9cxg@85;CHWDbGtNk z_c)$SMLG2}vX2x*hq5F&dU6Uo_m-^0F^aN!iTUep=E){M+NeAnCch18e$u_N^L<^u vX-S?|Cwqx6?=p3EUPAlTp@pUdHW&y%00Izz00bZa0SG_<0uX?}e+hg5l-zK( literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.keystream.len b/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.keystream.len new file mode 100644 index 0000000000000000000000000000000000000000..64db2a7b387cf0acc1ec471c68e65caf914081a3 GIT binary patch literal 8 McmZQz00Bl*002J#Hvj+t literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.len b/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.len new file mode 100644 index 0000000000000000000000000000000000000000..93a595bd1bbabaf1bd4ee4909ac49e65e67fa3f4 GIT binary patch literal 8 LcmZQz0D}bp0H^?= literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.values.at b/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.values.at new file mode 100644 index 0000000000000000000000000000000000000000..3e23c2afbb0619148c732de9f2b30b545a113e89 GIT binary patch literal 73 zcmdOA@JLNeNi9+cN=?o$N>OmjFH#6dEh^3|E=kQR@klJr@J%cTOUx-v4KB$qN=#2> PVE_Rz$p|Kyz$7yOSymDn literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab_i b/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab_i new file mode 100644 index 0000000000000000000000000000000000000000..3d97db35aea962e44c3eceeb676467a36178bd65 GIT binary patch literal 32768 zcmeIuu?;{_07cQCQ0c@5R#96(qLJ7`sZ_Fo8SEud`Wt*L&Z}?pPRK(Ri~s=w1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!CtQfhl%dy>}0D836(W z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C&6j?u|jz;@dmgoe#SYV`5-+d zK$;0i%L8eUc~|~H?8UEpRCY83MnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ON IfKUhk0IdoZod5s; literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.keystream b/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.keystream new file mode 100644 index 0000000000000000000000000000000000000000..6e7a9264288f38ee8207472c5349625584ec1699 GIT binary patch literal 4096 qcmeIu0Sy2E2m_$&`**g7g9v1{!GHk+1`HT5V8DO@0|pEjcs+1$@&E?_ literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.keystream.len b/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.keystream.len new file mode 100644 index 0000000000000000000000000000000000000000..eb529631c5a3c8b3de17f3b5aa25a95498f74e2e GIT binary patch literal 8 LcmZQz00R~P01N;H literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.len b/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.len new file mode 100644 index 0000000000000000000000000000000000000000..93a595bd1bbabaf1bd4ee4909ac49e65e67fa3f4 GIT binary patch literal 8 LcmZQz0D}bp0H^?= literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.values.at b/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.values.at new file mode 100644 index 0000000000000000000000000000000000000000..c36773637b248b8a4e103f5aeb825e5ecbe5d2c1 GIT binary patch literal 366 zcmb`@K?{OF5C!14h3xNcOUPP?h? Hpg?>9I3yNg+g&ihYWhX04@ilu{<`7G~ z!pFSMRo-NQQ_S-=AMh?0c%O63bC!>Ii)+mCDQ~dEF}`4$Z+MCCILHs|<34-%iCz50 z4jwScL!ROh<2)hC(eFkh!JjZbB9Vr4)-r8FV+O zD}&Kx^F(*Y)fJ1PlOkQZ_`H?B!SH>iSI_tTe233tX2+fFD{pti_+$MS;AQx-3UqY- z)NVKe8(ZEcup5~O0>wbF@9blU7$^pv*?Jx9KFno+z5=PdV^)ivvT1NLGi{4^1E%5Y zxCGMg@dD7z!P-hMHv`=abPrH-5_tC005w1jP?Nh^3ef;HKn+lnE)IrifEu6%s2Mxi zjMD%$Kn+k+b7NgJKn+j>)a*ygH5#A>r~yvMlS?Frri|VIeYLQ&*UVSo;NE=$*Ok>< zpnHIp2l`*X`1u8YZ?cbWtI<(%+E*}6Pi_+E&F6C9h@)_-BLVv68`r>TOLY_+u2){c jNGTt6>|+C3p*ahqY|9OFLr_t)> literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.keystream.len b/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.keystream.len new file mode 100644 index 0000000000000000000000000000000000000000..a85b5fb73ea72854f1a890fe7a4f3ad854a6b7a5 GIT binary patch literal 8 McmZQz00AaX00310OaK4? literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.len b/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.len new file mode 100644 index 0000000000000000000000000000000000000000..86c9c3e3e79cef872b2af07686a76642a833a06b GIT binary patch literal 8 McmZQz00E{B005K#ivR!s literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.values.at b/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.values.at new file mode 100644 index 0000000000000000000000000000000000000000..d9822a644cd7c85f44a6a3c7d205a1da18c19f47 GIT binary patch literal 499 zcmdOA@JLNeNi9+cN=?o$N>OmjFH#6dEh^3|E=kQR@klJr@J%cTOUx-v4KB$qN=#2> zVE_RRFbO0W!F*<{q6|DRRZKtzL=6s=SoK5ILgc_C#5M-3sv)BI%pZJm5EtQd7mAPZ L_?rnVM-&MFuO$P?Z3Od&+|Ud|M|V={n$8X zQ)yK(Dlf044Jy_1Z?<|bE^bY=8&#^zL&<|~jcoKtUac&?15c4X)4AUq0`YTT47&RZHo8fBX6BugCfOMu(Hoc56h#6-CQyw1LI=$2w*Bn6@d{aT(7$fqrlwN+_K1?&aC~45sDkiYCtVXt-)_i$2v3FqFbHXzH13gq3P0Mb>mtKTSy>!3Fxt(XIx7&i%uX1I-3{w)QO_g zjCH!+(HbX;9_k2;z%0g5{Wey(`#6fB>+;{`{J^SWFA^XD5+DH*AOT+plw-fWSktpl z(ii8@QoB7@(vJ=#KmvXf=tqyD!>c{69b+*+&n%~oxVG~>36KB@$VDI>>rT?EhOctP zXIwD}%tF?~g5$FPKBt(~Qxyr2011$QQV3}9y~OIa?+=usmpa8JFo$#ReAc8vY?b1u zOT_&9G5um$97R+@0wfUW1Uj)!ALuq5i}X5KUw8&fY8eT#I8n5e zNPq;Qmw*-P#nS;tk|Y86^`DBlBk4y65+DH*Ac2q)Si$<7*SEmuVM9tibjgM>zKwNr W6QRo(-I;R0yR7jw?_c-vGWZ8kGMv-^ literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab_i.len b/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab_i.len new file mode 100644 index 0000000000000000000000000000000000000000..131e265740f37d77b7c4a3676d2a7704ca3e4a29 GIT binary patch literal 8 McmZQz0D%Su009U9fdBvi literal 0 HcmV?d00001 diff --git a/build/kotlin/compileKotlin/last-build.bin b/build/kotlin/compileKotlin/last-build.bin new file mode 100644 index 0000000000000000000000000000000000000000..c734d4745f322f8387a8830eadb89e78d69e0633 GIT binary patch literal 18 YcmZ4UmVvdLhk=2yu6>^MeFh)^05%T<-~a#s literal 0 HcmV?d00001 diff --git a/build/resources/main/config.yml b/build/resources/main/config.yml new file mode 100644 index 0000000..f24a9d8 --- /dev/null +++ b/build/resources/main/config.yml @@ -0,0 +1,96 @@ +# Секретный токен Donation Alerts. +# Находится на Donation Alerts на странице "Настройки" -> "Основные настройки". +DonationAlertsToken: + +# Никнеймы стримеров в игре ЧЕРЕЗ ЗАПЯТУЮ БЕЗ ПРОБЕЛОВ! +# Не забудьте про цветовые коды, если используете их +StreamersNamesList: Evropejets,mdenz3 + +# Точные суммы донатов для событий +DonationAmounts: + # Имя первого стримера (ДОЛЖЕН СОВПАДАТЬ С ПЕРВЫМ ЗНАЧЕНИЕМ, УКАЗАННЫМ В StreamersNamesList) + Evropejets: + # Насрать стримеру в инвентарь подписанными стаками говна + ShitToInventory: 62 + # Выбить предмет из рук + DropActiveItem: 65 + # Дать леща - толчок вперед, который отнимет 1 сердечко + Lesch: 67 + # Дать хлеб в количестве N кусков + GiveBread: 82 + # Выдать определенное количество алмазов (настраивается дальше) + GiveDiamonds: 132 + # Заспавнятся несколько сотрудников НКВД, которые заходят увести вас в ГУЛАГ + CallNKVD: 142 + # Дать очень смачный пинок под зад, который отнимет 1.5 сердечка + PowerKick: 152 + # В вашем инвентаре будет случайным образом заменено N слотов (по умолчанию -5) + # на некие предметы (по умолчанию - камни) + RandomChange: 197 + # Заспавнить крипера за спиной + SpawnCreeper: 202 + # Уничтожить вещи, выпавшие после последней смерти + ClearLastDeathDrop: 214 + # Все прирученные игроком кошки снова станут дикими, а прирученные волки, + # помимо этого, еще и нападут на игрока, который был их хозяином + TamedBecomesEnemies: 252 + # Заспавнить исполинского Иосифа Сталина, испепеляющий все вокруг + CallStalin: 352 + # Оставить игроку лишь полсердечка + HalfHeart: 602 + # Через N секунд (по умолчанию - 3) произойдет взрыв с радиусом M + # (по умолчанию - 20) вокруг игрока + BigBoom: 2002 + # Выдать целый стак алмазов + GiveStackOfDiamonds: 2012 + # Имя второго стримера (ДОЛЖЕН СОВПАДАТЬ СО ВТОРЫМ ЗНАЧЕНИЕМ, УКАЗАННЫМ В StreamersNamesList) + mdenz3: + # Насрать стримеру в инвентарь подписанными стаками говна + ShitToInventory: 61 + # Выбить предмет из рук + DropActiveItem: 64 + # Дать леща - толчок вперед, который отнимет 1 сердечко + Lesch: 66 + # Дать хлеб в количестве N кусков + GiveBread: 81 + # Выдать определенное количество алмазов (настраивается дальше) + GiveDiamonds: 131 + # Заспавнятся несколько сотрудников НКВД, которые заходят увести вас в ГУЛАГ + CallNKVD: 141 + # Дать очень смачный пинок под зад, который отнимет 1.5 сердечка + PowerKick: 151 + # В вашем инвентаре будет случайным образом заменено N слотов (по умолчанию -5) + # на некие предметы (по умолчанию - камни) + RandomChange: 196 + # Заспавнить крипера за спиной + SpawnCreeper: 201 + # Уничтожить вещи, выпавшие после последней смерти + ClearLastDeathDrop: 213 + # Все прирученные игроком кошки снова станут дикими, а прирученные волки, + # помимо этого, еще и нападут на игрока, который был их хозяином + TamedBecomesEnemies: 251 + # Заспавнить исполинского Иосифа Сталина, испепеляющий все вокруг + CallStalin: 351 + # Оставить игроку лишь полсердечка + HalfHeart: 601 + # Через N секунд (по умолчанию - 3) произойдет взрыв с радиусом M + # (по умолчанию - 20) вокруг игрока + BigBoom: 2001 + # Выдать целый стак алмазов + GiveStackOfDiamonds: 2011 + +# Сколько блоков говна игроки будут получать в инвентарь от ShitToInventory +DirtAmount: 10 +# Сколько алмазов игроки будут получать в инвентарь от GiveDiamonds +DiamondsAmount: 4 +# Сколько хлеба игроки будут получать в инвентарь от GiveBread +BreadAmount: 4 +# Радиус взрыва от BigBoom +BigBoomRadius: 20 + +TwitchFilter: true +BlacklistedSubstrings: негр,пидо,пида,niga,нигр,ниге,додик,петух,петуч,куколд,симп,kukold,cuckold,fag,хуе,хуй,даун,кады,кадь,kadb,4e4e,4e4n,cheche,chechn,4echn,che4n,4eche,4eche +WhitelistedSubstrings: книг,нигерия + + + diff --git a/build/resources/main/plugin.yml b/build/resources/main/plugin.yml new file mode 100644 index 0000000..d0af3eb --- /dev/null +++ b/build/resources/main/plugin.yml @@ -0,0 +1,15 @@ +name: DonationExecutor +version: 0.2 Beta +main: igorlink.donationexecutor.DonationExecutor +api-version: 1.18 +authors: [Igor Link] +description: Executes donations +commands: + donationexecutor: { + aliases: [d], + description: "Позволяет имитировать донаты для тестов или для воспроизведения события вручную", + usage: "§c[DonationExecutor] §fДоступные команды: \n + §c/d §7donate §b<СУММА> <ИМЯ> §7## §b<СООБЩЕНИЕ>§f - сымитировать донат\n + §c/d §7reload§f - перезагрузить настройки из конфига + " + } diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin new file mode 100644 index 0000000000000000000000000000000000000000..6b4eed7c2240f7952908f29a956e2ea219f8e29a GIT binary patch literal 776061 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

L*4_-3E>zP^!dSV?2Y)*1!4(ZIb8 z>I5!@qO`_&i^yMq77J)`@Eh+5 z%l42i5oC>qdtU$7c{ZG!Z*Lc!pFd6~qC&t=M|T`=DTrOjR@nP9r-JG_7cEg4rVZq1 zhsWyybPKQff(^VJ>%Ggo+*)sBGU;%cfoHr{C4B@QqGWW;lfG;{@RlD6ul^2 z%+#gjoLAglJ)VeMn*uD*^S$+DxVtdj-l@TTAZWeE*9(9?$cTOrZ2)Ktfwl?koihrmKZr=e#19x$AJAEX%6Zh5ET2iNDQNFa8?wM8rm+NRPoY z4$NKjE4e2CK@A>rJ2CnzLJj|O4WS0>$Jt(%5AIsaK&KY&PQBRJ^JfPorzFhUqmpZq zYFNR3S3|QexK^CbI8}(=n>nd0UntM0EvGhicS7y&W=JT8qo|;OZ+RmUNHVCGdh}w z(so(fl>rCIyCCr%fSv!k_4(MHx7pU9{>iLRQ-0?9zyL(&Ll+nM>pXawPi*O}RsM=u zq1cB~djM1q;b~O;cL>Xmu|Ok+Z|cO7&ssei8OeGCiGF{Evs7g=wvr61p}HRhNW`em z&dXVP!Ilc_9;RQoT=}M^35V&kGh3hI?IbHNtiL?83m*d;qK3Yl8y5}XOVbN!uCWG) zjTiFB7BKDLz3SqB=a62leV9`HKdQbupo%A2n59ExL9h@(DM3U9MN||KK~lm%6cCV9 z6coXh?(XjH?(XjH?(T-~+^fI$zW2v^S5BWfGdp?4u2ofziN;0hrf!ZUh6i9S^I$uK zS0&j^slRsjYxn7FozJW8uy%zg<%Yo~vL{eZt$mh|v2@Y@x=p)SH#d5x1I002Pf)f9 z=pyx}KB;5_tU}2^8|#aEQ{m1-SA(?pZk4p%@V9k^V{ER-Lwi?5*1;9_7rP?QoLrIT zb5~%y;hn&z&aTi3!OeU+>MrnRr3)**x;p3?eZn=NPM5nRH(k%5Vd2cKV2iDu0(wGN zrQ>N%8t-r79OmQF@-=SQztf?`K|QbRK5`LU&*P_yXOg6F2X#DL;f`5XIE6~~FO%2{ zdD9>Aw^c;uY#TLs&F)5w{Q1Pl967}7);km*bD~_qp)EYKVpaGlH}OFJ3D(JRo#8j2(UR4 z?B7+ue(HxZ&#lV49%FSLogE9Ot&oiZ;n4v0B*Pv_vVWs-V(i$T$y@h7#;!4p;l_Z_ zSP&WqDDfb{TJXPK7`pre{h}6_)IIn_vyo*#WSobqcgse4Er7w)J=)5h(wYrB9IJ1D(}D! z7G_lZ4e`5ocICuuep^AT;r)~;P(YEaP53Ca*Lm6+)u290zqEeWkWY6~!G<(fL?j)Y zX-_atiWz~S#oRVlrg1!{7_Ulf_U2otW`HG`P!j%s^LsuG_=R_gG&$VCfkE1!bgbHhpBlYc~gM~`WV8jT3CkVQ|97XiQpu3=wcU?!BmF+vz0b%THW zZQ-3_U=QO3s4+Z3W9Y9Ck+$P~xn1<h!8aAQ^(F2B$7Z2-DP@K_TVu*msu;hF;H&ff1|?`c2R zcw35=5vVo;QVUq;{rASY@$y&t?`fJ{-y>b8#G~}oTEU`uxDlhGCjUHflie$kuXn?# zBu@sn0Z+JX7uQ&Kv_X zRx^*J4uMsU6xfy&KilV7 zx7sDD)O(suH(#xk4+D7l6I24GZTYal<(MdX>6ORPUfoe6ph+e~hl}8rJpuRXqvtAG zEIcHFPe#FzF%Z0|fGt^vpy?Qj<<}|6ci-2<&ThMn184$tiur(TV?Hb&9KY6axhbi+ zf9RvnsRb_zLb5Cfu(_;5{r2Zu6;jb&QSOnP4BJrf zJMhKY1*AQApC|fnZ?T~x{{(MY#cagyfrevv-)HuLRV)E~#7~xMj))a73pmH+%?d6z z_#XhNHS{OZ)VzT4apmB&$Ai0JWL2Jr;MOBBFc0!+K-d4=sIc%`ZXMossjoffqnfCV z-C)DK8zN-!4BH*v%-$-^jA^qWS5R5Zub$d8bwi$;xgpZKC+yC^wKsOVs#2Z~1s9_q zjdRV5L?xNKAxtgCaP7#)r6bMY&Sl2uPL0UUUDgx}H>jt?Fq3wf@>0R63onXIjfhRo z9QvzR0>BF7CH@Vo;o8BtDH-ZtX9*@|NFQ=US^s6IfDVxcJA|Fi;6AEJlT*g4uyW!> z$x?F5Uo!AT>rCJp?QpX9*#Mh7%mj*xj*nn%OqW3-V^r8tVWGAy*ktDh{Q;2W0Pl|Q z?gYpVy8q{@H0x`KjCyuFX~E2^jSr8cQk_BeJd7f5kMmi57Zg`AKVe?{yr|m71=ysR zV#ZCJ%ryGJwz_+Uup_J2=C`&hK-}Em&?o`6%UU^nqnrCV(rGF1_3WZ-*(}lrko>x={WMg{de-%4-C`7wjbg5n{Sl*V>iViQwbv^C z9UtM64(!xK-G9Vcy1dn)P<2-MNnK%MYlM026vnP@Jk9gg4~`O}fXp zZy2NERhr2FNdfv)pihI}bT>pK!wr#|rF6n`#`q8W5tkmWFtACNV>9YkG<`+y{UH;m z!Z6cyHylj96!X|g)8e|pID>~c3mlgXY~q+AFQWEXqh2>e zcKhG*j?^`K-ecUuFDQG@V3-hGWOUL}4*j8$EB%}DD-mg(OYg;aH{VI1YvBYhvv>%Rzhs`f zN4m%^T2XzCaSEhOgY}hEX2&3jZ((QtXn)!Cqo$+kAHQi$F3$jH)(yIf6fMlK|E*|x zcv}+JPD=D!4h_$Z*oZk$Wgdck0n<_vVpBFjvP5+oxwZk0FK28@p8QM;>LgtR;Y)y# zb{yN5GThS*4U;UT9<(L@S!QGSV;KyGq`A;!*doDuF7ch4H|fJixyb@|RsgaJE&LiV zScmrwc;5sUZGj87;r}r-aNqI&Y53=>7gR*gjR}}umVN5;ENy8AD09icZnDAEalxuQ z6_v3&f?k|@4|f5u2Q2oXVR6vIeBNOT%=fDwr?h+4Zt)u$v1+Lsa~}ZGA;@g}dz3Fg zfcNvlm7>ShS8=7Mq;bcOpbn;ULH&0{bu!1OjZasYu*aVmzU=_lh@-?&0ojc29>}ER z@e%aA={jcY4qsz;L@vq5{0yWscW;TV_eS*gI(oXLgKOL?Ox@x5nmZ!VNQ~Kg_hh`) z&1n9bCfShsRnk(r3UhZzPVbI9w{(ZoYw+$!3<2A`$)PZG^6 zAG$()RhV@AQHxfUXn@0MN1+2{H0n7`&jaqqI_%{Xmrg!-s$dPuI6Z*2-R*|H3niVY z%f?Jdnno;jv<;|W>yA9M17UT<*n415$xLpJrx}L$e8Ft~c$A8r_MobRJMy9#QpbR< z-8$Nwar%d)ax5~0BhyL095KAz;l4rmb#X_8T|s9z(76|`H~Zh2S@E*zd+Fk|?OB_d z-^ddAuDSzu4{iT9l=bF@YStXuE!V6fw$EdICEu$w53zZZxtxPWQtGPD&ac zKI!EfS6GKM(KLU9p&ln4MMl3Xfn+~tuI(wJA$&?dqaJO3NM#!*t#Kij^#Uf|pob5r z?(2>`^Miu0BAh3|oI}MVI5^%#HcxwM`0H?n#$fP!gx(*taZrbdd}C95t-9Put}s|o zE^lz^NdOQBx+7vi?ucv#d$2ofeuax|4OKpVDMi{*H1k%zM0s#o=uY5oQR_Bh>r_kG+y!(C+0Cx|q^6O4E4YeyQYCcz0=m$2JN5UP{Fi;> zroxR!k}07eB@9aBh_;`$h#N(MVmwB^q>!_3N@+=+@Ma8mhg;gf!?h~bw~FBsD%sD* z#BS#~lbzCL7-kBUB0;$0#VF9x60_6gEh>&vml1!5l5_HG$X)u}&FyG+L?*@^k&Xq# zIPeba3WoW8>@4EolEJk0%FwF-J;PDHBqN`AD1ihhM00*@E}vJg3m+C76kcu6E;1jJ z-LV>0M2n;!+&+Dq+v7xZ$uPyqH~EQxopT=MS+9p)?&+zeP3x0Y3TR+g5={b0$?!m` zf6UFPat2D5NWIEu$}C>ei_}n_PjN>?QXv9iu{4(emhJi?+KbyBGvNq0A4wSBk(+3g zL^p}|%qoWI177T0(%rQ3znKQg#q&T9C?YmWnC*rMYZB+GmQtbat8^&t42aZ#Ti8hD z+I@p6ux|24QA>~5Up8XR1TC^a&E1n#@D-z-)_HS-g;y=ClHJ)?E~6zIywV~Dqr9H_ z@sE;y-bwm7l-aMwey^{+Mwe-X-4*51*rz@d1x0=BC(40R$b~ACNQ>Q$X887$G5Nii zWZ&nX&9k{Ku;hUr`A}GO!q}-8pBqNX@f8n@L(*;YQJ;o|0(azbAw($LN>U>OT`Fg@ zaCU>hi13%*tlzatlDUh3Jf0n@n&soZQr-7D@3{AgnHUY_oQlDK5_lk;4eV<oo0esjioQrVnCl8Lt2%E8(dE z7ghtONS6OHh>DYbcl2T`9{$Rt$)3s_6jTG;{IAy%qG|%ccbaZKxGiNzbS0IPmarDI zs{=0v-@@*oXxl<;KlHOxI1*^ic1rEa)dRQzxHrKl1WfQuwlg}x67*SPPA!Mz`!}aX z5ZW(Iht3Zqc8o@t6P%e{Fbr89muv#1G9{tr488GJs!TC_JYzM`HMjejq8Z|&#T^l7 z1%x&rZinCH$8hWIzXK@4q)jhFVwm$i3|ud*%@&>LfI8Iajy&oD2geZA%7o*=cTAIK zaafMT-SNkTKL}rSmP9uw*#idp{2ibQ+a@|3Yw`CtCszKx`Di4#7s}3+5~k^c7%w~$ zNwdj5_c(g_+GNz_KBz(cP=f}5e)QVE8Th2E6t6418-IL@EMw_#lr#pxIYZ!q#`o9+ zqdWB?*1B(QGfQsCJTbWNXkr+Q7=UweG^+&hNqXVKIo^1Yog0N%8v|p;!3h(9Ga^SAe0fan-~vi=xh(J?iyR>)JcAOpKkuIe*X+YJ zv*_c=Rx){)ZZVGrdL{9>7IUECJovSP&KVDmgSo=j5N^BMC_Da! ze4g0N<}!+t-5e>h0GM{q=ukCFYn6wsLIyH4qEsqwu3aG#C`z#BA$q=P6z{&y?)OTC z^hNN;5`(TP36G;eCWWstoBG9BRHmeWZzhN=4cWgQ0dx73#` z)L9+ZR>7lV1ZJ;b?foK%h7$l=f*Gk>X zMs8}@y@=caz%CTk9{AXo_}^?z#;Jsg_YOM9y#jKz>wB#S`=I#&us(ze@A>Xu(xK09 z^ob>SoCx?!87cc$Q?`!4S^gw+=;!<9B+Iq_ z+V%bi5hD#n6Aws!VB*8_S$7qPRluOGko z+VKlVzPH-vyE*4AHwzC)4+mf?;E=%gFK2aYqu3Hzww#+Jx4ZKMy*z5|fr#1wpJWki zMa2!R;pzU(scM+`;&x^7Zn&)ntV;mc;qO7e;^%J^T9O?upL)Dos&KEe*B;oz>3s0! z>0jqf@zf6x+(aH$zY1pC0jda8xA6FIY5k0*jsDiTMLl z7$U5xUxiH18@{>QHMm1V%H#sHt{}ALH&&-8S0_3Cg=NK2w(Rqx8WhuR9*~V5^zs0D zPk4u-#wW}tfGv)=#@hszQIwi@t8Pw`-zja_;z#pweD+^a6N`kU3(xap*nRW@-rhjm zK!R;~?qp|4%*E_$$E%y_I>jBR-lFF|rwz?tCqC^4{1$ zOFLurE3{t&jUuolRc`AN^vo&NboK{F1OVGIHtd4+i=}v173K67bN5ZDoAGV;1A$!- zpcIl+Vs5cGJy0nANMQI06n~9*9J^2O<#R zfjozMLjT?fD!Za)+5MA8Qaa`Y@zOZ0d?YZ80)$xT%>mn)u&XD80(^5?&f*B-S2C+d z1APqeiS*C!6iC|+A zJjoug_YsIv;XMuB+dp7B)BkPO@pV5crl77DZ9j9pPO~XaA{_!X128k8Fjp^5!h{)& z7j(tcoqOdJN$RstBPR#>b^MSYkBC3b@e^-Jx`TJ(`Nr{-FZE}{L5S)LRdU7sWtu|DF2w*U<%Qs1;eH$y zQb;;gka6jn#n9o2GI7+Af@a{lq<5GZr^4zBG^uz z>;&#z9!`a5+vrSEkZLL&DM1>Y>`4a|lt1A%PPcVqgLM>@jp5}mo(a%s68KDk6%P9U@@4y# z#=m$@q&E0jULVi?Kqh?}5N5!?vv86TiY;u)BAZ71_KY8mS!kg+Nx&@VGY9mA=dq39 zWBKN4fkTpvi6VdN@OJ4Z^B`gY3U3h{P_FfNXlW6ea-PU6U&!;=_6Ko`bnhi#u?#-8 z`TJ2Geqm=i~ zE?Bk)hVO%A{)+JNfFTLvPSXL|OCx;60m~ka1Q)ym5D{eq3wh`UMflBrg^hhaW)Smpx`Q&*DzDE#I9cEj(e%xF_<$ z<^pz}>F4m9ZKwR@#=T`t>CBt>AFM!zHE59_g)Q-&^LM)<)h3$AiItKPAKz@U0Z=Oy z=q7PAH2$1bMaqu=7No^*prqglR+d&#*}qw)*QkQK91TxH{$Ox?IPW zWfyI7<+U9^14mCp+zAYI26J5C|JDlFJ)c-_G1+vh)D5_QqaaV(8E{afas}3Ifa?yp z9{;ML`GbBL5d@G+ymThRRZDIb_Js9i`0Y8}k!J3_?$o%s41svUmw)>y$nyVs1 zfk)Q~m|waZ)Pj?DjN%@L?{#(h%AeC=00;+PI6TCLf#Asa`LTPas=h0A&9vNO7IuYC zey`$dX(-dZ7NT2LM?%K&o^WfdC-N{6_$C2CGWWv zDhHV7f{;8w>b?t;{n!BZZCBG0yH5M!bg1;DUpfryhj1lVgt9^y!%2rfr*Bw}UkorG zs{4fA{=vUXv?xOJT^v{MOf{ExK3KFVhRG%WtDCe=f$DnoL@K?m@U15A0`OxYi0d~; zusMWP3hwRlK>k+>BZmgjnH%IqU~4g`Qiq3aG;C&Z8krQ8MOH4CW?lW_d9egQ=JHU1 z=Dq2J8t#AoV{~PA^134@YbmH*27JrGgbF}{yc?JWxJ1a_kkNSJv88qahlr=XQEU7u z!%9$YiosMCHA;PGwYyS&kAdyIUuH$6O#}(5LNr81LeI5&{6mjoL5HqWl_&Bjh!9TP z@WnE@KGN!2i3|Ul5F0%?QVnuyAo@ILu+b-ST9})~^ks1XVNuk45y@CBs8R>uI@k~Z zr9uBoi@;L0l6{i4H6>j1o^w5D+u(^vHG(RRXI;-UL8Z6(ipkcbr43tV!mhF8+%9Ua zXZyhu7sD3I-3;7XKwv9y9DINg2s|aSjTugTCigG>VaUVxcxSc^qN!gVGW3jEM!eLG zSk@)FvacUc5rwq>6?P7t_9KgaID*5O_G|NA5La_Y2e9n~U(HKnPf)2`N=qX8X39ZS z=w9g;I=|iZmkyFvSS`%uQY(LXaDCt64dKU-ZlGJe)k=W2ZpxfCpe{7~(jD+)N;z`B z2Pl%^u-Lg*wd#~t{ZB}%IWgRjeD<*y3O!$bR1~G!ewEstXM2!$hd#(GKUu#Ij4Bm? zFDC=Jsaxm0B|&}S!2D$^nZ(I6=w&LL!winVmNpmy$!}g9{44uE6f%4K2RwuYur(J0$IpwOzPR(8* zZE8lrFp!OaKSx0YxH0~}n-fI2*zV~huJgVsts80k`Vl5N(2S^*^>f~f9N}3$C*6fJ zHpYNr;sq!z@FZx!KT=fK_5R`209l!-abRhKxdqcEiTsMF8*j_Di|cVa_d7-tK+${) zzH}bkIQ`9@LbBDm@g+tjGg**{89mvRmBXCcJ73$en?*)D<39;CU<%4|+7l5drF&5h z2UF0*hidO;CuwDa$L0f~w!XVp-9&>X4ZccsgsNYZqP|V?{#JJa3##o)PCdN3@{lf` zO0RI6UvUQ9J`3$kD%?c?qoNT#W{;vXDWYep!n69^q=n`HG!L3Bz%x!X-1YapMKj!TfTz{)B%Imo=T2>46j)n!jaB=(py9$^5Az8N1K zHhLqnNOUE=QRd|c$H;M%>;~KK$nMdIsbKX6x5MV-74VKT8+a%9kYt>=)Pol%F48xB zyh^J@8J#%#Rrq%JtVVAhmAfuO`tw!5U4z0of^$hgL9wTwutDBZ(vg^C?S3xNeI2Ct zbHcUu% z7nWYg6DxSEy%0_tc*5~*z2GpV-rr35aPI(NEmDV=386pm`5V%%#!z1}u{yP%tj=Kv z^6h~^BQJK2;N3Ch4aM3DiqeK@2CXMln+_niZjffkF3Y zsK~*$@*WwzE59D8*C6*CG+cq78=$*;A+jD`h`8IyO~V#)>=FP;`2~SNp=&2L4q}%Z zDV^gP(5qbq+fyHEUMY~+m%gErPVof7R$V&uAl>9xx~$W+&v(}Z@aLb*Lw+>0#5TO| z^!njp{Z(Q`-aJAYFR;iP4E6zf71B3Xh>EwH)XcG-#c5?dyb*vN4GBy30cmNb+AQ-S9 zzAQe4poYQ}?G1R2?pf!CzKTseC|Ne}@DQ=u;$D7`d@~CE9u3d(8|V`RaxmAsSTff0ZitD0 zytp|SgC&Z*gQ9nJzpCf#^rl`oI=CQ0tQm_1q;R5VCb(yv_rqK`__~m9yau>&80W!L za0Po2?bX$Vl~ue!bH3=v0If(rxdbd-JSRGY7f>GQncF^iE-|_>lb|RO3pj^b<6RF& z`YI-`Lvstq zNLep(ZTn5wF;R$qW2gX4DuI6$pzYzqekW*7E-61i_Vr@leevKC3M^I)toA~rYCxA- zFld~(fChX2UsC(h14fnAlvAwJS9Id_qw7G8dO&CZM#cZ7;UH}O!=SxbDI<9=ZD)0U zd9e{BHG#xt(AO7E;bN}saeZcXoRQLlsNo{PqsMO!-Pc9X2IoH7>0^T-1+uoX2J7cv zw}9|gFXV9>v}aD#F-9)bFs(TC%-k~bzQalDh=8Scg~4wkNzt=Ec6geI>q63AaNG}K zQ}t~JaYc~QsJ8F&Vj;_&=~;>IguO?V)g7Qhrx)@F*21IC!leOO9xbJQrs7ZKMLlmQ zSLomG0$aMFMM#pvHi74kqb!EPoKNWyMdCrxlBpgrv6LH{Zai09NxR$UOBqv)%PMLe zO?rXvnk8m%%Ha}Skt)5fb$@{55aGeDrCNzIS&8ypN9pD zQuajFz2?IY3*I`S=61IohJo1#IJA`=JBy@p@8!)XlRkztZ5_5%9zEGnP+|=18wa#P z#sCzPWs&7HrOeyrULtcZ5nMX_O{2*B=mr~ajHX>PHFHRt`^STL_6ca6Cqej>7i3YV z`FDQ+NtD){$zy0X?+g(v%N; zT%2qdHtf*5R=WTU7r`ANr?CCu1Y_Hv8O}&|CPe#*bf0Pb5-7S1VE511(3Z5i%zU4R z!xC3wr(K(m+h+yTSOpYFxv_?+N*@jXrRe>TbG_KnHR|b!EV6y;p?e$aAZ7#f-UNaz z(0d!&h-la>{-5%9*HHYa?huPxg|E{z+N%Z&Lj+s8IyY56{7VV zTr$~%>a-7X51?N75Lo{mlH9%)c6#yMqEcf0@nc~NcW)g6f;T^OL!y4##-Em~eUaSR z6QH;j(RKuY2Fzef_Q~0qOa5+M@1ixdspgcOjlGelCfj>6>_lm}sx_T{BC!tv4cS2YjLbf%Q7& zr$1*N#E_=1pCXt}i0t`b4{!${HWkH=^}LNfTGrrieveOj*}D}?bITFHPCy=~gr!Cp ztR3eDBDE{-u9BGlerVtf;LhJ*J&9LW;mW-wSCu@{&1zQlb{7DYeg{AzNr@FnW{{rG zAT!6guLt|CV5gfm^1>Z#E>Qpbd1i~Y+vRi2mgy8ZyU-_)7wG{oPj5uh3z&F&BhP%` z@rCypk}3iZ+y>lnxYq`jjSn;8moHzGtnV)(%0Efg=?7N$17!eE2Er2rY6p8GoFVW` z5QlohqSgnM&+lP;MMyY}nWF|b+E(^Qvat^;DF4(PPP2_V5eD=NXCaN*T`LlKuH(Xw zufNriymY55+#3g^EoRIlwX(DDr^4iycfi zVdpXAKMO@0(rS1H1%?W%Ik+AxBtQpNufD$h)HNk^ex+*Z<(YT+U`r5Y{g5T_qxqCd zVAde>Oc_NCb9Kdc^kv1{vs6mfcVq;Uq#EtSZr_|4G$FEd&w zQGWTCxx6JM*^T=zEz4c%0HaSr0ToCi z4DR=XV%wN0`(HP$Ya1xelib8f%e-Gi{(1nk1uqPO2duuSzcu)xjBW z9&_z5j|o@xI*Y2mVD_D$VCp?);N5xQ>O{{hXfX$t%tI>#xo9xW5ICn$8aLX!T`HAI zVBP5!ZEfuW$n|%|e>MmSpqy=?u1 zh&#y=Wi&eE`I8RJ#sA&#K_|u^uhXX>4EBxHU(RQSlY!*8G%uR%b9V zRB4-OdWTnXT?{3NG$YIWn+LIt z-Szx}@-O_m6|!n+MDyz(S1bX^3Xs~bxZo+E_j`Nj*IHSReunW^=7txySOY5?A4J5~ z2NAIIK^{VOfij|fd}lnEc5zT3J;rs-;u2ePE1mB!evAEIPIPGE+VSLmU)9@pF9&>n z;u0(A0EBRA3!?5KTVUyrX2og^j&cFJt%FfVAJ~rWgGj^B0oyp8w5w@w=p`K$4DFsd z*ZJ$5vkxNf0?N7iz-9vjF7b)lDcYbKJxr3SuOyDLaIVSZy zBC*nV8jr>Id@tlY0N@Esny|eabYR~w}fde(FWbH^@vC*qC%(c2NsB0AG4-^4lM1~4B0gICPH+@E2zv~AS zsuy;*qU-}Pg6!bv#V>}r?5$g70aVvww4xWjw!0lisb?k=qw(^(AMOA03+ugM8RUaJ zI%JLGMY)>%_r6_@a-*>~T{gV=qdypIwO56Kmvs=&=Uk2J6(ena(bbmOaUlS(V+O!S z-I~GC?3Ko`awO$U<`3CWDA_P@K{y~3lKk6K^Zbvqz^ivZ%Pu?BE18=Np<+$N97R7lY3q_2G&+b=b@E zxs!;{fjS-l=2|cT_Gv@-Chl`lsxNZ4leKa_btZs-MDUHv-#vS>95PBLXt*}&?yg)k zj}e;eqCr+g78|HDt)3Yyl9<*Wq!sn4`1~6$PhOfdcUS+%eX0;uv9LjGe z+v)H#p}eBxV0dVUj#NCWW=Q&)(leG3?xBk^E7me zGA{+5Wf(2*V^`etM+JZUQsc@K7kH|r_v_+Q*Y{}Rd}4YqqpWLn*`+#rx-#2x@D!YU zgxQOTwwuF(GoeoPn>b&u(Vxbz0E;UDS_O{_(Z3Gmkq_Bkw(N1UdmjzBB3P_GOVM$`U+NdIt`G@_@sTOcjE5uV9;J1U^ z4xkNxgR=)lZ4;ABHhf(;ZecCY>l^^Q_c;y4A9{SgDGMtMfdvCJ7IN=zv|GoD*_A8bA8=d$8;=77gMD6#-`An!~y9`?o?t8+I6(TXgRBI;fz zWpdG`_50|%_0egrZ;}2rVdrlLT*&&q2y{!pdKn6D1!Dvh>KdrJ!S}zpG3@lXoL|+M zZhjpErRCHDAqcZFTjor-_)R zUJ1~q*#wF$DEe)XVDa(qAWw#a=BwV5gh3Kg#vis^d9gbX9=m`uCy0#(Q3jqKhL(tu z)tLB*WW6ZTJz%j9j}J3;B2jZy9jB1!1J^1y+#frNR)7Tl5B*s5jnF7cR z9&=w9yZge}9p0_rJ(CF2`}%L}9v|!cHvOI1AZr8p&xy9zL^evpCzs61##` zmr}nWYak9KRzOEjve>s~yprjztO~l1Ls4Uc{X68G{7lmJRrJ9URl>Y&qpe)LtuGAb zeWChZ#}4JhjX7SWU(-1mFYb<8F2McXgb&pZtuJ1d6ff{49nh?46U`D_t&=*&XwR>o+&vUCd2z0+XCUk_-I0 zf;ZeiBX?g!vQ-K@&tmsC(TB=w-(~lpsr@TdCSn$SSMfc7ttVg=!f+94kc@gJGm9+V zmx1QUCvoLDx?aGfSB?%XBH=ew+PEy_5R-JB<%mPX8^~b94ksIzCVj&L{nFZ`(7F)A zm85SzK+!Hlht?E-MJLWri?YaZd4B4h`Qr-|(6)e#dBH~KFGkBm-L=8DXY0ii^Y5UK z9rgn=l*}Sp3*-iV78=I*0dnRgz}5I;;8`Y=`PRlw#hjqr@3=o!9|hFm6GH{}1-Iaj$yCJDGELvf~n9yTh3jrcjLaPhdlr^MLF zaHeBQyo@*6Hj6k@0h;EE2=P z`f*`9yw}<7foga@fD6Ez;m5IE$2%uZZbt5RndY3AR?)6!+Ri3JrME~MABmNtu{&OH zuj$+$i<_vjZ<_63!gSju>CdWS>F-nuLBS$lL?HKUu`lM^prWmV*?Q^m9cA%HE`BV1dFs7-NEK%laH{r29@apS%}f7l!E+3pmUz!G%?ZX-)@*vVovDSg zssj;z@3-(_1Y1W~*MF?gm@DdL{U?$exzFl>M+0cnh(Wve?@J<=e*K)e@ZHs5{HTS5 z;@(S5K)*u{k+f#|k)hFGVywYytye@lcfT2^yoiDA18oUJ@JmhgrPqHRK2E+X(gJK- zLA8LB*!;vD%W1_IU$1=nM3b4Cxw-qe4d~i|=_ngksrzS0^H;@~-=&e*DaD-5mFWP` z_Iqf7vo{~F;1;#Np-|h^znhww+X;X!&^G-T_E>barQ(B?@OX5EF8XN)33ppJ#BUFv z^ujar^j`(JK@fv5zc@RQCVB9KJa-zAP#`nY`Lpp(>xst+c_3X8@$i(g`IwK z($-^b5EwXph5&Wpp&ICW6K!;V4rz?}aO-FYVmgNulCRb#mZz+#Hf5UJDoHWtH0&A% zgGZqJM|~l^4oDdHMItu<2sn1%{C15#$ewOjQ6(}&TsdUr+d zn_`%#6_eO)RW8XnaM3&{kSlcXiwJcZJM&nHLZ?9LmLX+~pqTjr7{3U$C6?afDI9^^ z%4bu2t0aF-;9O*nRkxD*63AHw6!&x3;cDcZLnaAf)-AEJtd^$_9)zwyo4*R+H86Ao zKjrWJr+jxRJrfV+pL)LhxHXb!X|u_Wj>p;BPzgFjX-0=2xsq<^I?!!Eu_seFV)jwiWIpZWgXmqSFKnKt4}sqJ9ONG<$k}<) z@7B&GBhw@-<$|QlUq>D7Ev7xq<22@-@`6qGZ-yR$>ajX>=zl~Xqv^} z62^Xrtcf2Y?fAje52k^%;GmfkU+9YPn}P?>Nmbh9A1A1e*~^2AXxb!64rjm^DY8AQtXAss~K)~le0umqe)2n z-}lv~Bru~lUUQ60IEOuH7;CO6FnV5Q19bZ@!9t5G!}W2esNa3!QlX$%yHTB>gxb-M z_KRz0R@UaCI9a*;+O~d>u*VM(viF0GXCi<1>Yx9b=GP!mafivlCVbyt{lEc~-93(J z3h;U4-j&5qP+rral)G~*&QlZRAk|H|&-_uOZT*5$ONjfjBgl3Fe(u89hRyeJYm?&I z=@k#LuN;L`{LS{{=-wl{TRK-1Ox&~uifM7%GMs_J1>81Dykd&LraMKcAGWzn(dQl) z9F2|HbG>i{xEpXZHNlB`$9Lx0;9|?@2K=rjd*bmnVOIHPfs_ZPDw^NN;C-Y!5 z@GpimS|+d39mtUj4+urb_G!=RjK=`aSa{;Vk@0|&0Pl(LUdDxKRAEiS0UugEu?ri$ zN&W>)6oE#bSH{^NCV^4Opj8<`8D%~V8efeNh?{G2ov{7z{L=LM^%MZ7f<9?bdW(!Z zxFwAHqUgnx4BsMag1ZzAQ)W|{i#X{ZZ9!fE#TQi`mER-QG*%+JwNrzdWq<~7!XKoP zO7Bmt6nFSDrGE;hnTQ?C#8S|q;rbbl*NhEz34_o1oQ*Qw&H_=+m_!z42QGtt79oi4 zbIWGCkY?R%V3h;LQ2iIc1rWY$4=RUXIAtkw*5zZ;GyV#hs3xomBbAzlyQ20!Fs z5g~TKXPT##(CV*yEw?WIKE08Zd?SYX59s$REb-vuvuUO4?CE`X)OC}apn#j90rL88 zaSU>{kvh%`g`SvD+%)OpYt_d8&;nK#8o}gnRHQoJaBesadq6Ycdz|sfR$$l$>ZJVL zJ(NN(qM7k@{1GXKV^A#m#T~MZ^Cu_a z?^Ezh-+~=A*~LOp>+2E3-(IzIu^pJ5p9X-dIeaO%y3U_25_3^c4Ik_}7kel?10rXk zlzfbMq3N7-!BuA~c%WT2*L<7E-B)oA$mZc0zYaXBBpr8Y{MhN`GR~d@y{ETmp~%OrZP@NErS=} zvLpB&oFb|UHM7`BTCo>(|36aM4NL*u7XFoE$Z@dcql0_mW)cfPwvoF{!c*@UjI0JJ8Wi^4~VGk{@Q5 zI8qM2KWpGhw8)6it>nO53B2EurSw)>@67Fp9uEO~P|(32CeDH032bwQ-@}{O;Rv=y zN(Q7YBrTF|E2Xi?B_3O+4mpqRg~^}gFpYaGzyg*F|Jy#* zZrQ<4+9bk8afr_$elgB-kO%e0WzWi7t=HB**SFkuLfg^$pbSYo+PI550lnlAiSMeE^cL1?AxP(YZ*Ggu|XdPI+@-blb?+9})Hg z86j4G54fnv=&N17u{PBGFiMUp*!{FW5C-@o&$^hf^MRk)7zIC3)ry86bR6*Oz1a!` zaF9PD7z}oAz%8F4{xJH3D-%`Teo@C%7+%NE=^jN>7FRD_nRj5axEBh=69)Jer?>Ib z$y=VHJ*Q@vY`+5KVxV@g7bI-cx-se8|o_j9(=|0@!kZb%X_26`8|I@+Uc=$V9 ziUm8ngHs|5Nt-n67f>yc-W1IQVChJZ2*NoTXqlQqa%L0Xy=Rt6VO#S}GVg4N5xD%7EWY=uBB4QnzU; z_JkXx@PUE*MsBGu^`OAmDf<&ieP5_dY(AkOh34PiM_-h*pcyt{d?XN@9fl~tX>eOo zH2vY_7%Lg#ni{|4I|Py}={aGDaxQe5JSh24(x?Mz_DPB!tV*Drr#75~=h8)Pq&@D$ zXG^Sdwn7QZR-f~9r{GJUN9fFjw7u>lGh{){`wKQFqp}%vKj({MjW*en??hN?Qa-8JHBys<>Q-v!Cj9Ov96p zg5(pbi$UuW(7F_~u9v}_=z}4@WhyFTb9XJ|&sAORo~^wyP^>%*c~}AN2ntq0OF6^p zvKefkR>8A_v7V6`X#M!D4fjCy&yhX>8A3L<2(fA)Jq#->Kf(^IBq|r)d^}&b+VD-@ zqz3+83oPqE=z5T=0gT-Ue`|v0ZfaP7Yk;#>N z7C@afBxuDrvyrKpmXQv4j5xz&s+N3*6zkgA8NSkYygvb{7!F1>^e+B+-{vx~Q^>=6 zH;8tn4G6RY-wseE_})LSK3A=z!@3^wb9^VoviJ-IoI3%b3x>dMAdt{1u5RkZSwuVdH|>o0$v*RF1aKA5UAp2Y+|TohP_7yeZy#?f8VJ}baLthEAP#p zw8MZo0wur-n-r}5VW#MVy|>ox`?A8^y7pqDFhGrkA@^MgD-lS=kY%V;8d2(*Y|FP9 z-ZArdejI8}fcpePYD1U|EM3<;uh{HOdecRz)IX=%a}pH!1>n{@Snrztw5&FuKH_+F zVm~$0ZihEr22G-CHFg=wW}WQKzPGVNU@`?YlB7WM$G#5}Yx6!-cIym2J0Ot7n+`)% zZILZ;)IxRlSm%ZH870%^>tuF)mj|2?^j_VU5dYaz{)vrga$0mlc5`sdrth21a;|Yn zhvhEG)F$yOni&vv7EI?shn?08?>kon9J{vNJmFl?+EY_J2aYli-Dd$TxJk0gm?^kJ zg5swVjhQYLAIdRrmDMei!!9XSi!S& z-I&j85p-ArPN{z{Um*^po$T81h-Qq@ry9Oee0CYYD;T?-uf=q^7h^k}g=yhK7gDF1 z6&i)9SE1&FCX6NA;geET0wTU~v&?AaY{keL)bUXPE9+f1^1{jdRir^+ccaQnxpW-> z8&GQ#eB4*%pEuyo>kJf4n|O__(m7qT3`F5u0Ne(|9q4aUp8{#HJL%poGqdqFS`^c6 zB`rrYS%te`fW0t8Y#)%aZ~eVFBM!Awwbj-}A%&z9}ZI7s-hu9#c>8Yb~oz3T3zeUh7q`d9rcv zm7p_U+27_ZkhUN=6RzQiWDM$QfL30!6IRb9yV%pfQ`y?2^}r2kxP#pBFR?wsmzwm0 zQT$Xp3161j?)D9L-v+I?VDmi2UP$3-V#3}4OF`kX@G7mVvY|hiC z>jj1*cT(tKZPV2fN4#8rX|iGT%lo{Wul<6;A=Cg=Yk_!Wa9niihZX&1$>?bIb$i>w zW2V7CuO3do3wl`h`ul%)9*7x56QeMY&s(L4dz4RKR3;{~8cnd_7 z3=R6JRc;|sgKp1$kFQ&Y0wfIV5DhoG1Ncj8O2)_&?KD;uWwTKq%`=cR2Hob2ukg>0 z0S^ zHU8@}kzkSa53n;H=q8+G5P13PUG4$R(apO{Q9vmgm=|zuT!jcCUP}(PqQ&>x?^&&c z`eJVQ$3Pp!0yqxSM(Y1G&o!x|uML%20>;XpDPC+b3CDx=62g&tiSX-*pA?Qs{AOb4 zjhhTl9`I7rHF*Q~`r zmI6eMFmZTJd#g8UCbdtoiH-&r*6BS?4M*;#g(E8cM!vYe2+=*okorLe85O1CbNSV| z=f~5-;dCTOy34(B73SC#TgM145ala$30Lz!<#+p*35sMv$qq-9bHGTs@LV9}iedw7 zz}YA2cJSYYUU^f!`yDkXbKT8@M#&F{q&(NLQ$fLVvX*P(Ya{^+M?A|t;!Oom{Tpzr zxr%kzcgbCWeiTPSKQ2%XX1&`b{|>c(07@ZnO27X%Xw~fFosQHp0RMKzc$mW@7sbR?5uq$GmbEYDyT#?u`YWHH^{awM z8&4dY_U>YRsPkq(MWz7~nRm;Eky|oYM0uPsBll~dLHsrT zb0-O&f?NCWqDW!nlEARe^Rx^0?vO>Tj}WGiu;Pgc^epMd z_)CilL7!TnSqIYBgH5*KI52js7`W(iSbP&tK3`e65((PxZ2+c?;fPp2UB?Ny4Rn4{ z3#U(1QaFRlgeRVrAhQYM-nSrIOQu$im35IdoHmw^XEV2oyNo8-HWyrpH@AL6WD(a@ zcy}p48J)aI%C+LbQER~w9XU?5d%YRc?(`by+tZ(?$vDp+54F6wOf~Y+wgvll2Gs3V z#;HqId0TbwgrdAkYI5Ag(8IQa{-quF=sd8t=A&d$dDwBTrx+ z<3%@NX+N+z* z#E&yJC6nx1^9(wn?Yh9ZN4T*cMoU}x(__uN7WB)XPP6T;T<8V~fQo_F z?BZBNfki)5TDc8=&v~=Hpt<>!>ijniTCPgk%AFf%X}0Il9@B{%`T+v-Au&xO1Atp^ z1aB6vUG?N>OM27$x2E$Hi>5q>%+R|wDaCU)YA>9t66g8s^7+*um}>~$QNtjRacgAMR*%gqGA|pUC1(ULLxvhqHC>vk9ziaD5bNbobQ82?8R2|j8 z4uvPr%6!aextz1Qswmu_Z2fo~TyX+SF$o-g0a_#hAra>2L-A02$+^wL?uTMTF|t&{ z=cmAu)8IubA7)?(a?m!m(DlVdcR1IK?zSk~(Y2~s*#$q>p9N-fKy4m=7eJy#XznFw z&sv^6B#vg408-Auq!@j?_8H+l^uU|mO+4p0MM}C1RXU^?P(ClQXKHCPlLqrI7uzQ# zELY&~t5AldF)@(1RtPtZc9>G#ME85Quh!gaz+fH5$c=DBZWF}c!o%eJz-Ii=7q}~I znsn(?v?||~xKjJ2Es)2?8`F=^`KHnR;QLLKa8fCJN4c$P8z4KN+u?eeKyT!*>_Ij1rvJ@rpnmct;@0K7e(g_cxWs2d3H8{2r8`$<6S9D26`W zHv;w`A~3Cm$@ci>T&k6ShwKcg$3p0OT=0@VK%;d4F!-{nlQ2k1G0>8Om!T=*MF0Q- z!A^T7*mgSi=r}i3ec!dR@Ga2MeM+~^5`lV)tJd-i8LDPs{G_0-6-d?L|x@_?oF$0 zI@H5>1dq~u(qrb-uaQ(ry2uEi76~Oy6ed8k*tz*m;LseD2ys#vhpX` zSIfO9nc5}=%gfaS$DVkaZRf>AAgZy@x^YlH9;9(4%-|*1zXYEq!g_a}-*%*3IPhq! zQJpdBO90G7AeIDH3%UYUgYGXqc2emxt9S^GurzZ`BV+mwKl*8(Gj-(ZfVrgK!i(Ye zx|Yd6I0Z^7$gu5!bW1`+nNVD4;k6xo@5pMZ35|ON@u6o>p+G0A8Km&oO&pfvx<2C* zX}~ERELHFrYe>OIXA5b#Cvbn1UJv#b+&r5BqGm?G@&kyT9Ra7Bfx|Z;g8$n~bxWD+ za(v412E|KAcY0?R>_~~aJZ}*8I7yN2bVIoIdEg!9Tp%$I%XX+qzzkdO;~b&p{@fnr zsI-AR0OUg{h(IL20o`!+e|J+nnFn;>H&fj0}aN~TA z97x7Zzx(k6swF7F@kTps^=AxImTZEiDacb>^0-1QfF3>lwftwqW+`v5%qjnFo(<|E z?B6v|S8Wb+JKe~NV}2p@;&sm3#bAb#2w1K-i=C__=^Q>d`Y<&zLBmMzQhGPA6nv-* z#4LyE74V#N5@!F{h`!g=y+nZ%)Pf2Rde8BQFcDS)p(+r!8Zc|%w-$)jK}*(yjT^v- zTX@iiv3abqp=y^nG&EK1tVOK))eBxmbr$EFqiVAq?>4z`Oem$!c2}z1e%T28YA_*} zQKiS{k9{1zS<$inTR!H>m!=4~4G2mLuxtf(KjFCzo-;_`=F;Ei2;krL2+T2TJpjn{j5e?CW3HCr0SKSx7Cc2nq4ETU@ zVj1%nao!x$aOL2>u5m`a7qsew(ht=KfbAC1zvDwGDb17g`U5VS>w)?MVa|@FdMNjo zGjz>3aviSrCFKVpy}pA`VF=_L2A>*%PU?vt2uoVquwX50W-Rh*D5ixGmeKA`$heIH z#u#9agW3J`XK@JzE~2?|*&}ss{;h<{UnJz(Eodh|jJfmR7o{t74}Mm1&fIJbB){q>&+4)I42U!fjNpcQ zY+z_>I$57>7YVV(h9ui5X$FNkFzYUj%6* zAjXxL)^t-qX^Ijrn?^Rkt>wWI_U{^Kw#~hkb4L%V=UK*UxJF$R%Jcg2&?HOvmC5QLEi{74rqw6!%bIAe-eXUbgm)_u zi2N$(w+4Ey1B-dBe^3ATeq3Ch@{mwT3U+pNXZj+!0T`Rm$XkGw@bvGCiD&NI$qa?( zwn9A31%F=pWNib^4z%bdZ0UhPzb#x>(kkbr3{xSfrT=8-unXWlFv8Z^eXyg85t#9X zmX0p;>SlqnRx7No1i_TD_ncX{GY^1C;wuJp`q=5ixB*<8#+$#zAJbajI)vJACJx4W zfo{Soqgh&Ir4ha3AxFoJf5U)x1oZzvS!b>V_AufVsTw|`BvxC{#HH+j=z}N1uuzB(&9MVNJQ~VBwX#LvMC6lO*0U#ACgpliBEf}7~Rgr!6aT{}h8ZqQ6^ z%H?d#d9E{K5^@PAJ%CFXOe0k?-w9sUqUTP&Iz3ySGqBa*GYRvIXaR zDbKC|D)wrtNPFpURD#~+$#7!%!w?WY6v_{C%>3$}vHk_e0BecxZ|50u+Ie@vK;&>R zN*E<}=2(1hmH(??=o$V_GMd1&&b0^tM}n|Xz%&|&#K7;2=Kpp+a+_n`rRRqYcQny- z8dE=BiUoLFByukvtdIZ}vDf~;mxe{Pe449Rk`57{pkO$2+wDXkH!TmVy!Exyd~;f? z*Y!H@nK-sDb;_d`_nc$Q+|>l{oLjqn2geyF38?n7frE0rkN8}*JxF3g_FR0cG?G3U z0Ll7bhig04!r$nk@{7s4bOg)(1g8LTZyAVe@DiF+l^1lNnbC?Ye86=j6=X{TSQ8^= zWN|20W|yoSxB|GSF z7cRurwT1hY#og%kb_3rTpM9s4Tvb>U#B{xuIWgE4Ilax&K_W3Uw`xx7+ zfMhkePYqP6h37hWt_N#3+apy(1q|O9dI=LwfIr~qWGzr?OXuz;sCMz*Bg$=np`a1E zI^6uzkD1V4P_5#8T_`uq`&GZ0S zeyZiw4z(9V8PNKHI}Gaaszox56;CyOHN5VCYMr3L5)C$-pdlxtacV|qfVAw%sY)t0UF6v;nt>ISh&FQ(A8(ANF zLEt`&&0k^i4_LJ-aBJS1KO~CG^3zig``Hf_2LPJG2rYt&nz}_DP|phwc`EqOTvu@! zgz;|(pu>@vEMs<{GGrO64d{Jq5%5`DQU*_CzS)?11Q?70nK2kBe_3JPf6&vOYK7N^ zq>}c1=&Cu7#J6XSMjyt#Bi?`B>a6_*tVZM@hS29` z%B_nJ3yj2$Z1j(L9ZmsWVG2lIfi08%buEDVUd0{a_w$$GcS`8@S zcsaeC8RM|9xCtEN--FEs7x?xnxK#?n>{z5<6;kMJfep4nl#IXEOe9B$t_&2OG--bJ z;Nk>uAH(kJt4{Be2N$f&=8yikaqR(kAHapMPzT^8CFvhJJ1z2w zIy(o;pA+sL0M|nR{|4Fe&is9!|2Ts$yfW}Rp?0uNFGDf^`VqiV;Uo1;Geye0p^>)3 zl;TB#3a5{MKrfppNRbnT$bN}}(^nqIzt>{9z8OtVyS61zS;Y2dzERHBE(#*;pf~_p z!G*sjzxHH@`#hy1Zo}|^1Cj1@v||(^;{-UZgk3m2%xE|X$7#D{CuJ|_!sgb263zg! zv&F2b8+eTPvdcA7C_9oE@mIt)xB$d83O3;3*F6fk;{i@e{@|Ae~l<w z9@goxpLY$C8oc6ttjdV62cMFR!BaTr9|g($Kwf7i4?Nh>q&=c8vF=wV;dVI0GO`v@4$rw;OHVSUg`5P^;5rH%RP}joZRY%?A{wJTQIH(MJ=nQCh z&h0zivv=3|np?I^kAhTkqV^mp=|{C&17aUSUo0M~>AlvbO88qt16?s84z&)^ zCBHE!xHUoioH-F>N&=aZ;Wq`^GZhfiK#Ot3|DIo17a#!QwfyU#gH?uou{ z;ygR>Y2fEKkoG&2VGnGk{x5dvKi;eEb|*2Eq);J?zkh&2t+Itt@MUCfq+_OMY;;)| zJ*gxjBTiL*On^l4qeStO?IJ8v@qdx7qMYG{f{vGiNEt^IsagXe+M3#OwH|GYi#zlV^A$J$s>kABfqYfZ1F@3%Lc^G|ydC zHx8h02QPx`!4y+2?3U`e#SoXEYk_O$ji7;^R+#)Nu_`m4=v?e~x;NdhAJ zAu}L!{3Wo~H2|zfAz}fvhnR!*i7WK0(g~M`^B3-xC#XFn+JK>I z6TCHzI#COgl2_AGn!o;t>GK>-B4x(*V(1pOS+@VvEPR(y{TOv?HbrA|(kXZMoQm_m zcCbjh|3%_M$xqz6cyc4fJoqU1eTi_#tvwKA9|qF{(CQHS$#3{Qg5N*TEH=@Il5I31 z^CcR-M57V0Z*H8me7vYsAd);|b2DCE!dfh?sB*+P8sh7qY&>)YMCTU< zm=z8qdQ`3?dt0!0C9P}Tl{n`)*B`fN*d1ZPn2%1mI@~REV>6G!)O*b4raM#)r+`~2 zPU{GsomwrBB^eH;yK~~42mF1Bj{)_wJ)Ktg^lpCG=_ktM;rG`(L1-_4rC-P7dF%KS z(77zBae2&7em`e6-M~8 z>S4}@xJyJc1ozMR0x{44F76e4mO8Urz7$oh>9NsfPU#0C`$t1p;c}xbxsS@uTGQ`# z<%%f0;T`|{+CnnmZ#@n4aJs_VYX%P|<@RrhhPYnBKmhE)%x5~~(ao5Ji!=%Ar)j2= z?|%padSAiZdGy!`1kKNupWhdW0~HVXl9%*;t^|W(A<%-M@Vm_t2G(>i)G{zgKfcR? z<}&l{bzXQ(#>7)ccj9<#SvcT~VDBWA%j|n`WmDRb|FW&+lvkQX1VAF8M1i`|AV>^6 z$HMa-gvI_ZTD-Vr!hfF1?T6E1R;Z8RluI0#Egmpe(M@yybvx2hjFaDFA` zmPv?49wbI1%4Ki`155|h^eF=hUz>}$=jDD~8<2hrM@FQQ0i{?1J2X_su)mH!Cpl~0 zbb#A;OolWCh^K-mn--Ylf8)|YcvSAwXTv0;Z|IwyBToai*>;$mTO-`Zd&$IfZ_5c( zlD3bE@TCLU3=lmN{4h%9pC10P|8pJT_}f!YKEC;N&E-dB77!kV>jqsPDwjVWH(JX4 z)HH2_SE!#2m1ix$-y|+{7%C1&{8|f(e=nRru$KcBazWU6{t!Y2bf}(&^|=Wlq_t@| zqqrR+p7$53fj+%U#}jn?VS^C0{7Le%q0D@6gm}i1M`%AU`y=VXh7hi+oU*p8T6zT_ z|2HV#LDD7h5^4{;1QfN*e0AWb3k&<+ah>h6UXk9{9+Eo7Yx zpZUGTYPVSg;9{Ur0^AF4{@rV)n(^;@(r0)~PrHQ4#hCh1Dd3cW_w+Miy{91NL7|c6 z&*@7Jg0B{0vjv8%QK>i4*WYgGk=vY=5*J{&$#S82)d@+ z1ab|%1i8$LUM-2Z%%r#Zu00_I6whI3zrni_I7??T>*&IjrdXvsw zjyQYVL93_Nc^CXu?bW%|?<~`Js&f8{!<(8S zy`WswbqzF`pK9vC`3$R9C;J#w#m!CnfNno@>;Y(xLGY5pH^umW*W>mVs2LSfi?6NM za0uPjIMY0YrNDrG_NEh>W9xcwJ?wR{?N;s0VHnUy0JbAUu&IL<#SZcvvAEf0E_rei z(zG{>f@6(=P~%V*;KDO(UL(U-Pr9!zr2PCNh+F;evD?H1bizqM^t*uB8AWwExE9u* zxtzMP+e3fzZfWZ;Fy|DYcvxbS1L8P%<=a1x_BdlFrXN?(n>P(A*zrR%1PY~Bj;=`A zI>nOFKV~N~n*o52JOD1Gg=yV5*(Cn0dA4RPI#MqtCxtD~Njy;{&>8 zm}pK|s{c?uI-mGi?s;kAqhOa~ch|vH2GpGJQ3ld%yS|pd#?lz(PeE;()f-^mO<=hN zwmjhIBTSaffvjbkU3vIs#9d92hu2Ama{S9xM6;`?_b2;C7dvjhm&rpTt z0Bm;%zV#crgd5pEVHQ(0YF zqx%EI$7sQXH}*HfjN>!X9vcaV$t;B{v_C}Go~~@E_`WIQ8>EM zzjiSQt35nBz;hrkoSeLY*$kl+B;XZr%fmg>w4Ztuz!c;d1Bc;aARS)__yTZ$S7xY~ z7^SSwqPN&bN!xhf47C@?FeW)3Dyw~IIgea|^{fc{DI(`^1PwM5EQ=+)>XpoOEbf?F z`gs>%=Nf}ZKvD{~7}yEW)iE}I1N%!W5@=(!U9+Qtov>R_e4ZB)-IGg!s*lAnP;d`; znAI=O>35p@xC5*9)39C=8@pTpF4{w`v! zbm(%)6KZ(HK!_Xs`ozE;d!Vvk4D#R`+kd|+SsRJGw0y~|uPans2ryC%nZ1FEzAcW+ zu1}Wvaq?P$-G%LE{xOJrKnz@fLxR2bEvO@=M~z?4on~6lTrAGhB@pPt`V*Lsp7-<1 z%ptdgJC;ELZC4oLgMjN-fbNrFPu~uwG~vgoi~gZ_K=)Kq*+)4TtQ!&oSvTHeN4IP~ z5mM5Sh&k>xa#;!8+M`gA_d9F~IV1;Justj(<}X$#t;CD84+DzfpjQM?j|7}3&?y&I z4gSrknC3QJsQYHF#?Xr4r!50Lohps*`d zD*;#62lKeB-!%$nO@|VIRw9U2A%Ok%9ysL;tFLv&MZ3Hygr#Ln<6YeRtr2)899lWr@(UFmo zhMDpK)jg)1Vhh@I;1~)~w&*5<`}fhU&WHW{pHft1UYKOWAh$EY>k5b?U_;Xg7HWoi zm?Z|zT;HUlFRpn!odwp*2Amvdgl=Wb#t#D;gzIJhtS`pEY* z%>zpfD1fD$zZv{u#`)a)JlW-Cap-NSd|+Dubjl?#Q!68d8;|B4t_|4~a&e%oQZ?T| zqwg_@_z%F?Qv4gV?ZAh-b0E8{e!SE+)Jnfv!s{W*a<{YVnfrdK9d#9cJvzcw28ZiOZ^P$>Wx~>==(Vz@y#ibs*Su&C0?f2)JrDo3?m4IC*FdGor zuiD7mI_brKJSQnslryO+1sV4#%b>41nVZ0-t{Hk~uxCkX{LZVVmM>`a9h&zA2M$jsmNIel=J)+x2h6MIUk{vMwe?K2>i@;Bu|k zjhYxlwHAn!5Vcu*Q=#Hvd-Ykn>YW4z&zvG2pQ)<@khcMtFj6jG@285+Fyr+!y3;2g znAXQ2vJKEJd+}Wf;B9|K=7q+P=nr#zPOCZo`epS-VA%w9o57YXpnEHL*4LZRO)%5x z07bNO;b!i%_=O9lM()zLWs9_b!Z`PZr5qO}oTOw_;G}rN$x9Y)-?WajLH}t7Lg_Gu zLuh2(&~vKm9WE*0i`ruWyKzH}~uZp4&E!$E)!f!4#o zVFdm^0*O*FF$dV~2u2~XHy-7^Ii$v-cbsD*-;Ro)Pbs{DD(#i|L&Z^aR|;1Apt6eJ}K0o8fwbP@HR>1G@7- ze*v^y1R6Dl1bN3B4B^DsY74W7W@E6GSyPsI9#Nvs5)fJji$)V+Ut}XL!LdhrmiLiKqEA%l+;86D%u0Zxw2-0qu2o-gvkHJ;4FMVWWeR0X;TEwKeHu?;Siap|AU4>`83 zM538{xY=L51fR&e1?>QFI1C2YNKAQljbtR=rAThyo#Yjj+=beEF))DugfvltUY0Y#_CC?AnBd}3Tb zvLa|M(XokzJ>au_kjh3?v-DG<+=57C0bccZL7#0bRuBgCny%sg@wiI;KTM9nOScSC zzr-REb^x@GgHSVYP(7JN3~?_8l$`M&+c zd*;r*I~{C|c?m{Nz;;6qTy|h0u>Z1!45?r}Hz?KTCksyc*>#pgvSTVp z=dK3IY3x2dtsHMg`$KAxruG4~4_MeY77_D;7Ivdj1>S zud#4W2wEW|7P*~&Y3fNhPP8wA(sD{)=K22iWAw4g8-+xfcS2*4$6>L^rEn+%NJK1z z0e#TbGBqQJghvO=6Pondk3p&?k*?G6bC^zOtz%RyBGXN`PlEmyr+7=$dL}AypXrQ} z;hDGDTxk0J`TB8+l>2N2*J4;KzSl>Cj4>eNH!-Y?c7gn6qk*>FmU3C=$g(`WV?jRH z9fe89L>RZX>5ro>osR=j85Iq>aR7B^9is%Gn;45I zjq71Q)E})?*6|RmzqU{%Sg?A{YM2B%C&wbHO*Y6PMG9!*_3zn1JyW>$*A(q}*ptpU z+q(R8gW2cogIe8GFmm%LNSpte?75@X9~TK}SA*oMES^+pchJd_j}43){imu;RO4;$ zn@6XCXdY@Hv!cgH&lL*%1iG|T%jDJW~2 z@f3WLH=vZ@$l{FagwEifx<|Uoxd6xm8%07`2!K!2_snZ3KOZ28&fCm>Z(R=oQD{h6 z3D57SK>RbtzM^f?Bq#F0Ftrj3LTF3;*$&~`BN>5GBzAv1-_aBRt#2TI@eS-;?o)=_ ziw#GOT4E8AqT|;7-roWA18h_XLKcDDi(zaiiA5BG@&5@@1ARm81qPMS25269I6bZI z((Y9XUR?%GSRMz}|WptmrtKd1B|) zHQM$I z-JsW}9)5j0^{Ut0X|EPEg3Io4(R3pR$~(hp*M1R4>J46H^LA24{S!0kH*cA$xa9t* z)MZt4tBZxm#gjW^C}avg`K>oY(nU#~>v15OP!9laA^;>ee0*T*i$f_#GE}x$*)G`t zhO|?G$(;E?0Q1Kf9I0y(<5a$9lw})1ob>Y=s1&`3Df#Wlm+R`42Mh75xlP!=GoV#; z8z*PpMz1kVDlq8WT5fCxE46@zS$D8|g-at=f~Gj`8{g9!(&(!m-=DpVZoH=AQ3+1w z_7PY$p5gNCX$8f8f<1=*UPN%i-9>?&WN#l&;eq1!fzM+dfc7H9mbu;g{ux9-iyxGencqftM&)iczm3=8(8!}llMaN zEq?mvGj+s|{7#y+u8LAe`l;5@*|a{;C=)_Ygz1+xLL6e^ID4k|+T$E5;t5g1QnQV~ z>h-2ggG*!mdm)6=nrQPkr;$r!#z^OeqcIn=kV!wVD8t;~ETO;D!FG;J6g8c=vV+_* z9{|80sAtED^=e)gUF|N9y;S1NuheFOq1T51{Pi-_W2CU;<-1H#ckr%xwXlXcWEjM; zaex_b!SkTqgD{6{HT5ZqXFfafjDWtQK(I;->p#)29#cKH@l7DvlMfjv6W1IAaJdCI zmJtV;dp(os)1~fQ!O315v2h?cMG6T4jHN#q+1M3_mgtJ-Yq`ZwK!v%-VBp##>!G29 zYZ5%+mtF8FwM!m~#lLV~o`3#N2HWp%m<-3vZ{E5UI?XEfJ~ed?l%J19 z?tfLoUVt#CO2VLe|2Ff>l$|Gbj|S8hp#CDDEP=kw0@xT$v{G65)G5t851q_9P1kfo z24!*r3WQ1zEEOp+=EX?>&oxl&FPmt^wa5MG07 z>+rhRfZ<{jL@c+33}}DX)a)w+L-*avWE`7&ymnTqJ&@kmdN`z0BSriFDvhpF+vZm=eeov2|X?nN0A=^ z>szyJ*G`4D(ii!?y()zvX6tSE@iMgiL>8%1+M<&T*uuUz9)Vn zO~oM&K24#_3c(kk+v?NfIvnRXrSys~Z{jLeImN*TG%;vSSA9n>>E5M~5;ghRPAv8xp3V-?7u<4SZ{NllLKVux4KOVp@4|BHG@M_oC`q%8_W40b)-^O_NJ%Lvj z+;Z`7H`IFXMNmfA*}>|eX1skb;Nl$z3nCuyr3hBNy32F(%XshNsF6u^6(7$HAApx* z`kBye@lJ}#vbG1J`H1!}WeQ*5qIx^PLGJq47po6W?I{0N`54pW93gwCfdTUEeoLAbiXo*Pq40MKiBh?;blD&4m5&b(dUj< z>qzv=QL0y3+(lbZr(Fo^+u)$>KMfG+#;Bzc7C^jK4C&7IwlYDbJqN^yyOTPP`(KSO5f`1;8*-%ZELN2HxBxw)MK*hR1OrZakEP zI79;OyGjHby675UU+ShwnEzPlni*sA^D&_15$OD*E5tR|YQ;Zth%e>AwVUWON1Y&n z8@F36KN#G&({x8a8Po}bTUXF5V>89kD>ZldZ;eLK+Mj%v0zNi#79!EVzTvCcxF#&# zy(^&A%I8Cx3L2$BNsogB!=W&iU?W=da@@`0{GtmCgb4ZU>U5?v;*f`#aflpv(>5oOdn)}t~uZlxzM6{K>6@Z2hraFib?j~j>9LT zAmi|Z0fis0{qjND0>G#}c_ax}OfmOfnI*4WwL0BTC)jtb%IzE2r4*BCjdQkFD~1&xasfGy#GWXRXy|&zmWFt-L3Sv22 ztJ1&3G*AYP(tv=ZZ~S`mjn#3-{ky*1LOZKyo*%AnggVS#RqJJ94=V#>l>=?h3)l?d zS}KjB!55b0HGQJ3Qk8o2Du9)f3&xq%N>eMpCm&~t4|ZSXu%1(|1cj>N5ZQjZCQSNy z91;sk>H}W3g2hgaXuRmUN>i*+HyoU_?eFo7Nq9n0GOFrCN$rUsbR!k`rFi(uF5 znIr}-SSy`RACxZOOE!Fo)Wsop>*ElyYB%J7IRchyA6(wR{fvK#Wo!iR_UWxF3Jr0H zQX?=Q)E~ixs~uDuhw+&_Qrj%l7GrvgDzutF`4l*U+%R$ebk4GxK)v+Y8guQQKTVkH?%a$|Qfmd>e?qAs#QF)< zh*Dw}{k+a4FRGun!Yxfo&!WAb8clu%EJfkp5*WSWF8Z|%lx~Lx>VVQuH$;a$r+-w7 zzvjeb^NML=Fs_s)BCJpbHDXHfzJ4R@g?#PPHj@WR&pM%zyP&Jp|GiO?VMblsJ+bH6 zvpnM*RrrGL29;p}N!$9wlAsHVMNAq~fSbkX|`_lIUqWSP7@UmD0QwUt@RjGn{iS>hR{ ztV7(l-3Lg5;|GC7Cgh&r@q1F%7KbE zBeb>oS3WM!y(oOzSH*6tRK8#zsyS!BgAAxBhw+I0p{ zXQ6c& zO!ha_gG?{i;*fj6aE=8X>gxV=%eAg7zN^;v*vUJATX2Gvw)W>7*|EKXiKTct(MN+5 z>wuhRhrq{2Y1-7yhbF!S-l@;UCqG>k+yDVKL6|N0-G;IQWfw}C$sWecrn+ypqiyj%Q#VVz+G)MT%5 zx0PeA@o-BoBaBup233oF0k(pl@5Z~@6&t#!kX7>murGj16|rC!z1(&D&?jFk)7xJ)9#y^e z1CT%H3a7O&QPxhpS=(l-CF26EN-{e$7EA%aHxN*QK!%J@X;c;v$Kk`O%@R%DinBML zGSVI*BK#Fh77W()3j6EM4KH)E3027bGerUkNa*d)gaG^(Kg?ihg46N2`fz^|uyk)f zD`CqVq(EbmzRs$1@Fq+R@%5R~8ykm$-NJxZcsz1H0>p}h=NNS60>Oqr$)nke=+yad zT$cq%4|yG`U+rj|*@*)AqJe%k@eU>@&+%vP(JDRK!;iZ}zW8r#4q`z0SZJjaShT3O9uZ56M-_lJ=`~QC?*Z{dhd45~Cmk-8xK+F<1;7vvtW{kLe_auK zYL3|B;X4as(a2L}SO8oK8KSH*@bj6xv?=kiEA^k918Dx;X)jvl(csKx@)uc7vFJyy#}XS?oR zyfd{SlT}m$fKV5h^6Wg)@AIf6I3e(-jED3@ghMU11_OEq--z6ph{a+5l=b!VuB~ZPyIX86*`_v-f_VbH9k* zRoV@duXvh55Z>afUyvHR5678?oE}eWU1h#pRi`#yYF*j_&CnW;NaRz-VY;&c;wAR# zV7s7rXZ?Z0({GVK0qllJIrgMZIE*#2Ht$xXR~y&7;%FNfwaya0ThMdL+Y$#A9!ZLM zDZx=Pz3m_;G#s4CA(rD%DP+YfQPtwCCFgz70sT5u6*|3&{NQ_ZO^GPkvx$ZES}1V?FIawVCDC7N=WeRXM}f1Hg3< z%;hWacMX;Bek6x_3#Y|O)%z^%h^8R`4TF2Sk(Xm;X)h%M-zn#I6g+uJn*F+``Njx{ zVj~IBc>5`QB{ol8)Mk*)og&5QQ4n