From 4c083c294fbeb2a590d3fa2e0fd353fd09272d93 Mon Sep 17 00:00:00 2001 From: Sleaker Date: Sat, 22 Oct 2011 11:17:19 -0700 Subject: [PATCH 1/5] added interface for new Chat portion of the API - and basic class structure for various systems --- lib/currency.jar | Bin 16545 -> 0 bytes src/net/milkbowl/vault/chat/Chat.java | 618 ++++++++++++++++++ .../vault/chat/plugins/Chat_GroupManager.java | 5 + .../vault/chat/plugins/Chat_Permissions2.java | 5 + .../vault/chat/plugins/Chat_Permissions3.java | 5 + .../chat/plugins/Chat_PermissionsEx.java | 5 + .../vault/chat/plugins/Chat_bPermissions.java | 5 + .../vault/chat/plugins/Chat_mChat.java | 179 +++++ .../plugins/Permission_PermissionsBukkit.java | 3 +- 9 files changed, 823 insertions(+), 2 deletions(-) delete mode 100644 lib/currency.jar create mode 100644 src/net/milkbowl/vault/chat/Chat.java create mode 100644 src/net/milkbowl/vault/chat/plugins/Chat_GroupManager.java create mode 100644 src/net/milkbowl/vault/chat/plugins/Chat_Permissions2.java create mode 100644 src/net/milkbowl/vault/chat/plugins/Chat_Permissions3.java create mode 100644 src/net/milkbowl/vault/chat/plugins/Chat_PermissionsEx.java create mode 100644 src/net/milkbowl/vault/chat/plugins/Chat_bPermissions.java create mode 100644 src/net/milkbowl/vault/chat/plugins/Chat_mChat.java diff --git a/lib/currency.jar b/lib/currency.jar deleted file mode 100644 index 3bf2b5f2bff5ed871cbe856071dc776621cedf8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16545 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 diff --git a/src/net/milkbowl/vault/chat/Chat.java b/src/net/milkbowl/vault/chat/Chat.java new file mode 100644 index 0000000..9e66759 --- /dev/null +++ b/src/net/milkbowl/vault/chat/Chat.java @@ -0,0 +1,618 @@ +package net.milkbowl.vault.chat; + +import org.bukkit.World; +import org.bukkit.entity.Player; + +public abstract class Chat { + + /** + * Gets name of permission method + * @return Name of Permission Method + */ + abstract public String getName(); + + /** + * Checks if permission method is enabled. + * @return Success or Failure + */ + abstract public boolean isEnabled(); + + /** + * Get players prefix + * @param world World name + * @param player Player name + * @return Prefix + */ + abstract public String getPlayerPrefix(String world, String player); + + /** + * Get players prefix + * @param world World Object + * @param player Player name + * @return Prefix + */ + public String getPlayerPrefix(World world, String player) { + return getPlayerPrefix(world.getName(), player); + } + + /** + * Get players prefix + * @param player Player Object + * @return Prefix + */ + public String getPlayerPrefix(Player player) { + return getPlayerPrefix(player.getWorld().getName(), player.getName()); + } + + /** + * Set players prefix + * @param world World name + * @param player Player name + * @param prefix Prefix + */ + abstract public void setPlayerPrefix(String world, String player, String prefix); + + /** + * Set players prefix + * @param world World Object + * @param player Player name + * @param prefix Prefix + */ + public void setPlayerPrefix(World world, String player, String prefix) { + setPlayerPrefix(world.getName(), player, prefix); + } + + /** + * Set players prefix + * @param player Player Object + * @param prefix Prefix + */ + public void setPlayerPrefix(Player player, String prefix) { + setPlayerPrefix(player.getWorld().getName(), player.getName(), prefix); + } + + /** + * Get players suffix + * @param world World name + * @param player Player name + * @return Suffix + */ + abstract public String getPlayerSuffix(String world, String player); + + /** + * Get players suffix + * @param world World Object + * @param player Player name + * @return Suffix + */ + public String getPlayerSuffix(World world, String player) { + return getPlayerSuffix(world.getName(), player); + } + + /** + * Get players suffix + * @param player Player Object + * @return Suffix + */ + public String getPlayerSuffix(Player player) { + return getPlayerSuffix(player.getWorld().getName(), player.getName()); + } + + /** + * Set players suffix + * @param world World name + * @param player Player name + * @param suffix Suffix + */ + abstract public void setPlayerSuffix(String world, String player, String suffix); + + /** + * Set players suffix + * @param world World Object + * @param player Player name + * @param suffix Suffix + */ + public void setPlayerSuffix(World world, String player, String suffix) { + setPlayerSuffix(world.getName(), player, suffix); + } + + /** + * Set players suffix + * @param player Player Object + * @param suffix Suffix + */ + public void setPlayerSuffix(Player player, String suffix) { + setPlayerSuffix(player.getWorld().getName(), player.getName(), suffix); + } + + /** + * Get group prefix + * @param world World name + * @param group Group name + * @return Prefix + */ + abstract public String getGroupPrefix(String world, String group); + + /** + * Get group prefix + * @param world World Object + * @param group Group name + * @return Prefix + */ + public String getGroupPrefix(World world, String group) { + return getGroupPrefix(world.getName(), group); + } + + /** + * Set group prefix + * @param world World name + * @param group Group name + * @param prefix Prefix + */ + abstract public void setGroupPrefix(String world, String group, String prefix); + + /** + * Set group prefix + * @param world World Object + * @param group Group name + * @param prefix Prefix + */ + public void setGroupPrefix(World world, String group, String prefix) { + setGroupPrefix(world.getName(), group, prefix); + } + + /** + * Get group suffix + * @param world World name + * @param group Group name + * @return Suffix + */ + abstract public String getGroupSuffix(String world, String group); + + /** + * Get group suffix + * @param world World Object + * @param group Group name + * @return Suffix + */ + public String getGroupSuffix(World world, String group) { + return getGroupSuffix(world.getName(), group); + } + + /** + * Set group suffix + * @param world World name + * @param group Group name + * @param suffix Suffix + */ + abstract public void setGroupSuffix(String world, String group, String suffix); + + /** + * Set group suffix + * @param world World Object + * @param group Group name + * @param suffix Suffix + */ + public void setGroupSuffix(World world, String group, String suffix) { + setGroupSuffix(world.getName(), group, suffix); + } + /** + * Get a players informational node (Integer) value + * @param world World name + * @param player Player name + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + abstract public int getPlayerInfoInteger(String world, String player, String node, int defaultValue); + + /** + * Get a players informational node (Integer) value + * @param world World Object + * @param player Player name + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + public int getPlayerInfoInteger(World world, String player, String node, int defaultValue) { + return getPlayerInfoInteger(world.getName(), player, node, defaultValue); + } + + /** + * Get a players informational node (Integer) value + * @param player Player Object + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + public int getPlayerInfoInteger(Player player, String node, int defaultValue) { + return getPlayerInfoInteger(player.getWorld().getName(), player.getName(), node, defaultValue); + } + + /** + * Set a players informational node (Integer) value + * @param world World name + * @param player Player name + * @param node Permission node + * @param value Value to set + */ + abstract public void setPlayerInfoInteger(String world, String player, String node, int value); + + /** + * Set a players informational node (Integer) value + * @param world World Object + * @param player Player name + * @param node Permission node + * @param value Value to set + */ + public void setPlayerInfoInteger(World world, String player, String node, int value) { + setPlayerInfoInteger(world.getName(), player, node, value); + } + + /** + * Set a players informational node (Integer) value + * @param player Player Object + * @param node Permission node + * @param value Value to set + */ + public void setPlayerInfoInteger(Player player, String node, int value) { + setPlayerInfoInteger(player.getWorld().getName(), player.getName(), node, value); + } + + /** + * Get a groups informational node (Integer) value + * @param world World name + * @param group Group name + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + abstract public int getGroupInfoInteger(String world, String group, String node, int defaultValue); + + /** + * Get a groups informational node (Integer) value + * @param world World Object + * @param group Group name + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + public int getGroupInfoInteger(World world, String group, String node, int defaultValue) { + return getGroupInfoInteger(world.getName(), group, node, defaultValue); + } + + /** + * Set a groups informational node (Integer) value + * @param world World name + * @param group Group name + * @param node Permission node + * @param value Value to set + */ + abstract public void setGroupInfoInteger(String world, String group, String node, int value); + + /** + * Set a groups informational node (Integer) value + * @param world World Object + * @param group Group name + * @param node Permission node + * @param value Value to set + */ + public void setGroupInfoInteger(World world, String group, String node, int value) { + setGroupInfoInteger(world.getName(), group, node, value); + } + + /** + * Get a players informational node (Double) value + * @param world World name + * @param player Group name + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + abstract public double getPlayerInfoDouble(String world, String player, String node, double defaultValue); + + /** + * Get a players informational node (Double) value + * @param world World Object + * @param player Player name + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + public double getPlayerInfoDouble(World world, String player, String node, double defaultValue) { + return getPlayerInfoDouble(world.getName(), player, node, defaultValue); + } + + /** + * Get a players informational node (Double) value + * @param player Player Object + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + public double getPlayerInfoDouble(Player player, String node, double defaultValue) { + return getPlayerInfoDouble(player.getWorld().getName(), player.getName(), node, defaultValue); + } + + /** + * Set a players informational node (Double) value + * @param world World name + * @param player Group name + * @param node Permission node + * @param value Value to set + */ + abstract public void setPlayerInfoDouble(String world, String player, String node, double value); + + /** + * Set a players informational node (Double) value + * @param world World Object + * @param player Player name + * @param node Permission node + * @param value Value to set + */ + public void setPlayerInfoDouble(World world, String player, String node, double value) { + setPlayerInfoDouble(world.getName(), player, node, value); + } + + /** + * Set a players informational node (Double) value + * @param player Player Object + * @param node Permission node + * @param value Value to set + */ + public void setPlayerInfoDouble(Player player, String node, double value) { + setPlayerInfoDouble(player.getWorld().getName(), player.getName(), node, value); + } + + /** + * Get a groups informational node (Double) value + * @param world World name + * @param group Group name + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + abstract public double getGroupInfoDouble(String world, String group, String node, double defaultValue); + + /** + * Get a groups informational node (Double) value + * @param world World Object + * @param group Group name + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + public double getGroupInfoDouble(World world, String group, String node, double defaultValue) { + return getGroupInfoDouble(world.getName(), group, node, defaultValue); + } + + /** + * Set a groups informational node (Double) value + * @param world World name + * @param group Group name + * @param node Permission node + * @param value Value to set + */ + abstract public void setGroupInfoDouble(String world, String group, String node, double value); + + /** + * Set a groups informational node (Double) value + * @param world World Object + * @param group Group name + * @param node Permission node + * @param value Value to set + */ + public void setGroupInfoDouble(World world, String group, String node, double value) { + setGroupInfoDouble(world.getName(), group, node, value); + } + + /** + * Get a players informational node (Boolean) value + * @param world World name + * @param player Player name + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + abstract public boolean getPlayerInfoBoolean(String world, String player, String node, boolean defaultValue); + + /** + * Get a players informational node (Boolean) value + * @param world World Object + * @param player Player name + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + public boolean getPlayerInfoBoolean(World world, String player, String node, boolean defaultValue) { + return getPlayerInfoBoolean(world.getName(), player, node, defaultValue); + } + + /** + * Get a players informational node (Boolean) value + * @param player Player Object + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + public boolean getPlayerInfoBoolean(Player player, String node, boolean defaultValue) { + return getPlayerInfoBoolean(player.getWorld().getName(), player.getName(), node, defaultValue); + } + + /** + * Set a players informational node (Boolean) value + * @param world World name + * @param player Player name + * @param node Permission node + * @param value Value to set + */ + abstract public void setPlayerInfoBoolean(String world, String player, String node, boolean value); + + /** + * Set a players informational node (Boolean) value + * @param world World Object + * @param player Player name + * @param node Permission node + * @param value Value to set + */ + public void setPlayerInfoBoolean(World world, String player, String node, boolean value) { + setPlayerInfoBoolean(world.getName(), player, node, value); + } + + /** + * Set a players informational node (Boolean) value + * @param player Player Object + * @param node Permission node + * @param value Value to set + */ + public void setPlayerInfoBoolean(Player player, String node, boolean value) { + setPlayerInfoBoolean(player.getWorld().getName(), player.getName(), node, value); + } + + /** + * Get a groups informational node (Boolean) value + * @param world Name of World + * @param group Name of Group + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + abstract public boolean getGroupInfoBoolean(String world, String group, String node, boolean defaultValue); + + /** + * Set a players informational node (Boolean) value + * @param world World Object + * @param group Group name + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + public boolean getGroupInfoBoolean(World world, String group, String node, boolean defaultValue) { + return getGroupInfoBoolean(world.getName(), group, node, defaultValue); + } + + /** + * Set a groups informational node (Boolean) value + * @param world World name + * @param group Group name + * @param node Permission node + * @param value Value to set + */ + abstract public void setGroupInfoBoolean(String world, String group, String node, boolean value); + + /** + * Set a players informational node (Boolean) value + * @param world World Object + * @param group Group name + * @param node Permission node + * @param value Value to set + */ + public void setGroupInfoBoolean(World world, String group, String node, boolean value) { + setGroupInfoBoolean(world.getName(), group, node, value); + } + + /** + * Get a players informational node (String) value + * @param world World name + * @param player Player name + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + abstract public String getPlayerInfoString(String world, String player, String node, String defaultValue); + + /** + * Get a players informational node (String) value + * @param world World Object + * @param player Player name + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + public String getPlayerInfoString(World world, String player, String node, String defaultValue) { + return getPlayerInfoString(world.getName(), player, node, defaultValue); + } + + /** + * Get a players informational node (String) value + * @param player Player Object + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + public String getPlayerInfoString(Player player, String node, String defaultValue) { + return getPlayerInfoString(player.getWorld().getName(), player.getName(), node, defaultValue); + } + + /** + * Set a players informational node (String) value + * @param world World name + * @param player Player name + * @param node Permission node + * @param value Value to set + */ + abstract public void setPlayerInfoString(String world, String player, String node, String value); + + /** + * Set a players informational node (String) value + * @param world World name + * @param player Player name + * @param node Permission node + * @param value Value to set + */ + public void setPlayerInfoString(World world, String player, String node, String value) { + setPlayerInfoString(world.getName(), player, node, value); + } + + /** + * Set a players informational node (String) value + * @param player Player Object + * @param node Permission node + * @param value Value ot set + */ + public void setPlayerInfoString(Player player, String node, String value) { + setPlayerInfoString(player.getWorld().getName(), player.getName(), node, value); + } + + /** + * Get a groups informational node (String) value + * @param world Name of World + * @param group Name of Group + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + abstract public String getGroupInfoString(String world, String group, String node, String defaultValue); + + /** + * Set a players informational node (String) value + * @param world World Object + * @param group Group name + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + public String getGroupInfoString(World world, String group, String node, String defaultValue) { + return getGroupInfoString(world.getName(), group, node, defaultValue); + } + + /** + * Set a groups informational node (String) value + * @param world World name + * @param group Group name + * @param node Permission node + * @param value Value to set + */ + abstract public void setGroupInfoString(String world, String group, String node, String value); + + /** + * Set a groups informational node (String) value + * @param world World name + * @param group Group name + * @param node Permission node + * @param value Value to set + */ + public void setGroupInfoString(World world, String group, String node, String value) { + setGroupInfoString(world.getName(), group, node, value); + } +} diff --git a/src/net/milkbowl/vault/chat/plugins/Chat_GroupManager.java b/src/net/milkbowl/vault/chat/plugins/Chat_GroupManager.java new file mode 100644 index 0000000..c8cc12d --- /dev/null +++ b/src/net/milkbowl/vault/chat/plugins/Chat_GroupManager.java @@ -0,0 +1,5 @@ +package net.milkbowl.vault.chat.plugins; + +public class Chat_GroupManager { + +} diff --git a/src/net/milkbowl/vault/chat/plugins/Chat_Permissions2.java b/src/net/milkbowl/vault/chat/plugins/Chat_Permissions2.java new file mode 100644 index 0000000..04cac92 --- /dev/null +++ b/src/net/milkbowl/vault/chat/plugins/Chat_Permissions2.java @@ -0,0 +1,5 @@ +package net.milkbowl.vault.chat.plugins; + +public class Chat_Permissions2 { + +} diff --git a/src/net/milkbowl/vault/chat/plugins/Chat_Permissions3.java b/src/net/milkbowl/vault/chat/plugins/Chat_Permissions3.java new file mode 100644 index 0000000..1c7957d --- /dev/null +++ b/src/net/milkbowl/vault/chat/plugins/Chat_Permissions3.java @@ -0,0 +1,5 @@ +package net.milkbowl.vault.chat.plugins; + +public class Chat_Permissions3 { + +} diff --git a/src/net/milkbowl/vault/chat/plugins/Chat_PermissionsEx.java b/src/net/milkbowl/vault/chat/plugins/Chat_PermissionsEx.java new file mode 100644 index 0000000..21e0843 --- /dev/null +++ b/src/net/milkbowl/vault/chat/plugins/Chat_PermissionsEx.java @@ -0,0 +1,5 @@ +package net.milkbowl.vault.chat.plugins; + +public class Chat_PermissionsEx { + +} diff --git a/src/net/milkbowl/vault/chat/plugins/Chat_bPermissions.java b/src/net/milkbowl/vault/chat/plugins/Chat_bPermissions.java new file mode 100644 index 0000000..0e34a0b --- /dev/null +++ b/src/net/milkbowl/vault/chat/plugins/Chat_bPermissions.java @@ -0,0 +1,5 @@ +package net.milkbowl.vault.chat.plugins; + +public class Chat_bPermissions { + +} diff --git a/src/net/milkbowl/vault/chat/plugins/Chat_mChat.java b/src/net/milkbowl/vault/chat/plugins/Chat_mChat.java new file mode 100644 index 0000000..6a9a24b --- /dev/null +++ b/src/net/milkbowl/vault/chat/plugins/Chat_mChat.java @@ -0,0 +1,179 @@ +package net.milkbowl.vault.chat.plugins; + +import net.milkbowl.vault.chat.Chat; + +public class Chat_mChat extends Chat { + + @Override + public String getName() { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean isEnabled() { + // TODO Auto-generated method stub + return false; + } + + @Override + public String getPlayerPrefix(String world, String player) { + // TODO Auto-generated method stub + return null; + } + + @Override + public void setPlayerPrefix(String world, String player, String prefix) { + // TODO Auto-generated method stub + + } + + @Override + public String getPlayerSuffix(String world, String player) { + // TODO Auto-generated method stub + return null; + } + + @Override + public void setPlayerSuffix(String world, String player, String suffix) { + // TODO Auto-generated method stub + + } + + @Override + public String getGroupPrefix(String world, String group) { + // TODO Auto-generated method stub + return null; + } + + @Override + public void setGroupPrefix(String world, String group, String prefix) { + // TODO Auto-generated method stub + + } + + @Override + public String getGroupSuffix(String world, String group) { + // TODO Auto-generated method stub + return null; + } + + @Override + public void setGroupSuffix(String world, String group, String suffix) { + // TODO Auto-generated method stub + + } + + @Override + public int getPlayerInfoInteger(String world, String player, String node, + int defaultValue) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public void setPlayerInfoInteger(String world, String player, String node, + int value) { + // TODO Auto-generated method stub + + } + + @Override + public int getGroupInfoInteger(String world, String group, String node, + int defaultValue) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public void setGroupInfoInteger(String world, String group, String node, + int value) { + // TODO Auto-generated method stub + + } + + @Override + public double getPlayerInfoDouble(String world, String player, String node, + double defaultValue) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public void setPlayerInfoDouble(String world, String player, String node, + double value) { + // TODO Auto-generated method stub + + } + + @Override + public double getGroupInfoDouble(String world, String group, String node, + double defaultValue) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public void setGroupInfoDouble(String world, String group, String node, + double value) { + // TODO Auto-generated method stub + + } + + @Override + public boolean getPlayerInfoBoolean(String world, String player, + String node, boolean defaultValue) { + // TODO Auto-generated method stub + return false; + } + + @Override + public void setPlayerInfoBoolean(String world, String player, String node, + boolean value) { + // TODO Auto-generated method stub + + } + + @Override + public boolean getGroupInfoBoolean(String world, String group, String node, + boolean defaultValue) { + // TODO Auto-generated method stub + return false; + } + + @Override + public void setGroupInfoBoolean(String world, String group, String node, + boolean value) { + // TODO Auto-generated method stub + + } + + @Override + public String getPlayerInfoString(String world, String player, String node, + String defaultValue) { + // TODO Auto-generated method stub + return null; + } + + @Override + public void setPlayerInfoString(String world, String player, String node, + String value) { + // TODO Auto-generated method stub + + } + + @Override + public String getGroupInfoString(String world, String group, String node, + String defaultValue) { + // TODO Auto-generated method stub + return null; + } + + @Override + public void setGroupInfoString(String world, String group, String node, + String value) { + // TODO Auto-generated method stub + + } + +} diff --git a/src/net/milkbowl/vault/permission/plugins/Permission_PermissionsBukkit.java b/src/net/milkbowl/vault/permission/plugins/Permission_PermissionsBukkit.java index f826e64..accd524 100644 --- a/src/net/milkbowl/vault/permission/plugins/Permission_PermissionsBukkit.java +++ b/src/net/milkbowl/vault/permission/plugins/Permission_PermissionsBukkit.java @@ -401,7 +401,6 @@ public class Permission_PermissionsBukkit extends Permission { @Override public void setGroupSuffix(String world, String group, String suffix) { - // TODO Auto-generated method stub - + throw new UnsupportedOperationException(getName() + " does not support group info nodes."); } } From 39e0bea77737f7d91254f4662abf297e7aeb68b0 Mon Sep 17 00:00:00 2001 From: Sleaker Date: Sat, 22 Oct 2011 11:32:43 -0700 Subject: [PATCH 2/5] we actual do need this - renamed it so I don't forget what it actually is. --- lib/MultiCurrency.jar | Bin 0 -> 16545 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 lib/MultiCurrency.jar diff --git a/lib/MultiCurrency.jar b/lib/MultiCurrency.jar new file mode 100644 index 0000000000000000000000000000000000000000..3bf2b5f2bff5ed871cbe856071dc776621cedf8a GIT binary patch literal 16545 zcma*O1$f-rk~L~(W@ct)X2v!%Gcz;WF*7s8cFYhvX2%pWGsVoz{*!a(yqh;??l+@u zbxGZ-y>@MNNu{d2lw?7{(13m~jKEZae{KBN2lOu~FAfl#nRQ%%*M*zg3-jy+1bqA#Otq){Z@hkIt8K7#dqTFMkU(=up7UA*HQ!wYwuB)(ZvsX>!7zM`B-8t|y7DzvK2 ze23$q;@t4A`>-uA4b!FT*#i_%iMw-I?- za&&gR5{bRnGFcxhO)E=J`O#{6lTX8Ss$Z1m&I6V!_@a}h7rnZQ_H*q?d#dc!p_%dQ zAlPh-Z{YkS+3-Pc#ljAojkmvOit%{$SmLfqyHD9gpA$So?2t0{?9^>7r)8*;>GVqZ z3sFj|<$-d=*(1YSIMotta~JyU@UI1VUMRQHwa5nej2pNmwBdB-ESq0!)PpZk~lq&PuV zMI!?NNs|Ks{d)f=pZnW={>x#sA$?KRus*)+C4DV{ltCh=!9gzs#ig`%YDKT62E-T- zy2;ns*(SxLgMIe7=<4mlL{O4B+4!~ju;KHz`StS(^{fBIM%P2!2j|AaH(0*+hcge< z>G0Q_{7*&YY~Cx1lT(cXJV|+~M_zIIQ-|V$UWerMw+)2-v@~7E}ON!M~lmgEw0yonKx8m4-(gx5~b>Q=y zIDXaB9wMs`BCCivZxz#uJ8u?O?=ceHFrPNrp7n-5L`wzV0MY?gw;tGbVjq@r{^ssa z%Ri!r2n5+1HO$cav}jETUj}6|v0Me?x9bJ;gEZzmbB2Jg1U4pVufPcF#;bdv@}Nxd z(CVtKJF|wWtNEmN+1d1GCyDiCPit$gcyJUk=1#2nz|F4#LPp}YX*RlrPNf;@m3;Di zi?eOoyI+P*LSP&{K{u3yK7?%TORk1+9Ez@7<2dI%S>ret+aylMk@_(}M$&K`O0O0~ zwmEPds;}H}=x5s0Pv@<48KGJiJCh5%SYgROLvDz=CyZYs=-;F%y0;8%+%zI4f~|o zK#JF^n&erm-oOu0buHBghkG<3SH4V6Riw4bkvx6wm~1DkSoU>V3I`!Rt0|O&2#%|0 z7XmAbmE$pVnBI6q)10<~v2H0&y0Upit_+=|zJ!}L+mii^Tf$}yZCrgW^1^(H`6^Eb zz>>=hrEf#U*4z$#YpLEKaO7BNXU=2&T}2KZdF&jj)%r{T=IYDQkLhri)gR^!@FL-bSYWH2L9!q;z>BrwAtf<6~I@`EV+H2-Me905`6;__$*wReRKd46Lk&( zhX!M5D(Yy|&@&?4>d-0ayEA%TBhzPUg??m_w=XNyXuXfxV47V!Q3LCk`zQ?sI4s;9lvIm)69Z z<*G+)1K*G(d8~2Iuu~uAm$%e&Kb50ql*QJj5PjqxtL8d$7#AJOTaFL0)^~o(QmP>f zlKFJ(N|IaRk_~lA^U>`1)s_ySymGD91=8afZ}&|}QKV*_IQJ`8t+U8M$x?-x?9Y^m zm&O{GtRR8v8(;mNri~AtO%T*uw-a9^!q3;lJcL6L)xMz^Pk=LJ3P+x})~w4q(hS?fA{5%I~W-hw`o|UX8%%lpzA}T8p^a-sUixWa8@K*z!g% z&A(t39)}{OAgVTxmY?`SyH->d|2_PCuz6nx`N6avKmQ zUCHFu?Nqyc3$HWG;)4W-lz@(pKxt1RS3wUCOR5kguEtNoX2utk0ybGGSq4e8T1~@m zD4GGan;(Xm4XoRXLpmOMq90BZA(m%FjC2>lIR9kh_U%*M;uC~^tjmn8c>xpB=tYFB zW3(ySl0zt^9jnog2ug>YY`46=)-4{SL8Na&Qe`CC(-jpJh3-V7l45Np(2RrY51X?v z$Rs4&A50`Cz)yjiB-vC@nHbtr*fH+m7)0`py)nhf!)2_6>a1YG5+Vg?)Fi$U%o-@O zObfXz9ctgy4pu!gC-^&atk_rA1aTYXy$F05C6-PI4($A%(+O#p?2XimTu_j}xa{WY?md$f0pyS`3nTq|=l+cDmHqK(}QXtXx zB|ZIQjWT>y{Q42hZZr~lvN3iNzhX*ryfG5qp<=xSC4;Kol-K!rf{zkOy3pflz3qFo zFtfU5R(%`?(@@e{z~U-)sZxJB2~+dMm+88=2ch8> zW1OyY&Ql&OT?o8YO;^*N_3op_^Ol)ntW->~C=7L7BF`vz&6nGnz< z8lomieu18!;oud+w2;*=d-~ZQjNhj9IE0Hlk${la3)oGYZn47)j}!IGxpi7GHM%no z*;}w|z!QKHT60ee3n$V_X?1==+6?$6Vh^XR6aGS_hKc2l0+`68c?B@nbnbk-Y8DR6 zG^*}Mf(DiQHpLnWy+lgv1o+*+pwoQeNi`F10+ZldpGs`9ZNz{FyelD^(x4hRgu#BJ zGZFs`UItHaV7CaM`QU&^*J*0>WCp-dI87lgzOSorUef{7*4UO^vg0=P$s-ZX46>p0 zc}QCgKMK1WS;}+{A}^=P%+0&wWNOpeFK=xyG}!Pbk+Lk^$9@17mTO)zr^mmfHji7{ z(CRm;N~ZUJ?H$rPK5;~d_JKd7*mIg!3D4!Y;t?~&naU|hSU6Zo*4rBGP3}@S)avRq zvV5G-a%8bUvnUKGi(Ao7lsR;Xcu*Pa1opqk$8%F}QPWSE;h$JVBB%<{ow({?VfLaO<(q17;FdY>?QqVURuZwYLQ5{DO?t0Snk z(UlW0T<^6oqJK!wHZs?WDZXuwj+bbNlvel6-8_*^@9ni$;Bprar31jq~!J{7ut1HJ{DBKz@#9S)~f<(-cC6zpW66k4D!(I6-Pwp zfM>08drlk6)-m}5iweyJk)mvm4z^Nya!ahQtk8B5D-(oNFBkBx7>=lLmYBg*rsgz0 zwJSz0y<4v8)Fp`*nWBXm;uC3VYoaq`YBL>WS5?H&?bK2a3>K3?eZ-K_f@lx{j={1l zZIHhRVa@oQCuGeGh%c&zypBxoUD`}ls$Wx9gtwL3XN9UzIRnGEo-BSeZ3!Fndi5m2 zU9v-ikh1BlCV{XDh`g#&H%p5wxYfndbt@RRDS(w|X~=9nu&y#s`UEM2B73ePEO9di zUd$ngv&mgwa9FmHq~-{^ali-{b2YN1oa9 z3Mjt_BigkkY(Ud^&}z(7t36Chz*@OIIu!Rn$S~Sg{XqOj}Mj(ObDUB|k(K$4RF;cdKDZ$ZjAfvqkb%FADz(IBKIC_9$ z7{wn@Reo%+>}#vCjRzP&Y{GW-k_AiL@#T>_IMyMLF;)(e6|2ZFFI`F1>F!Pro{a3G zF%L#7onLqk1bI5a@xRKXzPUoZU`%IJ_1L$A8&Ly1L0rN>AK8d5bw|EKb_KQDTfIjM z*O`2rKNSE4?j-KpC|GK9JV4j@^q8v|`)63}8_L~+H|uA$CX_#vS5POTn<;YAjEe9u zYo>7;F$QV5F!2JR2s?bZuJS6PEJ22(G&=MM6}q*NsYn_omb;Vk zGZLYal?e@#t1nprIR+TDbm!b9#Tk=q%(g$o8V=w0gOTU;fJ9kmin*~W(PLqxvgo;d z`qB0(y--W67^i3r=lU=e6hlQ};M^={J}W$oz6n+nkKn$WWiw1q?J-SEf6mJUwml$9 zX*qWEWnX}2P22@GJWZQVm{$R32K}s*G-dF7uw+X_OW{Hlzhx6y(X6Zi(4M+ayGhec z9WVo|uzg@Ml8_#k?miHZ8@bhCUqX{5pRI&SHr~trg;w38*gQ)Xa^{@MoxUk!pE%e@ zLFDv2+Q4nZ}Vv-Hi2wxKRPwhK4WR@P8u@^m-8y~GH#*N} z3AQ-G9g?mndkRLr<>OOlET^`xv;-JMac7&!?Q8vLS?w?n66gJ}c=JfT&u=3q!_6!j zj2=@p&SwG}I_K84-@P=3MSBC)lp{bnkm-vF#@~l*xp&S$?=hlAAx{*X4-I#(P+}+; ze9G+-8wEOYH79Dzc!$X?Jc9e_Ej*^zhgIq*g&z!m?DF*9wc9dxHslIzK2h3L&2$A! zyJM+!IE)2Mjd`hc7?eT+ypMG7!JH-V2SUQj|GFr*24h%&2++ z?Q$z8&DrkHaoeOUiRAtPZnmtNm7vGAmtsoNQD3LUGKAab@enKkuyt>_urJ8mn`|q+ zvwMcIfKB7TF-eoaev?zwOhL_?DFVWevDDTRgv<)P#22G9Gmpq`Ny5xM{aTF*m(urW z2cuk;ztQ0Y`U%mAdLfoHg2~f!H?3%N%uB=sjk1kuYHAB1u`bv&284UAVq$Y{S{WS# zmdop2sQqD2V04rWTN47O4ayOY{+U7>xv(yH1Nn#4_?60SU++SO>O|nzC9Kfk_C|6& z>G!?Q(-l}p3sj4f)YRU7WD8A)#T&|*P}c0&%Cl?n>epeKbH;5~% zqv)TuU08g5k@CoM9&Lj|{T^G+bwsMzh)^6$IjN7ApY7D&1l=DaDLn%~KGoZAMw+s0 zCK7#suPse%Mx<{F$vbipiv}6r0Hx}-AlLqK+971)D`VYQClo9klf+u}qx9nJ(oZA? zrdt3an{}uFG%&(MSg{@mdo^OKA@z{i_e|N3t^=-ifh}NMQ^au}zzDk&Ij_4<4lO#; z`^FX9+bA4D5A&Mfs`i~MVGHTa!$D=v&NgptQGG*Dbgj5RW0CB3;O@z1hvy^5C@<)( zRj+9XoJgjCoVHP%UQYC}|8gsq0=g-mn29z^uJmETB&vmo5Ug2QWK(7osOoFhGrl1N zkB|-=l(nT2bwOx(Ur1hl**=aum45Q$Ks`)Z)xJLJH_{F9&LNBnC1$XpHLEyQYz_AYovXK)w2rwR*F~63`>+#&HA%yf0n4mhe^(OykCV zX;PrIMb={7hPb&wM|Sk4WR=DSgJs0Q53_rTe3=8t8GOb$i|~pQU(X?PIgW!EgANdQ zt1oOw{oCG?(f6}sh^8?S@Dp@n z13%T_Bg-YM%q=4G#uY&@V%!USA-SyvW<;Pst>7_U!akWljA|ML z9a6l~@aaAaLc;oxj{l&LtSf8)qPNm68y-ApWRF`sgv0Efew)7||JYfmS)4Q&M|w37 zBrKf1LS^%+Vu(oIT{h(taWIc3=pQ-F`B8-5srz{q8z&q2&QTyiN7YITijA_zHcS=! zV?GPt7GAQEEo8kie;BMe^=qFSD-q&ECaZI&RZZ0SDENM_sbSh!v@9Wg5NAnX2&$@z z8^XJM3|_4fn@iMBZKR8r#JBVJ;ctdt!YOMzyo%1$_rRCIx^tqeg zXTv*T@e~_*L9_YoBDONup`hY|t16J*bikcgoq_RD@aPScrrI%_`zb!f9+n1D<8Wi9 zGzS*p0=Q#*xL4Tz%OH{P8>{bq-~F22Ix81dJT2aC}qX-s=@P~Fp1m;#bl1G*NJk0G6J+(o&esjo< zkn?7ymHH^;XIxd5 z7a9}Vh#W|NBqPk`k1!%wFCP0~i0vV7Sm*O9iX>uZTsnbl-mTr7!smA_NrFG_6OqwC zf`0v$R^74%lbikZTV=bY`V{770MNg~C2|uy!N)Jp-za|7y!|kMfPO_x|6A?rchUG? z^{-qFx0_iZB)=e$6_n3yyl5W37D}N&A?bpWwy*zM##*-=!hzixiQ(-Mw>kUo8d@Lj zYt}Zd9#?;!099?NBF!_A2I6F3ivcyV7;@~J_UMl98hwie?`%;TBEgOcfii|blzr74 z?H==VYA2-iyci{dF;WAnt{;kT7XIAtEy(d$&kTi~?dil?ZI@Wj{uVch6hOB`VZvL3 z!V+|5IHK^rHrTlCe|lw7NBH9DB!~#<$u-N2v{iqpkJKeQdjv}V_?fHd2@)>9W{kTkq@)yz zwFQDQDgW}Lgqyy%DziQ?MJgd3V(LET30ibO0g9nDC|IiQUdTh}$TnC55;mUC|Xc?JVPjCzP^n25S>Y;YpL@L=@P30(J z5trd+4QiSWnIi^lg>9{>TMG&Ys!ya+6>f!RD9+)k9X(B`YA&Gx$?VZD7lF@H&`Ofo z%pr>MG;yZL7gx$KLyngwAvF~|p*KuC81=WziPB(P0K&Q(YM5B1@9do8OP9!i7q$y2 zWn%d(H_q^Dwu<%j80qSar(x_8FOnyI~##f=c*pvT}S2 zajO#V;&27I6Zj~ub>gM@Sn&u;dRKvat*(O(kX<4td9?|Pc{5uLe%k8$bSV=qJ>KfC-q!vfy&L zZR|W+&!BV^nD=%ED$lUR0kR`!rK#ZJ7l^FjR;-dO{E8hRv!z0li2W4G1H7qgFgXAd zNHLnLhy}RcbiAM&IK&uSUflMwCP9(0;j$2%^DJr|6!rzWZ;vGO;Co^3?6RW$Dhi9Z zWlb`rId*^*>43h6n@hNCx%J!q(NTeX(_}<8kkR?R!)Ah%kM-ItO zi(O{RaFBw%Qcd57zw!s%gu{yW3Ny2Fp*q)ch^aITX8^xK@{qD5iCi+X%hF1RG-aer ztgZF2?Kxkyf3`?`Z)Er}TR`BaYEt4QoTQvzQqSzCR$>t4KbzVPbd;iGCt~7_ za=nxyF{m!Y%2vJ!q}`T%(HqZpYm+OHbtB~iEdXsdrYph&on0_P))ktau$mj*eToj| zZ6N&R0o;_zhd_pk6#gLbh>eAJMhPP+rMVO{;f_y)Uy*cma`5zO@MhR)>t#Xp^z#-@ zaQu+mEzD$a-f*2uidMA@_HUZ+ZQ zZknro7K?;T?g(d;K_v!bR|u;dAZQmWtr)oj5rn;WY%1atsvW|u{euDt>G(SrRkG0> z$@80G7u2AJJ(&&EvqsWie#$B~aFeKy*9{~ML(Cfu_1Z@^rXZy^mD;bM{uS9EQp;o8 zREO71&+L}yg@1aiely?w`V&YBRf~bTBh}Ik42-fXY<|!ON%YdhAgMM=rZS8dl7xTC zJGQcL6=ybjqd=c+piZYr74O;4^<{rIc3%SVU5H?i3OsC@k6G4@o#*5q_YoEYen3`` zkM0Eq9LkaEkBSti2g;{p^5ly1>drFyrSc)n1Kaa4a#9LVw)%sd#4$I>G{Vzd*fi2g z-2>e?EJZxmMP=EWZ7+6VwJGVJ;llPctq#a|UKlqbWKw0e{q>w{^C)YV^&T1Z4U%)%X^hk%HrlY&J;OS~r&fpH2LN(35^|DUzZy6VR@s z%%lzLV|KdZa+cb3b|u%Al-2}GEW(mM9F!mLeAN_}F>Sdx2=OVVm&LVHCaxpWIclT% z!4uQ923+q#;_F5;1>Js1?+{Hs2_To>ETr?-heDSM$=!57p}>9XT@ zJM+oDZrZNujFbT2Mr8&oKTG0TSo_uj=e3&+@{n{U>V93?I=%8v9Dt74&hw2=;DA~q z&3rLX_ew8TQFEIAr;)L&L1^@A#W}O{ylG|dtxbf{$9B_fttpF=h=7jB} zrBI?#z@=VDvoHnfM&Cuj2~{>9DemO$AcqqFMXrKm!$x5L=NCoM$)=ID2#7}5j2xd4 z{~c_R{tC9#H_R4xL4knO(1C!c{*S@d@BCDkro2P85K@=MaR8Q6A9U#ido8J&RS5wK zrS+VC6~V%n=2rcSqV>VJ)V*$xM@<1+s4cFahRaM2`#)A&Lx6!uP(BX__hmhcG5$!Z z&Cq-l{)~p+>wf*d{^Ef(xR3~dcu#=8GU;y%V5!VYx89!IosY)Ohv^?*=-xGzO%0R0 z%4q}wQD_Pu<9lGArRaLj@TV|}wu>w*fM>?C2PNLQ3Wm-Ij^xg75(^N2<|KP|bwG39 zTBpWVHf!M&GxRwIv6bZ+5&du<{94>1!kd`Uc1qb_LMXn9(V9pH#vuKe>Ee+xwD)6m zw-sP70m+uLi1LCbcs&|x?U6!G<&q+~TuC@MG*96ERd!{*{1YMi5gy~>66gWNez?}r zWN(n_RIyy_b=#)3=;F6ncypsZ$8Da)B^-DoNNrJp)r(0+sglZe*^xGOP&R6HF48xZ zO28}vBd7Ehz~nhf8A*m{!g6L>f$EAf44hpMD!x)rM`tnQHI&F^Whqa2_1;Ww`<1QH>D7gzBjBlwn9K`jFchRRdIu}OrvmzZ3(Mki$ z+k(UI>Q*hcOplWzLGbOt~S3`tfJM$Q_^2l#RlKJeeZnZ1k6j;_Kif|AM+CC<*`U$mrh{9 zgZFArd_Eencio_sIPFfO>b|IvyLL2?d5x4l{p`7+m2nX8?+ZosuUWu?J3K=pzmnLz zs6aq;|M^0pbF8a$T6x(W8ti`W zwZwH#Y0tM#uGw=gT6f(c+%G@2Otiba@4oi~!EE`-rHE}}Q3d(4+%7T`Q4|>#d=h3x z{=th)*N;SuIL}N+VO&^e8~%L&DmKL^WlBQwJ67iR(Pb|DT@w;yipZoW9*U^w5oRWE z)nXHEIl1q#871SfpR^h>@lmCjC4Zg$?|j^ujM^At-$n3aj7b{HE$cs#Gk-xFD>Ctt z``j~ns7X$tF}96^y)gQPfoB2MD}-tV3pM+TR*R0YF>MQU|NY?-vAM_bQmIL6xTXJB z7mKm!gd%l~#@5W%^pl$d^eo0HZU=fdbrsQ0sIenE?mN7%5kK1mXhlSmnBMDLuPL7M zTB9c&tRi=>UQRn3C=Hqj-u0V`i2Z8L)%976Vpa!_Db#syo$+X=3Jo@*d%-i~2=Y4o z-Nw%WX+5g@oFf}kZdBwjvQHoat+C@t#c_n<4V=?RrA6zB_d5&M;GcQAI$B$E zB+PxfMGQTd-sI)JQ@#)}htIc$%=h0d-_kf`^o<$}i&Z8vMz0QjM>2mwukaSOu*n9V zl@&@+povr_GtU8`fzhUXS5-U>uU#(Gv1^P7E@b&C`CT7_Z7g1jM+bO}S+DxjJSAU9 zVq;W<6Uq37Iv2Md)+JBZ>$`Ug2BBs&&W;B&X(yK-u&n5^Kgs~c-kELt<_*RR z^o3$cK-z&6@)Lh<>Z$(iL-hoi;ItOC4>`oh_kam#DnM_`TN?Ib7XUU0zchLCR8E)y zRqVCd5Y;&5QO6b~pqsG|K0e^pcDY}>y71@BPb_%9T+p)BF{1_6fB^kt$scA^s9gZa zfG@(*2g=?c6mZ*ga)y>}WNRE?5lLy})swJ38-qt|nsTq{Whcf?c4)r_%l z60A8^O{~Rr+|jkhw8ZI{eC)qz#bb}%7RNg-5%~Sc+w*|u9H%Y9Z?lb5FGm5yd$R|W zkL?mF9-dDa5+3PV74&Rc_&Y1;O8F4yP!mCjurE_2F`H;fB5)2FYi zQFZ+qoX0H})^3iXC3WHj#Ag={TL$Zd@`n_wExs>MtD9rZ$C>t+>c%bk8*n_>{1EGy zhn9CWt4EkJ)wAo7`e&qb>RFB6clk82=J$t2;5^pDxn~Xx<%XrQH|_VB-NltE*XOGk zGaH+Hp&PWMgTu~G-e~GO(WFO;1Qyk;Kg-MI$2cogyA;&mM{M4LE6LP8j-4p!P}l(D z_p(Qu`g3s|T<(O8ep88jA4TG&Es*K8-rYFd=8#@HRg0A>>B=V?HN}%gb43zuExJD3 z-4K+W$^KOjtIsEx+uG|#d^-x`cEPfpr?JhxKM+@#w}zZb+uV>vInpiAqMW&Tu7 z(#m7c{Asp}2a976SA|y%ydr-13R-)x1WGSis~4F<`oJJ25J>gI0ECBo>bs*@V+LEs};05-BD^;<_R+S@I6S_(CFw3g3hD+ZU8e<==NlkkE| z!L69EVzLs)79BQR6eYA`ciYAbVMNuY5HO|b@&AP*6?ZiDK$}%7+ zK_=u*CI;-^ttlmPgqETx317*CXZ84&h(X(K5JKmh-Kb*0kW)S&zPI<10m)v`3|y4V z32I%0(ap)g!q{v^jx2#c_mi&LdpxvE{Vp?G%6dMqX?UQX5MDWN31&*4bf&0?d6JcQ zloBMWtT^gZ8BbPaJ-4JKkG84RBr%TLHSq(>*k?&~j-AScQrU!!7^QGK6<8Vsr(xp! z;CiJ5WvY@(+`QO`)RP5+TPyqm+IK(wJk$xv14HULnCj4+M3?u^2qNrCyo>gxwppZd z!J!#_$x)(8Yy&@>Z)C__T)0<4=yFIdBo^4I05-f0lm(*Piv9exwpsSAKhG{&oyDPHdAFW5Ee%jHfU74jj z&@OjYkQpKe=M9j|4A^GvS(d?--2lSi%x~eU)Ff+3qAXN=N2Hsks3VQYL(o!PD)G3x z_oxMLQtUWkD(>mqFvD6>B1we&hlqq4?Uc<`8VHm9K^y3)DR`SelP#$exTO?DX+mnb zWWu)6uD7bxEL@S>^u=_TK}%ky*dsl`$;DgtS|e4@B(@nNV{AW@1_p2;f+#d!VFtdH zfF)^sRe`}C|=j)1OZ@`!P~T`;|!A{>hL`(-Zq8$l}& zf+Prl5p_WZ+TikwNEFkg&wQ}CbTjiLNc{B1f5nveN>$8{T`e_g34Fds*MYSjSESQz z6K7K7XJ>3eiNhGAHTWO z|9W;}Kmh`x{lAAqzaO9GHGh2iRo?$bdWAqii769!1A_7)BBTY3V&T9d{iDOll-G>5 z>0)9@;kZO0+YU2fxX@|mYMe75e;rB0I!&(uWf(@KEZrPBy_074vocJTt&97^#5yn4 zphhzw{MFDV%{g;JFlK`zJmyw+1Se&?-~kFsD^2}FQZpnYsh78cU&Nr-b?JCtg65nQwsQge2dg|&TY@SQ-0Q69n1ZcjgTXxglunzs-$oi zAn#Pfh>?iFtp{?FqWV)LVYIdI&zogrrsTR3c55-7{tg3QUNseXF*h~bOqdLN)SEJ% zq(V=4X406G>5sCj;jH`3#0zk}622-G$+l&+(hKRulx!OKYIPcPW~0JZ%CC=w$KauP z=QVVM)0B_sgd4gTlht2JH{?3i%f;Q&9@%b$xN?LSguL!M#F<}VsZvOz;-fbbnO~mpLTJ(?bW&>r zQuE!2FM2+3DJPiEQm4D*(ENECp@#@M8oq+vfQ= z@%HbBzN?Fh?x&C&T(-WRDH$}*Ogd1OxN+Wxvul>QUxjr?^*~Wivt&C%;HPXjqe17Q zE_bC{!H?L>*;R2~Glrn2Rn72^GZ0&T9!&_AJ`J&W_b(6S-4Pv?L=5FE`3^D(_XP0GeIw@>X1*xBqQ)jpkK^LeE_-@*(o*Y9^B zxinnTahkT7(4M7OIGX*maFf({Y2o&rnS4V_7X#A z6m5ETFX$b0tyEM0{TtHbhLG| zu(D_Hva^j#=648TLJIdFd+(2{0ZhA_#WZlpmMSQRC%1!DzY7VV_I1}WW8ttDUYX`^ zKAc}Ib5vA@>Q#5HwM--;`{h}sl!3{EJD=G+r|knGty(orEu87>l)j-~c!k&0)zBKT z`drIt)=UF*_pyQ4mJpM-l_hf{}6 z3|HdwKu?ud7ap0UCq!q8l7=-D=z}>Sn%G?f+3^i2bX>6CnF-u`87jwVO-Yc`_ z7;^-|-qL1Bdkk7tWa}@}7+w!mklIapJPPa*M37lqT}*57e>9-?F<-qlV@#FCGZLW{ z?mDWamj=T7Ip&&bJKSV^Kq|=sg9rlsi?jMq`t0vXSHBmee~EvyWMP1a{`v|S2n#4A z>j7uoZXEb;sd(O`m(Mc(>&*Xd`ae-_|8DwsJCwiH|A~P6C(3Ci6xeT+|1SST`6o^H zPZX^`QT`z9{)y6ij0}<}HV%vs{_>IVhx~Jx{z>iq8|C*f#r#_T1JU6ew6!e7G*zl`r#f%R{xBnuAl%PoQ6e!Uca5%~FefA9T22~I3x literal 0 HcmV?d00001 From 23df8b181f9547693e1d803e18817d65556a9544 Mon Sep 17 00:00:00 2001 From: Sleaker Date: Sat, 22 Oct 2011 21:10:03 -0700 Subject: [PATCH 3/5] added getGroups() to return a full list of all group-names --- .../milkbowl/vault/permission/Permission.java | 6 ++++++ .../plugins/Permission_GroupManager.java | 18 ++++++++++++++++++ .../plugins/Permission_Permissions2.java | 16 ++++++++++++++++ .../plugins/Permission_Permissions3.java | 15 +++++++++++++++ .../plugins/Permission_PermissionsBukkit.java | 10 ++++++++++ .../plugins/Permission_PermissionsEx.java | 14 +++++++++++++- .../plugins/Permission_SuperPerms.java | 5 +++++ 7 files changed, 83 insertions(+), 1 deletion(-) diff --git a/src/net/milkbowl/vault/permission/Permission.java b/src/net/milkbowl/vault/permission/Permission.java index de8f053..fd217b7 100644 --- a/src/net/milkbowl/vault/permission/Permission.java +++ b/src/net/milkbowl/vault/permission/Permission.java @@ -1019,4 +1019,10 @@ public abstract class Permission { public void setGroupSuffix(World world, String group, String suffix) { setGroupSuffix(world.getName(), group, suffix); } + + /** + * Returns a list of all known groups + * @return an Array of String of all groups + */ + abstract public String[] getGroups(); } \ No newline at end of file diff --git a/src/net/milkbowl/vault/permission/plugins/Permission_GroupManager.java b/src/net/milkbowl/vault/permission/plugins/Permission_GroupManager.java index ff121fb..db83afa 100644 --- a/src/net/milkbowl/vault/permission/plugins/Permission_GroupManager.java +++ b/src/net/milkbowl/vault/permission/plugins/Permission_GroupManager.java @@ -1,11 +1,17 @@ package net.milkbowl.vault.permission.plugins; +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; import java.util.logging.Logger; import net.milkbowl.vault.permission.Permission; import org.anjocaido.groupmanager.GroupManager; +import org.anjocaido.groupmanager.data.Group; import org.anjocaido.groupmanager.permissions.AnjoPermissionsHandler; +import org.bukkit.Bukkit; +import org.bukkit.World; import org.bukkit.entity.Player; import org.bukkit.event.Event.Priority; import org.bukkit.event.Event.Type; @@ -321,4 +327,16 @@ public class Permission_GroupManager extends Permission { } return false; } + + @Override + public String[] getGroups() { + Set groupNames = new HashSet(); + for (World world : Bukkit.getServer().getWorlds()) { + Collection groups = groupManager.getWorldsHolder().getWorldData(world.getName()).getGroupList(); + for (Group group : groups) { + groupNames.add(group.getName()); + } + } + return groupNames.toArray(new String[0]); + } } diff --git a/src/net/milkbowl/vault/permission/plugins/Permission_Permissions2.java b/src/net/milkbowl/vault/permission/plugins/Permission_Permissions2.java index 54c67e1..4a0913a 100644 --- a/src/net/milkbowl/vault/permission/plugins/Permission_Permissions2.java +++ b/src/net/milkbowl/vault/permission/plugins/Permission_Permissions2.java @@ -1,7 +1,11 @@ package net.milkbowl.vault.permission.plugins; +import java.util.HashSet; +import java.util.Set; import java.util.logging.Logger; +import org.bukkit.Bukkit; +import org.bukkit.World; import org.bukkit.entity.Player; import org.bukkit.event.Event.Priority; import org.bukkit.event.Event.Type; @@ -13,6 +17,7 @@ import org.bukkit.permissions.PermissionAttachmentInfo; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.PluginManager; +import com.nijiko.permissions.Group; import com.nijiko.permissions.PermissionHandler; import com.nijikokun.bukkit.Permissions.Permissions; @@ -328,4 +333,15 @@ public class Permission_Permissions2 extends Permission { return false; } + @Override + public String[] getGroups() { + Set groupNames = new HashSet(); + for (World world : Bukkit.getServer().getWorlds()) { + for (Group group : perms.getGroups(world.getName())) { + groupNames.add(group.getName()); + } + } + return groupNames.toArray(new String[0]); + } + } diff --git a/src/net/milkbowl/vault/permission/plugins/Permission_Permissions3.java b/src/net/milkbowl/vault/permission/plugins/Permission_Permissions3.java index 4806f15..2df3481 100644 --- a/src/net/milkbowl/vault/permission/plugins/Permission_Permissions3.java +++ b/src/net/milkbowl/vault/permission/plugins/Permission_Permissions3.java @@ -19,10 +19,14 @@ package net.milkbowl.vault.permission.plugins; +import java.util.HashSet; +import java.util.Set; import java.util.logging.Logger; import net.milkbowl.vault.permission.Permission; +import org.bukkit.Bukkit; +import org.bukkit.World; import org.bukkit.entity.Player; import org.bukkit.event.Event.Priority; import org.bukkit.event.Event.Type; @@ -339,4 +343,15 @@ public class Permission_Permissions3 extends Permission { return false; } } + + @Override + public String[] getGroups() { + Set groupNames = new HashSet(); + for (World world : Bukkit.getServer().getWorlds()) { + for (Group group : perms.getGroups(world.getName())) { + groupNames.add(group.getName()); + } + } + return groupNames.toArray(new String[0]); + } } diff --git a/src/net/milkbowl/vault/permission/plugins/Permission_PermissionsBukkit.java b/src/net/milkbowl/vault/permission/plugins/Permission_PermissionsBukkit.java index accd524..5418f9b 100644 --- a/src/net/milkbowl/vault/permission/plugins/Permission_PermissionsBukkit.java +++ b/src/net/milkbowl/vault/permission/plugins/Permission_PermissionsBukkit.java @@ -403,4 +403,14 @@ public class Permission_PermissionsBukkit extends Permission { public void setGroupSuffix(String world, String group, String suffix) { throw new UnsupportedOperationException(getName() + " does not support group info nodes."); } + + @Override + public String[] getGroups() { + List groupNames = new ArrayList(); + for (Group group : perms.getAllGroups()) { + groupNames.add(group.getName()); + } + + return groupNames.toArray(new String[0]); + } } diff --git a/src/net/milkbowl/vault/permission/plugins/Permission_PermissionsEx.java b/src/net/milkbowl/vault/permission/plugins/Permission_PermissionsEx.java index 5d76eec..2d351b5 100644 --- a/src/net/milkbowl/vault/permission/plugins/Permission_PermissionsEx.java +++ b/src/net/milkbowl/vault/permission/plugins/Permission_PermissionsEx.java @@ -82,7 +82,7 @@ public class Permission_PermissionsEx extends Permission { @Override public boolean playerHas(Player player, String permission) { - return this.permission.has(player, permission); + return PermissionsEx.has(player, permission); } @Override @@ -466,4 +466,16 @@ public class Permission_PermissionsEx extends Permission { return false; } } + + @Override + public String[] getGroups() { + PermissionGroup[] groups = PermissionsEx.getPermissionManager().getGroups(); + if (groups == null || groups.length == 0) + return null; + String[] groupNames = new String[groups.length]; + for (int i = 0; i < groups.length; i++) { + groupNames[i] = groups[i].getName(); + } + return groupNames; + } } \ No newline at end of file diff --git a/src/net/milkbowl/vault/permission/plugins/Permission_SuperPerms.java b/src/net/milkbowl/vault/permission/plugins/Permission_SuperPerms.java index cd4f461..5bf6876 100644 --- a/src/net/milkbowl/vault/permission/plugins/Permission_SuperPerms.java +++ b/src/net/milkbowl/vault/permission/plugins/Permission_SuperPerms.java @@ -242,4 +242,9 @@ public class Permission_SuperPerms extends Permission { public void setGroupSuffix(String world, String group, String suffix) { throw new UnsupportedOperationException(getName() + " no data permissions."); } + + @Override + public String[] getGroups() { + throw new UnsupportedOperationException(getName() + " does not support group listing!"); + } } From d18f81d3cfd5447edb0a284a653645748c39c18b Mon Sep 17 00:00:00 2001 From: mung3r Date: Sat, 22 Oct 2011 23:54:22 -0700 Subject: [PATCH 4/5] updated PermissionsEx jar to 1.15.1 --- lib/PermissionsEx.jar | Bin 129529 -> 132878 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/lib/PermissionsEx.jar b/lib/PermissionsEx.jar index c44cde2860ed5133d6b21b64e46c3d508a5a0cae..9f686b387b0af4aabba4929b4fda9932528b2eb6 100644 GIT binary patch delta 29929 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�_-fFWG_)PnT~c*%3%THB~) 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 delta 26458 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

ndz#70V0N4^a{!o^0pfUR{E;P<2 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 Jzo1+T`9I?$Gynhq From 7be65720258a651fbd01e3e6b28431af8113da6a Mon Sep 17 00:00:00 2001 From: mung3r Date: Sun, 23 Oct 2011 00:08:37 -0700 Subject: [PATCH 5/5] calling pex has method via instance instead of static appears to keep compatibility with both 1.15 and 1.15.1 --- .../vault/permission/plugins/Permission_PermissionsEx.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/net/milkbowl/vault/permission/plugins/Permission_PermissionsEx.java b/src/net/milkbowl/vault/permission/plugins/Permission_PermissionsEx.java index 2d351b5..41f5647 100644 --- a/src/net/milkbowl/vault/permission/plugins/Permission_PermissionsEx.java +++ b/src/net/milkbowl/vault/permission/plugins/Permission_PermissionsEx.java @@ -82,7 +82,7 @@ public class Permission_PermissionsEx extends Permission { @Override public boolean playerHas(Player player, String permission) { - return PermissionsEx.has(player, permission); + return this.permission.has(player, permission); } @Override