From a544146ff0cb10818d1779c4f12240e4b567ed39 Mon Sep 17 00:00:00 2001 From: St John Grimbly Date: Wed, 19 May 2021 10:49:50 +0200 Subject: [PATCH 001/188] feature: basic wrapper outline for PySC2/SMAC. --- mava/wrappers/starcraft.py | 137 +++++++++++++++++++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 mava/wrappers/starcraft.py diff --git a/mava/wrappers/starcraft.py b/mava/wrappers/starcraft.py new file mode 100644 index 000000000..2917316dc --- /dev/null +++ b/mava/wrappers/starcraft.py @@ -0,0 +1,137 @@ +# python3 +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://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. + +# See SMAC here: https://github.com/oxwhirl/smac + +"""Wraps a StarCraft II MARL environment (SMAC) as a dm_env environment.""" +import random +from typing import Dict, List, Optional, Tuple, Type + +import numpy as np +from gym.spaces import Box, Discrete +from smac.env import StarCraft2Env # type:ignore + +from mava.wrappers.env_wrappers import ParallelEnvWrapper # , SequentialEnvWrapper + + +# Is it ParallelEnvWrapper or SequentialEnvWrapper +class SMACEnvWrapper(ParallelEnvWrapper): + """ + Wraps a StarCraft II MARL environment (SMAC) as a Mava Parallel environment. + Based on RLlib wrapper provided by SMAC. + """ + + def __init__(self, **smac_args: Optional[Tuple]) -> None: + """Create a new multi-agent StarCraft env compatible with RLlib. + Arguments: + smac_args (dict): Arguments to pass to the underlying + smac.env.starcraft.StarCraft2Env instance. + """ + + self._environment = StarCraft2Env(**smac_args) + self._ready_agents: List = [] + self.observation_space = Dict( + { + "obs": Box(-1, 1, shape=(self._env.get_obs_size(),)), + "action_mask": Box(0, 1, shape=(self._env.get_total_actions(),)), + } + ) + self.action_space: Type[Discrete] = Discrete(self._env.get_total_actions()) + + def reset(self) -> Dict: + """Resets the env and returns observations from ready agents. + Returns: + obs (dict): New observations for each ready agent. + """ + obs_list, state_list = self._env.reset() + return_obs = {} + for i, obs in enumerate(obs_list): + return_obs[i] = { + "action_mask": np.array(self._env.get_avail_agent_actions(i)), + "obs": obs, + } + + self._ready_agents = list(range(len(obs_list))) + return return_obs # TODO return global state for Mixers + + def step(self, action_dict: Dict) -> Tuple: + """Returns observations from ready agents. + The returns are dicts mapping from agent_id strings to values. The + number of agents in the env can vary over time. + Returns + ------- + obs (dict): New observations for each ready agent. + rewards (dict): Reward values for each ready agent. If the + episode is just started, the value will be None. + dones (dict): Done values for each ready agent. The special key + "__all__" (required) is used to indicate env termination. + infos (dict): Optional info values for each agent id. + """ + + actions = [] + for i in self._ready_agents: + if i not in action_dict: + raise ValueError(f"You must supply an action for agent: {i}") + actions.append(action_dict[i]) + + if len(actions) != len(self._ready_agents): + raise ValueError( + f"Number of actions ({len(actions)}) does not match number \ + of ready agents (len(self._ready_agents))." + ) + + rew, done, info = self._env.step(actions) + obs_list = self._env.get_obs() + return_obs = {} + for i, obs in enumerate(obs_list): + return_obs[i] = { + "action_mask": self._env.get_avail_agent_actions(i), + "obs": obs, + } + rews = {i: rew / len(obs_list) for i in range(len(obs_list))} + dones = {i: done for i in range(len(obs_list))} + infos = {i: info for i in range(len(obs_list))} + + self._ready_agents = list(range(len(obs_list))) + return return_obs, rews, dones, infos + + def env_done(self) -> bool: + """ + Returns a bool indicating if all agents in env are done. + """ + return self._environment.env_done # TODO Check SMAC has this function + + @property + def agents(self) -> List: + """ + Returns the active agents in the env. + """ + return NotImplementedError # type:ignore + + @property + def possible_agents(self) -> List: + """ + Returns all the possible agents in the env. + """ + return NotImplementedError # type:ignore + + # Note sure we need these next methods. Comes from RLlib wrapper. + def close(self) -> None: + """Close the environment""" + self._env.close() + + def seed(self, seed: int) -> None: + random.seed(seed) + np.random.seed(seed) From 075dc6d835080986745efaef768901f09f7225fe Mon Sep 17 00:00:00 2001 From: St John Grimbly Date: Wed, 19 May 2021 13:15:47 +0200 Subject: [PATCH 002/188] fix: return timesteps in `reset()` and `step()`. --- mava/wrappers/__init__.py | 1 + mava/wrappers/starcraft.py | 154 ++++++++++++++++++++++++++++++++----- 2 files changed, 134 insertions(+), 21 deletions(-) diff --git a/mava/wrappers/__init__.py b/mava/wrappers/__init__.py index c8c31c85c..b6f9cd8e6 100644 --- a/mava/wrappers/__init__.py +++ b/mava/wrappers/__init__.py @@ -24,6 +24,7 @@ PettingZooAECEnvWrapper, PettingZooParallelEnvWrapper, ) +from mava.wrappers.starcraft import SMACEnvWrapper from mava.wrappers.system_trainer_statistics import ( DetailedTrainerStatistics, NetworkStatisticsActorCritic, diff --git a/mava/wrappers/starcraft.py b/mava/wrappers/starcraft.py index 2917316dc..a01ab1246 100644 --- a/mava/wrappers/starcraft.py +++ b/mava/wrappers/starcraft.py @@ -17,12 +17,18 @@ """Wraps a StarCraft II MARL environment (SMAC) as a dm_env environment.""" import random -from typing import Dict, List, Optional, Tuple, Type +from typing import Any, Dict, List, Optional, Tuple, Type +import dm_env import numpy as np +from acme import specs +from acme.wrappers.gym_wrapper import _convert_to_spec from gym.spaces import Box, Discrete +from pettingzoo.utils.env import ParallelEnv from smac.env import StarCraft2Env # type:ignore +from mava import types +from mava.utils.wrapper_utils import convert_np_type, parameterized_restart from mava.wrappers.env_wrappers import ParallelEnvWrapper # , SequentialEnvWrapper @@ -39,8 +45,9 @@ def __init__(self, **smac_args: Optional[Tuple]) -> None: smac_args (dict): Arguments to pass to the underlying smac.env.starcraft.StarCraft2Env instance. """ - self._environment = StarCraft2Env(**smac_args) + + self._reset_next_step = True self._ready_agents: List = [] self.observation_space = Dict( { @@ -50,23 +57,50 @@ def __init__(self, **smac_args: Optional[Tuple]) -> None: ) self.action_space: Type[Discrete] = Discrete(self._env.get_total_actions()) - def reset(self) -> Dict: + def reset(self) -> Tuple[dm_env.TimeStep, np.array]: """Resets the env and returns observations from ready agents. Returns: obs (dict): New observations for each ready agent. """ + self._reset_next_step = False + self._step_type = dm_env.StepType.FIRST + + # TODO Check the form of this state list and convert for return. obs_list, state_list = self._env.reset() - return_obs = {} + observe: Dict[str, np.ndarray] = {} for i, obs in enumerate(obs_list): - return_obs[i] = { + agent = f"agent_{i}" + observe[agent] = { # TODO Only obs in this Dict or mask too? "action_mask": np.array(self._env.get_avail_agent_actions(i)), "obs": obs, } self._ready_agents = list(range(len(obs_list))) - return return_obs # TODO return global state for Mixers - def step(self, action_dict: Dict) -> Tuple: + discount_spec = self.discount_spec() + self._discounts = { + agent: convert_np_type(discount_spec[agent].dtype, 1) + for agent in self._environment.possible_agents + } + observations = self._convert_observations( + observe, {agent: False for agent in self.possible_agents} + ) + rewards_spec = self.reward_spec() + rewards = { + agent: convert_np_type(rewards_spec[agent].dtype, 0) + for agent in self.possible_agents + } + discount_spec = self.discount_spec() + self._discounts = { + agent: convert_np_type(discount_spec[agent].dtype, 1) + for agent in self.possible_agents + } + + timestep = parameterized_restart(rewards, self._discounts, observations) + + return timestep, {"s_t": state_list} # TODO Convert this to correct form + + def step(self, action_dict: Dict) -> Tuple[dm_env.TimeStep, np.array]: """Returns observations from ready agents. The returns are dicts mapping from agent_id strings to values. The number of agents in the env can vary over time. @@ -79,6 +113,8 @@ def step(self, action_dict: Dict) -> Tuple: "__all__" (required) is used to indicate env termination. infos (dict): Optional info values for each agent id. """ + if self._reset_next_step: + return self.reset() actions = [] for i in self._ready_agents: @@ -92,20 +128,51 @@ def step(self, action_dict: Dict) -> Tuple: of ready agents (len(self._ready_agents))." ) - rew, done, info = self._env.step(actions) + rewards, dones, infos = self._env.step(actions) obs_list = self._env.get_obs() + return_obs = {} for i, obs in enumerate(obs_list): return_obs[i] = { "action_mask": self._env.get_avail_agent_actions(i), "obs": obs, } - rews = {i: rew / len(obs_list) for i in range(len(obs_list))} - dones = {i: done for i in range(len(obs_list))} - infos = {i: info for i in range(len(obs_list))} - + rewards = {i: rewards / len(obs_list) for i in range(len(obs_list))} + dones = {i: dones for i in range(len(obs_list))} + infos = {i: infos for i in range(len(obs_list))} self._ready_agents = list(range(len(obs_list))) - return return_obs, rews, dones, infos + + rewards_spec = self.reward_spec() + + # Handle empty rewards + if not rewards: + rewards = { + agent: convert_np_type(rewards_spec[agent].dtype, 0) + for agent in self.possible_agents + } + else: + rewards = { + agent: convert_np_type(rewards_spec[agent].dtype, reward) + for agent, reward in rewards.items() + } + + if return_obs: + return_obs = self._convert_observations(return_obs, dones) + + if self.env_done(): + self._step_type = dm_env.StepType.LAST + self._reset_next_step = True + else: + self._step_type = dm_env.StepType.MID + + timestep = dm_env.TimeStep( + observation=return_obs, + reward=rewards, + discount=self._discounts, + step_type=self._step_type, + ) + + return timestep # TODO return global state as well def env_done(self) -> bool: """ @@ -113,19 +180,64 @@ def env_done(self) -> bool: """ return self._environment.env_done # TODO Check SMAC has this function + def observation_spec(self) -> types.Observation: + observation_specs = {} + for agent in self._environment.possible_agents: + observation_specs[agent] = types.OLT( + observation=_convert_to_spec( + self._environment.observation_spaces[agent] + ), + legal_actions=_convert_to_spec(self._environment.action_spaces[agent]), + terminal=specs.Array((1,), np.float32), + ) + return observation_specs + + def action_spec(self) -> Dict[str, specs.DiscreteArray]: + action_specs = {} + for agent in self._environment.possible_agents: + action_specs[agent] = _convert_to_spec( + self._environment.action_spaces[agent] + ) + return action_specs + + def reward_spec(self) -> Dict[str, specs.Array]: + reward_specs = {} + for agent in self._environment.possible_agents: + reward_specs[agent] = specs.Array((), np.float32) + + return reward_specs + + def discount_spec(self) -> Dict[str, specs.BoundedArray]: + discount_specs = {} + for agent in self._environment.possible_agents: + discount_specs[agent] = specs.BoundedArray( + (), np.float32, minimum=0, maximum=1.0 + ) + return discount_specs + + def extra_spec(self) -> Dict[str, specs.BoundedArray]: + return {} + @property def agents(self) -> List: - """ - Returns the active agents in the env. - """ - return NotImplementedError # type:ignore + return self._environment.agents @property def possible_agents(self) -> List: - """ - Returns all the possible agents in the env. - """ - return NotImplementedError # type:ignore + return self._environment.possible_agents + + @property + def environment(self) -> ParallelEnv: + """Returns the wrapped environment.""" + return self._environment + + @property + def current_agent(self) -> Any: + return self._environment.agent_selection + + def __getattr__(self, name: str) -> Any: + """Expose any other attributes of the underlying environment.""" + return getattr(self._environment, name) # Note sure we need these next methods. Comes from RLlib wrapper. def close(self) -> None: From 873929b0499ee99837e93f3d9445dc43072a22ec Mon Sep 17 00:00:00 2001 From: St John Grimbly Date: Wed, 19 May 2021 13:18:59 +0200 Subject: [PATCH 003/188] Add documentation comment. --- mava/wrappers/starcraft.py | 1 + 1 file changed, 1 insertion(+) diff --git a/mava/wrappers/starcraft.py b/mava/wrappers/starcraft.py index a01ab1246..6f7cda7d5 100644 --- a/mava/wrappers/starcraft.py +++ b/mava/wrappers/starcraft.py @@ -14,6 +14,7 @@ # limitations under the License. # See SMAC here: https://github.com/oxwhirl/smac +# Documentation available at smac/blob/master/docs/smac.md """Wraps a StarCraft II MARL environment (SMAC) as a dm_env environment.""" import random From e148db49609cb664542b5f93a5026ff920c92ed0 Mon Sep 17 00:00:00 2001 From: St John Grimbly Date: Thu, 20 May 2021 09:41:11 +0200 Subject: [PATCH 004/188] documentation: add instructions for SCII env. --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index 67587e211..1f3ae3a7b 100644 --- a/README.md +++ b/README.md @@ -124,6 +124,15 @@ We have tested `mava` on Python 3.6, 3.7 and 3.8. pip install .[flatland] ``` + NB: For StarCraft II installation, this must be installed separately according to your operating system. + To install the StarCraft II ML environment and associated packages, please follow the instructions on [PySC2](https://github.com/deepmind/pysc2) to install the StarCraft II game files. + Please ensure you have the required game maps (for both PySC2 and SMAC) extracted in the StarCraft II maps directory. + Once this is done you can install the packages for the single agent case (PySC2) and the multi-agent case (SMAC). + ```bash + pip install pysc2 + pip install git+https://github.com/oxwhirl/smac.git + ``` + We also have a list of [optional installs](OPTIONAL_INSTALL.md) for extra functionality such as the use of Atari environments, environment wrappers, gpu support and agent episode recording. ## Contributing From 8287e30046ebb75bf06ac21f5491097622779652 Mon Sep 17 00:00:00 2001 From: Kevin Eloff Date: Thu, 20 May 2021 12:04:22 +0200 Subject: [PATCH 005/188] feat: update dial trainer --- mava/components/tf/networks/dial.py | 2 +- mava/systems/tf/dial/training.py | 176 ++++++++++++++++------------ 2 files changed, 99 insertions(+), 79 deletions(-) diff --git a/mava/components/tf/networks/dial.py b/mava/components/tf/networks/dial.py index 21193c9fc..71b2d79ff 100644 --- a/mava/components/tf/networks/dial.py +++ b/mava/components/tf/networks/dial.py @@ -91,7 +91,7 @@ def __call__( if state is None: state = self.initial_state() if message is None: - message = tf.zeros((1, self._message_dim), dtype=tf.float32) + message = tf.zeros((x.shape[0], self._message_dim), dtype=tf.float32) x_task = self.task_mlp(x) x_message = self.message_in_mlp(message) diff --git a/mava/systems/tf/dial/training.py b/mava/systems/tf/dial/training.py index ed987b02d..fb65f2823 100644 --- a/mava/systems/tf/dial/training.py +++ b/mava/systems/tf/dial/training.py @@ -233,42 +233,67 @@ def _forward(self, inputs: Any) -> None: core_states = extra["core_states"] - bs = actions[self._agents[0]].shape[1] - - self.bs = bs - - T = actions[self._agents[0]].shape[0] + self.bs = actions[self._agents[0]].shape[1] # Batch Size + T = actions[self._agents[0]].shape[0] # Episode Length with tf.GradientTape(persistent=True) as tape: - policy_losses = {agent_id: tf.zeros(bs) for agent_id in self._agents} - # for each batch - # for b in range(bs): - # Unroll episode and store states, messages + policy_losses = {agent_id: tf.zeros(self.bs) for agent_id in self._agents} - messages = { - 0: { + # Unroll episode and store states, messages, action values + # for policy and target policy + policy = {} + target_policy = {} + + policy["messages"] = { + -1: { agent_id: core_states[agent_id]["message"][0] for agent_id in self._agents } - } # index of time t - - channel = {} + } + policy["states"] = { + -1: { + agent_id: core_states[agent_id]["state"][0] + for agent_id in self._agents + } + } + policy["actions"] = {} + policy["channel"] = {} - states = { - 0: { + target_policy["messages"] = { + -1: { + agent_id: core_states[agent_id]["message"][0] + for agent_id in self._agents + } + } + target_policy["states"] = { + -1: { agent_id: core_states[agent_id]["state"][0] for agent_id in self._agents } - } # index of time t + } + target_policy["actions"] = {} + target_policy["channel"] = {} # For all time-steps for t in range(0, T, 1): - channel[t] = self._communication_module.process_messages(messages[t])[ + policy["channel"][t - 1] = self._communication_module.process_messages( + policy["messages"][t - 1] + )[self._agents[0]] + target_policy["channel"][ + t - 1 + ] = self._communication_module.process_messages( + target_policy["messages"][t - 1] + )[ self._agents[0] ] - messages[t + 1] = {} - states[t + 1] = {} + policy["messages"][t] = {} + policy["states"][t] = {} + policy["actions"][t] = {} + + target_policy["messages"][t] = {} + target_policy["states"][t] = {} + target_policy["actions"][t] = {} # For each agent for agent_id in self._agents: @@ -276,90 +301,83 @@ def _forward(self, inputs: Any) -> None: # Agent input at time t obs_in = observations[agent_id].observation[t] - state_in = states[t][agent_id] - message_in = channel[t] + # Policy + state_in = policy["states"][t - 1][agent_id] + message_in = policy["channel"][t - 1] - batched_observation = obs_in - batched_state = state_in - batched_message = message_in + (action, message), state = self._policy_networks[agent_type]( + obs_in, state_in, message_in + ) + + # Target policy + target_state_in = policy["states"][t - 1][agent_id] + target_message_in = policy["channel"][t - 1] - (q_t, m_t), s_t = self._policy_networks[agent_type]( - batched_observation, batched_state, batched_message + ( + target_action, + target_message, + ), target_state = self._target_policy_networks[agent_type]( + obs_in, target_state_in, target_message_in ) - # TODO (dries): Why was this here? Is it still needed? - # if obs_in[0] == 0: - # m_t = tf.zeros_like(m_t) + policy["messages"][t][agent_id] = message + policy["states"][t][agent_id] = state + policy["actions"][t][agent_id] = action + + target_policy["messages"][t][agent_id] = target_message + target_policy["states"][t][agent_id] = target_state + target_policy["actions"][t][agent_id] = target_action - messages[t + 1][agent_id] = m_t - states[t + 1][agent_id] = s_t + # policy['channel'][t] = self._communication_module.process_messages( + # policy['messages'][t] + # )[self._agents[0]] - channel[t + 1] = self._communication_module.process_messages( - messages[t + 1] - )[self._agents[0]] + # target_policy['channel'][t] = self._communication_module.process_messages( + # target_policy['messages'][t] + # )[self._agents[0]] - # Backtrack episode + # Backtrack episode and calculate loss # For t=T to 1, -1 do for t in range(T - 1, 0, -1): # For each agent a do for agent_id in self._agents: - agent_type = self.agent_net_keys[agent_id] - - # All at timestep t - agent_input = observations[agent_id].observation - # (sequence,batch,1) - next_message = channel[t] - message = channel[t - 1] - next_state = states[t][agent_id] - state = states[t - 1][agent_id] - - action = actions[agent_id] - - reward = rewards[agent_id] + # agent_type = self.agent_net_keys[agent_id] + # All at timestep t - 1 + action = actions[agent_id][t - 1] + message = core_states[agent_id]["message"][t - 1] + reward = rewards[agent_id][t - 1] + terminal = t == T - 1 discount = tf.cast( self._discount, dtype=discounts[agent_id][t, 0].dtype ) - terminal = t == T - 1 - # y_t_a = r_t - y_action = reward[t - 1] - y_message = reward[t - 1] + y_action = reward + y_message = reward # y_t_a = r_t + discount * max_u Q(t) if not terminal: - batched_observation = agent_input[t] - batched_state = next_state - batched_message = next_message - - (q_t, m_t), s = self._target_policy_networks[agent_type]( - batched_observation, batched_state, batched_message + y_action += discount * tf.reduce_max( + target_policy["actions"][t][agent_id] + ) + y_message += discount * tf.reduce_max( + target_policy["messages"][t][agent_id] ) - - y_action += discount * tf.reduce_max(q_t) - y_message += discount * tf.reduce_max(m_t) - # y_message += discount * m_t # d_Q_t_a = y_t_a - Q(t-1) - batched_observation = agent_input[t - 1] - batched_state = state - batched_message = message - - # TODO (dries): Why is the policy values calculated - # again? Was this not done in the first loop? - (q_t1, m_t1), s = self._policy_networks[agent_type]( - batched_observation, batched_state, batched_message + td_action = y_action - tf.gather( + policy["actions"][t - 1][agent_id], action, batch_dims=1 ) - td_action = y_action - tf.gather(q_t1, action[t - 1], batch_dims=1) - # d_theta = d_theta + d_Q_t_a ^ 2 policy_losses[agent_id] += td_action ** 2 # Communication grads td_comm = y_message - tf.gather( - m_t1, tf.argmax(next_message, axis=-1), batch_dims=1 + policy["messages"][t - 1][agent_id], + tf.argmax(message, axis=-1), + batch_dims=1, ) policy_losses[agent_id] += td_comm ** 2 @@ -368,6 +386,7 @@ def _forward(self, inputs: Any) -> None: policy_losses[key] = { "policy_loss": tf.reduce_mean(policy_losses[key], axis=0) } + self.policy_losses: Dict[str, Dict[str, tf.Tensor]] = policy_losses self.tape = tape @@ -384,10 +403,11 @@ def _backward(self) -> None: agent_key = self.agent_net_keys[agent] # Get trainable variables. - policy_variables = ( - self._observation_networks[agent_key].trainable_variables - + self._policy_networks[agent_key].trainable_variables - ) + # policy_variables = ( + # self._observation_networks[agent_key].trainable_variables + # + self._policy_networks[agent_key].trainable_variables + # ) + policy_variables = self._policy_networks[agent_key].trainable_variables # Compute gradients. # Note: Warning "WARNING:tensorflow:Calling GradientTape.gradient From af0f46f2d7f9c1bb25455300b84091ddd83f30dc Mon Sep 17 00:00:00 2001 From: Kevin Eloff Date: Thu, 20 May 2021 15:32:59 +0200 Subject: [PATCH 006/188] fix: target network --- mava/systems/tf/dial/training.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/mava/systems/tf/dial/training.py b/mava/systems/tf/dial/training.py index fb65f2823..c7207506c 100644 --- a/mava/systems/tf/dial/training.py +++ b/mava/systems/tf/dial/training.py @@ -310,8 +310,8 @@ def _forward(self, inputs: Any) -> None: ) # Target policy - target_state_in = policy["states"][t - 1][agent_id] - target_message_in = policy["channel"][t - 1] + target_state_in = target_policy["states"][t - 1][agent_id] + target_message_in = target_policy["channel"][t - 1] ( target_action, @@ -328,13 +328,13 @@ def _forward(self, inputs: Any) -> None: target_policy["states"][t][agent_id] = target_state target_policy["actions"][t][agent_id] = target_action - # policy['channel'][t] = self._communication_module.process_messages( - # policy['messages'][t] - # )[self._agents[0]] + policy["channel"][t] = self._communication_module.process_messages( + policy["messages"][t] + )[self._agents[0]] - # target_policy['channel'][t] = self._communication_module.process_messages( - # target_policy['messages'][t] - # )[self._agents[0]] + target_policy["channel"][t] = self._communication_module.process_messages( + target_policy["messages"][t] + )[self._agents[0]] # Backtrack episode and calculate loss # For t=T to 1, -1 do From 5d9e0b0c1fdfd279a8b9c0c3cce4aa22024bfde1 Mon Sep 17 00:00:00 2001 From: Dries Date: Fri, 21 May 2021 13:34:51 +0200 Subject: [PATCH 007/188] feature: Save progress. --- ...centralised_feedforward_discrete_maddpg.py | 217 ++++++++++++++++++ mava/systems/tf/maddpg/execution.py | 141 ++++++++++++ mava/systems/tf/maddpg/training.py | 4 +- mava/systems/tf/mappo/execution.py | 3 +- 4 files changed, 362 insertions(+), 3 deletions(-) create mode 100644 examples/debugging_envs/run_decentralised_feedforward_discrete_maddpg.py create mode 100644 mava/systems/tf/maddpg/execution.py diff --git a/examples/debugging_envs/run_decentralised_feedforward_discrete_maddpg.py b/examples/debugging_envs/run_decentralised_feedforward_discrete_maddpg.py new file mode 100644 index 000000000..c2eb6b582 --- /dev/null +++ b/examples/debugging_envs/run_decentralised_feedforward_discrete_maddpg.py @@ -0,0 +1,217 @@ +# python3 +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://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. + +"""Example running feedforward MADDPG on debug MPE environments.""" + +import functools +from datetime import datetime +from typing import Any, Dict, Mapping, Sequence, Union + +from dm_env import specs + +Array = specs.Array +BoundedArray = specs.BoundedArray +DiscreteArray = specs.DiscreteArray +import launchpad as lp +import numpy as np +import sonnet as snt +import tensorflow as tf +from absl import app, flags +from acme import types +from acme.tf import networks +from acme.tf import utils as tf2_utils +from launchpad.nodes.python.local_multi_processing import PythonProcess + +from mava import specs as mava_specs +from mava.systems.tf import maddpg +from mava.systems.tf.maddpg.execution import MADDPGDiscreteFeedForwardExecutor +from mava.utils import lp_utils +from mava.utils.environments import debugging_utils +from mava.utils.loggers import logger_utils + +FLAGS = flags.FLAGS +flags.DEFINE_string( + "env_name", + "simple_spread", + "Debugging environment name (str).", +) +flags.DEFINE_string( + "action_space", + "discrete", + "Environment action space type (str).", +) +flags.DEFINE_string( + "mava_id", + str(datetime.now()), + "Experiment identifier that can be used to continue experiments.", +) +flags.DEFINE_string("base_dir", "~/mava/", "Base dir to store experiments.") + + +def make_networks( + environment_spec: mava_specs.MAEnvironmentSpec, + policy_networks_layer_sizes: Union[Dict[str, Sequence], Sequence] = ( + 256, + 256, + 256, + ), + critic_networks_layer_sizes: Union[Dict[str, Sequence], Sequence] = (512, 512, 256), + shared_weights: bool = True, + sigma: float = 0.3, +) -> Mapping[str, types.TensorTransformation]: + """Creates networks used by the agents.""" + specs = environment_spec.get_agent_specs() + + # Create agent_type specs + if shared_weights: + type_specs = {key.split("_")[0]: specs[key] for key in specs.keys()} + specs = type_specs + + if isinstance(policy_networks_layer_sizes, Sequence): + policy_networks_layer_sizes = { + key: policy_networks_layer_sizes for key in specs.keys() + } + if isinstance(critic_networks_layer_sizes, Sequence): + critic_networks_layer_sizes = { + key: critic_networks_layer_sizes for key in specs.keys() + } + + observation_networks = {} + policy_networks = {} + critic_networks = {} + for key in specs.keys(): + + # TODO (dries): Make specs[key].actions return a list of specs for hybrid action space + + # Get total number of action dimensions from action spec. + if type(specs[key].actions) == DiscreteArray: + num_act_dimensions = specs[key].actions.num_values + elif type(specs[key].actions) == BoundedArray: + num_act_dimensions = np.prod(specs[key].actions.shape, dtype=int) + else: + raise NotImplementedError + + # Create the shared observation network; here simply a state-less operation. + observation_network = tf2_utils.to_sonnet_module(tf.identity) + + # Create the policy network. + policy_network = snt.Sequential( + [ + networks.LayerNormMLP( + policy_networks_layer_sizes[key], activate_final=True + ), + networks.NearZeroInitializedLinear(num_act_dimensions), + networks.TanhToSpec(specs[key].actions), + networks.ClippedGaussian(sigma), + networks.ClipToSpec(specs[key].actions), + ] + ) + + # Create the critic network. + critic_network = snt.Sequential( + [ + # The multiplexer concatenates the observations/actions. + networks.CriticMultiplexer(), + networks.LayerNormMLP( + critic_networks_layer_sizes[key], activate_final=False + ), + snt.Linear(1), + ] + ) + observation_networks[key] = observation_network + policy_networks[key] = policy_network + critic_networks[key] = critic_network + + return { + "policies": policy_networks, + "critics": critic_networks, + "observations": observation_networks, + } + + +def main(_: Any) -> None: + # environment + environment_factory = functools.partial( + debugging_utils.make_environment, + env_name=FLAGS.env_name, + action_space=FLAGS.action_space, + ) + + # networks + network_factory = lp_utils.partial_kwargs(make_networks) + + # loggers + # set custom logger config for each process + # -- log trainer,executor and evaluator to TF + # -- log only evaluator to terminal + log_every = 10 + logger_config = { + "trainer": { + "directory": FLAGS.base_dir, + "to_terminal": False, + "to_tensorboard": True, + "time_stamp": FLAGS.mava_id, + "time_delta": log_every, + }, + "executor": { + "directory": FLAGS.base_dir, + "to_terminal": False, + "to_tensorboard": True, + "time_stamp": FLAGS.mava_id, + "time_delta": log_every, + }, + "evaluator": { + "directory": FLAGS.base_dir, + "to_terminal": True, + "to_tensorboard": True, + "time_stamp": FLAGS.mava_id, + "time_delta": log_every, + }, + } + + # Checkpointer appends "Checkpoints" to checkpoint_dir + checkpoint_dir = f"{FLAGS.base_dir}/{FLAGS.mava_id}" + + # distributed program + program = maddpg.MADDPG( + environment_factory=environment_factory, + network_factory=network_factory, + logger_config=logger_config, + num_executors=2, + executor_fn=MADDPGDiscreteFeedForwardExecutor, + policy_optimizer=snt.optimizers.Adam(learning_rate=1e-4), + critic_optimizer=snt.optimizers.Adam(learning_rate=1e-4), + checkpoint_subpath=checkpoint_dir, + max_gradient_norm=40.0, + ).build() + + # launch + gpu_id = -1 + env_vars = {"CUDA_VISIBLE_DEVICES": str(gpu_id)} + local_resources = { + "trainer": [], + "evaluator": PythonProcess(env=env_vars), + "executor": PythonProcess(env=env_vars), + } + lp.launch( + program, + lp.LaunchType.LOCAL_MULTI_PROCESSING, + terminal="current_terminal", + local_resources=local_resources, + ) + + +if __name__ == "__main__": + app.run(main) diff --git a/mava/systems/tf/maddpg/execution.py b/mava/systems/tf/maddpg/execution.py new file mode 100644 index 000000000..0c43708ff --- /dev/null +++ b/mava/systems/tf/maddpg/execution.py @@ -0,0 +1,141 @@ +# python3 +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://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. + +from typing import Any, Dict, Optional, Tuple + +import dm_env +import numpy as np +import sonnet as snt +import tensorflow as tf +import tensorflow_probability as tfp +from acme import types + +# Internal imports. +from acme.tf import utils as tf2_utils +from acme.tf import variable_utils as tf2_variable_utils + +from mava import adders, core +from mava.systems import executors + +tfd = tfp.distributions + + +class MADDPGDiscreteFeedForwardExecutor(executors.FeedForwardExecutor): + """A feed-forward executor for discrete actions in MADDPG. + An executor based on a feed-forward policy for each agent in the system + which takes non-batched observations and outputs non-batched actions. + It also allows adding experiences to replay and updating the weights + from the policy on the learner. + """ + + def __init__( + self, + policy_networks: Dict[str, snt.Module], + adder: Optional[adders.ParallelAdder] = None, + variable_client: Optional[tf2_variable_utils.VariableClient] = None, + shared_weights: bool = True, + ): + + """Initializes the executor. + Args: + networks: the (recurrent) policy to run for each agent in the system. + shared_weights: specify if weights are shared between agent networks. + adder: the adder object to which allows to add experiences to a + dataset/replay buffer. + variable_client: object which allows to copy weights from the trainer copy + of the policies to the executor copy (in case they are separate). + """ + + # Store these for later use. + self._adder = adder + self._variable_client = variable_client + self._policy_networks = policy_networks + self._shared_weights = shared_weights + self.self._policy_outputs: Dict[str, Any] = {} + + @tf.function + def _policy( + self, agent: str, observation: types.NestedTensor + ) -> types.NestedTensor: + + # Add a dummy batch dimension and as a side effect convert numpy to TF. + batched_observation = tf2_utils.add_batch_dim(observation) + + # index network either on agent type or on agent id + agent_key = agent.split("_")[0] if self._shared_weights else agent + + # Compute the policy, conditioned on the observation. + policy = self._policy_networks[agent_key](batched_observation) + + # Sample from the policy if it is stochastic. + action = tf.math.argmax(policy) + + return action, policy + + def select_action( + self, agent: str, observation: types.NestedArray + ) -> types.NestedArray: + + # Step the recurrent policy/value network forward + # given the current observation and state. + action, self._policy_outputs[agent] = self._policy(agent, observation) + + # Return a numpy array with squeezed out batch dimension. + action = tf2_utils.to_numpy_squeeze(action) + return action + + def select_actions( + self, observations: Dict[str, types.NestedArray] + ) -> Dict[str, types.NestedArray]: + + actions = {} + for agent, observation in observations.items(): + action = self.select_action(agent, observation) + actions[agent] = action + + return actions + + def observe_first( + self, + timestep: dm_env.TimeStep, + extras: Dict[str, types.NestedArray] = {}, + ) -> None: + + if self._adder: + + # Generate dummy policy values to send through + self.select_actions(timestep.observation) + extras.update({"policy_out": self._policy_outputs}) + self._adder.add_first(timestep) + + def observe( + self, + actions: Dict[str, types.NestedArray], + next_timestep: dm_env.TimeStep, + next_extras: Dict[str, types.NestedArray] = {}, + ) -> None: + + if not self._adder: + return + + next_extras.update({"policy_out": self._policy_outputs}) + + next_extras = tf2_utils.to_numpy_squeeze(next_extras) + + self._adder.add(actions, next_timestep, next_extras) + + def update(self, wait: bool = False) -> None: + if self._variable_client: + self._variable_client.update(wait) diff --git a/mava/systems/tf/maddpg/training.py b/mava/systems/tf/maddpg/training.py index 63057fd23..2bfe259c9 100644 --- a/mava/systems/tf/maddpg/training.py +++ b/mava/systems/tf/maddpg/training.py @@ -309,7 +309,9 @@ def _forward(self, inputs: Any) -> None: # This discount is applied to future rewards after r_t. # o_t = dictionary of next observations or next observation sequences # e_t [Optional] = extra data for timestep t that the agents persist in replay. - o_tm1, a_tm1, e_tm1, r_t, d_t, o_t, e_t = inputs.data + o_tm1, _, e_tm1, r_t, d_t, o_t, e_t = inputs.data + + a_tm1 = e_tm1["policy_outputs"] self.policy_losses = {} self.critic_losses = {} diff --git a/mava/systems/tf/mappo/execution.py b/mava/systems/tf/mappo/execution.py index 38ac4f3f9..eb65b00b0 100644 --- a/mava/systems/tf/mappo/execution.py +++ b/mava/systems/tf/mappo/execution.py @@ -62,7 +62,6 @@ def __init__( self._variable_client = variable_client self._policy_networks = policy_networks self._shared_weights = shared_weights - self._prev_log_probs: Dict[str, Any] = {} @tf.function @@ -85,7 +84,7 @@ def _policy( log_prob = policy.log_prob(action) # Cast for compatibility with reverb. - # smaple() returns a 'int32', which is a problem. + # sample() returns a 'int32', which is a problem. if isinstance(policy, tfp.distributions.Categorical): action = tf.cast(action, "int64") From 518b5bea71cb477bcef49a94f8259713b2e096de Mon Sep 17 00:00:00 2001 From: Dries Date: Fri, 21 May 2021 16:22:14 +0200 Subject: [PATCH 008/188] feature: Save changes. --- mava/environment_loop.py | 9 ++++++++- mava/systems/tf/maddpg/execution.py | 19 ++++++++----------- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/mava/environment_loop.py b/mava/environment_loop.py index 65b4860e9..3e9e7e755 100644 --- a/mava/environment_loop.py +++ b/mava/environment_loop.py @@ -280,7 +280,14 @@ def run_episode(self) -> loggers.LoggingData: # Generate an action from the agent's policy and step the environment. actions = self._get_actions(timestep) - timestep = self._environment.step(actions) + + if type(actions) == tuple: + # Return other extra action information like the policy information as well + env_actions, _ = actions + else: + env_actions = actions + + timestep = self._environment.step(env_actions) if type(timestep) == tuple: timestep, env_extras = timestep diff --git a/mava/systems/tf/maddpg/execution.py b/mava/systems/tf/maddpg/execution.py index 0c43708ff..c0dd02097 100644 --- a/mava/systems/tf/maddpg/execution.py +++ b/mava/systems/tf/maddpg/execution.py @@ -63,8 +63,6 @@ def __init__( self._variable_client = variable_client self._policy_networks = policy_networks self._shared_weights = shared_weights - self.self._policy_outputs: Dict[str, Any] = {} - @tf.function def _policy( self, agent: str, observation: types.NestedTensor @@ -90,22 +88,24 @@ def select_action( # Step the recurrent policy/value network forward # given the current observation and state. - action, self._policy_outputs[agent] = self._policy(agent, observation) + action, policy = self._policy(agent, observation) # Return a numpy array with squeezed out batch dimension. action = tf2_utils.to_numpy_squeeze(action) - return action + return [action, policy] def select_actions( self, observations: Dict[str, types.NestedArray] ) -> Dict[str, types.NestedArray]: actions = {} + policies = {} for agent, observation in observations.items(): - action = self.select_action(agent, observation) - actions[agent] = action + action, policy = self.select_action(agent, observation) + actions[agent] = action[0] + policies[agent] = policy - return actions + return [actions, policies] def observe_first( self, @@ -116,8 +116,6 @@ def observe_first( if self._adder: # Generate dummy policy values to send through - self.select_actions(timestep.observation) - extras.update({"policy_out": self._policy_outputs}) self._adder.add_first(timestep) def observe( @@ -130,8 +128,7 @@ def observe( if not self._adder: return - next_extras.update({"policy_out": self._policy_outputs}) - + self.adder.next_extras.update({"policy_out": self._policy_outputs}) next_extras = tf2_utils.to_numpy_squeeze(next_extras) self._adder.add(actions, next_timestep, next_extras) From 9113abf19297eac1858a424c9f7319e8a3d04dec Mon Sep 17 00:00:00 2001 From: St John Grimbly Date: Fri, 21 May 2021 21:18:22 +0200 Subject: [PATCH 009/188] fix: add SCII envs to tests. --- mava/wrappers/starcraft.py | 40 ++++++++++++++++---------------------- setup.py | 13 ++++++++++++- 2 files changed, 29 insertions(+), 24 deletions(-) diff --git a/mava/wrappers/starcraft.py b/mava/wrappers/starcraft.py index 6f7cda7d5..b838bcbe1 100644 --- a/mava/wrappers/starcraft.py +++ b/mava/wrappers/starcraft.py @@ -30,10 +30,9 @@ from mava import types from mava.utils.wrapper_utils import convert_np_type, parameterized_restart -from mava.wrappers.env_wrappers import ParallelEnvWrapper # , SequentialEnvWrapper +from mava.wrappers.env_wrappers import ParallelEnvWrapper -# Is it ParallelEnvWrapper or SequentialEnvWrapper class SMACEnvWrapper(ParallelEnvWrapper): """ Wraps a StarCraft II MARL environment (SMAC) as a Mava Parallel environment. @@ -182,39 +181,34 @@ def env_done(self) -> bool: return self._environment.env_done # TODO Check SMAC has this function def observation_spec(self) -> types.Observation: - observation_specs = {} - for agent in self._environment.possible_agents: - observation_specs[agent] = types.OLT( + return { + agent: types.OLT( observation=_convert_to_spec( self._environment.observation_spaces[agent] ), legal_actions=_convert_to_spec(self._environment.action_spaces[agent]), terminal=specs.Array((1,), np.float32), ) - return observation_specs + for agent in self._environment.possible_agents + } def action_spec(self) -> Dict[str, specs.DiscreteArray]: - action_specs = {} - for agent in self._environment.possible_agents: - action_specs[agent] = _convert_to_spec( - self._environment.action_spaces[agent] - ) - return action_specs + return { + agent: _convert_to_spec(self._environment.action_spaces[agent]) + for agent in self._environment.possible_agents + } def reward_spec(self) -> Dict[str, specs.Array]: - reward_specs = {} - for agent in self._environment.possible_agents: - reward_specs[agent] = specs.Array((), np.float32) - - return reward_specs + return { + agent: specs.Array((), np.float32) + for agent in self._environment.possible_agents + } def discount_spec(self) -> Dict[str, specs.BoundedArray]: - discount_specs = {} - for agent in self._environment.possible_agents: - discount_specs[agent] = specs.BoundedArray( - (), np.float32, minimum=0, maximum=1.0 - ) - return discount_specs + return { + agent: specs.BoundedArray((), np.float32, minimum=0, maximum=1.0) + for agent in self._environment.possible_agents + } def extra_spec(self) -> Dict[str, specs.BoundedArray]: return {} diff --git a/setup.py b/setup.py index a01f5ac8b..12099540b 100644 --- a/setup.py +++ b/setup.py @@ -39,7 +39,18 @@ "trfl", ] -env_requirements = ["pettingzoo>=1.8.2", "multi_agent_ale_py", "supersuit", "pygame"] +# NOTE (St John, for Kale-ab) The SMAC installed when callling `pip install +# smac` seems to be a different package. We actually need to install SMAC +# via pip `install git+https://github.com/oxwhirl/smac.git`. PySC2 is the +# single agent env for StarCraft II, required by SMAC. +env_requirements = [ + "pettingzoo>=1.8.2", + "multi_agent_ale_py", + "supersuit", + "pygame", + "pysc2", + "smac", +] launchpad_requirements = [ "dm-launchpad", From 33798716ba8e7551e47546251e5086ffdea828b1 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Sat, 22 May 2021 10:19:02 +0200 Subject: [PATCH 010/188] update ci to run on dev branch --- .github/workflows/ci.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index fcd48ea70..8abedcba0 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -2,9 +2,9 @@ name: format_and_test on: push: - branches: [main] + branches: [develop] pull_request: - branches: [main] + branches: [develop] jobs: test-ubuntu: From 54241e2fc41798923f87f56265cb376a62f43338 Mon Sep 17 00:00:00 2001 From: Dries Date: Sat, 22 May 2021 11:42:18 +0200 Subject: [PATCH 011/188] feature: Add working discrete action space examples of MA-DDPG and MA-D4PG. --- ...centralised_feedforward_discrete_mad4pg.py | 210 ++++++++++++++++++ ...centralised_feedforward_discrete_maddpg.py | 42 ++-- mava/core.py | 7 +- mava/systems/tf/executors.py | 9 +- mava/systems/tf/mad4pg/execution.py | 45 ++++ mava/systems/tf/maddpg/builder.py | 39 +++- mava/systems/tf/maddpg/execution.py | 50 ++--- mava/systems/tf/maddpg/system.py | 5 +- mava/systems/tf/maddpg/training.py | 4 +- 9 files changed, 352 insertions(+), 59 deletions(-) create mode 100644 examples/debugging_envs/run_decentralised_feedforward_discrete_mad4pg.py create mode 100644 mava/systems/tf/mad4pg/execution.py diff --git a/examples/debugging_envs/run_decentralised_feedforward_discrete_mad4pg.py b/examples/debugging_envs/run_decentralised_feedforward_discrete_mad4pg.py new file mode 100644 index 000000000..3473c4ac3 --- /dev/null +++ b/examples/debugging_envs/run_decentralised_feedforward_discrete_mad4pg.py @@ -0,0 +1,210 @@ +# python3 +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://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. + +"""Example running MAD4PG on debug MPE environments.""" +import functools +from datetime import datetime +from typing import Any, Dict, Mapping, Sequence, Union + +import launchpad as lp +import numpy as np +import sonnet as snt +from absl import app, flags +from acme import types +from acme.tf import networks +from acme.tf import utils as tf2_utils +from dm_env import specs +from launchpad.nodes.python.local_multi_processing import PythonProcess + +from mava import specs as mava_specs +from mava.components.tf.networks.mad4pg import DiscreteValuedHead +from mava.systems.tf import mad4pg +from mava.systems.tf.mad4pg.execution import MAD4PGDiscreteFeedForwardExecutor +from mava.utils import lp_utils +from mava.utils.environments import debugging_utils +from mava.utils.loggers import logger_utils + +Array = specs.Array +BoundedArray = specs.BoundedArray +DiscreteArray = specs.DiscreteArray + +FLAGS = flags.FLAGS +flags.DEFINE_string( + "env_name", + "simple_spread", + "Debugging environment name (str).", +) +flags.DEFINE_string( + "action_space", + "discrete", + "Environment action space type (str).", +) +flags.DEFINE_string( + "mava_id", + str(datetime.now()), + "Experiment identifier that can be used to continue experiments.", +) +flags.DEFINE_string("base_dir", "~/mava/", "Base dir to store experiments.") + + +def make_networks( + environment_spec: mava_specs.MAEnvironmentSpec, + policy_networks_layer_sizes: Union[Dict[str, Sequence], Sequence] = ( + 256, + 256, + 256, + ), + critic_networks_layer_sizes: Union[Dict[str, Sequence], Sequence] = (512, 512, 256), + shared_weights: bool = True, + sigma: float = 0.3, + vmin: float = -150.0, + vmax: float = 150.0, + num_atoms: int = 51, +) -> Mapping[str, types.TensorTransformation]: + """Creates networks used by the agents.""" + specs = environment_spec.get_agent_specs() + + # Create agent_type specs + if shared_weights: + type_specs = {key.split("_")[0]: specs[key] for key in specs.keys()} + specs = type_specs + + if isinstance(policy_networks_layer_sizes, Sequence): + policy_networks_layer_sizes = { + key: policy_networks_layer_sizes for key in specs.keys() + } + if isinstance(critic_networks_layer_sizes, Sequence): + critic_networks_layer_sizes = { + key: critic_networks_layer_sizes for key in specs.keys() + } + + observation_networks = {} + policy_networks = {} + critic_networks = {} + for key in specs.keys(): + # TODO (dries): Make specs[key].actions + # return a list of specs for hybrid action space + # Get total number of action dimensions from action spec. + agent_act_spec = specs[key].actions + if type(specs[key].actions) == DiscreteArray: + num_actions = agent_act_spec.num_values + minimum = [-1.0] * num_actions + maximum = [1.0] * num_actions + agent_act_spec = BoundedArray( + shape=(num_actions,), + minimum=minimum, + maximum=maximum, + dtype="float32", + name="actions", + ) + + # Get total number of action dimensions from action spec. + num_dimensions = np.prod(agent_act_spec.shape, dtype=int) + + # Create the shared observation network; here simply a state-less operation. + observation_network = tf2_utils.to_sonnet_module(tf2_utils.batch_concat) + + # Create the policy network. + policy_network = snt.Sequential( + [ + networks.LayerNormMLP( + policy_networks_layer_sizes[key], activate_final=True + ), + networks.NearZeroInitializedLinear(num_dimensions), + networks.TanhToSpec(agent_act_spec), + networks.ClippedGaussian(sigma), + networks.ClipToSpec(agent_act_spec), + ] + ) + + # Create the critic network. + critic_network = snt.Sequential( + [ + # The multiplexer concatenates the observations/actions. + networks.CriticMultiplexer(), + networks.LayerNormMLP( + critic_networks_layer_sizes[key], activate_final=False + ), + DiscreteValuedHead(vmin, vmax, num_atoms), + ] + ) + observation_networks[key] = observation_network + policy_networks[key] = policy_network + critic_networks[key] = critic_network + + return { + "policies": policy_networks, + "critics": critic_networks, + "observations": observation_networks, + } + + +def main(_: Any) -> None: + + # environment + environment_factory = lp_utils.partial_kwargs( + debugging_utils.make_environment, + env_name=FLAGS.env_name, + action_space=FLAGS.action_space, + ) + + # networks + network_factory = lp_utils.partial_kwargs(make_networks) + + # Checkpointer appends "Checkpoints" to checkpoint_dir + checkpoint_dir = f"{FLAGS.base_dir}/{FLAGS.mava_id}" + + # loggers + log_every = 10 + logger_factory = functools.partial( + logger_utils.make_logger, + directory=FLAGS.base_dir, + to_terminal=True, + to_tensorboard=True, + time_stamp=FLAGS.mava_id, + time_delta=log_every, + ) + + # distributed program + program = mad4pg.MAD4PG( + environment_factory=environment_factory, + network_factory=network_factory, + logger_factory=logger_factory, + num_executors=2, + executor_fn=MAD4PGDiscreteFeedForwardExecutor, + policy_optimizer=snt.optimizers.Adam(learning_rate=1e-4), + critic_optimizer=snt.optimizers.Adam(learning_rate=1e-4), + checkpoint_subpath=checkpoint_dir, + max_gradient_norm=40.0, + ).build() + + # launch + gpu_id = -1 + env_vars = {"CUDA_VISIBLE_DEVICES": str(gpu_id)} + local_resources = { + "trainer": [], + "evaluator": PythonProcess(env=env_vars), + "executor": PythonProcess(env=env_vars), + } + lp.launch( + program, + lp.LaunchType.LOCAL_MULTI_PROCESSING, + terminal="current_terminal", + local_resources=local_resources, + ) + + +if __name__ == "__main__": + app.run(main) diff --git a/examples/debugging_envs/run_decentralised_feedforward_discrete_maddpg.py b/examples/debugging_envs/run_decentralised_feedforward_discrete_maddpg.py index c2eb6b582..7acb89533 100644 --- a/examples/debugging_envs/run_decentralised_feedforward_discrete_maddpg.py +++ b/examples/debugging_envs/run_decentralised_feedforward_discrete_maddpg.py @@ -19,11 +19,6 @@ from datetime import datetime from typing import Any, Dict, Mapping, Sequence, Union -from dm_env import specs - -Array = specs.Array -BoundedArray = specs.BoundedArray -DiscreteArray = specs.DiscreteArray import launchpad as lp import numpy as np import sonnet as snt @@ -32,6 +27,7 @@ from acme import types from acme.tf import networks from acme.tf import utils as tf2_utils +from dm_env import specs from launchpad.nodes.python.local_multi_processing import PythonProcess from mava import specs as mava_specs @@ -39,7 +35,10 @@ from mava.systems.tf.maddpg.execution import MADDPGDiscreteFeedForwardExecutor from mava.utils import lp_utils from mava.utils.environments import debugging_utils -from mava.utils.loggers import logger_utils + +Array = specs.Array +BoundedArray = specs.BoundedArray +DiscreteArray = specs.DiscreteArray FLAGS = flags.FLAGS flags.DEFINE_string( @@ -92,30 +91,35 @@ def make_networks( policy_networks = {} critic_networks = {} for key in specs.keys(): - - # TODO (dries): Make specs[key].actions return a list of specs for hybrid action space - + # TODO (dries): Make specs[key].actions + # return a list of specs for hybrid action space # Get total number of action dimensions from action spec. + agent_act_spec = specs[key].actions if type(specs[key].actions) == DiscreteArray: - num_act_dimensions = specs[key].actions.num_values - elif type(specs[key].actions) == BoundedArray: - num_act_dimensions = np.prod(specs[key].actions.shape, dtype=int) - else: - raise NotImplementedError - + num_actions = agent_act_spec.num_values + minimum = [-1.0] * num_actions + maximum = [1.0] * num_actions + agent_act_spec = BoundedArray( + shape=(num_actions,), + minimum=minimum, + maximum=maximum, + dtype="float32", + name="actions", + ) + + num_dimensions = np.prod(agent_act_spec.shape, dtype=int) # Create the shared observation network; here simply a state-less operation. observation_network = tf2_utils.to_sonnet_module(tf.identity) - # Create the policy network. policy_network = snt.Sequential( [ networks.LayerNormMLP( policy_networks_layer_sizes[key], activate_final=True ), - networks.NearZeroInitializedLinear(num_act_dimensions), - networks.TanhToSpec(specs[key].actions), + networks.NearZeroInitializedLinear(num_dimensions), + networks.TanhToSpec(agent_act_spec), networks.ClippedGaussian(sigma), - networks.ClipToSpec(specs[key].actions), + networks.ClipToSpec(agent_act_spec), ] ) diff --git a/mava/core.py b/mava/core.py index 5d7b77d75..dc3caa70f 100644 --- a/mava/core.py +++ b/mava/core.py @@ -21,7 +21,7 @@ import abc import itertools -from typing import Dict, Generic, Optional, Sequence, TypeVar +from typing import Dict, Generic, Optional, Sequence, Tuple, TypeVar, Union import acme import dm_env @@ -55,7 +55,10 @@ def select_action( @abc.abstractmethod def select_actions( self, observations: Dict[str, types.NestedArray] - ) -> Dict[str, types.NestedArray]: + ) -> Union[ + Dict[str, types.NestedArray], + Tuple[Dict[str, types.NestedArray], Dict[str, types.NestedArray]], + ]: """Samples from the policy and returns an action for each agent.""" @abc.abstractmethod diff --git a/mava/systems/tf/executors.py b/mava/systems/tf/executors.py index d726c72dd..a6da36015 100644 --- a/mava/systems/tf/executors.py +++ b/mava/systems/tf/executors.py @@ -1,5 +1,5 @@ """Generic executor implementations, using TensorFlow and Sonnet.""" -from typing import Any, Dict, Optional, Tuple +from typing import Any, Dict, Optional, Tuple, Union import dm_env import sonnet as snt @@ -69,7 +69,7 @@ def _policy( def select_action( self, agent: str, observation: types.NestedArray - ) -> types.NestedArray: + ) -> Union[types.NestedArray, Tuple[types.NestedArray, types.NestedArray]]: # Pass the observation through the policy network. action = self._policy(agent, observation.observation) @@ -99,7 +99,10 @@ def observe( def select_actions( self, observations: Dict[str, types.NestedArray] - ) -> Dict[str, types.NestedArray]: + ) -> Union[ + Dict[str, types.NestedArray], + Tuple[Dict[str, types.NestedArray], Dict[str, types.NestedArray]], + ]: actions = {} for agent, observation in observations.items(): # Pass the observation through the policy network. diff --git a/mava/systems/tf/mad4pg/execution.py b/mava/systems/tf/mad4pg/execution.py new file mode 100644 index 000000000..336fc251b --- /dev/null +++ b/mava/systems/tf/mad4pg/execution.py @@ -0,0 +1,45 @@ +# python3 +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://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. + +from typing import Dict, Optional + +import sonnet as snt +from acme.tf import variable_utils as tf2_variable_utils + +from mava import adders +from mava.systems.tf.maddpg.execution import MADDPGDiscreteFeedForwardExecutor + + +class MAD4PGDiscreteFeedForwardExecutor(MADDPGDiscreteFeedForwardExecutor): + """A feed-forward executor for discrete actions in MAD4PG. + An executor based on a feed-forward policy for each agent in the system + which takes non-batched observations and outputs non-batched actions. + It also allows adding experiences to replay and updating the weights + from the policy on the learner. + """ + + def __init__( + self, + policy_networks: Dict[str, snt.Module], + adder: Optional[adders.ParallelAdder] = None, + variable_client: Optional[tf2_variable_utils.VariableClient] = None, + shared_weights: bool = True, + ): + super().__init__( + policy_networks=policy_networks, + adder=adder, + variable_client=variable_client, + shared_weights=shared_weights, + ) diff --git a/mava/systems/tf/maddpg/builder.py b/mava/systems/tf/maddpg/builder.py index 32a2008a3..3f659b221 100644 --- a/mava/systems/tf/maddpg/builder.py +++ b/mava/systems/tf/maddpg/builder.py @@ -14,14 +14,17 @@ # limitations under the License. """MADDPG system implementation.""" +import copy import dataclasses from typing import Any, Dict, Iterator, List, Optional, Type, Union import reverb import sonnet as snt from acme import datasets +from acme.specs import EnvironmentSpec from acme.tf import variable_utils from acme.utils import counting, loggers +from dm_env import specs as dm_specs from mava import adders, core, specs, types from mava.adders import reverb as reverb_adders @@ -30,6 +33,9 @@ from mava.systems.tf.maddpg import training from mava.wrappers import DetailedTrainerStatistics, NetworkStatisticsActorCritic +BoundedArray = dm_specs.BoundedArray +DiscreteArray = dm_specs.DiscreteArray + @dataclasses.dataclass class MADDPGConfig: @@ -118,20 +124,49 @@ def __init__( self._trainer_fn = trainer_fn self._executor_fn = executor_fn + def convert_discrete_to_bounded( + self, environment_spec: specs.MAEnvironmentSpec + ) -> specs.MAEnvironmentSpec: + env_adder_spec: specs.MAEnvironmentSpec = copy.deepcopy(environment_spec) + keys = env_adder_spec._keys + for key in keys: + agent_spec = env_adder_spec._specs[key] + if type(agent_spec.actions) == DiscreteArray: + num_actions = agent_spec.actions.num_values + minimum = [float("-inf")] * num_actions + maximum = [float("inf")] * num_actions + new_act_spec = BoundedArray( + shape=(num_actions,), + minimum=minimum, + maximum=maximum, + dtype="float32", + name="actions", + ) + + env_adder_spec._specs[key] = EnvironmentSpec( + observations=agent_spec.observations, + actions=new_act_spec, + rewards=agent_spec.rewards, + discounts=agent_spec.discounts, + ) + return env_adder_spec + def make_replay_tables( self, environment_spec: specs.MAEnvironmentSpec, ) -> List[reverb.Table]: """Create tables to insert data into.""" + env_adder_spec = self.convert_discrete_to_bounded(environment_spec) + # Select adder if issubclass(self._executor_fn, executors.FeedForwardExecutor): adder_sig = reverb_adders.ParallelNStepTransitionAdder.signature( - environment_spec, self._extra_specs + env_adder_spec, self._extra_specs ) elif issubclass(self._executor_fn, executors.RecurrentExecutor): adder_sig = reverb_adders.ParallelSequenceAdder.signature( - environment_spec, self._extra_specs + env_adder_spec, self._extra_specs ) else: raise NotImplementedError("Unknown executor type: ", self._executor_fn) diff --git a/mava/systems/tf/maddpg/execution.py b/mava/systems/tf/maddpg/execution.py index c0dd02097..c440ad235 100644 --- a/mava/systems/tf/maddpg/execution.py +++ b/mava/systems/tf/maddpg/execution.py @@ -13,10 +13,9 @@ # See the License for the specific language governing permissions and # limitations under the License. -from typing import Any, Dict, Optional, Tuple +from typing import Dict, List, Optional, Tuple, Union import dm_env -import numpy as np import sonnet as snt import tensorflow as tf import tensorflow_probability as tfp @@ -26,8 +25,8 @@ from acme.tf import utils as tf2_utils from acme.tf import variable_utils as tf2_variable_utils -from mava import adders, core -from mava.systems import executors +from mava import adders +from mava.systems.tf import executors tfd = tfp.distributions @@ -63,7 +62,9 @@ def __init__( self._variable_client = variable_client self._policy_networks = policy_networks self._shared_weights = shared_weights - @tf.function + + # TODO: Add this back in + # @tf.function def _policy( self, agent: str, observation: types.NestedTensor ) -> types.NestedTensor: @@ -78,34 +79,34 @@ def _policy( policy = self._policy_networks[agent_key](batched_observation) # Sample from the policy if it is stochastic. - action = tf.math.argmax(policy) + action = tf.math.argmax(policy, axis=1) return action, policy def select_action( self, agent: str, observation: types.NestedArray - ) -> types.NestedArray: + ) -> Tuple[types.NestedArray, types.NestedArray]: # Step the recurrent policy/value network forward # given the current observation and state. - action, policy = self._policy(agent, observation) + action, policy = self._policy(agent, observation.observation) # Return a numpy array with squeezed out batch dimension. action = tf2_utils.to_numpy_squeeze(action) - return [action, policy] + policy = tf2_utils.to_numpy_squeeze(policy) + return action, policy def select_actions( self, observations: Dict[str, types.NestedArray] - ) -> Dict[str, types.NestedArray]: + ) -> Tuple[Dict[str, types.NestedArray], Dict[str, types.NestedArray]]: actions = {} policies = {} for agent, observation in observations.items(): action, policy = self.select_action(agent, observation) - actions[agent] = action[0] + actions[agent] = action policies[agent] = policy - - return [actions, policies] + return actions, policies def observe_first( self, @@ -114,25 +115,16 @@ def observe_first( ) -> None: if self._adder: - - # Generate dummy policy values to send through - self._adder.add_first(timestep) + self._adder.add_first(timestep, extras) def observe( self, - actions: Dict[str, types.NestedArray], + actions: Union[ + Dict[str, types.NestedArray], List[Dict[str, types.NestedArray]] + ], next_timestep: dm_env.TimeStep, next_extras: Dict[str, types.NestedArray] = {}, ) -> None: - - if not self._adder: - return - - self.adder.next_extras.update({"policy_out": self._policy_outputs}) - next_extras = tf2_utils.to_numpy_squeeze(next_extras) - - self._adder.add(actions, next_timestep, next_extras) - - def update(self, wait: bool = False) -> None: - if self._variable_client: - self._variable_client.update(wait) + if self._adder: + env_actions, policy = actions + self._adder.add(policy, next_timestep, next_extras) # type: ignore diff --git a/mava/systems/tf/maddpg/system.py b/mava/systems/tf/maddpg/system.py index 37131d51c..b7e2f46c6 100644 --- a/mava/systems/tf/maddpg/system.py +++ b/mava/systems/tf/maddpg/system.py @@ -247,8 +247,11 @@ def trainer( ) # Create system architecture with target networks. + adder_env_spec = self._builder.convert_discrete_to_bounded( + self._environment_spec + ) system_networks = self._architecture( - environment_spec=self._environment_spec, + environment_spec=adder_env_spec, observation_networks=networks["observations"], policy_networks=networks["policies"], critic_networks=networks["critics"], diff --git a/mava/systems/tf/maddpg/training.py b/mava/systems/tf/maddpg/training.py index 2bfe259c9..63057fd23 100644 --- a/mava/systems/tf/maddpg/training.py +++ b/mava/systems/tf/maddpg/training.py @@ -309,9 +309,7 @@ def _forward(self, inputs: Any) -> None: # This discount is applied to future rewards after r_t. # o_t = dictionary of next observations or next observation sequences # e_t [Optional] = extra data for timestep t that the agents persist in replay. - o_tm1, _, e_tm1, r_t, d_t, o_t, e_t = inputs.data - - a_tm1 = e_tm1["policy_outputs"] + o_tm1, a_tm1, e_tm1, r_t, d_t, o_t, e_t = inputs.data self.policy_losses = {} self.critic_losses = {} From 787f5716a961f23fc3e53785ed2af1bca02f186c Mon Sep 17 00:00:00 2001 From: Dries Date: Sat, 22 May 2021 11:42:51 +0200 Subject: [PATCH 012/188] feature: Add comment. --- mava/systems/tf/maddpg/execution.py | 1 + 1 file changed, 1 insertion(+) diff --git a/mava/systems/tf/maddpg/execution.py b/mava/systems/tf/maddpg/execution.py index c440ad235..279e77a02 100644 --- a/mava/systems/tf/maddpg/execution.py +++ b/mava/systems/tf/maddpg/execution.py @@ -127,4 +127,5 @@ def observe( ) -> None: if self._adder: env_actions, policy = actions + # TODO (dries): Sort out this mypy issue. self._adder.add(policy, next_timestep, next_extras) # type: ignore From 5a27a672cfe480701c7004ad5009239f296630f7 Mon Sep 17 00:00:00 2001 From: Kevin Eloff Date: Sat, 22 May 2021 13:01:44 +0200 Subject: [PATCH 013/188] feat: comm madqn --- .../run_recurrent_comm_madqn.py | 221 ++++++++++++++++++ .../tf/modules/communication/base.py | 22 +- mava/systems/tf/executors.py | 41 ++-- mava/systems/tf/madqn/builder.py | 5 + mava/systems/tf/madqn/execution.py | 120 +++++++++- mava/systems/tf/madqn/system.py | 68 +++++- mava/systems/tf/madqn/training.py | 136 ++++++++++- 7 files changed, 590 insertions(+), 23 deletions(-) create mode 100644 examples/debugging_envs/run_recurrent_comm_madqn.py diff --git a/examples/debugging_envs/run_recurrent_comm_madqn.py b/examples/debugging_envs/run_recurrent_comm_madqn.py new file mode 100644 index 000000000..057394654 --- /dev/null +++ b/examples/debugging_envs/run_recurrent_comm_madqn.py @@ -0,0 +1,221 @@ +# python3 +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import functools +from datetime import datetime +from typing import Any, Dict, Mapping, Optional, Sequence, Union + +import launchpad as lp +import numpy as np +import sonnet as snt +import tensorflow as tf +from absl import app, flags +from acme import types +from acme.wrappers.gym_wrapper import _convert_to_spec +from gym import spaces +from launchpad.nodes.python.local_multi_processing import PythonProcess + +from mava import specs as mava_specs +from mava.components.tf.modules.communication.broadcasted import ( + BroadcastedCommunication, +) +from mava.components.tf.modules.exploration import LinearExplorationScheduler +from mava.components.tf.networks import DIALPolicy, epsilon_greedy_action_selector +from mava.systems.tf import madqn +from mava.systems.tf.madqn.execution import MADQNRecurrentCommExecutor +from mava.systems.tf.madqn.training import RecurrentCommMADQNTrainer +from mava.utils import lp_utils +from mava.utils.environments import debugging_utils +from mava.utils.loggers import Logger + +FLAGS = flags.FLAGS +flags.DEFINE_string( + "env_name", + "simple_spread", + "Debugging environment name (str).", +) +flags.DEFINE_string( + "action_space", + "discrete", + "Environment action space type (str).", +) + +flags.DEFINE_string( + "mava_id", + str(datetime.now()), + "Experiment identifier that can be used to continue experiments.", +) +flags.DEFINE_string("base_dir", "~/mava/", "Base dir to store experiments.") + + +def make_networks( + environment_spec: mava_specs.MAEnvironmentSpec, + q_networks_layer_sizes: Union[Dict[str, Sequence], Sequence] = ( + 512, + 512, + 256, + ), + shared_weights: bool = True, +) -> Mapping[str, types.TensorTransformation]: + """Creates networks used by the agents.""" + + specs = environment_spec.get_agent_specs() + + # Create agent_type specs + if shared_weights: + type_specs = {key.split("_")[0]: specs[key] for key in specs.keys()} + specs = type_specs + + if isinstance(q_networks_layer_sizes, Sequence): + q_networks_layer_sizes = {key: q_networks_layer_sizes for key in specs.keys()} + + def action_selector_fn( + q_values: types.NestedTensor, + legal_actions: types.NestedTensor, + epsilon: Optional[tf.Variable] = None, + ) -> types.NestedTensor: + return epsilon_greedy_action_selector( + action_values=q_values, legal_actions_mask=legal_actions, epsilon=epsilon + ) + + q_networks = {} + action_selectors = {} + for key in specs.keys(): + + # Get total number of action dimensions from action spec. + # num_dimensions = specs[key].actions.num_values + + # Create the policy network. + # q_network = snt.DeepRNN( + # [ + # networks.LayerNormMLP( + # q_networks_layer_sizes[key], activate_final=False + # ), + # snt.LSTM(25), + # snt.nets.MLP([128]), + # networks.NearZeroInitializedLinear(num_dimensions), + # ] + # ) + + q_network = DIALPolicy( + action_spec=specs[key].actions, + message_spec=_convert_to_spec( + spaces.Box(-np.inf, np.inf, (10,), dtype=np.float32) + ), + gru_hidden_size=256, + gru_layers=2, + task_mlp_size=( + 256, + 256, + ), + message_in_mlp_size=(256,), + message_out_mlp_size=(256,), + output_mlp_size=(256,), + ) + + # epsilon greedy action selector + action_selector = action_selector_fn + + q_networks[key] = q_network + action_selectors[key] = action_selector + + return { + "q_networks": q_networks, + "action_selectors": action_selectors, + } + + +def main(_: Any) -> None: + + # environment + environment_factory = functools.partial( + debugging_utils.make_environment, + env_name=FLAGS.env_name, + action_space=FLAGS.action_space, + ) + + # networks + network_factory = lp_utils.partial_kwargs(make_networks) + + # Checkpointer appends "Checkpoints" to checkpoint_dir + checkpoint_dir = f"{FLAGS.base_dir}/{FLAGS.mava_id}" + + log_every = 10 + trainer_logger = Logger( + label="system_trainer", + directory=FLAGS.base_dir, + to_terminal=True, + to_tensorboard=True, + time_stamp=FLAGS.mava_id, + time_delta=log_every, + ) + + exec_logger = Logger( + # _{executor_id} gets appended to label in system. + label="train_loop_executor", + directory=FLAGS.base_dir, + to_terminal=True, + to_tensorboard=True, + time_stamp=FLAGS.mava_id, + time_delta=log_every, + ) + + eval_logger = Logger( + label="eval_loop", + directory=FLAGS.base_dir, + to_terminal=True, + to_tensorboard=True, + time_stamp=FLAGS.mava_id, + time_delta=log_every, + ) + + # distributed program + program = madqn.MADQN( + environment_factory=environment_factory, + network_factory=network_factory, + num_executors=2, + trainer_fn=RecurrentCommMADQNTrainer, + executor_fn=MADQNRecurrentCommExecutor, + exploration_scheduler_fn=LinearExplorationScheduler, + communication_module=BroadcastedCommunication, + epsilon_min=0.05, + epsilon_decay=5e-4, + optimizer=snt.optimizers.Adam(learning_rate=1e-4), + checkpoint_subpath=checkpoint_dir, + trainer_logger=trainer_logger, + exec_logger=exec_logger, + eval_logger=eval_logger, + n_step=1, + batch_size=32, + ).build() + + # launch + gpu_id = -1 + env_vars = {"CUDA_VISIBLE_DEVICES": str(gpu_id)} + local_resources = { + "trainer": [], + "evaluator": PythonProcess(env=env_vars), + "executor": PythonProcess(env=env_vars), + } + lp.launch( + program, + lp.LaunchType.LOCAL_MULTI_PROCESSING, + terminal="current_terminal", + local_resources=local_resources, + ) + + +if __name__ == "__main__": + app.run(main) diff --git a/mava/components/tf/modules/communication/base.py b/mava/components/tf/modules/communication/base.py index 572f1a43c..3eb71d861 100644 --- a/mava/components/tf/modules/communication/base.py +++ b/mava/components/tf/modules/communication/base.py @@ -16,10 +16,12 @@ # TODO (Kevin): complete base class for communication import abc -from typing import Dict +from typing import Dict, Union import sonnet as snt +from mava.components.tf.architectures import BaseArchitecture, BasePolicyArchitecture + """Base communication interface for multi-agent RL systems""" @@ -30,6 +32,24 @@ class BaseCommunicationModule: agents in a multi-agent RL system. """ + @abc.abstractmethod + def __init__( + self, + architecture: Union[ + BaseArchitecture, + BasePolicyArchitecture, + ], + shared: bool, + channel_size: int, + channel_noise: float, + ) -> None: + """Initializes the broadcaster communicator. + Args: + architecture: the BaseArchitecture used. + shared: if a shared communication channel is used. + channel_noise: stddev of normal noise in channel. + """ + @abc.abstractmethod def process_messages( self, messages: Dict[str, snt.Module] diff --git a/mava/systems/tf/executors.py b/mava/systems/tf/executors.py index d726c72dd..3dc7ef19e 100644 --- a/mava/systems/tf/executors.py +++ b/mava/systems/tf/executors.py @@ -308,8 +308,6 @@ def __init__( self._policy_networks = policy_networks self._states: Dict[str, Any] = {} self._messages: Dict[str, Any] = {} - self._prev_states: Dict[str, Any] = {} - self._prev_messages: Dict[str, Any] = {} self._store_recurrent_state = store_recurrent_state self._communication_module = communication_module self._shared_weights = shared_weights @@ -371,14 +369,20 @@ def observe_first( if self._adder is not None: numpy_states = { - agent: { - "state": tf2_utils.to_numpy_squeeze(_state), - "message": tf2_utils.to_numpy_squeeze(self._messages[agent]), - } + agent: tf2_utils.to_numpy_squeeze(_state) for agent, _state in self._states.items() } + numpy_messages = { + agent: tf2_utils.to_numpy_squeeze(_message) + for agent, _message in self._messages.items() + } if extras is not None: - extras.update({"core_states": numpy_states}) + extras.update( + { + "core_states": numpy_states, + "core_messages": numpy_messages, + } + ) self._adder.add_first(timestep, extras) else: raise NotImplementedError("Why is extras None?") @@ -400,17 +404,28 @@ def observe( return numpy_states = { - agent: { - "state": tf2_utils.to_numpy_squeeze(_state), - "message": tf2_utils.to_numpy_squeeze(self._messages[agent]), - } + agent: tf2_utils.to_numpy_squeeze(_state) for agent, _state in self._states.items() } + numpy_messages = { + agent: tf2_utils.to_numpy_squeeze(_message) + for agent, _message in self._messages.items() + } + if next_extras: - next_extras.update({"core_states": numpy_states}) + next_extras.update( + { + "core_states": numpy_states, + "core_messages": numpy_messages, + } + ) self._adder.add(actions, next_timestep, next_extras) else: - self._adder.add(actions, next_timestep, numpy_states) + next_extras = { + "core_states": numpy_states, + "core_messages": numpy_messages, + } + self._adder.add(actions, next_timestep, next_extras) def select_action( self, diff --git a/mava/systems/tf/madqn/builder.py b/mava/systems/tf/madqn/builder.py index f439a6373..6edc8b14e 100644 --- a/mava/systems/tf/madqn/builder.py +++ b/mava/systems/tf/madqn/builder.py @@ -25,6 +25,7 @@ from mava import adders, core, specs, types from mava.adders import reverb as reverb_adders +from mava.components.tf.modules.communication import BaseCommunicationModule from mava.components.tf.modules.exploration.exploration_scheduling import ( LinearExplorationScheduler, ) @@ -257,6 +258,7 @@ def make_executor( adder: Optional[adders.ParallelAdder] = None, variable_source: Optional[core.VariableSource] = None, trainer: Optional[training.MADQNTrainer] = None, + communication_module: Optional[BaseCommunicationModule] = None, ) -> core.Executor: """Create an executor instance. Args: @@ -297,6 +299,7 @@ def make_executor( variable_client=variable_client, adder=adder, trainer=trainer, + communication_module=communication_module, ) def make_trainer( @@ -305,6 +308,7 @@ def make_trainer( dataset: Iterator[reverb.ReplaySample], counter: Optional[counting.Counter] = None, logger: Optional[types.NestedLogger] = None, + communication_module: Optional[BaseCommunicationModule] = None, ) -> core.Trainer: """Creates an instance of the trainer. Args: @@ -340,6 +344,7 @@ def make_trainer( target_update_period=self._config.target_update_period, clipping=self._config.clipping, exploration_scheduler=exploration_scheduler, + communication_module=communication_module, dataset=dataset, counter=counter, logger=logger, diff --git a/mava/systems/tf/madqn/execution.py b/mava/systems/tf/madqn/execution.py index b870b0d3d..92bd72da8 100644 --- a/mava/systems/tf/madqn/execution.py +++ b/mava/systems/tf/madqn/execution.py @@ -27,7 +27,12 @@ from acme.tf import variable_utils as tf2_variable_utils from mava import adders -from mava.systems.tf.executors import FeedForwardExecutor, RecurrentExecutor +from mava.components.tf.modules.communication import BaseCommunicationModule +from mava.systems.tf.executors import ( + FeedForwardExecutor, + RecurrentExecutor, + RecurrentExecutorWithComms, +) from mava.systems.tf.madqn.training import MADQNTrainer from mava.types import OLT @@ -235,3 +240,116 @@ def select_actions( # Return a numpy array with squeezed out batch dimension. return actions + + +class MADQNRecurrentCommExecutor(RecurrentExecutorWithComms): + """A feed-forward executor. + An executor based on a feed-forward policy for each agent in the system + which takes non-batched observations and outputs non-batched actions. + It also allows adding experiences to replay and updating the weights + from the policy on the learner. + """ + + def __init__( + self, + q_networks: Dict[str, snt.Module], + action_selectors: Dict[str, snt.Module], + communication_module: BaseCommunicationModule, + shared_weights: bool = True, + adder: Optional[adders.ParallelAdder] = None, + variable_client: Optional[tf2_variable_utils.VariableClient] = None, + store_recurrent_state: bool = True, + trainer: MADQNTrainer = None, + ): + """Initializes the executor. + Args: + policy_network: the policy to run for each agent in the system. + shared_weights: specify if weights are shared between agent networks. + adder: the adder object to which allows to add experiences to a + dataset/replay buffer. + variable_client: object which allows to copy weights from the trainer copy + of the policies to the executor copy (in case they are separate). + """ + + # Store these for later use. + self._adder = adder + self._variable_client = variable_client + self._q_networks = q_networks + self._policy_networks = q_networks + self._communication_module = communication_module + self._action_selectors = action_selectors + self._store_recurrent_state = store_recurrent_state + self._trainer = trainer + self._shared_weights = shared_weights + + self._states: Dict[str, Any] = {} + self._messages: Dict[str, Any] = {} + + @tf.function + def _policy( + self, + agent: str, + observation: types.NestedTensor, + state: types.NestedTensor, + message: types.NestedTensor, + legal_actions: types.NestedTensor, + epsilon: tf.Tensor, + ) -> types.NestedTensor: + + # Add a dummy batch dimension and as a side effect convert numpy to TF. + batched_observation = tf2_utils.add_batch_dim(observation) + batched_legals = tf2_utils.add_batch_dim(legal_actions) + + # index network either on agent type or on agent id + agent_key = agent.split("_")[0] if self._shared_weights else agent + + # Compute the policy, conditioned on the observation. + (q_values, m_values), new_state = self._q_networks[agent_key]( + batched_observation, state, message + ) + + # select legal action + action = self._action_selectors[agent_key]( + q_values, batched_legals, epsilon=epsilon + ) + + return (action, m_values), new_state + + def select_action( + self, agent: str, observation: types.NestedArray + ) -> types.NestedArray: + raise NotImplementedError + + def select_actions( + self, observations: Dict[str, OLT] + ) -> Dict[str, types.NestedArray]: + actions = {} + + message_inputs = self._communication_module.process_messages(self._messages) + + for agent, observation in observations.items(): + + # Pass the observation through the policy network. + if self._trainer is not None: + epsilon = self._trainer.get_epsilon() + else: + epsilon = 0.0 + + epsilon = tf.convert_to_tensor(epsilon) + + (policy_output, new_message), new_state = self._policy( + agent, + observation.observation, + self._states[agent], + message_inputs[agent], + observation.legal_actions, + epsilon, + ) + + self._states[agent] = new_state + self._messages[agent] = new_message + + actions[agent] = tf2_utils.to_numpy_squeeze(policy_output) + + # Return a numpy array with squeezed out batch dimension. + return actions diff --git a/mava/systems/tf/madqn/system.py b/mava/systems/tf/madqn/system.py index 7f952fd62..d7f319d16 100644 --- a/mava/systems/tf/madqn/system.py +++ b/mava/systems/tf/madqn/system.py @@ -31,6 +31,7 @@ from mava import core from mava import specs as mava_specs from mava.components.tf.architectures import DecentralisedValueActor +from mava.components.tf.modules.communication import BaseCommunicationModule from mava.components.tf.modules.exploration import LinearExplorationScheduler from mava.environment_loop import ParallelEnvironmentLoop from mava.systems.tf import executors @@ -52,6 +53,7 @@ def __init__( trainer_fn: Union[ Type[training.MADQNTrainer], Type[training.RecurrentMADQNTrainer] ] = training.MADQNTrainer, + communication_module: Type[BaseCommunicationModule] = None, executor_fn: Type[core.Executor] = execution.MADQNFeedForwardExecutor, exploration_scheduler_fn: Type[ LinearExplorationScheduler @@ -93,6 +95,7 @@ def __init__( ) self._architecture = architecture + self._communication_module_fn = communication_module self._environment_factory = environment_factory self._network_factory = network_factory self._environment_spec = environment_spec @@ -146,6 +149,8 @@ def __init__( def _get_extra_specs(self) -> Any: agents = self._environment_spec.get_agent_ids() core_state_specs = {} + core_message_specs = {} + networks = self._network_factory( # type: ignore environment_spec=self._environment_spec ) @@ -156,7 +161,17 @@ def _get_extra_specs(self) -> Any: networks["q_networks"][agent_type].initial_state(1) ), ) - extras = {"core_states": core_state_specs} + if self._communication_module_fn is not None: + core_message_specs[agent] = ( + tf2_utils.squeeze_batch_dim( + networks["q_networks"][agent_type].initial_message(1) + ), + ) + + extras = { + "core_states": core_state_specs, + "core_messages": core_message_specs, + } return extras def replay(self) -> Any: @@ -187,11 +202,23 @@ def trainer( ) # Create system architecture with target networks. - system_networks = self._architecture( + architecture = self._architecture( environment_spec=self._environment_spec, value_networks=networks["q_networks"], shared_weights=self._shared_weights, - ).create_system() + ) + + communication_module = None + if self._communication_module_fn is not None: + communication_module = self._communication_module_fn( + architecture=architecture, + shared=True, + channel_size=1, + channel_noise=0, + ) + system_networks = communication_module.create_system() + else: + system_networks = architecture.create_system() dataset = self._builder.make_dataset_iterator(replay) counter = counting.Counter(counter, "trainer") @@ -201,6 +228,7 @@ def trainer( dataset=dataset, counter=counter, logger=self._trainer_logger, + communication_module=communication_module, ) def executor( @@ -219,16 +247,29 @@ def executor( ) # Create system architecture with target networks. - system_networks = self._architecture( + architecture = self._architecture( environment_spec=self._environment_spec, value_networks=networks["q_networks"], shared_weights=self._shared_weights, - ).create_system() + ) + + communication_module = None + if self._communication_module_fn is not None: + communication_module = self._communication_module_fn( + architecture=architecture, + shared=True, + channel_size=1, + channel_noise=0, + ) + system_networks = communication_module.create_system() + else: + system_networks = architecture.create_system() # Create the executor. executor = self._builder.make_executor( q_networks=system_networks["values"], action_selectors=networks["action_selectors"], + communication_module=communication_module, adder=self._builder.make_adder(replay), variable_source=variable_source, trainer=trainer, @@ -274,17 +315,30 @@ def evaluator( ) # Create system architecture with target networks. - system_networks = self._architecture( + architecture = self._architecture( environment_spec=self._environment_spec, value_networks=networks["q_networks"], shared_weights=self._shared_weights, - ).create_system() + ) + + communication_module = None + if self._communication_module_fn is not None: + communication_module = self._communication_module_fn( + architecture=architecture, + shared=True, + channel_size=1, + channel_noise=0, + ) + system_networks = communication_module.create_system() + else: + system_networks = architecture.create_system() # Create the agent. executor = self._builder.make_executor( q_networks=system_networks["values"], action_selectors=networks["action_selectors"], variable_source=variable_source, + communication_module=communication_module, ) # Make the environment. diff --git a/mava/systems/tf/madqn/training.py b/mava/systems/tf/madqn/training.py index 0b0e25a04..99322861a 100644 --- a/mava/systems/tf/madqn/training.py +++ b/mava/systems/tf/madqn/training.py @@ -14,7 +14,7 @@ # limitations under the License. import time -from typing import Any, Dict, List, Sequence, Tuple +from typing import Any, Dict, List, Optional, Sequence, Tuple import numpy as np import sonnet as snt @@ -26,6 +26,7 @@ from acme.utils import counting, loggers import mava +from mava.components.tf.modules.communication import BaseCommunicationModule from mava.components.tf.modules.exploration.exploration_scheduling import ( LinearExplorationScheduler, ) @@ -56,6 +57,7 @@ def __init__( logger: loggers.Logger = None, checkpoint: bool = True, checkpoint_subpath: str = "~/mava/", + communication_module: Optional[BaseCommunicationModule] = None, ): self._agents = agents @@ -316,6 +318,7 @@ def __init__( logger: loggers.Logger = None, checkpoint: bool = True, checkpoint_subpath: str = "~/mava/", + communication_module: Optional[BaseCommunicationModule] = None, ): super().__init__( agents=agents, @@ -385,3 +388,134 @@ def _forward(self, inputs: Any) -> None: self._q_network_losses = q_network_losses self.tape = tape + + +class RecurrentCommMADQNTrainer(MADQNTrainer): + """Recurrent MADQN trainer. + This is the trainer component of a MADQN system. IE it takes a dataset as input + and implements update functionality to learn from this dataset. + """ + + def __init__( + self, + agents: List[str], + agent_types: List[str], + q_networks: Dict[str, snt.Module], + target_q_networks: Dict[str, snt.Module], + target_update_period: int, + dataset: tf.data.Dataset, + optimizer: snt.Optimizer, + discount: float, + shared_weights: bool, + exploration_scheduler: LinearExplorationScheduler, + communication_module: BaseCommunicationModule, + clipping: bool = True, + counter: counting.Counter = None, + logger: loggers.Logger = None, + checkpoint: bool = True, + checkpoint_subpath: str = "~/mava/", + ): + super().__init__( + agents=agents, + agent_types=agent_types, + q_networks=q_networks, + target_q_networks=target_q_networks, + target_update_period=target_update_period, + dataset=dataset, + optimizer=optimizer, + discount=discount, + shared_weights=shared_weights, + exploration_scheduler=exploration_scheduler, + clipping=clipping, + counter=counter, + logger=logger, + checkpoint=checkpoint, + checkpoint_subpath=checkpoint_subpath, + ) + + self._communication_module = communication_module + + def _forward(self, inputs: Any) -> None: + data = tree.map_structure( + lambda v: tf.expand_dims(v, axis=0) if len(v.shape) <= 1 else v, inputs.data + ) + data = tf2_utils.batch_to_sequence(data) + + observations, actions, rewards, discounts, _, extra = data + + # core_states = extra["core_states"] + core_state = tree.map_structure( + lambda s: s[:, 0, :], inputs.data.extras["core_states"] + ) + core_message = tree.map_structure( + lambda s: s[:, 0, :], inputs.data.extras["core_messages"] + ) + + with tf.GradientTape(persistent=True) as tape: + q_network_losses: Dict[str, NestedArray] = { + agent: {"q_value_loss": tf.zeros(())} for agent in self._agents + } + + T = actions[self._agents[0]].shape[0] + + state = {agent: core_state[agent][0] for agent in self._agents} + target_state = {agent: core_state[agent][0] for agent in self._agents} + + message = {agent: core_message[agent][0] for agent in self._agents} + target_message = {agent: core_message[agent][0] for agent in self._agents} + + # _target_q_networks must be 1 step ahead + target_channel = self._communication_module.process_messages(target_message) + for agent in self._agents: + agent_key = self.agent_net_keys[agent] + (q_targ, m), s = self._target_q_networks[agent_key]( + observations[agent].observation[0], + target_state[agent], + target_channel[agent], + ) + target_state[agent] = s + target_message[agent] = m + + for t in range(1, T, 1): + channel = self._communication_module.process_messages(message) + target_channel = self._communication_module.process_messages( + target_message + ) + + for agent in self._agents: + agent_key = self.agent_net_keys[agent] + + # Cast the additional discount + # to match the environment discount dtype. + + discount = tf.cast(self._discount, dtype=discounts[agent][0].dtype) + + (q_targ, m), s = self._target_q_networks[agent_key]( + observations[agent].observation[t], + target_state[agent], + target_channel[agent], + ) + target_state[agent] = s + target_message[agent] = m + + (q, m), s = self._q_networks[agent_key]( + observations[agent].observation[t - 1], + state[agent], + channel[agent], + ) + state[agent] = s + message[agent] = m + + loss, _ = trfl.qlearning( + q, + actions[agent][t - 1], + rewards[agent][t - 1], + discount * discounts[agent][t], + q_targ, + ) + + loss = tf.reduce_mean(loss) + q_network_losses[agent]["q_value_loss"] += loss + + self._q_network_losses = q_network_losses + self.tape = tape From 6a624deba57c5620c5acbfbe360a3843074e45f8 Mon Sep 17 00:00:00 2001 From: Kevin Eloff Date: Sat, 22 May 2021 13:04:25 +0200 Subject: [PATCH 014/188] fix: comm module args --- mava/systems/tf/madqn/execution.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mava/systems/tf/madqn/execution.py b/mava/systems/tf/madqn/execution.py index 92bd72da8..5732b6ab6 100644 --- a/mava/systems/tf/madqn/execution.py +++ b/mava/systems/tf/madqn/execution.py @@ -53,6 +53,7 @@ def __init__( adder: Optional[adders.ParallelAdder] = None, variable_client: Optional[tf2_variable_utils.VariableClient] = None, trainer: MADQNTrainer = None, + communication_module: Optional[BaseCommunicationModule] = None, ): """Initializes the executor. Args: @@ -156,6 +157,7 @@ def __init__( variable_client: Optional[tf2_variable_utils.VariableClient] = None, store_recurrent_state: bool = True, trainer: MADQNTrainer = None, + communication_module: Optional[BaseCommunicationModule] = None, ): """Initializes the executor. Args: From 13bea907d2f4b4105b6cbf7792f9f6743e7d794e Mon Sep 17 00:00:00 2001 From: Kevin Eloff Date: Sat, 22 May 2021 13:06:55 +0200 Subject: [PATCH 015/188] feat: update dial trainer --- mava/systems/tf/dial/system.py | 9 +++--- mava/systems/tf/dial/training.py | 47 ++++++-------------------------- 2 files changed, 13 insertions(+), 43 deletions(-) diff --git a/mava/systems/tf/dial/system.py b/mava/systems/tf/dial/system.py index 99f5442d8..f6b7f8a25 100644 --- a/mava/systems/tf/dial/system.py +++ b/mava/systems/tf/dial/system.py @@ -61,15 +61,16 @@ def __init__( num_caches: int = 0, environment_spec: mava_specs.MAEnvironmentSpec = None, shared_weights: bool = True, - discount: float = 1.0, - batch_size: int = 32, + discount: float = 0.99, + batch_size: int = 256, prefetch_size: int = 4, target_update_period: int = 100, min_replay_size: int = 100, max_replay_size: int = 1000000, samples_per_insert: float = 32.0, - policy_optimizer: snt.Optimizer = snt.optimizers.RMSProp(5e-4, momentum=0.95), - n_step: int = 1, + # policy_optimizer: snt.Optimizer = snt.optimizers.RMSProp(5e-4, momentum=0.95), + policy_optimizer: snt.Optimizer = snt.optimizers.Adam(learning_rate=1e-4), + n_step: int = 5, sequence_length: int = 20, period: int = 20, importance_sampling_exponent: float = 0.2, diff --git a/mava/systems/tf/dial/training.py b/mava/systems/tf/dial/training.py index c7207506c..c967a5762 100644 --- a/mava/systems/tf/dial/training.py +++ b/mava/systems/tf/dial/training.py @@ -176,38 +176,7 @@ def _update_target_networks(self) -> None: if tf.math.mod(self._num_steps, self._target_update_period) == 0: for src, dest in zip(online_variables, target_variables): dest.assign(src) - self._num_steps.assign_add(1) - - @tf.function - def _policy_actions_messages( - self, - target_obs_trans: Dict[str, np.ndarray], - target_core_state: Dict[str, np.ndarray], - target_core_message: Dict[str, np.ndarray], - ) -> Any: - actions = {} - messages = {} - - for agent in self._agents: - time.time() - agent_key = self.agent_net_keys[agent] - target_trans_obs = target_obs_trans[agent] - # TODO (dries): Why is there an extra tuple - # wrapping that needs to be removed? - agent_core_state = target_core_state[agent][0] - agent_core_message = target_core_message[agent][0] - - transposed_obs = tf2_utils.batch_to_sequence(target_trans_obs) - - (output_actions, output_messages), _ = snt.static_unroll( - self._target_policy_networks[agent_key], - transposed_obs, - agent_core_state, - agent_core_message, - ) - actions[agent] = tf2_utils.batch_to_sequence(output_actions) - messages[agent] = tf2_utils.batch_to_sequence(output_messages) - return actions, messages + self._num_steps.assign_add(1) def _step(self) -> Dict[str, Dict[str, Any]]: # Update the target networks @@ -373,13 +342,13 @@ def _forward(self, inputs: Any) -> None: # d_theta = d_theta + d_Q_t_a ^ 2 policy_losses[agent_id] += td_action ** 2 - # Communication grads - td_comm = y_message - tf.gather( - policy["messages"][t - 1][agent_id], - tf.argmax(message, axis=-1), - batch_dims=1, - ) - policy_losses[agent_id] += td_comm ** 2 + # Communication grads for RIAL + # td_comm = y_message - tf.gather( + # policy["messages"][t - 1][agent_id], + # tf.argmax(message, axis=-1), + # batch_dims=1, + # ) + # policy_losses[agent_id] += td_comm ** 2 # Average over batches for key in policy_losses.keys(): From ffa59f0cc7df840bdf11d02d04206b11a4289e0d Mon Sep 17 00:00:00 2001 From: Kevin Eloff Date: Sat, 22 May 2021 13:20:08 +0200 Subject: [PATCH 016/188] fix: update fingerprint --- .../run_recurrent_comm_madqn.py | 29 +++---------------- mava/systems/tf/madqn/training.py | 2 ++ 2 files changed, 6 insertions(+), 25 deletions(-) diff --git a/examples/debugging_envs/run_recurrent_comm_madqn.py b/examples/debugging_envs/run_recurrent_comm_madqn.py index 057394654..904748bf5 100644 --- a/examples/debugging_envs/run_recurrent_comm_madqn.py +++ b/examples/debugging_envs/run_recurrent_comm_madqn.py @@ -38,7 +38,7 @@ from mava.systems.tf.madqn.training import RecurrentCommMADQNTrainer from mava.utils import lp_utils from mava.utils.environments import debugging_utils -from mava.utils.loggers import Logger +from mava.utils.loggers import logger_utils FLAGS = flags.FLAGS flags.DEFINE_string( @@ -153,27 +153,8 @@ def main(_: Any) -> None: checkpoint_dir = f"{FLAGS.base_dir}/{FLAGS.mava_id}" log_every = 10 - trainer_logger = Logger( - label="system_trainer", - directory=FLAGS.base_dir, - to_terminal=True, - to_tensorboard=True, - time_stamp=FLAGS.mava_id, - time_delta=log_every, - ) - - exec_logger = Logger( - # _{executor_id} gets appended to label in system. - label="train_loop_executor", - directory=FLAGS.base_dir, - to_terminal=True, - to_tensorboard=True, - time_stamp=FLAGS.mava_id, - time_delta=log_every, - ) - - eval_logger = Logger( - label="eval_loop", + logger_factory = functools.partial( + logger_utils.make_logger, directory=FLAGS.base_dir, to_terminal=True, to_tensorboard=True, @@ -185,6 +166,7 @@ def main(_: Any) -> None: program = madqn.MADQN( environment_factory=environment_factory, network_factory=network_factory, + logger_factory=logger_factory, num_executors=2, trainer_fn=RecurrentCommMADQNTrainer, executor_fn=MADQNRecurrentCommExecutor, @@ -194,9 +176,6 @@ def main(_: Any) -> None: epsilon_decay=5e-4, optimizer=snt.optimizers.Adam(learning_rate=1e-4), checkpoint_subpath=checkpoint_dir, - trainer_logger=trainer_logger, - exec_logger=exec_logger, - eval_logger=eval_logger, n_step=1, batch_size=32, ).build() diff --git a/mava/systems/tf/madqn/training.py b/mava/systems/tf/madqn/training.py index 19224215c..c2c7e2bdb 100644 --- a/mava/systems/tf/madqn/training.py +++ b/mava/systems/tf/madqn/training.py @@ -431,6 +431,7 @@ def __init__( exploration_scheduler: LinearExplorationScheduler, communication_module: BaseCommunicationModule, clipping: bool = True, + fingerprint: bool = False, counter: counting.Counter = None, logger: loggers.Logger = None, checkpoint: bool = True, @@ -448,6 +449,7 @@ def __init__( shared_weights=shared_weights, exploration_scheduler=exploration_scheduler, clipping=clipping, + fingerprint=fingerprint, counter=counter, logger=logger, checkpoint=checkpoint, From 957fa9a577c0776e9335ae3835b1d167016edb61 Mon Sep 17 00:00:00 2001 From: Kevin Eloff Date: Sat, 22 May 2021 14:28:43 +0200 Subject: [PATCH 017/188] feat: general comm network --- .../run_recurrent_comm_madqn.py | 69 ++++++++---------- mava/components/tf/networks/__init__.py | 1 + mava/components/tf/networks/communication.py | 72 +++++++++++++++++++ 3 files changed, 103 insertions(+), 39 deletions(-) create mode 100644 mava/components/tf/networks/communication.py diff --git a/examples/debugging_envs/run_recurrent_comm_madqn.py b/examples/debugging_envs/run_recurrent_comm_madqn.py index 904748bf5..e8c1169c3 100644 --- a/examples/debugging_envs/run_recurrent_comm_madqn.py +++ b/examples/debugging_envs/run_recurrent_comm_madqn.py @@ -15,16 +15,14 @@ import functools from datetime import datetime -from typing import Any, Dict, Mapping, Optional, Sequence, Union +from typing import Any, Mapping, Optional import launchpad as lp -import numpy as np import sonnet as snt import tensorflow as tf from absl import app, flags from acme import types -from acme.wrappers.gym_wrapper import _convert_to_spec -from gym import spaces +from acme.tf import networks from launchpad.nodes.python.local_multi_processing import PythonProcess from mava import specs as mava_specs @@ -32,7 +30,10 @@ BroadcastedCommunication, ) from mava.components.tf.modules.exploration import LinearExplorationScheduler -from mava.components.tf.networks import DIALPolicy, epsilon_greedy_action_selector +from mava.components.tf.networks import ( + CommunicationNetwork, + epsilon_greedy_action_selector, +) from mava.systems.tf import madqn from mava.systems.tf.madqn.execution import MADQNRecurrentCommExecutor from mava.systems.tf.madqn.training import RecurrentCommMADQNTrainer @@ -62,11 +63,7 @@ def make_networks( environment_spec: mava_specs.MAEnvironmentSpec, - q_networks_layer_sizes: Union[Dict[str, Sequence], Sequence] = ( - 512, - 512, - 256, - ), + message_size: int = 10, shared_weights: bool = True, ) -> Mapping[str, types.TensorTransformation]: """Creates networks used by the agents.""" @@ -78,9 +75,6 @@ def make_networks( type_specs = {key.split("_")[0]: specs[key] for key in specs.keys()} specs = type_specs - if isinstance(q_networks_layer_sizes, Sequence): - q_networks_layer_sizes = {key: q_networks_layer_sizes for key in specs.keys()} - def action_selector_fn( q_values: types.NestedTensor, legal_actions: types.NestedTensor, @@ -95,34 +89,31 @@ def action_selector_fn( for key in specs.keys(): # Get total number of action dimensions from action spec. - # num_dimensions = specs[key].actions.num_values - - # Create the policy network. - # q_network = snt.DeepRNN( - # [ - # networks.LayerNormMLP( - # q_networks_layer_sizes[key], activate_final=False - # ), - # snt.LSTM(25), - # snt.nets.MLP([128]), - # networks.NearZeroInitializedLinear(num_dimensions), - # ] - # ) - - q_network = DIALPolicy( - action_spec=specs[key].actions, - message_spec=_convert_to_spec( - spaces.Box(-np.inf, np.inf, (10,), dtype=np.float32) + num_dimensions = specs[key].actions.num_values + + q_network = CommunicationNetwork( + networks.LayerNormMLP( + (128,), + activate_final=True, + ), + networks.LayerNormMLP( + (128,), + activate_final=True, + ), + snt.LSTM(128), + snt.Sequential( + [ + networks.LayerNormMLP((128,), activate_final=True), + networks.NearZeroInitializedLinear(num_dimensions), + networks.TanhToSpec(specs[key].actions), + ] ), - gru_hidden_size=256, - gru_layers=2, - task_mlp_size=( - 256, - 256, + snt.Sequential( + [ + networks.LayerNormMLP((128, message_size), activate_final=True), + ] ), - message_in_mlp_size=(256,), - message_out_mlp_size=(256,), - output_mlp_size=(256,), + message_size=message_size, ) # epsilon greedy action selector diff --git a/mava/components/tf/networks/__init__.py b/mava/components/tf/networks/__init__.py index 01f27652b..fcb25d850 100644 --- a/mava/components/tf/networks/__init__.py +++ b/mava/components/tf/networks/__init__.py @@ -15,6 +15,7 @@ from mava.components.tf.networks.additive import AdditiveMixingNetwork +from mava.components.tf.networks.communication import CommunicationNetwork from mava.components.tf.networks.dial import DIALPolicy from mava.components.tf.networks.epsilon_greedy import epsilon_greedy_action_selector from mava.components.tf.networks.fingerprints import ObservationNetworkWithFingerprint diff --git a/mava/components/tf/networks/communication.py b/mava/components/tf/networks/communication.py new file mode 100644 index 000000000..faeead858 --- /dev/null +++ b/mava/components/tf/networks/communication.py @@ -0,0 +1,72 @@ +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://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. + +from typing import Optional + +import sonnet as snt +import tensorflow as tf +from acme.tf import utils as tf2_utils + + +class CommunicationNetwork(snt.Module): + def __init__( + self, + obs_in_network: snt.Module, + comm_in_network: snt.Module, + core_network: snt.RNNCore, + action_head: snt.Module, + comm_head: snt.Module, + message_size: int, + name: str = None, + ): + super(CommunicationNetwork, self).__init__(name=name) + + self._obs_in_network = obs_in_network + self._comm_in_network = comm_in_network + self._core_network = core_network + self._action_head = action_head + self._comm_head = comm_head + + self._message_size = message_size + + def initial_state(self, batch_size: int = 1) -> snt.Module: + # Requires core_network to be of type snt.RNNCore + return self._core_network.initial_state(batch_size) + + def initial_message(self, batch_size: int = 1) -> snt.Module: + # TODO Kevin: get output dim of comm_head + return tf.zeros([batch_size, self._message_size], dtype=tf.float32) + + def __call__( + self, + x: snt.Module, + state: Optional[snt.Module] = None, + message: Optional[snt.Module] = None, + ) -> snt.Module: + if state is None: + state = self.initial_state(x.shape[0]) + if message is None: + message = self.initial_message(x.shape[0]) + + obs_in = self._obs_in_network(x) + comm_in = self._comm_in_network(message) + + core_in = tf2_utils.batch_concat([obs_in, comm_in]) + + core_out, state = self._core_network(core_in, state) + + action = self._action_head(core_out) + message = self._comm_head(core_out) + + return (action, message), state From 5fc632b903bb5960fddf20f6981ee283e2a99a68 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Sat, 22 May 2021 16:49:09 +0200 Subject: [PATCH 018/188] update dockerfile to install sc2 --- Dockerfile | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Dockerfile b/Dockerfile index 584f4b603..8e2b6edda 100755 --- a/Dockerfile +++ b/Dockerfile @@ -32,4 +32,9 @@ RUN python -m pip install --upgrade pip RUN python -m pip install -e .[flatland] RUN python -m pip install -e .[tf,envs,reverb,launchpad,testing_formatting,record_episode] +# install starcraft 2 environment +RUN apt-get -y install git +RUN python -m pip install git+https://github.com/oxwhirl/smac.git +ENV SC2PATH /home/app/mava/3rdparty/StarCraftII + EXPOSE 6006 From 77cb03736c81850d0055e357e387061bb302d499 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Sat, 22 May 2021 16:49:30 +0200 Subject: [PATCH 019/188] add 3rd party libraries to be ignored --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 3b997dbf1..af142c8a2 100644 --- a/.gitignore +++ b/.gitignore @@ -147,3 +147,4 @@ mava/workspace.code-workspace .DS_Store mava_testing .devcontainer/devcontainer.json +3rdparty From 70b1e9142674a44d1515196a11339a537726839c Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Sat, 22 May 2021 16:49:51 +0200 Subject: [PATCH 020/188] remove smac from setup --- setup.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/setup.py b/setup.py index 12099540b..d24212070 100644 --- a/setup.py +++ b/setup.py @@ -39,17 +39,12 @@ "trfl", ] -# NOTE (St John, for Kale-ab) The SMAC installed when callling `pip install -# smac` seems to be a different package. We actually need to install SMAC -# via pip `install git+https://github.com/oxwhirl/smac.git`. PySC2 is the -# single agent env for StarCraft II, required by SMAC. env_requirements = [ "pettingzoo>=1.8.2", "multi_agent_ale_py", "supersuit", "pygame", "pysc2", - "smac", ] launchpad_requirements = [ From 4555a5cde984494d623c84e9ceb9b04298d92b23 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Sat, 22 May 2021 16:51:11 +0200 Subject: [PATCH 021/188] add mac stuff to be ignored --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index af142c8a2..ff53a4e0a 100644 --- a/.gitignore +++ b/.gitignore @@ -27,6 +27,9 @@ share/python-wheels/ *.egg MANIFEST +# mac +__MACOSX + # PyInstaller # Usually these files are written by a python script from a template # before PyInstaller builds the exe, so as to inject date/other infos into it. From 0aeceba6e9dcfa969009b37784b1752767858a80 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Sat, 22 May 2021 16:51:43 +0200 Subject: [PATCH 022/188] Minor changes to pz wrapper --- mava/wrappers/pettingzoo.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mava/wrappers/pettingzoo.py b/mava/wrappers/pettingzoo.py index 1671fd3ea..1c9a64164 100644 --- a/mava/wrappers/pettingzoo.py +++ b/mava/wrappers/pettingzoo.py @@ -218,7 +218,7 @@ def __init__( self._environment, env_preprocess_wrappers ) - def reset(self) -> dm_env.TimeStep: + def reset(self) -> Tuple[dm_env.TimeStep, np.array]: """Resets the episode.""" self._reset_next_step = False self._step_type = dm_env.StepType.FIRST From 0902e39412c8deb2ec9cc9f1ee3cec433a55e655 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Sat, 22 May 2021 16:52:34 +0200 Subject: [PATCH 023/188] feat: environment wrapper for sc2 --- install_sc2.sh | 33 ++++ mava/wrappers/{starcraft.py => starcraft2.py} | 149 +++++++++--------- 2 files changed, 110 insertions(+), 72 deletions(-) create mode 100755 install_sc2.sh rename mava/wrappers/{starcraft.py => starcraft2.py} (67%) diff --git a/install_sc2.sh b/install_sc2.sh new file mode 100755 index 000000000..bff0d8b54 --- /dev/null +++ b/install_sc2.sh @@ -0,0 +1,33 @@ +#!/bin/bash +# Install SC2 and add the custom maps + +mkdir 3rdparty +cd 3rdparty + +export SC2PATH=`pwd`'/StarCraftII' +echo 'SC2PATH is set to '$SC2PATH + +if [ ! -d $SC2PATH ]; then + echo 'StarCraftII is not installed. Installing now ...'; + wget http://blzdistsc2-a.akamaihd.net/Linux/SC2.4.10.zip + unzip -P iagreetotheeula SC2.4.10.zip + rm -rf SC2.4.10.zip +else + echo 'StarCraftII is already installed.' +fi + +echo 'Adding SMAC maps.' +MAP_DIR="$SC2PATH/Maps/" +echo 'MAP_DIR is set to '$MAP_DIR + +if [ ! -d $MAP_DIR ]; then + mkdir -p $MAP_DIR +fi + +cd .. +wget https://github.com/oxwhirl/smac/releases/download/v0.1-beta1/SMAC_Maps.zip +unzip SMAC_Maps.zip +mv SMAC_Maps $MAP_DIR +rm -rf SMAC_Maps.zip + +echo 'StarCraft II and SMAC are installed.' \ No newline at end of file diff --git a/mava/wrappers/starcraft.py b/mava/wrappers/starcraft2.py similarity index 67% rename from mava/wrappers/starcraft.py rename to mava/wrappers/starcraft2.py index b838bcbe1..2e86a3ee3 100644 --- a/mava/wrappers/starcraft.py +++ b/mava/wrappers/starcraft2.py @@ -51,7 +51,7 @@ def __init__(self, **smac_args: Optional[Tuple]) -> None: self._ready_agents: List = [] self.observation_space = Dict( { - "obs": Box(-1, 1, shape=(self._env.get_obs_size(),)), + "observation": Box(-1, 1, shape=(self._env.get_obs_size(),)), "action_mask": Box(0, 1, shape=(self._env.get_total_actions(),)), } ) @@ -62,45 +62,49 @@ def reset(self) -> Tuple[dm_env.TimeStep, np.array]: Returns: obs (dict): New observations for each ready agent. """ + self._env_done = False self._reset_next_step = False self._step_type = dm_env.StepType.FIRST - # TODO Check the form of this state list and convert for return. - obs_list, state_list = self._env.reset() + # reset internal SC2 env + obs_list, state = self._env.reset() + + # Convert observations observe: Dict[str, np.ndarray] = {} + self.possible_agents = [] for i, obs in enumerate(obs_list): agent = f"agent_{i}" - observe[agent] = { # TODO Only obs in this Dict or mask too? + observe[agent] = { "action_mask": np.array(self._env.get_avail_agent_actions(i)), - "obs": obs, + "observation": obs, } + self.possible_agents.append(agent) + observations = self._convert_observations( + observe, {agent: False for agent in self.possible_agents} + ) self._ready_agents = list(range(len(obs_list))) + # create discount spec discount_spec = self.discount_spec() self._discounts = { agent: convert_np_type(discount_spec[agent].dtype, 1) for agent in self._environment.possible_agents } - observations = self._convert_observations( - observe, {agent: False for agent in self.possible_agents} - ) + + # create rewards spec rewards_spec = self.reward_spec() rewards = { agent: convert_np_type(rewards_spec[agent].dtype, 0) for agent in self.possible_agents } - discount_spec = self.discount_spec() - self._discounts = { - agent: convert_np_type(discount_spec[agent].dtype, 1) - for agent in self.possible_agents - } + # dm_env timestep timestep = parameterized_restart(rewards, self._discounts, observations) - return timestep, {"s_t": state_list} # TODO Convert this to correct form + return timestep, {"s_t": state} - def step(self, action_dict: Dict) -> Tuple[dm_env.TimeStep, np.array]: + def step(self, actions: Dict[str, np.ndarray]) -> Tuple[dm_env.TimeStep, np.array]: """Returns observations from ready agents. The returns are dicts mapping from agent_id strings to values. The number of agents in the env can vary over time. @@ -116,34 +120,36 @@ def step(self, action_dict: Dict) -> Tuple[dm_env.TimeStep, np.array]: if self._reset_next_step: return self.reset() - actions = [] - for i in self._ready_agents: - if i not in action_dict: - raise ValueError(f"You must supply an action for agent: {i}") - actions.append(action_dict[i]) - - if len(actions) != len(self._ready_agents): - raise ValueError( - f"Number of actions ({len(actions)}) does not match number \ - of ready agents (len(self._ready_agents))." - ) - - rewards, dones, infos = self._env.step(actions) - obs_list = self._env.get_obs() - - return_obs = {} + # actions = [] + # for i in self._ready_agents: + # if i not in action_dict: + # raise ValueError(f"You must supply an action for agent: {i}") + # actions.append(action_dict[i]) + + # if len(actions) != len(self._ready_agents): + # raise ValueError( + # f"Number of actions ({len(actions)}) does not match number \ + # of ready agents (len(self._ready_agents))." + # ) + + actions_feed = list(actions.values()) + reward, terminated, info = self._env.step(actions_feed) + obs_list = self._environment.get_obs() + state = self._environment.get_state() + self._env_done = terminated + + observations = {} for i, obs in enumerate(obs_list): - return_obs[i] = { + observations[f"agent_{i}"] = { "action_mask": self._env.get_avail_agent_actions(i), - "obs": obs, + "observation": obs, } - rewards = {i: rewards / len(obs_list) for i in range(len(obs_list))} - dones = {i: dones for i in range(len(obs_list))} - infos = {i: infos for i in range(len(obs_list))} - self._ready_agents = list(range(len(obs_list))) + rewards = {agent: reward for agent in actions.keys()} + dones = {agent: terminated for agent in actions.keys()} - rewards_spec = self.reward_spec() + # self._ready_agents = list(range(len(obs_list))) + rewards_spec = self.reward_spec() # Handle empty rewards if not rewards: rewards = { @@ -156,8 +162,8 @@ def step(self, action_dict: Dict) -> Tuple[dm_env.TimeStep, np.array]: for agent, reward in rewards.items() } - if return_obs: - return_obs = self._convert_observations(return_obs, dones) + if observations: + observations = self._convert_observations(observations, dones) if self.env_done(): self._step_type = dm_env.StepType.LAST @@ -166,48 +172,64 @@ def step(self, action_dict: Dict) -> Tuple[dm_env.TimeStep, np.array]: self._step_type = dm_env.StepType.MID timestep = dm_env.TimeStep( - observation=return_obs, + observation=observations, reward=rewards, discount=self._discounts, step_type=self._step_type, ) - return timestep # TODO return global state as well + return timestep, state def env_done(self) -> bool: """ Returns a bool indicating if all agents in env are done. """ - return self._environment.env_done # TODO Check SMAC has this function + return self._env_done + + def _convert_observations( + self, observes: Dict[str, np.ndarray], dones: Dict[str, bool] + ) -> types.Observation: + observations: Dict[str, types.OLT] = {} + for agent, observation in observes.items(): + if isinstance(observation, dict) and "action_mask" in observation: + legals = observation["action_mask"] + observation = observation["observation"] + else: + legals = np.ones( + _convert_to_spec(self.action_space).shape, + dtype=self.action_space.dtype, + ) + observations[agent] = types.OLT( + observation=observation, + legal_actions=legals, + terminal=np.asarray([dones[agent]], dtype=np.float32), + ) + + return observations def observation_spec(self) -> types.Observation: return { agent: types.OLT( - observation=_convert_to_spec( - self._environment.observation_spaces[agent] - ), - legal_actions=_convert_to_spec(self._environment.action_spaces[agent]), + observation=_convert_to_spec(self.observation_space["observation"]), + legal_actions=_convert_to_spec(self.observation_space["action_mask"]), terminal=specs.Array((1,), np.float32), ) - for agent in self._environment.possible_agents + for agent in self.possible_agents } def action_spec(self) -> Dict[str, specs.DiscreteArray]: return { - agent: _convert_to_spec(self._environment.action_spaces[agent]) - for agent in self._environment.possible_agents + agent: _convert_to_spec(self._environment.action_space) + for agent in self.possible_agents } def reward_spec(self) -> Dict[str, specs.Array]: - return { - agent: specs.Array((), np.float32) - for agent in self._environment.possible_agents - } + return {agent: specs.Array((), np.float32) for agent in self.possible_agents} def discount_spec(self) -> Dict[str, specs.BoundedArray]: return { agent: specs.BoundedArray((), np.float32, minimum=0, maximum=1.0) - for agent in self._environment.possible_agents + for agent in self.possible_agents } def extra_spec(self) -> Dict[str, specs.BoundedArray]: @@ -217,28 +239,11 @@ def extra_spec(self) -> Dict[str, specs.BoundedArray]: def agents(self) -> List: return self._environment.agents - @property - def possible_agents(self) -> List: - return self._environment.possible_agents - @property def environment(self) -> ParallelEnv: """Returns the wrapped environment.""" return self._environment - @property - def current_agent(self) -> Any: - return self._environment.agent_selection - def __getattr__(self, name: str) -> Any: """Expose any other attributes of the underlying environment.""" return getattr(self._environment, name) - - # Note sure we need these next methods. Comes from RLlib wrapper. - def close(self) -> None: - """Close the environment""" - self._env.close() - - def seed(self, seed: int) -> None: - random.seed(seed) - np.random.seed(seed) From 894320d17880519fd6f7a0111eab7055835a9fbe Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Sat, 22 May 2021 17:01:38 +0200 Subject: [PATCH 024/188] env factory for sc2 --- mava/utils/environments/starcraft2_utils.py | 54 +++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 mava/utils/environments/starcraft2_utils.py diff --git a/mava/utils/environments/starcraft2_utils.py b/mava/utils/environments/starcraft2_utils.py new file mode 100644 index 000000000..5af3a9f2e --- /dev/null +++ b/mava/utils/environments/starcraft2_utils.py @@ -0,0 +1,54 @@ +# python3 +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://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. + +"""Starcraft 2 environment factory.""" + +import importlib +from typing import Any, List, Optional, Union + +import dm_env +import numpy as np + +from smac.env import StarCraft2Env +from mava.wrappers import ParallelEnvWrapper, SMACEnvWrapper + + +def make_environment( + evaluation: bool = False, + map_name="3m", + random_seed: Optional[int] = None, + **kwargs: Any, +) -> dm_env.Environment: + """Wraps an Pettingzoo environment. + + Args: + env_class: str, class of the environment, e.g. MPE or Atari. + env_name: str, name of environment, .e.g simple_spread or Pong. + evaluation: bool, to change the behaviour during evaluation. + + Returns: + A Pettingzoo environment wrapped as a DeepMind environment. + """ + del evaluation + + env = StarCraft2Env(map_name=map_name, **kwargs) + + # wrap starcraft 2 environment + environment = SMACEnvWrapper(env) + + if random_seed and hasattr(environment, "seed"): + environment.seed(random_seed) + + return environment \ No newline at end of file From 8714f339dc89d92bd02494f6b6bbbdfc7df28cb1 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Sat, 22 May 2021 17:13:57 +0200 Subject: [PATCH 025/188] have mypy ignore smace --- mypy.ini | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mypy.ini b/mypy.ini index e24c26a89..e9b090c04 100644 --- a/mypy.ini +++ b/mypy.ini @@ -75,3 +75,6 @@ ignore_missing_imports = True [mypy-matplotlib.*] ignore_missing_imports = True + +[mypy-smac.*] +ignore_missing_imports = True From 97b6e2878cc0b77c22994ce9c7980f30816f912c Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Sat, 22 May 2021 17:14:18 +0200 Subject: [PATCH 026/188] add install script for sc2 --- install_sc2.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install_sc2.sh b/install_sc2.sh index bff0d8b54..b7fa1ff2d 100755 --- a/install_sc2.sh +++ b/install_sc2.sh @@ -30,4 +30,4 @@ unzip SMAC_Maps.zip mv SMAC_Maps $MAP_DIR rm -rf SMAC_Maps.zip -echo 'StarCraft II and SMAC are installed.' \ No newline at end of file +echo 'StarCraft II and SMAC are installed.' From 14c5c33634b61880a0fd118904dc52b2281493f8 Mon Sep 17 00:00:00 2001 From: Dries Date: Sat, 22 May 2021 17:19:12 +0200 Subject: [PATCH 027/188] feature: Update discrete and continuous MA-DDPG and MA-D4PG to each use their default systems. --- ...centralised_feedforward_discrete_mad4pg.py | 2 -- ...centralised_feedforward_discrete_maddpg.py | 2 -- .../run_decentralised_recurrent_mad4pg.py | 5 +-- .../run_decentralised_recurrent_maddpg.py | 5 +-- .../run_decentralised_recurrent_maddpg.py | 5 +-- mava/systems/tf/mad4pg/__init__.py | 3 +- mava/systems/tf/mad4pg/execution.py | 27 +++++++++++++-- mava/systems/tf/mad4pg/system.py | 4 +-- mava/systems/tf/maddpg/__init__.py | 3 ++ mava/systems/tf/maddpg/builder.py | 4 ++- mava/systems/tf/maddpg/execution.py | 33 +++++++++++++++---- mava/systems/tf/maddpg/system.py | 4 +-- 12 files changed, 72 insertions(+), 25 deletions(-) diff --git a/examples/debugging_envs/run_decentralised_feedforward_discrete_mad4pg.py b/examples/debugging_envs/run_decentralised_feedforward_discrete_mad4pg.py index 3473c4ac3..a1d568905 100644 --- a/examples/debugging_envs/run_decentralised_feedforward_discrete_mad4pg.py +++ b/examples/debugging_envs/run_decentralised_feedforward_discrete_mad4pg.py @@ -31,7 +31,6 @@ from mava import specs as mava_specs from mava.components.tf.networks.mad4pg import DiscreteValuedHead from mava.systems.tf import mad4pg -from mava.systems.tf.mad4pg.execution import MAD4PGDiscreteFeedForwardExecutor from mava.utils import lp_utils from mava.utils.environments import debugging_utils from mava.utils.loggers import logger_utils @@ -183,7 +182,6 @@ def main(_: Any) -> None: network_factory=network_factory, logger_factory=logger_factory, num_executors=2, - executor_fn=MAD4PGDiscreteFeedForwardExecutor, policy_optimizer=snt.optimizers.Adam(learning_rate=1e-4), critic_optimizer=snt.optimizers.Adam(learning_rate=1e-4), checkpoint_subpath=checkpoint_dir, diff --git a/examples/debugging_envs/run_decentralised_feedforward_discrete_maddpg.py b/examples/debugging_envs/run_decentralised_feedforward_discrete_maddpg.py index 7acb89533..4ee00b3d3 100644 --- a/examples/debugging_envs/run_decentralised_feedforward_discrete_maddpg.py +++ b/examples/debugging_envs/run_decentralised_feedforward_discrete_maddpg.py @@ -32,7 +32,6 @@ from mava import specs as mava_specs from mava.systems.tf import maddpg -from mava.systems.tf.maddpg.execution import MADDPGDiscreteFeedForwardExecutor from mava.utils import lp_utils from mava.utils.environments import debugging_utils @@ -194,7 +193,6 @@ def main(_: Any) -> None: network_factory=network_factory, logger_config=logger_config, num_executors=2, - executor_fn=MADDPGDiscreteFeedForwardExecutor, policy_optimizer=snt.optimizers.Adam(learning_rate=1e-4), critic_optimizer=snt.optimizers.Adam(learning_rate=1e-4), checkpoint_subpath=checkpoint_dir, diff --git a/examples/debugging_envs/run_decentralised_recurrent_mad4pg.py b/examples/debugging_envs/run_decentralised_recurrent_mad4pg.py index 4f3e26c68..d90e3dc2b 100644 --- a/examples/debugging_envs/run_decentralised_recurrent_mad4pg.py +++ b/examples/debugging_envs/run_decentralised_recurrent_mad4pg.py @@ -30,7 +30,8 @@ from mava import specs as mava_specs from mava.components.tf.networks.mad4pg import DiscreteValuedHead -from mava.systems.tf import executors, mad4pg +from mava.systems.tf import mad4pg +from mava.systems.tf.mad4pg.execution import MAD4PGRecurrentExecutor from mava.systems.tf.mad4pg.training import DecentralisedRecurrentMAD4PGTrainer from mava.utils import lp_utils from mava.utils.environments import debugging_utils @@ -166,7 +167,7 @@ def main(_: Any) -> None: logger_factory=logger_factory, num_executors=2, trainer_fn=DecentralisedRecurrentMAD4PGTrainer, - executor_fn=executors.RecurrentExecutor, + executor_fn=MAD4PGRecurrentExecutor, checkpoint_subpath=checkpoint_dir, ).build() diff --git a/examples/debugging_envs/run_decentralised_recurrent_maddpg.py b/examples/debugging_envs/run_decentralised_recurrent_maddpg.py index a8acc7360..44c5308f6 100644 --- a/examples/debugging_envs/run_decentralised_recurrent_maddpg.py +++ b/examples/debugging_envs/run_decentralised_recurrent_maddpg.py @@ -28,7 +28,8 @@ from launchpad.nodes.python.local_multi_processing import PythonProcess from mava import specs as mava_specs -from mava.systems.tf import executors, maddpg +from mava.systems.tf import maddpg +from mava.systems.tf.mad4pg.execution import MADDPGRecurrentExecutor from mava.systems.tf.maddpg.training import DecentralisedRecurrentMADDPGTrainer from mava.utils import lp_utils from mava.utils.environments import debugging_utils @@ -161,7 +162,7 @@ def main(_: Any) -> None: logger_factory=logger_factory, num_executors=2, trainer_fn=DecentralisedRecurrentMADDPGTrainer, - executor_fn=executors.RecurrentExecutor, + executor_fn=MADDPGRecurrentExecutor, checkpoint_subpath=checkpoint_dir, ).build() diff --git a/examples/petting_zoo/run_decentralised_recurrent_maddpg.py b/examples/petting_zoo/run_decentralised_recurrent_maddpg.py index fa34801cc..2f6e7f046 100644 --- a/examples/petting_zoo/run_decentralised_recurrent_maddpg.py +++ b/examples/petting_zoo/run_decentralised_recurrent_maddpg.py @@ -29,7 +29,8 @@ from launchpad.nodes.python.local_multi_processing import PythonProcess from mava import specs as mava_specs -from mava.systems.tf import executors, maddpg +from mava.systems.tf import maddpg +from mava.systems.tf.maddpg.execution import MADDPGRecurrentExecutor from mava.systems.tf.maddpg.training import DecentralisedRecurrentMADDPGTrainer from mava.utils import lp_utils from mava.utils.environments import pettingzoo_utils @@ -163,7 +164,7 @@ def main(_: Any) -> None: logger_factory=logger_factory, num_executors=2, trainer_fn=DecentralisedRecurrentMADDPGTrainer, - executor_fn=executors.RecurrentExecutor, + executor_fn=MADDPGRecurrentExecutor, policy_optimizer=snt.optimizers.Adam(learning_rate=1e-4), critic_optimizer=snt.optimizers.Adam(learning_rate=1e-4), checkpoint_subpath=checkpoint_dir, diff --git a/mava/systems/tf/mad4pg/__init__.py b/mava/systems/tf/mad4pg/__init__.py index 1adbe4d14..5b3235d5f 100644 --- a/mava/systems/tf/mad4pg/__init__.py +++ b/mava/systems/tf/mad4pg/__init__.py @@ -14,7 +14,6 @@ # limitations under the License. """Implementations of a MAD4PG agent.""" - from mava.systems.tf.mad4pg.system import MAD4PG from mava.systems.tf.mad4pg.training import ( BaseMAD4PGTrainer, @@ -22,3 +21,5 @@ DecentralisedMAD4PGTrainer, StateBasedMAD4PGTrainer, ) +from mava.systems.tf.mad4pg.execution import (MAD4PGFeedForwardExecutor, + MAD4PGRecurrentExecutor) diff --git a/mava/systems/tf/mad4pg/execution.py b/mava/systems/tf/mad4pg/execution.py index 336fc251b..30d4700eb 100644 --- a/mava/systems/tf/mad4pg/execution.py +++ b/mava/systems/tf/mad4pg/execution.py @@ -19,17 +19,38 @@ from acme.tf import variable_utils as tf2_variable_utils from mava import adders -from mava.systems.tf.maddpg.execution import MADDPGDiscreteFeedForwardExecutor +from mava.systems.tf.maddpg.execution import MADDPGFeedForwardExecutor, MADDPGRecurrentExecutor -class MAD4PGDiscreteFeedForwardExecutor(MADDPGDiscreteFeedForwardExecutor): - """A feed-forward executor for discrete actions in MAD4PG. +class MAD4PGFeedForwardExecutor(MADDPGFeedForwardExecutor): + """A feed-forward executor for MAD4PG. An executor based on a feed-forward policy for each agent in the system which takes non-batched observations and outputs non-batched actions. It also allows adding experiences to replay and updating the weights from the policy on the learner. """ + def __init__( + self, + policy_networks: Dict[str, snt.Module], + adder: Optional[adders.ParallelAdder] = None, + variable_client: Optional[tf2_variable_utils.VariableClient] = None, + shared_weights: bool = True, + ): + super().__init__( + policy_networks=policy_networks, + adder=adder, + variable_client=variable_client, + shared_weights=shared_weights, + ) +class MAD4PGRecurrentExecutor(MADDPGRecurrentExecutor): + """A recurrent executor for MAD4PG. + An executor based on a recurrent policy for each agent in the system + which takes non-batched observations and outputs non-batched actions. + It also allows adding experiences to replay and updating the weights + from the policy on the learner. + """ + def __init__( self, policy_networks: Dict[str, snt.Module], diff --git a/mava/systems/tf/mad4pg/system.py b/mava/systems/tf/mad4pg/system.py index c19131338..f89a09668 100644 --- a/mava/systems/tf/mad4pg/system.py +++ b/mava/systems/tf/mad4pg/system.py @@ -24,7 +24,7 @@ from mava import specs as mava_specs from mava.components.tf.architectures import DecentralisedQValueActorCritic from mava.environment_loop import ParallelEnvironmentLoop -from mava.systems.tf import executors +from mava.systems.tf.maddpg.execution import MADDPGFeedForwardExecutor from mava.systems.tf.mad4pg import training from mava.systems.tf.maddpg.system import MADDPG from mava.utils.loggers import MavaLogger @@ -50,7 +50,7 @@ def __init__( Type[training.BaseMAD4PGTrainer], Type[training.BaseRecurrentMAD4PGTrainer], ] = training.DecentralisedMAD4PGTrainer, - executor_fn: Type[core.Executor] = executors.FeedForwardExecutor, + executor_fn: Type[core.Executor] = MADDPGFeedForwardExecutor, num_executors: int = 1, num_caches: int = 0, environment_spec: mava_specs.MAEnvironmentSpec = None, diff --git a/mava/systems/tf/maddpg/__init__.py b/mava/systems/tf/maddpg/__init__.py index e2213e2b1..bdb6dd1eb 100644 --- a/mava/systems/tf/maddpg/__init__.py +++ b/mava/systems/tf/maddpg/__init__.py @@ -23,3 +23,6 @@ NetworkedMADDPGTrainer, StateBasedMADDPGTrainer, ) + +from mava.systems.tf.mad4pg.execution import (MADDPGFeedForwardExecutor, + MADDPGRecurrentExecutor) diff --git a/mava/systems/tf/maddpg/builder.py b/mava/systems/tf/maddpg/builder.py index 2c8684054..42fea1d5c 100644 --- a/mava/systems/tf/maddpg/builder.py +++ b/mava/systems/tf/maddpg/builder.py @@ -31,6 +31,7 @@ from mava.systems.builders import SystemBuilder from mava.systems.tf import executors from mava.systems.tf.maddpg import training +from mava.systems.tf.maddpg.execution import MADDPGFeedForwardExecutor from mava.wrappers import DetailedTrainerStatistics, NetworkStatisticsActorCritic BoundedArray = dm_specs.BoundedArray @@ -107,7 +108,7 @@ def __init__( Type[training.BaseMADDPGTrainer], Type[training.BaseRecurrentMADDPGTrainer], ] = training.DecentralisedMADDPGTrainer, - executor_fn: Type[core.Executor] = executors.FeedForwardExecutor, + executor_fn: Type[core.Executor] = MADDPGFeedForwardExecutor, extra_specs: Dict[str, Any] = {}, ): """Args: @@ -287,6 +288,7 @@ def make_executor( # Create the actor which defines how we take actions. return self._executor_fn( policy_networks=policy_networks, + agent_specs=self._config.environment_spec.get_agent_specs(), shared_weights=shared_weights, variable_client=variable_client, adder=adder, diff --git a/mava/systems/tf/maddpg/execution.py b/mava/systems/tf/maddpg/execution.py index 279e77a02..6ac12e005 100644 --- a/mava/systems/tf/maddpg/execution.py +++ b/mava/systems/tf/maddpg/execution.py @@ -20,6 +20,10 @@ import tensorflow as tf import tensorflow_probability as tfp from acme import types +from dm_env import specs +Array = specs.Array +BoundedArray = specs.BoundedArray +DiscreteArray = specs.DiscreteArray # Internal imports. from acme.tf import utils as tf2_utils @@ -27,11 +31,11 @@ from mava import adders from mava.systems.tf import executors - +from acme.specs import EnvironmentSpec tfd = tfp.distributions -class MADDPGDiscreteFeedForwardExecutor(executors.FeedForwardExecutor): +class MADDPGFeedForwardExecutor(executors.FeedForwardExecutor): """A feed-forward executor for discrete actions in MADDPG. An executor based on a feed-forward policy for each agent in the system which takes non-batched observations and outputs non-batched actions. @@ -42,6 +46,7 @@ class MADDPGDiscreteFeedForwardExecutor(executors.FeedForwardExecutor): def __init__( self, policy_networks: Dict[str, snt.Module], + agent_specs: Dict[str, EnvironmentSpec], adder: Optional[adders.ParallelAdder] = None, variable_client: Optional[tf2_variable_utils.VariableClient] = None, shared_weights: bool = True, @@ -61,10 +66,10 @@ def __init__( self._adder = adder self._variable_client = variable_client self._policy_networks = policy_networks + self._agent_specs = agent_specs self._shared_weights = shared_weights - # TODO: Add this back in - # @tf.function + @tf.function def _policy( self, agent: str, observation: types.NestedTensor ) -> types.NestedTensor: @@ -78,8 +83,14 @@ def _policy( # Compute the policy, conditioned on the observation. policy = self._policy_networks[agent_key](batched_observation) - # Sample from the policy if it is stochastic. - action = tf.math.argmax(policy, axis=1) + # TODO (dries): Make this support hybrid action spaces. + if type(self._agent_specs[agent].actions) == BoundedArray: + # Continuous action + action = policy + elif type(self._agent_specs[agent].actions) == DiscreteArray: + action = tf.math.argmax(policy, axis=1) + else: + raise NotImplementedError return action, policy @@ -129,3 +140,13 @@ def observe( env_actions, policy = actions # TODO (dries): Sort out this mypy issue. self._adder.add(policy, next_timestep, next_extras) # type: ignore + +class MADDPGRecurrentExecutor(executors.FeedForwardExecutor): + def __init__( + self, + policy_networks: Dict[str, snt.Module], + adder: Optional[adders.ParallelAdder] = None, + variable_client: Optional[tf2_variable_utils.VariableClient] = None, + shared_weights: bool = True, + ): + raise NotImplementedError \ No newline at end of file diff --git a/mava/systems/tf/maddpg/system.py b/mava/systems/tf/maddpg/system.py index e8a39a0d1..19a4b6498 100644 --- a/mava/systems/tf/maddpg/system.py +++ b/mava/systems/tf/maddpg/system.py @@ -32,13 +32,13 @@ from mava.components.tf.architectures import DecentralisedQValueActorCritic from mava.environment_loop import ParallelEnvironmentLoop from mava.systems.tf import executors +from mava.systems.tf.maddpg.execution import MADDPGFeedForwardExecutor from mava.systems.tf import savers as tf2_savers from mava.systems.tf.maddpg import builder, training from mava.utils import lp_utils from mava.utils.loggers import MavaLogger, logger_utils from mava.wrappers import DetailedPerAgentStatistics - class MADDPG: """MADDPG system. This implements a single-process DDPG system. This is an actor-critic based @@ -59,7 +59,7 @@ def __init__( Type[training.BaseMADDPGTrainer], Type[training.BaseRecurrentMADDPGTrainer], ] = training.DecentralisedMADDPGTrainer, - executor_fn: Type[core.Executor] = executors.FeedForwardExecutor, + executor_fn: Type[core.Executor] = MADDPGFeedForwardExecutor, num_executors: int = 1, num_caches: int = 0, environment_spec: mava_specs.MAEnvironmentSpec = None, From 0bcd3326ab29fecde65746beb0406e79e0491dd5 Mon Sep 17 00:00:00 2001 From: Kevin Eloff Date: Sat, 22 May 2021 17:22:47 +0200 Subject: [PATCH 028/188] feat: dial prison learning --- examples/debugging_envs/run_recurrent_dial.py | 147 +++--- mava/systems/tf/dial/builder.py | 329 ++++++++------ mava/systems/tf/dial/execution.py | 88 ++-- mava/systems/tf/dial/system.py | 360 ++++++++------- mava/systems/tf/dial/training.py | 424 ++---------------- 5 files changed, 524 insertions(+), 824 deletions(-) diff --git a/examples/debugging_envs/run_recurrent_dial.py b/examples/debugging_envs/run_recurrent_dial.py index b4da0d726..57671b930 100644 --- a/examples/debugging_envs/run_recurrent_dial.py +++ b/examples/debugging_envs/run_recurrent_dial.py @@ -13,30 +13,35 @@ # See the License for the specific language governing permissions and # limitations under the License. -"""Example running DIAL""" import functools from datetime import datetime -from typing import Any, Dict, Mapping, Sequence, Union +from typing import Any, Mapping, Optional import launchpad as lp -import numpy as np +import sonnet as snt import tensorflow as tf from absl import app, flags from acme import types -from acme.tf import utils as tf2_utils -from acme.wrappers.gym_wrapper import _convert_to_spec -from gym import spaces +from acme.tf import networks from launchpad.nodes.python.local_multi_processing import PythonProcess from mava import specs as mava_specs -from mava.components.tf.networks import DIALPolicy +from mava.components.tf.modules.communication.broadcasted import ( + BroadcastedCommunication, +) +from mava.components.tf.modules.exploration import LinearExplorationScheduler +from mava.components.tf.networks import ( + CommunicationNetwork, + epsilon_greedy_action_selector, +) from mava.systems.tf import dial +from mava.systems.tf.madqn.execution import MADQNRecurrentCommExecutor +from mava.systems.tf.madqn.training import RecurrentCommMADQNTrainer from mava.utils import lp_utils from mava.utils.environments import debugging_utils from mava.utils.loggers import logger_utils FLAGS = flags.FLAGS -flags.DEFINE_integer("num_episodes", 30000, "Number of training episodes to run for.") flags.DEFINE_string( "env_name", "switch", @@ -47,11 +52,6 @@ "discrete", "Environment action space type (str).", ) -flags.DEFINE_integer( - "num_episodes_per_eval", - 100, - "Number of training episodes to run between evaluation " "episodes.", -) flags.DEFINE_string( "mava_id", @@ -61,103 +61,88 @@ flags.DEFINE_string("base_dir", "~/mava/", "Base dir to store experiments.") -# TODO Kevin: Define message head node correctly def make_networks( environment_spec: mava_specs.MAEnvironmentSpec, - policy_network_gru_hidden_sizes: Union[Dict[str, int], int] = 128, - policy_network_gru_layers: Union[Dict[str, int], int] = 2, - policy_network_task_mlp_sizes: Union[Dict[str, Sequence], Sequence] = (128,), - policy_network_message_in_mlp_sizes: Union[Dict[str, Sequence], Sequence] = (128,), - policy_network_message_out_mlp_sizes: Union[Dict[str, Sequence], Sequence] = (128,), - policy_network_output_mlp_sizes: Union[Dict[str, Sequence], Sequence] = (128,), - message_size: int = 1, + message_size: int = 10, shared_weights: bool = True, - sigma: float = 0.3, ) -> Mapping[str, types.TensorTransformation]: """Creates networks used by the agents.""" + specs = environment_spec.get_agent_specs() - # extra_specs = environment_spec.get_extra_specs() # Create agent_type specs if shared_weights: type_specs = {key.split("_")[0]: specs[key] for key in specs.keys()} specs = type_specs - if isinstance(policy_network_gru_hidden_sizes, int): - policy_network_gru_hidden_sizes = { - key: policy_network_gru_hidden_sizes for key in specs.keys() - } - - if isinstance(policy_network_gru_layers, int): - policy_network_gru_layers = { - key: policy_network_gru_layers for key in specs.keys() - } - - if isinstance(policy_network_task_mlp_sizes, Sequence): - policy_network_task_mlp_sizes = { - key: policy_network_task_mlp_sizes for key in specs.keys() - } - - if isinstance(policy_network_message_in_mlp_sizes, Sequence): - policy_network_message_in_mlp_sizes = { - key: policy_network_message_in_mlp_sizes for key in specs.keys() - } - - if isinstance(policy_network_message_out_mlp_sizes, Sequence): - policy_network_message_out_mlp_sizes = { - key: policy_network_message_out_mlp_sizes for key in specs.keys() - } + def action_selector_fn( + q_values: types.NestedTensor, + legal_actions: types.NestedTensor, + epsilon: Optional[tf.Variable] = None, + ) -> types.NestedTensor: + return epsilon_greedy_action_selector( + action_values=q_values, legal_actions_mask=legal_actions, epsilon=epsilon + ) - if isinstance(policy_network_output_mlp_sizes, Sequence): - policy_network_output_mlp_sizes = { - key: policy_network_output_mlp_sizes for key in specs.keys() - } + q_networks = {} + action_selectors = {} + for key in specs.keys(): - observation_networks = {} - policy_networks = {} + # Get total number of action dimensions from action spec. + num_dimensions = specs[key].actions.num_values - for key in specs.keys(): - # Create the shared observation network - observation_network = tf2_utils.to_sonnet_module(tf.identity) - - # Create the policy network. - policy_network = DIALPolicy( - action_spec=specs[key].actions, - message_spec=_convert_to_spec( - spaces.Box(-np.inf, np.inf, (message_size,), dtype=np.float32) + q_network = CommunicationNetwork( + networks.LayerNormMLP( + (128,), + activate_final=True, + ), + networks.LayerNormMLP( + (128,), + activate_final=True, ), - gru_hidden_size=policy_network_gru_hidden_sizes[key], - gru_layers=policy_network_gru_layers[key], - task_mlp_size=policy_network_task_mlp_sizes[key], - message_in_mlp_size=policy_network_message_in_mlp_sizes[key], - message_out_mlp_size=policy_network_message_out_mlp_sizes[key], - output_mlp_size=policy_network_output_mlp_sizes[key], + snt.GRU(128), + snt.Sequential( + [ + networks.LayerNormMLP((128,), activate_final=True), + networks.NearZeroInitializedLinear(num_dimensions), + networks.TanhToSpec(specs[key].actions), + ] + ), + snt.Sequential( + [ + networks.LayerNormMLP((128, message_size), activate_final=True), + ] + ), + message_size=message_size, ) - observation_networks[key] = observation_network - policy_networks[key] = policy_network + # epsilon greedy action selector + action_selector = action_selector_fn + + q_networks[key] = q_network + action_selectors[key] = action_selector return { - "policies": policy_networks, - "observations": observation_networks, + "q_networks": q_networks, + "action_selectors": action_selectors, } def main(_: Any) -> None: # environment - environment_factory = lp_utils.partial_kwargs( + environment_factory = functools.partial( debugging_utils.make_environment, env_name=FLAGS.env_name, action_space=FLAGS.action_space, ) + # networks network_factory = lp_utils.partial_kwargs(make_networks) # Checkpointer appends "Checkpoints" to checkpoint_dir checkpoint_dir = f"{FLAGS.base_dir}/{FLAGS.mava_id}" - # loggers log_every = 10 logger_factory = functools.partial( logger_utils.make_logger, @@ -168,13 +153,23 @@ def main(_: Any) -> None: time_delta=log_every, ) + # distributed program program = dial.DIAL( environment_factory=environment_factory, network_factory=network_factory, logger_factory=logger_factory, - num_executors=5, - batch_size=1, + num_executors=2, + trainer_fn=RecurrentCommMADQNTrainer, + executor_fn=MADQNRecurrentCommExecutor, + exploration_scheduler_fn=LinearExplorationScheduler, + communication_module=BroadcastedCommunication, + sequence_length=6, + epsilon_min=0.05, + epsilon_decay=5e-4, + optimizer=snt.optimizers.Adam(learning_rate=1e-4), checkpoint_subpath=checkpoint_dir, + n_step=1, + batch_size=32, ).build() # launch diff --git a/mava/systems/tf/dial/builder.py b/mava/systems/tf/dial/builder.py index a54a619f6..6e4af83e4 100644 --- a/mava/systems/tf/dial/builder.py +++ b/mava/systems/tf/dial/builder.py @@ -1,110 +1,114 @@ +# python3 +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import dataclasses -from typing import Any, Dict, Iterator, List, Optional, Type # , Union +from typing import Any, Dict, Iterator, List, Optional, Type +import numpy as np import reverb import sonnet as snt -import tensorflow as tf +from acme import datasets from acme.tf import variable_utils -from acme.utils import counting, loggers +from acme.utils import counting from mava import adders, core, specs, types from mava.adders import reverb as reverb_adders -from mava.systems.builders import SystemBuilder +from mava.components.tf.modules.communication import BaseCommunicationModule +from mava.components.tf.modules.exploration.exploration_scheduling import ( + LinearExplorationScheduler, +) +from mava.components.tf.modules.stabilising import FingerPrintStabalisation from mava.systems.tf import executors -from mava.systems.tf.dial.execution import DIALExecutor -from mava.systems.tf.dial.training import DIALTrainer +from mava.systems.tf.dial import training +from mava.systems.tf.madqn import execution @dataclasses.dataclass class DIALConfig: - """Configuration options for the DIAL system + """Configuration options for the MADDPG system. Args: - environment_spec: description of the actions, observations, etc. - networks: the online Q network (the one being optimized) - batch_size: batch size for updates. - prefetch_size: size to prefetch from replay. - target_update_period: number of learner steps to perform before updating - the target networks. - samples_per_insert: number of samples to take from replay for every insert - that is made. - min_replay_size: minimum replay size before updating. This and all - following arguments are related to dataset construction and will be - ignored if a dataset argument is passed. - max_replay_size: maximum replay size. - importance_sampling_exponent: power to which importance weights are raised - before normalizing. - priority_exponent: exponent used in prioritized sampling. - n_step: number of steps to squash into a single transition. - epsilon: probability of taking a random action; ignored if a policy - network is given. - discount: discount to use for TD updates. - logger: logger object to be used by learner. - checkpoint: boolean indicating whether to checkpoint the learner. - checkpoint_subpath: directory for the checkpoint. - policy_networks: if given, this will be used as the policy network. - Otherwise, an epsilon greedy policy using the online Q network will be - created. Policy network is used in the actor to sample actions. - max_gradient_norm: used for gradient clipping. - replay_table_name: string indicating what name to give the replay table. - """ + environment_spec: description of the actions, observations, etc. + discount: discount to use for TD updates. + batch_size: batch size for updates. + prefetch_size: size to prefetch from replay. + target_update_period: number of learner steps to perform before updating + the target networks. + min_replay_size: minimum replay size before updating. + max_replay_size: maximum replay size. + samples_per_insert: number of samples to take from replay for every insert + that is made. + n_step: number of steps to squash into a single transition. + sigma: standard deviation of zero-mean, Gaussian exploration noise. + clipping: whether to clip gradients by global norm. + replay_table_name: string indicating what name to give the replay table.""" environment_spec: specs.MAEnvironmentSpec - # networks: Dict[str, snt.Module] - policy_optimizer: snt.Optimizer - shared_weights: bool = True - batch_size: int = 1 - prefetch_size: int = 4 - target_update_period: int = 100 - samples_per_insert: float = 32.0 - min_replay_size: int = 1 - max_replay_size: int = 1000000 - importance_sampling_exponent: float = 0.2 - priority_exponent: float = 0.6 - n_step: int = 1 - epsilon: Optional[tf.Tensor] = None - discount: float = 1.00 - logger: loggers.Logger = None - checkpoint: bool = True - checkpoint_subpath: str = "~/mava/" - # policy_networks: Optional[Dict[str, snt.Module]] = None - max_gradient_norm: Optional[float] = None + epsilon_min: float + epsilon_decay: float + shared_weights: bool + target_update_period: int + executor_variable_update_period: int + clipping: bool + min_replay_size: int + max_replay_size: int + samples_per_insert: Optional[float] + prefetch_size: int + batch_size: int + n_step: int + sequence_length: int + period: int + discount: float + checkpoint: bool + optimizer: snt.Optimizer replay_table_name: str = reverb_adders.DEFAULT_PRIORITY_TABLE - counter: counting.Counter = None - huber_loss_parameter: float = 1.0 - clipping: bool = False - # communication_module: BaseCommunicationModule = BroadcastedCommunication - sequence_length: int = 10 - period: int = 1 + checkpoint_subpath: str = "~/mava/" -class DIALBuilder(SystemBuilder): - """Builder for DIAL which constructs individual components of the system.""" +class DIALBuilder: + """Builder for MADQN which constructs individual components of the system.""" - """Defines an interface for defining the components of an MARL system. + """Defines an interface for defining the components of an RL system. Implementations of this interface contain a complete specification of a - concrete MARL system. An instance of this class can be used to build an - MARL system which interacts with the environment either locally or in a + concrete RL system. An instance of this class can be used to build an + RL system which interacts with the environment either locally or in a distributed setup. """ def __init__( self, config: DIALConfig, - executor_fn: Type[core.Executor] = DIALExecutor, + trainer_fn: Type[training.DIALTrainer] = training.DIALTrainer, + executor_fn: Type[core.Executor] = execution.MADQNRecurrentCommExecutor, extra_specs: Dict[str, Any] = {}, + exploration_scheduler_fn: Type[ + LinearExplorationScheduler + ] = LinearExplorationScheduler, + replay_stabilisation_fn: Optional[Type[FingerPrintStabalisation]] = None, ): """Args: - config: Configuration options for the DIAL system. - executor_fn: Executor function to use""" - + _config: Configuration options for the MADQN system. + _trainer_fn: Trainer module to use.""" self._config = config self._extra_specs = extra_specs - """ _agents: a list of the agent specs (ids). - _agent_types: a list of the types of agents to be used.""" self._agents = self._config.environment_spec.get_agent_ids() self._agent_types = self._config.environment_spec.get_agent_types() + self._trainer_fn = trainer_fn self._executor_fn = executor_fn + self._exploration_scheduler_fn = exploration_scheduler_fn + self._replay_stabiliser_fn = replay_stabilisation_fn def make_replay_tables( self, @@ -114,64 +118,97 @@ def make_replay_tables( # Select adder if issubclass(self._executor_fn, executors.FeedForwardExecutor): + # Check if we should use fingerprints + if self._replay_stabiliser_fn is not None: + self._extra_specs.update({"fingerprint": np.array([1.0, 1.0])}) adder_sig = reverb_adders.ParallelNStepTransitionAdder.signature( - environment_spec + environment_spec, self._extra_specs ) elif issubclass(self._executor_fn, executors.RecurrentExecutor): - - adder_sig = reverb_adders.ParallelEpisodeAdder.signature( + adder_sig = reverb_adders.ParallelSequenceAdder.signature( environment_spec, self._extra_specs ) + # adder_sig = reverb_adders.ParallelEpisodeAdder.signature( + # environment_spec, self._extra_specs + # ) else: raise NotImplementedError("Unknown executor type: ", self._executor_fn) - return [ - reverb.Table.queue( - name=self._config.replay_table_name, - max_size=self._config.max_replay_size, - signature=adder_sig, + if self._config.samples_per_insert is None: + # We will take a samples_per_insert ratio of None to mean that there is + # no limit, i.e. this only implies a min size limit. + limiter = reverb.rate_limiters.MinSize(self._config.min_replay_size) + + else: + # Create enough of an error buffer to give a 10% tolerance in rate. + samples_per_insert_tolerance = 0.1 * self._config.samples_per_insert + error_buffer = self._config.min_replay_size * samples_per_insert_tolerance + limiter = reverb.rate_limiters.SampleToInsertRatio( + min_size_to_sample=self._config.min_replay_size, + samples_per_insert=self._config.samples_per_insert, + error_buffer=error_buffer, ) - ] + + replay_table = reverb.Table( + name=self._config.replay_table_name, + sampler=reverb.selectors.Uniform(), + remover=reverb.selectors.Fifo(), + max_size=self._config.max_replay_size, + rate_limiter=limiter, + signature=adder_sig, + ) + + return [replay_table] def make_dataset_iterator( - self, - replay_client: reverb.Client, + self, replay_client: reverb.Client ) -> Iterator[reverb.ReplaySample]: - """Create a dataset iterator to use for learning/updating the system.""" - dataset = reverb.ReplayDataset.from_table_signature( - server_address=replay_client.server_address, + """Create a dataset iterator to use for learning/updating the system. + Args: + replay_client: Reverb Client which points to the replay server.""" + + sequence_length = ( + self._config.sequence_length + if issubclass(self._executor_fn, executors.RecurrentExecutor) + else None + ) + + dataset = datasets.make_reverb_dataset( table=self._config.replay_table_name, - max_in_flight_samples_per_worker=1, - # sequence_length=self._config.sequence_length, - emit_timesteps=False, + server_address=replay_client.server_address, + batch_size=self._config.batch_size, + prefetch_size=self._config.prefetch_size, + sequence_length=sequence_length, ) - dataset = dataset.batch(self._config.batch_size, drop_remainder=True) return iter(dataset) def make_adder( - self, - replay_client: reverb.Client, + self, replay_client: reverb.Client ) -> Optional[adders.ParallelAdder]: """Create an adder which records data generated by the executor/environment. Args: - replay_client: Reverb Client which points to the replay server. - """ + replay_client: Reverb Client which points to the replay server.""" # Select adder if issubclass(self._executor_fn, executors.FeedForwardExecutor): adder = reverb_adders.ParallelNStepTransitionAdder( - priority_fns=None, # {self._config.replay_table_name: lambda x: 1.0}, + priority_fns=None, client=replay_client, n_step=self._config.n_step, discount=self._config.discount, ) elif issubclass(self._executor_fn, executors.RecurrentExecutor): - adder = reverb_adders.ParallelEpisodeAdder( - priority_fns=None, # {self._config.replay_table_name: lambda x: 1.0}, + adder = reverb_adders.ParallelSequenceAdder( + priority_fns=None, client=replay_client, - max_sequence_length=self._config.sequence_length, - # period=self._config.period, + sequence_length=self._config.sequence_length, + period=self._config.period, ) + # adder = reverb_adders.ParallelEpisodeAdder( + # priority_fns=None, + # client=replay_client, + # max_sequence_length=self._config.sequence_length, + # ) else: raise NotImplementedError("Unknown executor type: ", self._executor_fn) @@ -179,98 +216,112 @@ def make_adder( def make_executor( self, - policy_networks: Dict[str, snt.Module], + q_networks: Dict[str, snt.Module], + action_selectors: Dict[str, Any], adder: Optional[adders.ParallelAdder] = None, variable_source: Optional[core.VariableSource] = None, + trainer: Optional[training.DIALTrainer] = None, + communication_module: Optional[BaseCommunicationModule] = None, + evaluator: bool = False, ) -> core.Executor: """Create an executor instance. Args: - policy_networks: A struct of instance of all the different policy networks; - this should be a callable - which takes as input observations and returns actions. - adder: How data is recorded (e.g. added to replay). - variable_source: A source providing the necessary executor parameters. + q_networks: A struct of instance of all + the different system q networks, + this should be a callable which takes as input observations + and returns actions. + adder: How data is recorded (e.g. added to replay). + variable_source: collection of (nested) numpy arrays. Contains + source variables as defined in mava.core. """ - shared_weights = self._config.shared_weights - policy_net: Dict[str, snt.Module] = policy_networks["policy_net"] - communication_module: str = policy_networks["communication_module"] + shared_weights = self._config.shared_weights variable_client = None if variable_source: agent_keys = self._agent_types if shared_weights else self._agents # Create policy variables - variables = {} - for agent in agent_keys: - variables[agent] = policy_net[agent].variables - + variables = {agent: q_networks[agent].variables for agent in agent_keys} # Get new policy variables variable_client = variable_utils.VariableClient( client=variable_source, - variables={"policy": variables}, - update_period=10, + variables={"q_network": variables}, + update_period=self._config.executor_variable_update_period, ) # Make sure not to use a random policy after checkpoint restoration by # assigning variables before running the environment loop. variable_client.update_and_wait() - # Create the actor which defines how we take actions. + # Check if we should use fingerprints + fingerprint = True if self._replay_stabiliser_fn is not None else False + + # Create the executor which coordinates the actors. return self._executor_fn( - policy_networks=policy_net, - communication_module=communication_module, + q_networks=q_networks, + action_selectors=action_selectors, shared_weights=shared_weights, variable_client=variable_client, - agent_specs=self._config.environment_spec.get_agent_specs(), adder=adder, + trainer=trainer, + communication_module=communication_module, + evaluator=evaluator, + fingerprint=fingerprint, ) def make_trainer( self, networks: Dict[str, Dict[str, snt.Module]], dataset: Iterator[reverb.ReplaySample], - replay_client: Optional[reverb.Client] = None, counter: Optional[counting.Counter] = None, logger: Optional[types.NestedLogger] = None, + communication_module: Optional[BaseCommunicationModule] = None, ) -> core.Trainer: """Creates an instance of the trainer. Args: networks: struct describing the networks needed by the trainer; this can be specific to the trainer in question. dataset: iterator over samples from replay. - replay_client: client which allows communication with replay, e.g. in - order to update priorities. counter: a Counter which allows for recording of counts (trainer steps, executor steps, etc.) distributed throughout the system. logger: Logger object for logging metadata. + checkpoint: bool controlling whether the trainer checkpoints itself. """ - agents = self._agents - agent_types = self._agent_types - shared_weights = self._config.shared_weights - clipping = self._config.clipping - discount = self._config.discount - target_update_period = self._config.target_update_period - max_gradient_norm = self._config.max_gradient_norm - importance_sampling_exponent = self._config.importance_sampling_exponent + q_networks = networks["values"] + target_q_networks = networks["target_values"] + + agents = self._config.environment_spec.get_agent_ids() + agent_types = self._config.environment_spec.get_agent_types() + + # Make epsilon scheduler + exploration_scheduler = self._exploration_scheduler_fn( + epsilon_min=self._config.epsilon_min, + epsilon_decay=self._config.epsilon_decay, + ) + + # Check if we should use fingerprints + fingerprint = True if self._replay_stabiliser_fn is not None else False # The learner updates the parameters (and initializes them). - trainer = DIALTrainer( + trainer = self._trainer_fn( agents=agents, agent_types=agent_types, - networks=networks, - shared_weights=shared_weights, - discount=discount, - importance_sampling_exponent=importance_sampling_exponent, - policy_optimizer=self._config.policy_optimizer, - target_update_period=target_update_period, + discount=self._config.discount, + q_networks=q_networks, + target_q_networks=target_q_networks, + shared_weights=self._config.shared_weights, + optimizer=self._config.optimizer, + target_update_period=self._config.target_update_period, + clipping=self._config.clipping, + exploration_scheduler=exploration_scheduler, + communication_module=communication_module, dataset=dataset, - huber_loss_parameter=self._config.huber_loss_parameter, - replay_client=replay_client, - clipping=clipping, counter=counter, + fingerprint=fingerprint, logger=logger, checkpoint=self._config.checkpoint, - max_gradient_norm=max_gradient_norm, + checkpoint_subpath=self._config.checkpoint_subpath, ) + return trainer diff --git a/mava/systems/tf/dial/execution.py b/mava/systems/tf/dial/execution.py index afd8750f0..6fc3971d7 100644 --- a/mava/systems/tf/dial/execution.py +++ b/mava/systems/tf/dial/execution.py @@ -22,90 +22,58 @@ # - multi-agent generic executors in mava: mava/systems/tf/executors.py """DIAL executor implementation.""" -from typing import Dict, Optional +from typing import Any, Dict, Optional import sonnet as snt -import tensorflow as tf -import tensorflow_probability as tfp -from acme import types -from acme.specs import EnvironmentSpec from acme.tf import variable_utils as tf2_variable_utils from mava import adders from mava.components.tf.modules.communication import BaseCommunicationModule -from mava.systems.tf.executors import RecurrentExecutorWithComms +from mava.systems.tf.madqn.execution import MADQNRecurrentCommExecutor +from mava.systems.tf.madqn.training import MADQNTrainer -tfd = tfp.distributions - -class DIALExecutor(RecurrentExecutorWithComms): - """DIAL implementation of a recurrent Executor.""" +class DIALExecutor(MADQNRecurrentCommExecutor): + """DIAL executor. + An executor based on a recurrent communicating policy for each agent in the system + which takes non-batched observations and outputs non-batched actions. + It also allows adding experiences to replay and updating the weights + from the policy on the learner. + """ def __init__( self, - policy_networks: Dict[str, snt.RNNCore], + q_networks: Dict[str, snt.Module], + action_selectors: Dict[str, snt.Module], communication_module: BaseCommunicationModule, - agent_specs: Dict[str, EnvironmentSpec], shared_weights: bool = True, adder: Optional[adders.ParallelAdder] = None, variable_client: Optional[tf2_variable_utils.VariableClient] = None, store_recurrent_state: bool = True, - is_eval: bool = False, - epsilon: float = 0.05, + trainer: MADQNTrainer = None, + fingerprint: bool = False, + evaluator: bool = False, ): """Initializes the executor. - TODO: Update docstring Args: - policy_networks: the (recurrent) policy to run for each agent in the system. + policy_network: the policy to run for each agent in the system. shared_weights: specify if weights are shared between agent networks. adder: the adder object to which allows to add experiences to a dataset/replay buffer. variable_client: object which allows to copy weights from the trainer copy of the policies to the executor copy (in case they are separate). - store_recurrent_state: Whether to pass the recurrent state to the adder. """ - # Store these for later use. - self._agent_specs = agent_specs - self._is_eval = is_eval - self._epsilon = epsilon - - super().__init__( - adder=adder, - variable_client=variable_client, - policy_networks=policy_networks, - store_recurrent_state=store_recurrent_state, - communication_module=communication_module, - shared_weights=shared_weights, - ) - def _sample_action( - self, action_policy: types.NestedTensor, agent: str - ) -> types.NestedTensor: - action = tf.argmax(action_policy, axis=1) - if tf.random.uniform([]) < self._epsilon and not self._is_eval: - action_spec = self._agent_specs[agent].actions - action = tf.random.uniform( - action_spec.shape, 0, action_spec.num_values, dtype=tf.dtypes.int64 - ) - - # Hard coded perfect policy: - # if observation[1].item()==5 and observation[0].item()==1: - # action = tf.constant([1], dtype=tf.dtypes.int64) - # else: - # tf.constant([0], dtype=tf.dtypes.int64) - - return action + # Store these for later use. + self._adder = adder + self._variable_client = variable_client + self._q_networks = q_networks + self._policy_networks = q_networks + self._communication_module = communication_module + self._action_selectors = action_selectors + self._store_recurrent_state = store_recurrent_state + self._trainer = trainer + self._shared_weights = shared_weights - def _process_message( - self, observation: types.NestedTensor, message_policy: types.NestedTensor - ) -> types.NestedTensor: - # Only one agent can message at each timestep - if observation[0] == 0: - message = tf.zeros_like(message_policy) - else: - message = ( - message_policy.sample() - if isinstance(message_policy, tfd.Distribution) - else message_policy - ) - return message + self._states: Dict[str, Any] = {} + self._messages: Dict[str, Any] = {} diff --git a/mava/systems/tf/dial/system.py b/mava/systems/tf/dial/system.py index 7990b2647..f6d5ef611 100644 --- a/mava/systems/tf/dial/system.py +++ b/mava/systems/tf/dial/system.py @@ -1,3 +1,4 @@ +# python3 # Copyright 2021 [...placeholder...]. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -12,7 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -"""DIAL system implementation.""" +"""Defines the MADQN system class.""" import functools from typing import Any, Callable, Dict, Optional, Type @@ -21,33 +22,59 @@ import launchpad as lp import reverb import sonnet as snt -import tensorflow as tf from acme import specs as acme_specs from acme.tf import utils as tf2_utils -from acme.utils import counting, loggers +from acme.utils import counting import mava from mava import core from mava import specs as mava_specs -from mava.adders import reverb as reverb_adders -from mava.components.tf.architectures import DecentralisedPolicyActor -from mava.components.tf.modules.communication import BroadcastedCommunication +from mava.components.tf.architectures import DecentralisedValueActor +from mava.components.tf.modules.communication import BaseCommunicationModule +from mava.components.tf.modules.exploration import LinearExplorationScheduler +from mava.components.tf.modules.stabilising import FingerPrintStabalisation from mava.environment_loop import ParallelEnvironmentLoop -from mava.systems import system +from mava.systems.tf import executors from mava.systems.tf import savers as tf2_savers -from mava.systems.tf.dial import builder -from mava.systems.tf.dial.execution import DIALExecutor +from mava.systems.tf.dial import builder, training +from mava.systems.tf.madqn import execution from mava.utils import lp_utils from mava.utils.loggers import MavaLogger, logger_utils from mava.wrappers import DetailedPerAgentStatistics -class DIAL(system.System): +class DIAL: """DIAL system. - This implements a single-process DIAL system. This is an actor-critic based - system that generates data via a behavior policy, inserts N-step transitions into - a replay buffer, and periodically updates the policies of each agent - (and as a result the behavior) by sampling uniformly from this buffer. + This implements a single-process QMIX system. + Args: + environment_factory: Callable to instantiate an environment on a compute node. + network_factory: Callable to instantiate system networks on a compute node. + logger_factory: Callable to instantiate a system logger on a compute node. + architecture: system architecture, e.g. decentralised or centralised. + trainer_fn: training type associated with executor and architecture, + e.g. centralised training. + executor_fn: executor type for example feedforward or recurrent. + num_executors: number of executor processes to run in parallel. + num_caches: number of trainer node caches. + environment_spec: description of the actions, observations, etc. + q_networks: the online Q network (the one being optimized) + epsilon: probability of taking a random action; ignored if a policy + network is given. + trainer_fn: the class used for training the agent and mixing networks. + shared_weights: boolean determining whether shared weights is used. + target_update_period: number of learner steps to perform before updating + the target networks. + clipping: whether to clip gradients by global norm. + replay_table_name: string indicating what name to give the replay table. + max_replay_size: maximum replay size. + samples_per_insert: number of samples to take from replay for every insert + that is made. + prefetch_size: size to prefetch from replay. + batch_size: batch size for updates. + n_step: number of steps to squash into a single transition. + discount: discount to use for TD updates. + counter: counter object used to keep track of steps. + checkpoint: boolean indicating whether to checkpoint the learner. """ def __init__( @@ -55,76 +82,46 @@ def __init__( environment_factory: Callable[[bool], dm_env.Environment], network_factory: Callable[[acme_specs.BoundedArray], Dict[str, snt.Module]], logger_factory: Callable[[str], MavaLogger] = None, - architecture: Type[DecentralisedPolicyActor] = DecentralisedPolicyActor, - executor_fn: Type[core.Executor] = DIALExecutor, + architecture: Type[DecentralisedValueActor] = DecentralisedValueActor, + trainer_fn: Type[training.DIALTrainer] = training.DIALTrainer, + communication_module: Type[BaseCommunicationModule] = None, + executor_fn: Type[core.Executor] = execution.MADQNFeedForwardExecutor, + exploration_scheduler_fn: Type[ + LinearExplorationScheduler + ] = LinearExplorationScheduler, + replay_stabilisation_fn: Optional[Type[FingerPrintStabalisation]] = None, + epsilon_min: float = 0.05, + epsilon_decay: float = 1e-4, num_executors: int = 1, num_caches: int = 0, environment_spec: mava_specs.MAEnvironmentSpec = None, shared_weights: bool = True, - discount: float = 0.99, batch_size: int = 256, prefetch_size: int = 4, - target_update_period: int = 100, - min_replay_size: int = 100, + min_replay_size: int = 1000, max_replay_size: int = 1000000, - samples_per_insert: float = 32.0, - # policy_optimizer: snt.Optimizer = snt.optimizers.RMSProp(5e-4, momentum=0.95), - policy_optimizer: snt.Optimizer = snt.optimizers.Adam(learning_rate=1e-4), + samples_per_insert: Optional[float] = 32.0, n_step: int = 5, sequence_length: int = 20, period: int = 20, - importance_sampling_exponent: float = 0.2, - priority_exponent: float = 0.6, - epsilon: Optional[tf.Tensor] = None, - counter: counting.Counter = None, + clipping: bool = True, + discount: float = 0.99, + optimizer: snt.Optimizer = snt.optimizers.Adam(learning_rate=1e-4), + target_update_period: int = 100, + executor_variable_update_period: int = 1000, max_executor_steps: int = None, - checkpoint: bool = False, + checkpoint: bool = True, checkpoint_subpath: str = "~/mava/", logger_config: Dict = {}, - max_gradient_norm: Optional[float] = None, - replay_table_name: str = reverb_adders.DEFAULT_PRIORITY_TABLE, - communication_module: Type[BroadcastedCommunication] = BroadcastedCommunication, + train_loop_fn: Callable = ParallelEnvironmentLoop, + eval_loop_fn: Callable = ParallelEnvironmentLoop, + train_loop_fn_kwargs: Dict = {}, + eval_loop_fn_kwargs: Dict = {}, ): - # TODO: Update args - """Initialize the system. - Args: - environment_factory: Callable to instantiate an environment - on a compute node. - network_factory: Callable to instantiate system networks on a compute node. - logger_factory: Callable to instantiate a system logger on a compute node. - architecture: system architecture, e.g. decentralised or centralised. - trainer_fn: training type associated with executor and architecture, - e.g. centralised training. - executor_fn: executor type for example feedforward or recurrent. - num_executors: number of executor processes to run in parallel. - num_caches: number of trainer node caches. - environment_spec: description of the actions, observations, etc. - shared_weights: set whether agents should share network weights. - batch_size: batch size for updates. - prefetch_size: size to prefetch from replay. - target_update_period: number of learner steps to perform before updating - the target networks. - samples_per_insert: number of samples to take from replay for every insert - that is made. - min_replay_size: minimum replay size before updating. This and all - following arguments are related to dataset construction and will be - ignored if a dataset argument is passed. - max_replay_size: maximum replay size. - importance_sampling_exponent: power to which importance weights are raised - before normalizing. - priority_exponent: exponent used in prioritized sampling. - n_step: number of steps to squash into a single transition. - epsilon: probability of taking a random action; ignored if a policy - network is given. - discount: discount to use for TD updates. - checkpoint: boolean indicating whether to checkpoint the learner. - checkpoint_subpath: directory for the checkpoint. - max_gradient_norm: used for gradient clipping. - replay_table_name: string indicating what name to give the replay table.""" if not environment_spec: environment_spec = mava_specs.MAEnvironmentSpec( - environment_factory(evaluation=False) # type: ignore + environment_factory(evaluation=False) # type:ignore ) # set default logger if no logger provided @@ -136,7 +133,7 @@ def __init__( time_delta=10, ) - self._architecture_fn = architecture + self._architecture = architecture self._communication_module_fn = communication_module self._environment_factory = environment_factory self._network_factory = network_factory @@ -149,60 +146,71 @@ def __init__( self._checkpoint_subpath = checkpoint_subpath self._checkpoint = checkpoint self._logger_config = logger_config + self._train_loop_fn = train_loop_fn + self._train_loop_fn_kwargs = train_loop_fn_kwargs + self._eval_loop_fn = eval_loop_fn + self._eval_loop_fn_kwargs = eval_loop_fn_kwargs - extra_specs = self._get_extra_specs() + if issubclass(executor_fn, executors.RecurrentExecutor): + extra_specs = self._get_extra_specs() + else: + extra_specs = {} self._builder = builder.DIALBuilder( builder.DIALConfig( environment_spec=environment_spec, + epsilon_min=epsilon_min, + epsilon_decay=epsilon_decay, shared_weights=shared_weights, + discount=discount, batch_size=batch_size, prefetch_size=prefetch_size, target_update_period=target_update_period, - samples_per_insert=samples_per_insert, + executor_variable_update_period=executor_variable_update_period, min_replay_size=min_replay_size, max_replay_size=max_replay_size, - importance_sampling_exponent=importance_sampling_exponent, - priority_exponent=priority_exponent, + samples_per_insert=samples_per_insert, n_step=n_step, - epsilon=epsilon, - discount=discount, - counter=counter, - checkpoint=checkpoint, - checkpoint_subpath=checkpoint_subpath, - max_gradient_norm=max_gradient_norm, - replay_table_name=replay_table_name, - policy_optimizer=policy_optimizer, sequence_length=sequence_length, period=period, + clipping=clipping, + checkpoint=checkpoint, + optimizer=optimizer, + checkpoint_subpath=checkpoint_subpath, ), + trainer_fn=trainer_fn, executor_fn=executor_fn, extra_specs=extra_specs, + exploration_scheduler_fn=exploration_scheduler_fn, + replay_stabilisation_fn=replay_stabilisation_fn, ) - # TODO (Kevin): create decentralised/centralised/networked actor architectures - # see mava/components/tf/architectures - - # TODO (Kevin): create differentiable communication module - # See mava/components/tf/modules/communication - def _get_extra_specs(self) -> Any: agents = self._environment_spec.get_agent_ids() + core_state_specs = {} + core_message_specs = {} + networks = self._network_factory( # type: ignore environment_spec=self._environment_spec ) - core_state_spec = {} for agent in agents: agent_type = agent.split("_")[0] - core_state_spec[agent] = { - "state": tf2_utils.squeeze_batch_dim( - networks["policies"][agent_type].initial_state(1) - ), - "message": tf2_utils.squeeze_batch_dim( - networks["policies"][agent_type].initial_message(1) + core_state_specs[agent] = ( + tf2_utils.squeeze_batch_dim( + networks["q_networks"][agent_type].initial_state(1) ), - } - extras = {"core_states": core_state_spec} + ) + if self._communication_module_fn is not None: + core_message_specs[agent] = ( + tf2_utils.squeeze_batch_dim( + networks["q_networks"][agent_type].initial_message(1) + ), + ) + + extras = { + "core_states": core_state_specs, + "core_messages": core_message_specs, + } return extras def replay(self) -> Any: @@ -217,6 +225,9 @@ def counter(self) -> Any: subdirectory="counter", ) + def coordinator(self, counter: counting.Counter) -> Any: + return lp_utils.StepsLimiter(counter, self._max_executor_steps) # type: ignore + def trainer( self, replay: reverb.Client, @@ -230,27 +241,33 @@ def trainer( ) # Create system architecture with target networks. - architecture = self._architecture_fn( + architecture = self._architecture( environment_spec=self._environment_spec, - observation_networks=networks["observations"], - policy_networks=networks["policies"], + value_networks=networks["q_networks"], shared_weights=self._shared_weights, ) - communication_module = self._communication_module_fn( - architecture=architecture, - shared=True, - channel_size=1, - channel_noise=0, - ) + if self._builder._replay_stabiliser_fn is not None: + architecture = self._builder._replay_stabiliser_fn( # type: ignore + architecture + ) - system_networks = communication_module.create_system() + communication_module = None + if self._communication_module_fn is not None: + communication_module = self._communication_module_fn( + architecture=architecture, + shared=True, + channel_size=1, + channel_noise=0, + ) + system_networks = communication_module.create_system() + else: + system_networks = architecture.create_system() # create logger trainer_logger_config = {} - if self._logger_config: - if "trainer" in self._logger_config: - trainer_logger_config = self._logger_config["trainer"] + if self._logger_config and "trainer" in self._logger_config: + trainer_logger_config = self._logger_config["trainer"] trainer_logger = self._logger_factory( # type: ignore "trainer", **trainer_logger_config ) @@ -258,12 +275,11 @@ def trainer( dataset = self._builder.make_dataset_iterator(replay) counter = counting.Counter(counter, "trainer") - system_networks["communication_module"] = {"all_agents": communication_module} - return self._builder.make_trainer( networks=system_networks, dataset=dataset, counter=counter, + communication_module=communication_module, logger=trainer_logger, ) @@ -273,6 +289,7 @@ def executor( replay: reverb.Client, variable_source: acme.VariableSource, counter: counting.Counter, + trainer: Optional[training.DIALTrainer] = None, ) -> mava.ParallelEnvironmentLoop: """The executor process.""" @@ -282,33 +299,37 @@ def executor( ) # Create system architecture with target networks. - architecture = self._architecture_fn( + architecture = self._architecture( environment_spec=self._environment_spec, - observation_networks=networks["observations"], - policy_networks=networks["policies"], + value_networks=networks["q_networks"], shared_weights=self._shared_weights, ) - communication_module = self._communication_module_fn( - architecture=architecture, - shared=True, - channel_size=1, - channel_noise=0, - ) - - _ = communication_module.create_system() + if self._builder._replay_stabiliser_fn is not None: + architecture = self._builder._replay_stabiliser_fn( # type: ignore + architecture + ) - # behaviour policy networks (obs net + policy head) - behaviour_policy_networks = communication_module.create_behaviour_policy() + communication_module = None + if self._communication_module_fn is not None: + communication_module = self._communication_module_fn( + architecture=architecture, + shared=True, + channel_size=1, + channel_noise=0, + ) + system_networks = communication_module.create_system() + else: + system_networks = architecture.create_system() # Create the executor. executor = self._builder.make_executor( - policy_networks={ - "policy_net": behaviour_policy_networks, - "communication_module": communication_module, - }, + q_networks=system_networks["values"], + action_selectors=networks["action_selectors"], + communication_module=communication_module, adder=self._builder.make_adder(replay), variable_source=variable_source, + trainer=trainer, ) # TODO (Arnu): figure out why factory function are giving type errors @@ -320,16 +341,19 @@ def executor( # Create executor logger executor_logger_config = {} - if self._logger_config: - if "executor" in self._logger_config: - executor_logger_config = self._logger_config["executor"] + if self._logger_config and "executor" in self._logger_config: + executor_logger_config = self._logger_config["executor"] exec_logger = self._logger_factory( # type: ignore f"executor_{executor_id}", **executor_logger_config ) # Create the loop to connect environment and executor. - train_loop = ParallelEnvironmentLoop( - environment, executor, counter=counter, logger=exec_logger + train_loop = self._train_loop_fn( + environment, + executor, + counter=counter, + logger=exec_logger, + **self._train_loop_fn_kwargs, ) train_loop = DetailedPerAgentStatistics(train_loop) @@ -340,7 +364,7 @@ def evaluator( self, variable_source: acme.VariableSource, counter: counting.Counter, - logger: loggers.Logger = None, + trainer: training.DIALTrainer, ) -> Any: """The evaluation process.""" @@ -350,32 +374,37 @@ def evaluator( ) # Create system architecture with target networks. - architecture = self._architecture_fn( + architecture = self._architecture( environment_spec=self._environment_spec, - observation_networks=networks["observations"], - policy_networks=networks["policies"], + value_networks=networks["q_networks"], shared_weights=self._shared_weights, ) - communication_module = self._communication_module_fn( - architecture=architecture, - shared=True, - channel_size=1, - channel_noise=0, - ) - - _ = communication_module.create_system() + if self._builder._replay_stabiliser_fn is not None: + architecture = self._builder._replay_stabiliser_fn( # type: ignore + architecture + ) - # behaviour policy networks (obs net + policy head) - behaviour_policy_networks = communication_module.create_behaviour_policy() + communication_module = None + if self._communication_module_fn is not None: + communication_module = self._communication_module_fn( + architecture=architecture, + shared=True, + channel_size=1, + channel_noise=0, + ) + system_networks = communication_module.create_system() + else: + system_networks = architecture.create_system() - # Create the executor. + # Create the agent. executor = self._builder.make_executor( - policy_networks={ - "policy_net": behaviour_policy_networks, - "communication_module": communication_module, - }, + q_networks=system_networks["values"], + action_selectors=networks["action_selectors"], variable_source=variable_source, + communication_module=communication_module, + trainer=trainer, + evaluator=True, ) # Make the environment. @@ -384,26 +413,26 @@ def evaluator( # Create logger and counter. counter = counting.Counter(counter, "evaluator") evaluator_logger_config = {} - if self._logger_config: - if "evaluator" in self._logger_config: - evaluator_logger_config = self._logger_config["evaluator"] + if self._logger_config and "evaluator" in self._logger_config: + evaluator_logger_config = self._logger_config["evaluator"] eval_logger = self._logger_factory( # type: ignore "evaluator", **evaluator_logger_config ) # Create the run loop and return it. # Create the loop to connect environment and executor. - eval_loop = ParallelEnvironmentLoop( - environment, executor, counter=counter, logger=eval_logger + eval_loop = self._eval_loop_fn( + environment, + executor, + counter=counter, + logger=eval_logger, + **self._eval_loop_fn_kwargs, ) eval_loop = DetailedPerAgentStatistics(eval_loop) return eval_loop - def coordinator(self, counter: counting.Counter) -> Any: - return lp_utils.StepsLimiter(counter, self._max_executor_steps) # type: ignore - - def build(self, name: str = "maddpg") -> Any: + def build(self, name: str = "madqn") -> Any: """Build the distributed system topology.""" program = lp.Program(name=name) @@ -421,7 +450,7 @@ def build(self, name: str = "maddpg") -> Any: trainer = program.add_node(lp.CourierNode(self.trainer, replay, counter)) with program.group("evaluator"): - program.add_node(lp.CourierNode(self.evaluator, trainer, counter)) + program.add_node(lp.CourierNode(self.evaluator, trainer, counter, trainer)) if not self._num_caches: # Use the trainer as a single variable source. @@ -443,7 +472,14 @@ def build(self, name: str = "maddpg") -> Any: for executor_id in range(self._num_exectors): source = sources[executor_id % len(sources)] program.add_node( - lp.CourierNode(self.executor, executor_id, replay, source, counter) + lp.CourierNode( + self.executor, + executor_id, + replay, + source, + counter, + trainer, + ) ) return program diff --git a/mava/systems/tf/dial/training.py b/mava/systems/tf/dial/training.py index 7c1558b33..2803a04d7 100644 --- a/mava/systems/tf/dial/training.py +++ b/mava/systems/tf/dial/training.py @@ -13,36 +13,25 @@ # See the License for the specific language governing permissions and # limitations under the License. -# TODO (Kevin): implement DIAL trainer -# Helper resources -# - single agent dqn learner in acme: -# https://github.com/deepmind/acme/blob/master/acme/agents/tf/dqn/learning.py -# - multi-agent ddpg trainer in mava: mava/systems/tf/maddpg/trainer.py -# - https://github.com/deepmind/acme/agents/tf/r2d2/learning.py """DIAL trainer implementation.""" -import os -import time -from typing import Any, Dict, List, Optional, Sequence -import numpy as np -import reverb +from typing import Dict, List + import sonnet as snt import tensorflow as tf -import tree -from acme.tf import utils as tf2_utils from acme.utils import counting, loggers -import mava - -# from mava.components.tf.modules.communication import BaseCommunicationModule -from mava.systems.tf import savers as tf2_savers -from mava.utils import training_utils as train_utils +from mava.components.tf.modules.communication import BaseCommunicationModule +from mava.components.tf.modules.exploration.exploration_scheduling import ( + LinearExplorationScheduler, +) +from mava.systems.tf.madqn.training import RecurrentCommMADQNTrainer -class DIALTrainer(mava.Trainer): - """DIAL trainer. - This is the trainer component of a DIAL system. IE it takes a dataset as input +class DIALTrainer(RecurrentCommMADQNTrainer): + """Recurrent Comm DIAL trainer. + This is the trainer component of a MADQN system. IE it takes a dataset as input and implements update functionality to learn from this dataset. """ @@ -50,377 +39,38 @@ def __init__( self, agents: List[str], agent_types: List[str], - networks: Dict[str, snt.Module], - discount: float, - huber_loss_parameter: float, + q_networks: Dict[str, snt.Module], + target_q_networks: Dict[str, snt.Module], target_update_period: int, dataset: tf.data.Dataset, - policy_optimizer: snt.Optimizer, - shared_weights: bool = True, - importance_sampling_exponent: float = None, - replay_client: Optional[reverb.Client] = None, + optimizer: snt.Optimizer, + discount: float, + shared_weights: bool, + exploration_scheduler: LinearExplorationScheduler, + communication_module: BaseCommunicationModule, clipping: bool = True, + fingerprint: bool = False, counter: counting.Counter = None, logger: loggers.Logger = None, checkpoint: bool = True, checkpoint_subpath: str = "~/mava/", - max_gradient_norm: Optional[float] = None, ): - """Initializes the learner. - Args: - policy_network: the online (optimized) policy. - target_policy_network: the target policy (which lags behind the online - policy). - discount: discount to use for TD updates. - target_update_period: number of learner steps to perform before updating - the target networks. - dataset: dataset to learn from, whether fixed or from a replay buffer - (see `acme.datasets.reverb.make_dataset` documentation). - observation_network: an optional online network to process observations - before the policy - target_observation_network: the target observation network. - policy_optimizer: the optimizer to be applied to the (policy) loss. - clipping: whether to clip gradients by global norm. - counter: counter object used to keep track of steps. - logger: logger object to be used by learner. - checkpoint: boolean indicating whether to checkpoint the learner. - """ - self._agents = agents - self._agent_types = agent_types - self._shared_weights = shared_weights - self._communication_module = networks["communication_module"]["all_agents"] - - # Store online and target networks. - self._policy_networks = networks["policies"] - self._target_policy_networks = networks["target_policies"] - - # self._observation_networks = observation_networks - self._observation_networks = { - k: tf2_utils.to_sonnet_module(v) - for k, v in networks["observations"].items() - } - - # General learner book-keeping and loggers. - self._counter = counter or counting.Counter() - self._logger = logger or loggers.make_default_logger("trainer") - - # Other learner parameters. - self._discount = discount - self._clipping = clipping - - # Necessary to track when to update target networks. - self._num_steps = tf.Variable(0, dtype=tf.int32) - self._target_update_period = target_update_period - - # Create an iterator to go through the dataset. - # TODO(b/155086959): Fix type stubs and remove. - self._iterator = iter(dataset) # pytype: disable=wrong-arg-types - - # Create optimizers if they aren't given. - self._policy_optimizer = policy_optimizer or snt.optimizers.Adam(1e-4) - - # Dictionary with network keys for each agent. - self.agent_net_keys = {agent: agent for agent in self._agents} - if self._shared_weights: - self.agent_net_keys = {agent: agent.split("_")[0] for agent in self._agents} - - self.unique_net_keys = self._agent_types if shared_weights else self._agents - - policy_networks_to_expose = {} - self._system_network_variables: Dict[str, Dict[str, snt.Module]] = { - "policy": {}, - } - for agent_key in self.unique_net_keys: - policy_network_to_expose = snt.Sequential( - [ - self._observation_networks[agent_key], - self._policy_networks[agent_key], - ] - ) - policy_networks_to_expose[agent_key] = policy_network_to_expose - self._system_network_variables["policy"][ - agent_key - ] = policy_network_to_expose.variables - - self._system_checkpointer = {} - if checkpoint: - for agent_key in self.unique_net_keys: - objects_to_save = { - "counter": self._counter, - "policy": self._policy_networks[agent_key], - "observation": self._observation_networks[agent_key], - "target_policy": self._target_policy_networks[agent_key], - "policy_optimizer": self._policy_optimizer, - "num_steps": self._num_steps, - } - - subdir = os.path.join("trainer", agent_key) - checkpointer = tf2_savers.Checkpointer( - time_delta_minutes=15, - directory=checkpoint_subpath, - objects_to_save=objects_to_save, - subdirectory=subdir, - ) - self._system_checkpointer[agent_key] = checkpointer - - self._timestamp: Optional[float] = None - - @tf.function - def _update_target_networks(self) -> None: - for key in self.unique_net_keys: - # Update target network. - online_variables = (*self._policy_networks[key].variables,) - target_variables = (*self._target_policy_networks[key].variables,) - - # Make online -> target network update ops. - if tf.math.mod(self._num_steps, self._target_update_period) == 0: - for src, dest in zip(online_variables, target_variables): - dest.assign(src) - self._num_steps.assign_add(1) - - def _step(self) -> Dict[str, Dict[str, Any]]: - # Update the target networks - self._update_target_networks() - - inputs = next(self._iterator) - - self._forward(inputs) - - self._backward() - - # Log losses per agent - return self.policy_losses - - # Forward pass that calculates loss. - def _forward(self, inputs: Any) -> None: - data = tree.map_structure( - lambda v: tf.expand_dims(v, axis=0) if len(v.shape) <= 1 else v, inputs.data - ) - data = tf2_utils.batch_to_sequence(data) - - observations, actions, rewards, discounts, _, extra = data - - core_states = extra["core_states"] - - self.bs = actions[self._agents[0]].shape[1] # Batch Size - T = actions[self._agents[0]].shape[0] # Episode Length - - with tf.GradientTape(persistent=True) as tape: - policy_losses = {agent_id: tf.zeros(self.bs) for agent_id in self._agents} - - # Unroll episode and store states, messages, action values - # for policy and target policy - policy = {} - target_policy = {} - - policy["messages"] = { - -1: { - agent_id: core_states[agent_id]["message"][0] - for agent_id in self._agents - } - } - policy["states"] = { - -1: { - agent_id: core_states[agent_id]["state"][0] - for agent_id in self._agents - } - } - policy["actions"] = {} - policy["channel"] = {} - - target_policy["messages"] = { - -1: { - agent_id: core_states[agent_id]["message"][0] - for agent_id in self._agents - } - } - target_policy["states"] = { - -1: { - agent_id: core_states[agent_id]["state"][0] - for agent_id in self._agents - } - } - target_policy["actions"] = {} - target_policy["channel"] = {} - - # For all time-steps - for t in range(0, T, 1): - policy["channel"][t - 1] = self._communication_module.process_messages( - policy["messages"][t - 1] - )[self._agents[0]] - target_policy["channel"][ - t - 1 - ] = self._communication_module.process_messages( - target_policy["messages"][t - 1] - )[ - self._agents[0] - ] - - policy["messages"][t] = {} - policy["states"][t] = {} - policy["actions"][t] = {} - - target_policy["messages"][t] = {} - target_policy["states"][t] = {} - target_policy["actions"][t] = {} - - # For each agent - for agent_id in self._agents: - agent_type = self.agent_net_keys[agent_id] - # Agent input at time t - obs_in = observations[agent_id].observation[t] - - # Policy - state_in = policy["states"][t - 1][agent_id] - message_in = policy["channel"][t - 1] - - (action, message), state = self._policy_networks[agent_type]( - obs_in, state_in, message_in - ) - - # Target policy - target_state_in = target_policy["states"][t - 1][agent_id] - target_message_in = target_policy["channel"][t - 1] - - ( - target_action, - target_message, - ), target_state = self._target_policy_networks[agent_type]( - obs_in, target_state_in, target_message_in - ) - - policy["messages"][t][agent_id] = message - policy["states"][t][agent_id] = state - policy["actions"][t][agent_id] = action - - target_policy["messages"][t][agent_id] = target_message - target_policy["states"][t][agent_id] = target_state - target_policy["actions"][t][agent_id] = target_action - - policy["channel"][t] = self._communication_module.process_messages( - policy["messages"][t] - )[self._agents[0]] - - target_policy["channel"][t] = self._communication_module.process_messages( - target_policy["messages"][t] - )[self._agents[0]] - - # Backtrack episode and calculate loss - # For t=T to 1, -1 do - for t in range(T - 1, 0, -1): - # For each agent a do - for agent_id in self._agents: - # agent_type = self.agent_net_keys[agent_id] - # All at timestep t - 1 - action = actions[agent_id][t - 1] - message = core_states[agent_id]["message"][t - 1] - reward = rewards[agent_id][t - 1] - terminal = t == T - 1 - - discount = tf.cast( - self._discount, dtype=discounts[agent_id][t, 0].dtype - ) - - # y_t_a = r_t - y_action = reward - y_message = reward - - # y_t_a = r_t + discount * max_u Q(t) - if not terminal: - y_action += discount * tf.reduce_max( - target_policy["actions"][t][agent_id] - ) - y_message += discount * tf.reduce_max( - target_policy["messages"][t][agent_id] - ) - - # d_Q_t_a = y_t_a - Q(t-1) - td_action = y_action - tf.gather( - policy["actions"][t - 1][agent_id], action, batch_dims=1 - ) - - # d_theta = d_theta + d_Q_t_a ^ 2 - policy_losses[agent_id] += td_action ** 2 - - # Communication grads for RIAL - # td_comm = y_message - tf.gather( - # policy["messages"][t - 1][agent_id], - # tf.argmax(message, axis=-1), - # batch_dims=1, - # ) - # policy_losses[agent_id] += td_comm ** 2 - - # Average over batches - for key in policy_losses.keys(): - policy_losses[key] = { - "policy_loss": tf.reduce_mean(policy_losses[key], axis=0) - } - - self.policy_losses: Dict[str, Dict[str, tf.Tensor]] = policy_losses - self.tape = tape - - def _backward(self) -> None: - - # TODO (dries): I still need to figure out the - # total_loss thing. Not per agent I see but per batch? - - # Calculate the gradients and update the networks - policy_losses = self.policy_losses - - tape = self.tape - for agent in self._agents: - agent_key = self.agent_net_keys[agent] - - # Get trainable variables. - # policy_variables = ( - # self._observation_networks[agent_key].trainable_variables - # + self._policy_networks[agent_key].trainable_variables - # ) - policy_variables = self._policy_networks[agent_key].trainable_variables - - # Compute gradients. - # Note: Warning "WARNING:tensorflow:Calling GradientTape.gradient - # on a persistent tape inside its context is significantly less efficient - # than calling it outside the context." caused by losses.dpg, which calls - # tape.gradient. - policy_gradients = tape.gradient(policy_losses[agent], policy_variables) - - # Maybe clip gradients. - if self._clipping: - policy_gradients = tf.clip_by_global_norm(policy_gradients, 40.0)[0] - - # Apply gradients. - self._policy_optimizer.apply(policy_gradients, policy_variables) - train_utils.safe_del(self, "tape") - - def step(self) -> None: - # Run the learning step. - fetches = self._step() - - # Compute elapsed time. - timestamp = time.time() - elapsed_time = timestamp - self._timestamp if self._timestamp else 0 - self._timestamp = timestamp - - # Update our counts and record it. - counts = self._counter.increment(steps=1, walltime=elapsed_time) - fetches.update(counts) - - # Checkpoint the networks. - if len(self._system_checkpointer.keys()) > 0: - for agent_key in self.unique_net_keys: - checkpointer = self._system_checkpointer[agent_key] - checkpointer.save() - - self._logger.write(fetches) - - def get_variables(self, names: Sequence[str]) -> Dict[str, Dict[str, np.ndarray]]: - variables: Dict[str, Dict[str, np.ndarray]] = {} - for network_type in names: - variables[network_type] = { - agent: tf2_utils.to_numpy( - self._system_network_variables[network_type][agent] - ) - for agent in self.unique_net_keys - } - return variables + super().__init__( + agents=agents, + agent_types=agent_types, + q_networks=q_networks, + target_q_networks=target_q_networks, + target_update_period=target_update_period, + dataset=dataset, + optimizer=optimizer, + discount=discount, + shared_weights=shared_weights, + exploration_scheduler=exploration_scheduler, + clipping=clipping, + fingerprint=fingerprint, + counter=counter, + logger=logger, + checkpoint=checkpoint, + checkpoint_subpath=checkpoint_subpath, + communication_module=communication_module, + ) \ No newline at end of file From ad37b1d66c179f237f63408518b4c20ab846ad4b Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Sat, 22 May 2021 17:40:19 +0200 Subject: [PATCH 029/188] fix mypy issues --- mava/utils/environments/starcraft2_utils.py | 20 +++---- mava/wrappers/__init__.py | 2 +- mava/wrappers/pettingzoo.py | 2 +- mava/wrappers/starcraft2.py | 63 +++++++++++---------- 4 files changed, 44 insertions(+), 43 deletions(-) diff --git a/mava/utils/environments/starcraft2_utils.py b/mava/utils/environments/starcraft2_utils.py index 5af3a9f2e..dddf84bca 100644 --- a/mava/utils/environments/starcraft2_utils.py +++ b/mava/utils/environments/starcraft2_utils.py @@ -15,31 +15,27 @@ """Starcraft 2 environment factory.""" -import importlib -from typing import Any, List, Optional, Union +from typing import Any, Optional import dm_env -import numpy as np - from smac.env import StarCraft2Env -from mava.wrappers import ParallelEnvWrapper, SMACEnvWrapper + +from mava.wrappers import SMACEnvWrapper def make_environment( evaluation: bool = False, - map_name="3m", + map_name: str = "3m", random_seed: Optional[int] = None, **kwargs: Any, ) -> dm_env.Environment: - """Wraps an Pettingzoo environment. + """Wraps an starcraft 2 environment. Args: - env_class: str, class of the environment, e.g. MPE or Atari. - env_name: str, name of environment, .e.g simple_spread or Pong. - evaluation: bool, to change the behaviour during evaluation. + map_name: str, name of micromanagement level. Returns: - A Pettingzoo environment wrapped as a DeepMind environment. + A starcraft 2 smac environment wrapped as a DeepMind environment. """ del evaluation @@ -51,4 +47,4 @@ def make_environment( if random_seed and hasattr(environment, "seed"): environment.seed(random_seed) - return environment \ No newline at end of file + return environment diff --git a/mava/wrappers/__init__.py b/mava/wrappers/__init__.py index 8a0859e72..538c70390 100644 --- a/mava/wrappers/__init__.py +++ b/mava/wrappers/__init__.py @@ -24,7 +24,7 @@ PettingZooAECEnvWrapper, PettingZooParallelEnvWrapper, ) -from mava.wrappers.starcraft import SMACEnvWrapper +from mava.wrappers.starcraft2 import SMACEnvWrapper from mava.wrappers.system_trainer_statistics import ( DetailedTrainerStatistics, DetailedTrainerStatisticsWithEpsilon, diff --git a/mava/wrappers/pettingzoo.py b/mava/wrappers/pettingzoo.py index 1c9a64164..1671fd3ea 100644 --- a/mava/wrappers/pettingzoo.py +++ b/mava/wrappers/pettingzoo.py @@ -218,7 +218,7 @@ def __init__( self._environment, env_preprocess_wrappers ) - def reset(self) -> Tuple[dm_env.TimeStep, np.array]: + def reset(self) -> dm_env.TimeStep: """Resets the episode.""" self._reset_next_step = False self._step_type = dm_env.StepType.FIRST diff --git a/mava/wrappers/starcraft2.py b/mava/wrappers/starcraft2.py index 2e86a3ee3..6314b36f0 100644 --- a/mava/wrappers/starcraft2.py +++ b/mava/wrappers/starcraft2.py @@ -17,8 +17,8 @@ # Documentation available at smac/blob/master/docs/smac.md """Wraps a StarCraft II MARL environment (SMAC) as a dm_env environment.""" -import random -from typing import Any, Dict, List, Optional, Tuple, Type + +from typing import Any, Dict, List, Tuple, Type import dm_env import numpy as np @@ -39,16 +39,16 @@ class SMACEnvWrapper(ParallelEnvWrapper): Based on RLlib wrapper provided by SMAC. """ - def __init__(self, **smac_args: Optional[Tuple]) -> None: + def __init__(self, environment: StarCraft2Env) -> None: """Create a new multi-agent StarCraft env compatible with RLlib. Arguments: smac_args (dict): Arguments to pass to the underlying smac.env.starcraft.StarCraft2Env instance. """ - self._environment = StarCraft2Env(**smac_args) + self._environment = environment self._reset_next_step = True - self._ready_agents: List = [] + self._agents: List = [] self.observation_space = Dict( { "observation": Box(-1, 1, shape=(self._env.get_obs_size(),)), @@ -71,32 +71,32 @@ def reset(self) -> Tuple[dm_env.TimeStep, np.array]: # Convert observations observe: Dict[str, np.ndarray] = {} - self.possible_agents = [] + self._possible_agents = [] for i, obs in enumerate(obs_list): agent = f"agent_{i}" observe[agent] = { - "action_mask": np.array(self._env.get_avail_agent_actions(i)), "observation": obs, + "action_mask": np.array(self._env.get_avail_agent_actions(i)), } - self.possible_agents.append(agent) + self._possible_agents.append(agent) observations = self._convert_observations( - observe, {agent: False for agent in self.possible_agents} + observe, {agent: False for agent in self._possible_agents} ) - self._ready_agents = list(range(len(obs_list))) + self._agents = list(range(len(obs_list))) # create discount spec discount_spec = self.discount_spec() self._discounts = { agent: convert_np_type(discount_spec[agent].dtype, 1) - for agent in self._environment.possible_agents + for agent in self._possible_agents } # create rewards spec rewards_spec = self.reward_spec() rewards = { agent: convert_np_type(rewards_spec[agent].dtype, 0) - for agent in self.possible_agents + for agent in self._possible_agents } # dm_env timestep @@ -133,28 +133,32 @@ def step(self, actions: Dict[str, np.ndarray]) -> Tuple[dm_env.TimeStep, np.arra # ) actions_feed = list(actions.values()) - reward, terminated, info = self._env.step(actions_feed) + reward, terminated, info = self._environment.step(actions_feed) obs_list = self._environment.get_obs() state = self._environment.get_state() self._env_done = terminated - observations = {} + observe = {} + rewards = {} + dones = {} for i, obs in enumerate(obs_list): - observations[f"agent_{i}"] = { - "action_mask": self._env.get_avail_agent_actions(i), + agent = f"agent_{i}" + observe[agent] = { "observation": obs, + "action_mask": np.array(self._env.get_avail_agent_actions(i)), } - rewards = {agent: reward for agent in actions.keys()} - dones = {agent: terminated for agent in actions.keys()} - - # self._ready_agents = list(range(len(obs_list))) + rewards[agent] = reward + dones[agent] = terminated + observations = self._convert_observations(observe, dones) + self._agents = list(range(len(obs_list))) rewards_spec = self.reward_spec() + # Handle empty rewards if not rewards: rewards = { agent: convert_np_type(rewards_spec[agent].dtype, 0) - for agent in self.possible_agents + for agent in self._possible_agents } else: rewards = { @@ -162,9 +166,6 @@ def step(self, actions: Dict[str, np.ndarray]) -> Tuple[dm_env.TimeStep, np.arra for agent, reward in rewards.items() } - if observations: - observations = self._convert_observations(observations, dones) - if self.env_done(): self._step_type = dm_env.StepType.LAST self._reset_next_step = True @@ -214,22 +215,22 @@ def observation_spec(self) -> types.Observation: legal_actions=_convert_to_spec(self.observation_space["action_mask"]), terminal=specs.Array((1,), np.float32), ) - for agent in self.possible_agents + for agent in self._possible_agents } def action_spec(self) -> Dict[str, specs.DiscreteArray]: return { agent: _convert_to_spec(self._environment.action_space) - for agent in self.possible_agents + for agent in self._possible_agents } def reward_spec(self) -> Dict[str, specs.Array]: - return {agent: specs.Array((), np.float32) for agent in self.possible_agents} + return {agent: specs.Array((), np.float32) for agent in self._possible_agents} def discount_spec(self) -> Dict[str, specs.BoundedArray]: return { agent: specs.BoundedArray((), np.float32, minimum=0, maximum=1.0) - for agent in self.possible_agents + for agent in self._possible_agents } def extra_spec(self) -> Dict[str, specs.BoundedArray]: @@ -237,7 +238,11 @@ def extra_spec(self) -> Dict[str, specs.BoundedArray]: @property def agents(self) -> List: - return self._environment.agents + return self._agents + + @property + def possible_agents(self) -> List: + return self._possible_agents @property def environment(self) -> ParallelEnv: From 47fed0abe2af9b03536e47609e884949933a7e4b Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Sat, 22 May 2021 17:42:56 +0200 Subject: [PATCH 030/188] change name of wrapper to smac --- mava/utils/environments/{starcraft2_utils.py => smac_utils.py} | 0 mava/wrappers/__init__.py | 2 +- mava/wrappers/{starcraft2.py => smac.py} | 0 3 files changed, 1 insertion(+), 1 deletion(-) rename mava/utils/environments/{starcraft2_utils.py => smac_utils.py} (100%) rename mava/wrappers/{starcraft2.py => smac.py} (100%) diff --git a/mava/utils/environments/starcraft2_utils.py b/mava/utils/environments/smac_utils.py similarity index 100% rename from mava/utils/environments/starcraft2_utils.py rename to mava/utils/environments/smac_utils.py diff --git a/mava/wrappers/__init__.py b/mava/wrappers/__init__.py index 538c70390..b0f47b4b8 100644 --- a/mava/wrappers/__init__.py +++ b/mava/wrappers/__init__.py @@ -24,7 +24,7 @@ PettingZooAECEnvWrapper, PettingZooParallelEnvWrapper, ) -from mava.wrappers.starcraft2 import SMACEnvWrapper +from mava.wrappers.smac import SMACEnvWrapper from mava.wrappers.system_trainer_statistics import ( DetailedTrainerStatistics, DetailedTrainerStatisticsWithEpsilon, diff --git a/mava/wrappers/starcraft2.py b/mava/wrappers/smac.py similarity index 100% rename from mava/wrappers/starcraft2.py rename to mava/wrappers/smac.py From 8bc92952438ee59d5ea5b776f608f376c42d68ff Mon Sep 17 00:00:00 2001 From: Kevin Eloff Date: Sat, 22 May 2021 17:43:25 +0200 Subject: [PATCH 031/188] feat: use dial executor --- examples/debugging_envs/run_recurrent_dial.py | 7 ++++--- mava/systems/tf/dial/builder.py | 13 +++++++------ mava/systems/tf/dial/system.py | 19 ++++++++++++------- mava/systems/tf/dial/training.py | 2 +- 4 files changed, 24 insertions(+), 17 deletions(-) diff --git a/examples/debugging_envs/run_recurrent_dial.py b/examples/debugging_envs/run_recurrent_dial.py index 57671b930..6c8e9dfca 100644 --- a/examples/debugging_envs/run_recurrent_dial.py +++ b/examples/debugging_envs/run_recurrent_dial.py @@ -35,7 +35,7 @@ epsilon_greedy_action_selector, ) from mava.systems.tf import dial -from mava.systems.tf.madqn.execution import MADQNRecurrentCommExecutor +from mava.systems.tf.dial.execution import DIALExecutor from mava.systems.tf.madqn.training import RecurrentCommMADQNTrainer from mava.utils import lp_utils from mava.utils.environments import debugging_utils @@ -160,13 +160,14 @@ def main(_: Any) -> None: logger_factory=logger_factory, num_executors=2, trainer_fn=RecurrentCommMADQNTrainer, - executor_fn=MADQNRecurrentCommExecutor, + executor_fn=DIALExecutor, exploration_scheduler_fn=LinearExplorationScheduler, communication_module=BroadcastedCommunication, sequence_length=6, epsilon_min=0.05, epsilon_decay=5e-4, - optimizer=snt.optimizers.Adam(learning_rate=1e-4), + # optimizer=snt.optimizers.Adam(learning_rate=1e-4), + optimizer=snt.optimizers.RMSProp(learning_rate=1e-4, momentum=0.95), checkpoint_subpath=checkpoint_dir, n_step=1, batch_size=32, diff --git a/mava/systems/tf/dial/builder.py b/mava/systems/tf/dial/builder.py index 6e4af83e4..6ecd93f77 100644 --- a/mava/systems/tf/dial/builder.py +++ b/mava/systems/tf/dial/builder.py @@ -31,8 +31,7 @@ ) from mava.components.tf.modules.stabilising import FingerPrintStabalisation from mava.systems.tf import executors -from mava.systems.tf.dial import training -from mava.systems.tf.madqn import execution +from mava.systems.tf.madqn import execution, training @dataclasses.dataclass @@ -89,7 +88,9 @@ class DIALBuilder: def __init__( self, config: DIALConfig, - trainer_fn: Type[training.DIALTrainer] = training.DIALTrainer, + trainer_fn: Type[ + training.RecurrentCommMADQNTrainer + ] = training.RecurrentCommMADQNTrainer, executor_fn: Type[core.Executor] = execution.MADQNRecurrentCommExecutor, extra_specs: Dict[str, Any] = {}, exploration_scheduler_fn: Type[ @@ -218,10 +219,10 @@ def make_executor( self, q_networks: Dict[str, snt.Module], action_selectors: Dict[str, Any], + communication_module: BaseCommunicationModule, adder: Optional[adders.ParallelAdder] = None, variable_source: Optional[core.VariableSource] = None, - trainer: Optional[training.DIALTrainer] = None, - communication_module: Optional[BaseCommunicationModule] = None, + trainer: Optional[training.RecurrentCommMADQNTrainer] = None, evaluator: bool = False, ) -> core.Executor: """Create an executor instance. @@ -274,9 +275,9 @@ def make_trainer( self, networks: Dict[str, Dict[str, snt.Module]], dataset: Iterator[reverb.ReplaySample], + communication_module: BaseCommunicationModule, counter: Optional[counting.Counter] = None, logger: Optional[types.NestedLogger] = None, - communication_module: Optional[BaseCommunicationModule] = None, ) -> core.Trainer: """Creates an instance of the trainer. Args: diff --git a/mava/systems/tf/dial/system.py b/mava/systems/tf/dial/system.py index f6d5ef611..a6bb1b60b 100644 --- a/mava/systems/tf/dial/system.py +++ b/mava/systems/tf/dial/system.py @@ -30,14 +30,17 @@ from mava import core from mava import specs as mava_specs from mava.components.tf.architectures import DecentralisedValueActor -from mava.components.tf.modules.communication import BaseCommunicationModule +from mava.components.tf.modules.communication import ( + BaseCommunicationModule, + BroadcastedCommunication, +) from mava.components.tf.modules.exploration import LinearExplorationScheduler from mava.components.tf.modules.stabilising import FingerPrintStabalisation from mava.environment_loop import ParallelEnvironmentLoop from mava.systems.tf import executors from mava.systems.tf import savers as tf2_savers -from mava.systems.tf.dial import builder, training -from mava.systems.tf.madqn import execution +from mava.systems.tf.dial import builder +from mava.systems.tf.madqn import execution, training from mava.utils import lp_utils from mava.utils.loggers import MavaLogger, logger_utils from mava.wrappers import DetailedPerAgentStatistics @@ -83,8 +86,10 @@ def __init__( network_factory: Callable[[acme_specs.BoundedArray], Dict[str, snt.Module]], logger_factory: Callable[[str], MavaLogger] = None, architecture: Type[DecentralisedValueActor] = DecentralisedValueActor, - trainer_fn: Type[training.DIALTrainer] = training.DIALTrainer, - communication_module: Type[BaseCommunicationModule] = None, + trainer_fn: Type[ + training.RecurrentCommMADQNTrainer + ] = training.RecurrentCommMADQNTrainer, + communication_module: Type[BaseCommunicationModule] = BroadcastedCommunication, executor_fn: Type[core.Executor] = execution.MADQNFeedForwardExecutor, exploration_scheduler_fn: Type[ LinearExplorationScheduler @@ -289,7 +294,7 @@ def executor( replay: reverb.Client, variable_source: acme.VariableSource, counter: counting.Counter, - trainer: Optional[training.DIALTrainer] = None, + trainer: Optional[training.RecurrentCommMADQNTrainer] = None, ) -> mava.ParallelEnvironmentLoop: """The executor process.""" @@ -364,7 +369,7 @@ def evaluator( self, variable_source: acme.VariableSource, counter: counting.Counter, - trainer: training.DIALTrainer, + trainer: training.RecurrentCommMADQNTrainer, ) -> Any: """The evaluation process.""" diff --git a/mava/systems/tf/dial/training.py b/mava/systems/tf/dial/training.py index 2803a04d7..982e0350b 100644 --- a/mava/systems/tf/dial/training.py +++ b/mava/systems/tf/dial/training.py @@ -73,4 +73,4 @@ def __init__( checkpoint=checkpoint, checkpoint_subpath=checkpoint_subpath, communication_module=communication_module, - ) \ No newline at end of file + ) From 2c7af20696b5b467996012a91d6673dec4f5d4de Mon Sep 17 00:00:00 2001 From: Kevin Eloff Date: Sat, 22 May 2021 17:51:33 +0200 Subject: [PATCH 032/188] feat: update env --- examples/debugging_envs/run_recurrent_dial.py | 4 ++-- mava/utils/debugging/environments/switch_game.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/debugging_envs/run_recurrent_dial.py b/examples/debugging_envs/run_recurrent_dial.py index 6c8e9dfca..1c205a1b0 100644 --- a/examples/debugging_envs/run_recurrent_dial.py +++ b/examples/debugging_envs/run_recurrent_dial.py @@ -36,7 +36,7 @@ ) from mava.systems.tf import dial from mava.systems.tf.dial.execution import DIALExecutor -from mava.systems.tf.madqn.training import RecurrentCommMADQNTrainer +from mava.systems.tf.dial.training import DIALTrainer from mava.utils import lp_utils from mava.utils.environments import debugging_utils from mava.utils.loggers import logger_utils @@ -159,7 +159,7 @@ def main(_: Any) -> None: network_factory=network_factory, logger_factory=logger_factory, num_executors=2, - trainer_fn=RecurrentCommMADQNTrainer, + trainer_fn=DIALTrainer, executor_fn=DIALExecutor, exploration_scheduler_fn=LinearExplorationScheduler, communication_module=BroadcastedCommunication, diff --git a/mava/utils/debugging/environments/switch_game.py b/mava/utils/debugging/environments/switch_game.py index 4931bad4f..21fc6845a 100644 --- a/mava/utils/debugging/environments/switch_game.py +++ b/mava/utils/debugging/environments/switch_game.py @@ -128,7 +128,7 @@ def _get_info(self, agent_id: str) -> Dict: # get observation for a particular agent def _get_obs(self, a_i: int, agent_id: str) -> np.array: selected = 1.0 if a_i == self.selected_agent else 0.0 - return np.array([selected, self.time], dtype=np.float32) + return np.array([selected, a_i], dtype=np.float32) # get dones for a particular agent # unused right now -- agents are allowed to go beyond the viewing screen From fb9157002bf9661de725129a438289f771ee2ab2 Mon Sep 17 00:00:00 2001 From: Kevin Eloff Date: Sat, 22 May 2021 18:16:56 +0200 Subject: [PATCH 033/188] feat: message masking --- examples/debugging_envs/run_recurrent_dial.py | 5 + mava/systems/tf/dial/execution.py | 28 ++++++ mava/systems/tf/dial/training.py | 97 ++++++++++++++++++- 3 files changed, 129 insertions(+), 1 deletion(-) diff --git a/examples/debugging_envs/run_recurrent_dial.py b/examples/debugging_envs/run_recurrent_dial.py index 1c205a1b0..e415bce53 100644 --- a/examples/debugging_envs/run_recurrent_dial.py +++ b/examples/debugging_envs/run_recurrent_dial.py @@ -37,6 +37,9 @@ from mava.systems.tf import dial from mava.systems.tf.dial.execution import DIALExecutor from mava.systems.tf.dial.training import DIALTrainer + +# from mava.systems.tf.madqn.execution import MADQNRecurrentCommExecutor +# from mava.systems.tf.madqn.training import RecurrentCommMADQNTrainer from mava.utils import lp_utils from mava.utils.environments import debugging_utils from mava.utils.loggers import logger_utils @@ -161,6 +164,8 @@ def main(_: Any) -> None: num_executors=2, trainer_fn=DIALTrainer, executor_fn=DIALExecutor, + # trainer_fn=RecurrentCommMADQNTrainer, + # executor_fn=MADQNRecurrentCommExecutor, exploration_scheduler_fn=LinearExplorationScheduler, communication_module=BroadcastedCommunication, sequence_length=6, diff --git a/mava/systems/tf/dial/execution.py b/mava/systems/tf/dial/execution.py index 6fc3971d7..ce68e973d 100644 --- a/mava/systems/tf/dial/execution.py +++ b/mava/systems/tf/dial/execution.py @@ -25,6 +25,8 @@ from typing import Any, Dict, Optional import sonnet as snt +import tensorflow as tf +from acme import types from acme.tf import variable_utils as tf2_variable_utils from mava import adders @@ -77,3 +79,29 @@ def __init__( self._states: Dict[str, Any] = {} self._messages: Dict[str, Any] = {} + + def _policy( + self, + agent: str, + observation: types.NestedTensor, + state: types.NestedTensor, + message: types.NestedTensor, + legal_actions: types.NestedTensor, + epsilon: tf.Tensor, + ) -> types.NestedTensor: + + (action, m_values), new_state = super()._policy( + agent, + observation, + state, + message, + legal_actions, + epsilon, + ) + + # Mask message if obs[0] == 1. + # Note: this is specific to switch env + if observation[0] == 0: + m_values = tf.zeros_like(m_values) + + return (action, m_values), new_state diff --git a/mava/systems/tf/dial/training.py b/mava/systems/tf/dial/training.py index 982e0350b..d8f29ae3d 100644 --- a/mava/systems/tf/dial/training.py +++ b/mava/systems/tf/dial/training.py @@ -16,10 +16,14 @@ """DIAL trainer implementation.""" -from typing import Dict, List +from typing import Any, Dict, List import sonnet as snt import tensorflow as tf +import tree +import trfl +from acme.tf import utils as tf2_utils +from acme.types import NestedArray from acme.utils import counting, loggers from mava.components.tf.modules.communication import BaseCommunicationModule @@ -74,3 +78,94 @@ def __init__( checkpoint_subpath=checkpoint_subpath, communication_module=communication_module, ) + + def _forward(self, inputs: Any) -> None: + data = tree.map_structure( + lambda v: tf.expand_dims(v, axis=0) if len(v.shape) <= 1 else v, inputs.data + ) + data = tf2_utils.batch_to_sequence(data) + + observations, actions, rewards, discounts, _, extra = data + + # core_states = extra["core_states"] + core_state = tree.map_structure( + lambda s: s[:, 0, :], inputs.data.extras["core_states"] + ) + core_message = tree.map_structure( + lambda s: s[:, 0, :], inputs.data.extras["core_messages"] + ) + + with tf.GradientTape(persistent=True) as tape: + q_network_losses: Dict[str, NestedArray] = { + agent: {"q_value_loss": tf.zeros(())} for agent in self._agents + } + + T = actions[self._agents[0]].shape[0] + + state = {agent: core_state[agent][0] for agent in self._agents} + target_state = {agent: core_state[agent][0] for agent in self._agents} + + message = {agent: core_message[agent][0] for agent in self._agents} + target_message = {agent: core_message[agent][0] for agent in self._agents} + + # _target_q_networks must be 1 step ahead + target_channel = self._communication_module.process_messages(target_message) + for agent in self._agents: + agent_key = self.agent_net_keys[agent] + (q_targ, m), s = self._target_q_networks[agent_key]( + observations[agent].observation[0], + target_state[agent], + target_channel[agent], + ) + target_state[agent] = s + target_message[agent] = m + + for t in range(1, T, 1): + channel = self._communication_module.process_messages(message) + target_channel = self._communication_module.process_messages( + target_message + ) + + for agent in self._agents: + agent_key = self.agent_net_keys[agent] + + # Cast the additional discount + # to match the environment discount dtype. + + discount = tf.cast(self._discount, dtype=discounts[agent][0].dtype) + + (q_targ, m), s = self._target_q_networks[agent_key]( + observations[agent].observation[t], + target_state[agent], + target_channel[agent], + ) + print(m.shape) + target_state[agent] = s + target_message[agent] = tf.math.multiply( + m, observations[agent].observation[t][:, :1] + ) + + (q, m), s = self._q_networks[agent_key]( + observations[agent].observation[t - 1], + state[agent], + channel[agent], + ) + print("m2 ", m.shape) + state[agent] = s + message[agent] = tf.math.multiply( + m, observations[agent].observation[t - 1][:, :1] + ) + + loss, _ = trfl.qlearning( + q, + actions[agent][t - 1], + rewards[agent][t - 1], + discount * discounts[agent][t], + q_targ, + ) + + loss = tf.reduce_mean(loss) + q_network_losses[agent]["q_value_loss"] += loss + + self._q_network_losses = q_network_losses + self.tape = tape From 6cb2edec9ce0a52e2dfabe5638cb83d54b6a7cb6 Mon Sep 17 00:00:00 2001 From: Dries Date: Sat, 22 May 2021 19:13:33 +0200 Subject: [PATCH 034/188] fix: mypy. --- mava/environment_loop.py | 3 ++- mava/systems/system.py | 4 ++-- mava/systems/tf/mad4pg/__init__.py | 6 ++++-- mava/systems/tf/mad4pg/execution.py | 10 +++++++++- mava/systems/tf/mad4pg/system.py | 2 +- mava/systems/tf/maddpg/__init__.py | 7 ++++--- mava/systems/tf/maddpg/execution.py | 25 ++++++++++++++----------- mava/systems/tf/maddpg/system.py | 3 ++- 8 files changed, 38 insertions(+), 22 deletions(-) diff --git a/mava/environment_loop.py b/mava/environment_loop.py index 3e9e7e755..6599abef5 100644 --- a/mava/environment_loop.py +++ b/mava/environment_loop.py @@ -282,7 +282,8 @@ def run_episode(self) -> loggers.LoggingData: actions = self._get_actions(timestep) if type(actions) == tuple: - # Return other extra action information like the policy information as well + # Return other action information + # e.g. the policy information. env_actions, _ = actions else: env_actions = actions diff --git a/mava/systems/system.py b/mava/systems/system.py index 769295d81..58ca13b2a 100644 --- a/mava/systems/system.py +++ b/mava/systems/system.py @@ -15,7 +15,7 @@ """The base system interface.""" -from typing import Dict, Sequence, Union +from typing import Any, Dict, Sequence, Tuple, Union import dm_env from acme import types @@ -77,7 +77,7 @@ def select_action( def select_actions( self, observations: Dict[str, types.NestedArray] - ) -> Dict[str, types.NestedArray]: + ) -> Union[Dict[str, Any], Tuple[Dict[str, Any], Dict[str, Any]]]: return self._executor.select_actions(observations) def observe_first( diff --git a/mava/systems/tf/mad4pg/__init__.py b/mava/systems/tf/mad4pg/__init__.py index 5b3235d5f..ab020dea6 100644 --- a/mava/systems/tf/mad4pg/__init__.py +++ b/mava/systems/tf/mad4pg/__init__.py @@ -14,6 +14,10 @@ # limitations under the License. """Implementations of a MAD4PG agent.""" +from mava.systems.tf.mad4pg.execution import ( + MAD4PGFeedForwardExecutor, + MAD4PGRecurrentExecutor, +) from mava.systems.tf.mad4pg.system import MAD4PG from mava.systems.tf.mad4pg.training import ( BaseMAD4PGTrainer, @@ -21,5 +25,3 @@ DecentralisedMAD4PGTrainer, StateBasedMAD4PGTrainer, ) -from mava.systems.tf.mad4pg.execution import (MAD4PGFeedForwardExecutor, - MAD4PGRecurrentExecutor) diff --git a/mava/systems/tf/mad4pg/execution.py b/mava/systems/tf/mad4pg/execution.py index 30d4700eb..72f27a6b0 100644 --- a/mava/systems/tf/mad4pg/execution.py +++ b/mava/systems/tf/mad4pg/execution.py @@ -16,10 +16,14 @@ from typing import Dict, Optional import sonnet as snt +from acme.specs import EnvironmentSpec from acme.tf import variable_utils as tf2_variable_utils from mava import adders -from mava.systems.tf.maddpg.execution import MADDPGFeedForwardExecutor, MADDPGRecurrentExecutor +from mava.systems.tf.maddpg.execution import ( + MADDPGFeedForwardExecutor, + MADDPGRecurrentExecutor, +) class MAD4PGFeedForwardExecutor(MADDPGFeedForwardExecutor): @@ -33,16 +37,20 @@ class MAD4PGFeedForwardExecutor(MADDPGFeedForwardExecutor): def __init__( self, policy_networks: Dict[str, snt.Module], + agent_specs: Dict[str, EnvironmentSpec], adder: Optional[adders.ParallelAdder] = None, variable_client: Optional[tf2_variable_utils.VariableClient] = None, shared_weights: bool = True, ): super().__init__( policy_networks=policy_networks, + agent_specs=agent_specs, adder=adder, variable_client=variable_client, shared_weights=shared_weights, ) + + class MAD4PGRecurrentExecutor(MADDPGRecurrentExecutor): """A recurrent executor for MAD4PG. An executor based on a recurrent policy for each agent in the system diff --git a/mava/systems/tf/mad4pg/system.py b/mava/systems/tf/mad4pg/system.py index f89a09668..60a3c65d8 100644 --- a/mava/systems/tf/mad4pg/system.py +++ b/mava/systems/tf/mad4pg/system.py @@ -24,8 +24,8 @@ from mava import specs as mava_specs from mava.components.tf.architectures import DecentralisedQValueActorCritic from mava.environment_loop import ParallelEnvironmentLoop -from mava.systems.tf.maddpg.execution import MADDPGFeedForwardExecutor from mava.systems.tf.mad4pg import training +from mava.systems.tf.maddpg.execution import MADDPGFeedForwardExecutor from mava.systems.tf.maddpg.system import MADDPG from mava.utils.loggers import MavaLogger diff --git a/mava/systems/tf/maddpg/__init__.py b/mava/systems/tf/maddpg/__init__.py index bdb6dd1eb..c6d952f6c 100644 --- a/mava/systems/tf/maddpg/__init__.py +++ b/mava/systems/tf/maddpg/__init__.py @@ -15,6 +15,10 @@ """Implementations of a MADDPG agent.""" +from mava.systems.tf.mad4pg.execution import ( + MADDPGFeedForwardExecutor, + MADDPGRecurrentExecutor, +) from mava.systems.tf.maddpg.system import MADDPG from mava.systems.tf.maddpg.training import ( BaseMADDPGTrainer, @@ -23,6 +27,3 @@ NetworkedMADDPGTrainer, StateBasedMADDPGTrainer, ) - -from mava.systems.tf.mad4pg.execution import (MADDPGFeedForwardExecutor, - MADDPGRecurrentExecutor) diff --git a/mava/systems/tf/maddpg/execution.py b/mava/systems/tf/maddpg/execution.py index 6ac12e005..d3e1f015f 100644 --- a/mava/systems/tf/maddpg/execution.py +++ b/mava/systems/tf/maddpg/execution.py @@ -20,18 +20,20 @@ import tensorflow as tf import tensorflow_probability as tfp from acme import types -from dm_env import specs -Array = specs.Array -BoundedArray = specs.BoundedArray -DiscreteArray = specs.DiscreteArray +from acme.specs import EnvironmentSpec # Internal imports. from acme.tf import utils as tf2_utils from acme.tf import variable_utils as tf2_variable_utils +from dm_env import specs from mava import adders from mava.systems.tf import executors -from acme.specs import EnvironmentSpec + +Array = specs.Array +BoundedArray = specs.BoundedArray +DiscreteArray = specs.DiscreteArray + tfd = tfp.distributions @@ -141,12 +143,13 @@ def observe( # TODO (dries): Sort out this mypy issue. self._adder.add(policy, next_timestep, next_extras) # type: ignore + class MADDPGRecurrentExecutor(executors.FeedForwardExecutor): def __init__( - self, - policy_networks: Dict[str, snt.Module], - adder: Optional[adders.ParallelAdder] = None, - variable_client: Optional[tf2_variable_utils.VariableClient] = None, - shared_weights: bool = True, + self, + policy_networks: Dict[str, snt.Module], + adder: Optional[adders.ParallelAdder] = None, + variable_client: Optional[tf2_variable_utils.VariableClient] = None, + shared_weights: bool = True, ): - raise NotImplementedError \ No newline at end of file + raise NotImplementedError diff --git a/mava/systems/tf/maddpg/system.py b/mava/systems/tf/maddpg/system.py index 19a4b6498..e41ac062e 100644 --- a/mava/systems/tf/maddpg/system.py +++ b/mava/systems/tf/maddpg/system.py @@ -32,13 +32,14 @@ from mava.components.tf.architectures import DecentralisedQValueActorCritic from mava.environment_loop import ParallelEnvironmentLoop from mava.systems.tf import executors -from mava.systems.tf.maddpg.execution import MADDPGFeedForwardExecutor from mava.systems.tf import savers as tf2_savers from mava.systems.tf.maddpg import builder, training +from mava.systems.tf.maddpg.execution import MADDPGFeedForwardExecutor from mava.utils import lp_utils from mava.utils.loggers import MavaLogger, logger_utils from mava.wrappers import DetailedPerAgentStatistics + class MADDPG: """MADDPG system. This implements a single-process DDPG system. This is an actor-critic based From 2b3e1c43cb719fadc5d90d1c180050dc72671d33 Mon Sep 17 00:00:00 2001 From: Dries Date: Sun, 23 May 2021 08:32:49 +0200 Subject: [PATCH 035/188] fix: Implement recurrent discrete/continuous MA-DDPG and MA-D4PG. --- mava/systems/tf/executors.py | 63 ++++--------- mava/systems/tf/mad4pg/execution.py | 2 + mava/systems/tf/maddpg/__init__.py | 2 +- mava/systems/tf/maddpg/execution.py | 140 ++++++++++++++++++++++++---- 4 files changed, 141 insertions(+), 66 deletions(-) diff --git a/mava/systems/tf/executors.py b/mava/systems/tf/executors.py index a6da36015..49b59ae1f 100644 --- a/mava/systems/tf/executors.py +++ b/mava/systems/tf/executors.py @@ -43,10 +43,10 @@ def __init__( """ # Store these for later use. + self._shared_weights = shared_weights + self._policy_networks = policy_networks self._adder = adder self._variable_client = variable_client - self._policy_networks = policy_networks - self._shared_weights = shared_weights @tf.function def _policy( @@ -146,12 +146,11 @@ def __init__( store_recurrent_state: Whether to pass the recurrent state to the adder. """ # Store these for later use. + self._policy_networks = policy_networks + self._shared_weights = shared_weights self._adder = adder self._variable_client = variable_client - self._policy_networks = policy_networks self._store_recurrent_state = store_recurrent_state - self._shared_weights = shared_weights - self._states: Dict[str, Any] = {} @tf.function @@ -160,7 +159,10 @@ def _policy( agent: str, observation: types.NestedTensor, state: types.NestedTensor, - ) -> Tuple[types.NestedTensor, types.NestedTensor]: + ) -> Union[ + Tuple[types.NestedTensor, types.NestedTensor], + Tuple[types.NestedTensor, types.NestedTensor, types.NestedTensor], + ]: # Add a dummy batch dimension and as a side effect convert numpy to TF. batched_observation = tf2_utils.add_batch_dim(observation) @@ -176,9 +178,9 @@ def _policy( return action, new_state - # def _update_state(self, agent: str, new_state: types.NestedArray) -> None: - # self._prev_states[agent] = self._states[agent] - # self._states[agent] = new_state + def _update_state(self, agent: str, new_state: types.NestedArray) -> None: + # Bookkeeping of recurrent states for the observe method. + self._states[agent] = new_state def select_action( self, agent: str, observation: types.NestedArray @@ -209,7 +211,6 @@ def observe_first( timestep: dm_env.TimeStep, extras: Optional[Dict[str, types.NestedArray]] = {}, ) -> None: - # Re-initialize the RNN state. for agent, _ in timestep.observation.items(): # index network either on agent type or on agent id @@ -256,24 +257,14 @@ def observe( def select_actions( self, observations: Dict[str, types.NestedArray] - ) -> Dict[str, types.NestedArray]: + ) -> Union[ + Dict[str, types.NestedArray], + Tuple[Dict[str, types.NestedArray], Dict[str, types.NestedArray]], + ]: actions = {} for agent, observation in observations.items(): - # Step the recurrent policy forward given the current observation and state. - policy_output, new_state = self._policy( - agent, observation.observation, self._states[agent] - ) - - # Bookkeeping of recurrent states for the observe method. - self._states[agent] = new_state - # self._update_state(agent, new_state) - - # TODO Mask actions here using observation.legal_actions - # What happens in discrete vs cont case - actions[agent] = tf2_utils.to_numpy_squeeze(policy_output) - - # Return a numpy array with squeezed out batch dimension. + actions[agent] = self.select_action(agent=agent, observation=observation) return actions def update(self, wait: bool = False) -> None: @@ -446,27 +437,7 @@ def select_actions( self, observations: Dict[str, types.NestedArray] ) -> Dict[str, types.NestedArray]: actions = {} - - message_inputs = self._communication_module.process_messages(self._messages) - for agent, observation in observations.items(): - - # Step the recurrent policy forward given the current observation and state. - policy_output, message, new_state = self._policy( - agent, - observation.observation, - self._states[agent], - message_inputs[agent], - ) - - # Bookkeeping of recurrent states for the observe method. - self._states[agent] = new_state - - self._messages[agent] = message - - # TODO Mask actions here using observation.legal_actions - # What happens in discrete vs cont case - actions[agent] = tf2_utils.to_numpy_squeeze(policy_output) - + actions[agent] = self._select_action(agent, observations) # Return a numpy array with squeezed out batch dimension. return actions diff --git a/mava/systems/tf/mad4pg/execution.py b/mava/systems/tf/mad4pg/execution.py index 72f27a6b0..8819618c5 100644 --- a/mava/systems/tf/mad4pg/execution.py +++ b/mava/systems/tf/mad4pg/execution.py @@ -62,12 +62,14 @@ class MAD4PGRecurrentExecutor(MADDPGRecurrentExecutor): def __init__( self, policy_networks: Dict[str, snt.Module], + agent_specs: Dict[str, EnvironmentSpec], adder: Optional[adders.ParallelAdder] = None, variable_client: Optional[tf2_variable_utils.VariableClient] = None, shared_weights: bool = True, ): super().__init__( policy_networks=policy_networks, + agent_specs=agent_specs, adder=adder, variable_client=variable_client, shared_weights=shared_weights, diff --git a/mava/systems/tf/maddpg/__init__.py b/mava/systems/tf/maddpg/__init__.py index c6d952f6c..50841f280 100644 --- a/mava/systems/tf/maddpg/__init__.py +++ b/mava/systems/tf/maddpg/__init__.py @@ -15,7 +15,7 @@ """Implementations of a MADDPG agent.""" -from mava.systems.tf.mad4pg.execution import ( +from mava.systems.tf.maddpg.execution import ( MADDPGFeedForwardExecutor, MADDPGRecurrentExecutor, ) diff --git a/mava/systems/tf/maddpg/execution.py b/mava/systems/tf/maddpg/execution.py index d3e1f015f..8c70b408a 100644 --- a/mava/systems/tf/maddpg/execution.py +++ b/mava/systems/tf/maddpg/execution.py @@ -65,11 +65,13 @@ def __init__( """ # Store these for later use. - self._adder = adder - self._variable_client = variable_client - self._policy_networks = policy_networks self._agent_specs = agent_specs - self._shared_weights = shared_weights + super().__init__( + policy_networks=policy_networks, + shared_weights=shared_weights, + adder=adder, + variable_client=variable_client, + ) @tf.function def _policy( @@ -116,20 +118,9 @@ def select_actions( actions = {} policies = {} for agent, observation in observations.items(): - action, policy = self.select_action(agent, observation) - actions[agent] = action - policies[agent] = policy + actions[agent], policies[agent] = self.select_action(agent, observation) return actions, policies - def observe_first( - self, - timestep: dm_env.TimeStep, - extras: Dict[str, types.NestedArray] = {}, - ) -> None: - - if self._adder: - self._adder.add_first(timestep, extras) - def observe( self, actions: Union[ @@ -139,17 +130,128 @@ def observe( next_extras: Dict[str, types.NestedArray] = {}, ) -> None: if self._adder: - env_actions, policy = actions + _, policy = actions # TODO (dries): Sort out this mypy issue. self._adder.add(policy, next_timestep, next_extras) # type: ignore -class MADDPGRecurrentExecutor(executors.FeedForwardExecutor): +class MADDPGRecurrentExecutor(executors.RecurrentExecutor): def __init__( self, policy_networks: Dict[str, snt.Module], + agent_specs: Dict[str, EnvironmentSpec], adder: Optional[adders.ParallelAdder] = None, variable_client: Optional[tf2_variable_utils.VariableClient] = None, shared_weights: bool = True, + store_recurrent_state: bool = True, ): - raise NotImplementedError + + """Initializes the executor. + Args: + networks: the (recurrent) policy to run for each agent in the system. + shared_weights: specify if weights are shared between agent networks. + adder: the adder object to which allows to add experiences to a + dataset/replay buffer. + variable_client: object which allows to copy weights from the trainer copy + of the policies to the executor copy (in case they are separate). + """ + + # Store these for later use. + self._agent_specs = agent_specs + + super().__init__( + policy_networks=policy_networks, + shared_weights=shared_weights, + adder=adder, + variable_client=variable_client, + store_recurrent_state=store_recurrent_state, + ) + + @tf.function + def _policy( + self, + agent: str, + observation: types.NestedTensor, + state: types.NestedTensor, + ) -> Tuple[types.NestedTensor, types.NestedTensor, types.NestedTensor]: + + # Add a dummy batch dimension and as a side effect convert numpy to TF. + batched_observation = tf2_utils.add_batch_dim(observation) + + # index network either on agent type or on agent id + agent_key = agent.split("_")[0] if self._shared_weights else agent + + # Compute the policy, conditioned on the observation. + policy, new_state = self._policy_networks[agent_key](batched_observation, state) + + # TODO (dries): Make this support hybrid action spaces. + if type(self._agent_specs[agent].actions) == BoundedArray: + # Continuous action + action = policy + elif type(self._agent_specs[agent].actions) == DiscreteArray: + action = tf.math.argmax(policy, axis=1) + else: + raise NotImplementedError + + return action, policy, new_state + + def select_action( + self, agent: str, observation: types.NestedArray + ) -> types.NestedArray: + + # TODO Mask actions here using observation.legal_actions + # Initialize the RNN state if necessary. + if self._states[agent] is None: + # index network either on agent type or on agent id + agent_key = agent.split("_")[0] if self._shared_weights else agent + self._states[agent] = self._policy_networks[agent_key].initia_state(1) + + # Step the recurrent policy forward given the current observation and state. + action, policy, new_state = self._policy( + agent, observation.observation, self._states[agent] + ) + + # Bookkeeping of recurrent states for the observe method. + self._update_state(agent, new_state) + + # Return a numpy array with squeezed out batch dimension. + action = tf2_utils.to_numpy_squeeze(action) + policy = tf2_utils.to_numpy_squeeze(policy) + return action, policy + + def select_actions( + self, observations: Dict[str, types.NestedArray] + ) -> Tuple[Dict[str, types.NestedArray], Dict[str, types.NestedArray]]: + + actions = {} + policies = {} + for agent, observation in observations.items(): + actions[agent], policies[agent] = self.select_action(agent, observation) + return actions, policies + + def observe( + self, + actions: Dict[str, types.NestedArray], + next_timestep: dm_env.TimeStep, + next_extras: Optional[Dict[str, types.NestedArray]] = {}, + ) -> None: + if not self._adder: + return + _, policy = actions + if not self._store_recurrent_state: + if next_extras: + # TODO (dries): Sort out this mypy issue. + self._adder.add(policy, next_timestep, next_extras) # type: ignore + else: + self._adder.add(policy, next_timestep) # type: ignore + return + + numpy_states = { + agent: tf2_utils.to_numpy_squeeze(_state) + for agent, _state in self._states.items() + } + if next_extras: + next_extras.update({"core_states": numpy_states}) + self._adder.add(policy, next_timestep, next_extras) # type: ignore + else: + self._adder.add(policy, next_timestep, numpy_states) # type: ignore From 8eea9710dc5ada582a6d0af70544d085487b008f Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Sun, 23 May 2021 09:25:59 +0200 Subject: [PATCH 036/188] example of running madqn on starcraft environment --- examples/smac/run_recurrent_madqn.py | 174 ++++++++++++++++++++++++++ mava/utils/environments/smac_utils.py | 19 +++ mava/wrappers/smac.py | 31 ++--- 3 files changed, 209 insertions(+), 15 deletions(-) create mode 100644 examples/smac/run_recurrent_madqn.py diff --git a/examples/smac/run_recurrent_madqn.py b/examples/smac/run_recurrent_madqn.py new file mode 100644 index 000000000..3d5d8d77f --- /dev/null +++ b/examples/smac/run_recurrent_madqn.py @@ -0,0 +1,174 @@ +# python3 +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://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. + +"""Example running recurrent MADQN on multi-agent Starcraft 2 (SMAC) environment.""" + +import functools +from datetime import datetime +from typing import Any, Dict, Mapping, Optional, Sequence, Union + +import launchpad as lp +import sonnet as snt +import tensorflow as tf +from absl import app, flags +from acme import types +from acme.tf import networks +from launchpad.nodes.python.local_multi_processing import PythonProcess + +from mava import specs as mava_specs +from mava.components.tf.modules.exploration import LinearExplorationScheduler +from mava.components.tf.networks import epsilon_greedy_action_selector +from mava.systems.tf import madqn +from mava.systems.tf.madqn.execution import MADQNRecurrentExecutor +from mava.systems.tf.madqn.training import RecurrentMADQNTrainer +from mava.utils import lp_utils +from mava.utils.environments import smac_utils +from mava.utils.loggers import logger_utils + +FLAGS = flags.FLAGS +flags.DEFINE_string( + "map_name", + "3m", + "Starcraft 2 micromanagement map name (str).", +) + +flags.DEFINE_string( + "mava_id", + str(datetime.now()), + "Experiment identifier that can be used to continue experiments.", +) +flags.DEFINE_string("base_dir", "~/mava/", "Base dir to store experiments.") + + +def make_networks( + environment_spec: mava_specs.MAEnvironmentSpec, + q_networks_layer_sizes: Union[Dict[str, Sequence], Sequence] = ( + 512, + 512, + 256, + ), + shared_weights: bool = True, +) -> Mapping[str, types.TensorTransformation]: + """Creates networks used by the agents.""" + + specs = environment_spec.get_agent_specs() + + # Create agent_type specs + if shared_weights: + type_specs = {key.split("_")[0]: specs[key] for key in specs.keys()} + specs = type_specs + + if isinstance(q_networks_layer_sizes, Sequence): + q_networks_layer_sizes = {key: q_networks_layer_sizes for key in specs.keys()} + + def action_selector_fn( + q_values: types.NestedTensor, + legal_actions: types.NestedTensor, + epsilon: Optional[tf.Variable] = None, + ) -> types.NestedTensor: + return epsilon_greedy_action_selector( + action_values=q_values, legal_actions_mask=legal_actions, epsilon=epsilon + ) + + q_networks = {} + action_selectors = {} + for key in specs.keys(): + + # Get total number of action dimensions from action spec. + num_dimensions = specs[key].actions.num_values + + # Create the policy network. + q_network = snt.DeepRNN( + [ + networks.LayerNormMLP( + q_networks_layer_sizes[key], activate_final=False + ), + snt.LSTM(25), + snt.nets.MLP([128]), + networks.NearZeroInitializedLinear(num_dimensions), + ] + ) + + # epsilon greedy action selector + action_selector = action_selector_fn + + q_networks[key] = q_network + action_selectors[key] = action_selector + + return { + "q_networks": q_networks, + "action_selectors": action_selectors, + } + + +def main(_: Any) -> None: + + # environment + environment_factory = functools.partial( + smac_utils.make_environment, map_name=FLAGS.map_name + ) + + # networks + network_factory = lp_utils.partial_kwargs(make_networks) + + # Checkpointer appends "Checkpoints" to checkpoint_dir + checkpoint_dir = f"{FLAGS.base_dir}/{FLAGS.mava_id}" + + # loggers + log_every = 10 + logger_factory = functools.partial( + logger_utils.make_logger, + directory=FLAGS.base_dir, + to_terminal=True, + to_tensorboard=True, + time_stamp=FLAGS.mava_id, + time_delta=log_every, + ) + + # distributed program + program = madqn.MADQN( + environment_factory=environment_factory, + network_factory=network_factory, + logger_factory=logger_factory, + num_executors=2, + trainer_fn=RecurrentMADQNTrainer, + executor_fn=MADQNRecurrentExecutor, + exploration_scheduler_fn=LinearExplorationScheduler, + epsilon_min=0.05, + epsilon_decay=5e-4, + optimizer=snt.optimizers.Adam(learning_rate=1e-4), + checkpoint_subpath=checkpoint_dir, + n_step=1, + batch_size=32, + ).build() + + # launch + gpu_id = -1 + env_vars = {"CUDA_VISIBLE_DEVICES": str(gpu_id)} + local_resources = { + "trainer": [], + "evaluator": PythonProcess(env=env_vars), + "executor": PythonProcess(env=env_vars), + } + lp.launch( + program, + lp.LaunchType.LOCAL_MULTI_PROCESSING, + terminal="current_terminal", + local_resources=local_resources, + ) + + +if __name__ == "__main__": + app.run(main) diff --git a/mava/utils/environments/smac_utils.py b/mava/utils/environments/smac_utils.py index dddf84bca..7044c7b49 100644 --- a/mava/utils/environments/smac_utils.py +++ b/mava/utils/environments/smac_utils.py @@ -48,3 +48,22 @@ def make_environment( environment.seed(random_seed) return environment + + +class CloudpickleWrapper: + """ + Uses cloudpickle to serialize contents (otherwise multiprocessing tries to use pickle) + """ + + def __init__(self, x): + self.x = x + + def __getstate__(self): + import cloudpickle + + return cloudpickle.dumps(self.x) + + def __setstate__(self, ob): + import pickle + + self.x = pickle.loads(ob) \ No newline at end of file diff --git a/mava/wrappers/smac.py b/mava/wrappers/smac.py index 6314b36f0..2e6d58757 100644 --- a/mava/wrappers/smac.py +++ b/mava/wrappers/smac.py @@ -48,14 +48,17 @@ def __init__(self, environment: StarCraft2Env) -> None: self._environment = environment self._reset_next_step = True - self._agents: List = [] - self.observation_space = Dict( - { - "observation": Box(-1, 1, shape=(self._env.get_obs_size(),)), - "action_mask": Box(0, 1, shape=(self._env.get_total_actions(),)), - } + self._possible_agents = [ + f"agent_{i}" for i in range(self._environment.get_env_info()["n_agents"]) + ] + self._agents = self._possible_agents + self.observation_space = { + "observation": Box(-1, 1, shape=(self._environment.get_obs_size(),)), + "action_mask": Box(0, 1, shape=(self._environment.get_total_actions(),)), + } + self.action_space: Type[Discrete] = Discrete( + self._environment.get_total_actions() ) - self.action_space: Type[Discrete] = Discrete(self._env.get_total_actions()) def reset(self) -> Tuple[dm_env.TimeStep, np.array]: """Resets the env and returns observations from ready agents. @@ -67,18 +70,16 @@ def reset(self) -> Tuple[dm_env.TimeStep, np.array]: self._step_type = dm_env.StepType.FIRST # reset internal SC2 env - obs_list, state = self._env.reset() + obs_list, state = self._environment.reset() # Convert observations observe: Dict[str, np.ndarray] = {} - self._possible_agents = [] + for i, obs in enumerate(obs_list): - agent = f"agent_{i}" - observe[agent] = { + observe[f"agent_{i}"] = { "observation": obs, - "action_mask": np.array(self._env.get_avail_agent_actions(i)), + "action_mask": np.array(self._environment.get_avail_agent_actions(i)), } - self._possible_agents.append(agent) observations = self._convert_observations( observe, {agent: False for agent in self._possible_agents} ) @@ -145,7 +146,7 @@ def step(self, actions: Dict[str, np.ndarray]) -> Tuple[dm_env.TimeStep, np.arra agent = f"agent_{i}" observe[agent] = { "observation": obs, - "action_mask": np.array(self._env.get_avail_agent_actions(i)), + "action_mask": np.array(self._environment.get_avail_agent_actions(i)), } rewards[agent] = reward dones[agent] = terminated @@ -220,7 +221,7 @@ def observation_spec(self) -> types.Observation: def action_spec(self) -> Dict[str, specs.DiscreteArray]: return { - agent: _convert_to_spec(self._environment.action_space) + agent: _convert_to_spec(self.action_space) for agent in self._possible_agents } From 8b299af3f34817d0dab08a1c8addae420706413b Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Sun, 23 May 2021 09:36:16 +0200 Subject: [PATCH 037/188] fix mypy issues --- mava/utils/environments/smac_utils.py | 19 ------------------- mava/wrappers/smac.py | 4 ++-- 2 files changed, 2 insertions(+), 21 deletions(-) diff --git a/mava/utils/environments/smac_utils.py b/mava/utils/environments/smac_utils.py index 7044c7b49..dddf84bca 100644 --- a/mava/utils/environments/smac_utils.py +++ b/mava/utils/environments/smac_utils.py @@ -48,22 +48,3 @@ def make_environment( environment.seed(random_seed) return environment - - -class CloudpickleWrapper: - """ - Uses cloudpickle to serialize contents (otherwise multiprocessing tries to use pickle) - """ - - def __init__(self, x): - self.x = x - - def __getstate__(self): - import cloudpickle - - return cloudpickle.dumps(self.x) - - def __setstate__(self, ob): - import pickle - - self.x = pickle.loads(ob) \ No newline at end of file diff --git a/mava/wrappers/smac.py b/mava/wrappers/smac.py index 2e6d58757..4b5f6f188 100644 --- a/mava/wrappers/smac.py +++ b/mava/wrappers/smac.py @@ -84,7 +84,7 @@ def reset(self) -> Tuple[dm_env.TimeStep, np.array]: observe, {agent: False for agent in self._possible_agents} ) - self._agents = list(range(len(obs_list))) + self._agents = list(observe.keys()) # create discount spec discount_spec = self.discount_spec() @@ -152,7 +152,7 @@ def step(self, actions: Dict[str, np.ndarray]) -> Tuple[dm_env.TimeStep, np.arra dones[agent] = terminated observations = self._convert_observations(observe, dones) - self._agents = list(range(len(obs_list))) + self._agents = list(observe.keys()) rewards_spec = self.reward_spec() # Handle empty rewards From e0ef40d1989a03e4add0e524e54b229021493d7f Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Sun, 23 May 2021 09:45:46 +0200 Subject: [PATCH 038/188] update readme and workflow for sc2 --- .github/workflows/ci.yaml | 3 +++ README.md | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index fcd48ea70..cfb3453c4 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -36,6 +36,9 @@ jobs: AutoROM -v # Open CV and Headless screen. sudo apt-get install ffmpeg libsm6 libxext6 xvfb -y + # SC2 + sudo apt-get -y install git + pip install git+https://github.com/oxwhirl/smac.git - name: Format code run: | # Check code follows black formatting. diff --git a/README.md b/README.md index 545a6d45e..78c370d08 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,12 @@ We have tested `mava` on Python 3.6, 3.7 and 3.8. ``` and navigate to `http://127.0.0.1:6006/`. +3. Install multi-agent Starcraft 2 environment [Optional]: + To install the environment, please run the provided bash script. + ```bash + chmod +x install_sc2.sh + ./install_sc2.sh + ### Python virtual environment 1. If not using docker, we strongly recommend using a From 7651e554ab74e3f9760c059f82f92483d3766887 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Sun, 23 May 2021 10:07:14 +0200 Subject: [PATCH 039/188] update yaml for smac install --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index cfb3453c4..98af25385 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -37,7 +37,7 @@ jobs: # Open CV and Headless screen. sudo apt-get install ffmpeg libsm6 libxext6 xvfb -y # SC2 - sudo apt-get -y install git + sudo apt-get install git -y pip install git+https://github.com/oxwhirl/smac.git - name: Format code run: | From df38243951321d067f0b6b609547e8a6860aad77 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Sun, 23 May 2021 10:32:38 +0200 Subject: [PATCH 040/188] change versions of python to test to only include 3.7 and 3.8 --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 98af25385..ee3891406 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -12,7 +12,7 @@ jobs: timeout-minutes: 30 strategy: matrix: - python-version: [3.6.13, 3.7.1, 3.8.0] + python-version: [3.7.1, 3.8.0] #[3.6.13, 3.7.1, 3.8.0] steps: - uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} From cc99ecfde8e6fca39302a546fd58305a1d8a54dd Mon Sep 17 00:00:00 2001 From: Dries Date: Sun, 23 May 2021 13:32:28 +0200 Subject: [PATCH 041/188] fix: Small fixes. --- mava/wrappers/smac.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mava/wrappers/smac.py b/mava/wrappers/smac.py index 4b5f6f188..790a0f73c 100644 --- a/mava/wrappers/smac.py +++ b/mava/wrappers/smac.py @@ -180,7 +180,7 @@ def step(self, actions: Dict[str, np.ndarray]) -> Tuple[dm_env.TimeStep, np.arra step_type=self._step_type, ) - return timestep, state + return timestep, {"s_t": state} def env_done(self) -> bool: """ From 1901a56666ed3eea238d5a055b560423695eb987 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Sun, 23 May 2021 14:22:47 +0200 Subject: [PATCH 042/188] Minor changes --- .github/workflows/ci.yaml | 2 +- examples/smac/run_recurrent_madqn.py | 2 +- mava/utils/environments/smac_utils.py | 12 +++++++++++- mava/wrappers/smac.py | 7 +++++++ 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index ee3891406..98af25385 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -12,7 +12,7 @@ jobs: timeout-minutes: 30 strategy: matrix: - python-version: [3.7.1, 3.8.0] #[3.6.13, 3.7.1, 3.8.0] + python-version: [3.6.13, 3.7.1, 3.8.0] steps: - uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} diff --git a/examples/smac/run_recurrent_madqn.py b/examples/smac/run_recurrent_madqn.py index 3d5d8d77f..049624851 100644 --- a/examples/smac/run_recurrent_madqn.py +++ b/examples/smac/run_recurrent_madqn.py @@ -142,7 +142,7 @@ def main(_: Any) -> None: environment_factory=environment_factory, network_factory=network_factory, logger_factory=logger_factory, - num_executors=2, + num_executors=1, trainer_fn=RecurrentMADQNTrainer, executor_fn=MADQNRecurrentExecutor, exploration_scheduler_fn=LinearExplorationScheduler, diff --git a/mava/utils/environments/smac_utils.py b/mava/utils/environments/smac_utils.py index dddf84bca..55f8780e3 100644 --- a/mava/utils/environments/smac_utils.py +++ b/mava/utils/environments/smac_utils.py @@ -15,7 +15,7 @@ """Starcraft 2 environment factory.""" -from typing import Any, Optional +from typing import Any, Optional, Dict import dm_env from smac.env import StarCraft2Env @@ -23,6 +23,16 @@ from mava.wrappers import SMACEnvWrapper +def load_smac_env(env_config: Dict[str, Any]) -> StarCraft2Env: + """Loads a smac environment given a config dict. Also, the possible agents in the + environment are set""" + + env = StarCraft2Env(**env_config) + env.possible_agents = list(range(env.n_agents)) + + return env + + def make_environment( evaluation: bool = False, map_name: str = "3m", diff --git a/mava/wrappers/smac.py b/mava/wrappers/smac.py index 4b5f6f188..4f12ab3e9 100644 --- a/mava/wrappers/smac.py +++ b/mava/wrappers/smac.py @@ -56,9 +56,13 @@ def __init__(self, environment: StarCraft2Env) -> None: "observation": Box(-1, 1, shape=(self._environment.get_obs_size(),)), "action_mask": Box(0, 1, shape=(self._environment.get_total_actions(),)), } + self.observation_spaces = { + agent: self.observation_space["observation"] for agent in self._agents + } self.action_space: Type[Discrete] = Discrete( self._environment.get_total_actions() ) + self.action_spaces = {agent: self.action_space for agent in self._agents} def reset(self) -> Tuple[dm_env.TimeStep, np.array]: """Resets the env and returns observations from ready agents. @@ -237,6 +241,9 @@ def discount_spec(self) -> Dict[str, specs.BoundedArray]: def extra_spec(self) -> Dict[str, specs.BoundedArray]: return {} + def seed(self, random_seed): + self._environment._seed = random_seed + @property def agents(self) -> List: return self._agents From 461f8102457446beea86c22d24a67c065715b1a8 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Sun, 23 May 2021 14:50:03 +0200 Subject: [PATCH 043/188] test ci without setuptools --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 98af25385..b879ecdbe 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -25,7 +25,7 @@ jobs: # Ensure encoding consistency export LC_ALL=en_US.UTF-8 export LANG=en_US.UTF-8 - pip install --upgrade pip setuptools + # pip install --upgrade pip setuptools pip install . pip install .[flatland] pip install .[tf,envs,reverb,testing_formatting,launchpad,record_episode] From d00a0e99e484c06e48d3b74db605226b3f58509b Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Sun, 23 May 2021 15:03:36 +0200 Subject: [PATCH 044/188] : --- mava/utils/environments/smac_utils.py | 2 +- mava/wrappers/smac.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mava/utils/environments/smac_utils.py b/mava/utils/environments/smac_utils.py index 55f8780e3..4db2fa554 100644 --- a/mava/utils/environments/smac_utils.py +++ b/mava/utils/environments/smac_utils.py @@ -15,7 +15,7 @@ """Starcraft 2 environment factory.""" -from typing import Any, Optional, Dict +from typing import Any, Dict, Optional import dm_env from smac.env import StarCraft2Env diff --git a/mava/wrappers/smac.py b/mava/wrappers/smac.py index eb716e640..b381fc82c 100644 --- a/mava/wrappers/smac.py +++ b/mava/wrappers/smac.py @@ -241,7 +241,7 @@ def discount_spec(self) -> Dict[str, specs.BoundedArray]: def extra_spec(self) -> Dict[str, specs.BoundedArray]: return {} - def seed(self, random_seed): + def seed(self, random_seed: int) -> None: self._environment._seed = random_seed @property From 3e70ef2c6f77cb7b2822dacc77fc6df6ba7045c2 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Sun, 23 May 2021 15:06:32 +0200 Subject: [PATCH 045/188] small updates to ci and dockerfile --- .github/workflows/ci.yaml | 3 ++- Dockerfile | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index b879ecdbe..80cd04420 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -21,11 +21,12 @@ jobs: python-version: ${{ matrix.python-version }} - name: Install dependencies run: | + pip install --upgrade pip setuptools export PIP_DEFAULT_TIMEOUT=100 # Ensure encoding consistency export LC_ALL=en_US.UTF-8 export LANG=en_US.UTF-8 - # pip install --upgrade pip setuptools + # Mava dependencies pip install . pip install .[flatland] pip install .[tf,envs,reverb,testing_formatting,launchpad,record_episode] diff --git a/Dockerfile b/Dockerfile index 8e2b6edda..57603cd0b 100755 --- a/Dockerfile +++ b/Dockerfile @@ -32,7 +32,7 @@ RUN python -m pip install --upgrade pip RUN python -m pip install -e .[flatland] RUN python -m pip install -e .[tf,envs,reverb,launchpad,testing_formatting,record_episode] -# install starcraft 2 environment +# Install starcraft 2 environment RUN apt-get -y install git RUN python -m pip install git+https://github.com/oxwhirl/smac.git ENV SC2PATH /home/app/mava/3rdparty/StarCraftII From 2ee7b8c8df89cf2d6d94e9b3c0e89851d1001f80 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Sun, 23 May 2021 15:08:58 +0200 Subject: [PATCH 046/188] small update to ci --- .github/workflows/ci.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 80cd04420..f6b3909c8 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -21,12 +21,13 @@ jobs: python-version: ${{ matrix.python-version }} - name: Install dependencies run: | - pip install --upgrade pip setuptools export PIP_DEFAULT_TIMEOUT=100 # Ensure encoding consistency export LC_ALL=en_US.UTF-8 export LANG=en_US.UTF-8 # Mava dependencies + pip uninstall -y enum34 + pip install --upgrade pip setuptools pip install . pip install .[flatland] pip install .[tf,envs,reverb,testing_formatting,launchpad,record_episode] From 897d2c39dd8570c2a7781fef11965a3f3ecb3e4b Mon Sep 17 00:00:00 2001 From: Kale-ab Date: Sun, 23 May 2021 15:15:43 +0200 Subject: [PATCH 047/188] fix: Added baseline cost weighting param to critic loss calc. --- mava/systems/tf/mappo/training.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mava/systems/tf/mappo/training.py b/mava/systems/tf/mappo/training.py index fc134458d..e0af4f36f 100644 --- a/mava/systems/tf/mappo/training.py +++ b/mava/systems/tf/mappo/training.py @@ -290,7 +290,7 @@ def _forward(self, inputs: Any) -> None: # Do not use the loss provided by td_lambda as they sum the losses over # the sequence length rather than averaging them. - critic_loss = tf.reduce_mean( + critic_loss = self._baseline_cost * tf.reduce_mean( tf.square(td_lambda_extra.temporal_differences), name="CriticLoss" ) From 6260a2cfe1431994037420750efebe261ca3134f Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Sun, 23 May 2021 15:37:33 +0200 Subject: [PATCH 048/188] fix: small update to ci to fix checks failing --- .github/workflows/ci.yaml | 1 + .gitignore | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 8abedcba0..eab06c6c0 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -25,6 +25,7 @@ jobs: # Ensure encoding consistency export LC_ALL=en_US.UTF-8 export LANG=en_US.UTF-8 + pip uninstall -y enum34 pip install --upgrade pip setuptools pip install . pip install .[flatland] diff --git a/.gitignore b/.gitignore index 3b997dbf1..e4a189ead 100644 --- a/.gitignore +++ b/.gitignore @@ -33,6 +33,9 @@ MANIFEST *.manifest *.spec +# mac +__MACOSX + # Installer logs pip-log.txt pip-delete-this-directory.txt @@ -147,3 +150,4 @@ mava/workspace.code-workspace .DS_Store mava_testing .devcontainer/devcontainer.json +3rdparty From 15367a24d01c4000bb1457e1f4ded870fd67de9a Mon Sep 17 00:00:00 2001 From: Dries Date: Sun, 23 May 2021 17:01:54 +0200 Subject: [PATCH 049/188] fix: Fix legal_actions dtype. --- mava/wrappers/smac.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/mava/wrappers/smac.py b/mava/wrappers/smac.py index b381fc82c..46f7b6041 100644 --- a/mava/wrappers/smac.py +++ b/mava/wrappers/smac.py @@ -82,8 +82,11 @@ def reset(self) -> Tuple[dm_env.TimeStep, np.array]: for i, obs in enumerate(obs_list): observe[f"agent_{i}"] = { "observation": obs, - "action_mask": np.array(self._environment.get_avail_agent_actions(i)), + "action_mask": np.array( + self._environment.get_avail_agent_actions(i), dtype=np.float32 + ), } + observations = self._convert_observations( observe, {agent: False for agent in self._possible_agents} ) @@ -150,7 +153,9 @@ def step(self, actions: Dict[str, np.ndarray]) -> Tuple[dm_env.TimeStep, np.arra agent = f"agent_{i}" observe[agent] = { "observation": obs, - "action_mask": np.array(self._environment.get_avail_agent_actions(i)), + "action_mask": np.array( + self._environment.get_avail_agent_actions(i), dtype=np.float32 + ), } rewards[agent] = reward dones[agent] = terminated @@ -239,7 +244,13 @@ def discount_spec(self) -> Dict[str, specs.BoundedArray]: } def extra_spec(self) -> Dict[str, specs.BoundedArray]: - return {} + state = self._environment.get_state() + # TODO (dries): What should the real bounds be of the state spec? + return { + "s_t": specs.BoundedArray( + state.shape, np.float32, minimum=float("-inf"), maximum=float("inf") + ) + } def seed(self, random_seed: int) -> None: self._environment._seed = random_seed From 739a5463e78112a7b3731e85b11327861ffbf72f Mon Sep 17 00:00:00 2001 From: Kale-ab Date: Sun, 23 May 2021 21:39:31 +0200 Subject: [PATCH 050/188] fix: Passing none values to target update rate and passing these params to mad4pg. --- mava/systems/tf/mad4pg/system.py | 4 ++++ mava/systems/tf/maddpg/builder.py | 2 +- mava/systems/tf/maddpg/system.py | 4 ++-- mava/systems/tf/maddpg/training.py | 5 +++-- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/mava/systems/tf/mad4pg/system.py b/mava/systems/tf/mad4pg/system.py index 60a3c65d8..e5aa84b40 100644 --- a/mava/systems/tf/mad4pg/system.py +++ b/mava/systems/tf/mad4pg/system.py @@ -58,7 +58,9 @@ def __init__( discount: float = 0.99, batch_size: int = 256, prefetch_size: int = 4, + target_averaging: bool = False, target_update_period: int = 100, + target_update_rate: float = None, executor_variable_update_period: int = 1000, min_replay_size: int = 1000, max_replay_size: int = 1000000, @@ -151,4 +153,6 @@ def __init__( eval_loop_fn=eval_loop_fn, train_loop_fn_kwargs=train_loop_fn_kwargs, eval_loop_fn_kwargs=eval_loop_fn_kwargs, + target_averaging=target_averaging, + target_update_rate=target_update_rate, ) diff --git a/mava/systems/tf/maddpg/builder.py b/mava/systems/tf/maddpg/builder.py index 42fea1d5c..1fd2a33d7 100644 --- a/mava/systems/tf/maddpg/builder.py +++ b/mava/systems/tf/maddpg/builder.py @@ -74,7 +74,7 @@ class MADDPGConfig: prefetch_size: int = 4 target_averaging: bool = False target_update_period: int = 100 - target_update_rate: float = 0.01 + target_update_rate: Optional[float] = None executor_variable_update_period: int = 1000 min_replay_size: int = 1000 max_replay_size: int = 1000000 diff --git a/mava/systems/tf/maddpg/system.py b/mava/systems/tf/maddpg/system.py index e41ac062e..95f2aea46 100644 --- a/mava/systems/tf/maddpg/system.py +++ b/mava/systems/tf/maddpg/system.py @@ -15,7 +15,7 @@ """MADDPG system implementation.""" import functools -from typing import Any, Callable, Dict, List, Type, Union +from typing import Any, Callable, Dict, List, Optional, Type, Union import acme import dm_env @@ -70,7 +70,7 @@ def __init__( prefetch_size: int = 4, target_averaging: bool = False, target_update_period: int = 100, - target_update_rate: float = 0.01, + target_update_rate: Optional[float] = None, executor_variable_update_period: int = 1000, min_replay_size: int = 1000, max_replay_size: int = 1000000, diff --git a/mava/systems/tf/maddpg/training.py b/mava/systems/tf/maddpg/training.py index 11fb35aa2..f1a35b6f3 100644 --- a/mava/systems/tf/maddpg/training.py +++ b/mava/systems/tf/maddpg/training.py @@ -198,7 +198,6 @@ def __init__( self._timestamp: Optional[float] = None def _update_target_networks(self) -> None: - assert 0.0 < self._target_update_rate < 1.0 for key in self.unique_net_keys: # Update target network. online_variables = ( @@ -213,6 +212,7 @@ def _update_target_networks(self) -> None: ) if self._target_averaging: + assert 0.0 < self._target_update_rate < 1.0 tau = self._target_update_rate for src, dest in zip(online_variables, target_variables): dest.assign(dest * (1.0 - tau) + src * tau) @@ -1029,7 +1029,7 @@ def __init__( self._timestamp: Optional[float] = None def _update_target_networks(self) -> None: - assert 0.0 < self._target_update_rate < 1.0 + for key in self.unique_net_keys: # Update target network. online_variables = ( @@ -1044,6 +1044,7 @@ def _update_target_networks(self) -> None: ) if self._target_averaging: + assert 0.0 < self._target_update_rate < 1.0 tau = self._target_update_rate for src, dest in zip(online_variables, target_variables): dest.assign(dest * (1.0 - tau) + src * tau) From c1d16c71d80ee1b04bdeff003ebbf05b0d73f2ea Mon Sep 17 00:00:00 2001 From: Kale-ab Date: Sun, 23 May 2021 21:46:55 +0200 Subject: [PATCH 051/188] fix: made type explicit. --- mava/systems/tf/mad4pg/system.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mava/systems/tf/mad4pg/system.py b/mava/systems/tf/mad4pg/system.py index e5aa84b40..8df5e5447 100644 --- a/mava/systems/tf/mad4pg/system.py +++ b/mava/systems/tf/mad4pg/system.py @@ -14,7 +14,7 @@ # limitations under the License. """MAD4PG system implementation.""" -from typing import Callable, Dict, Type, Union +from typing import Callable, Dict, Optional, Type, Union import dm_env import sonnet as snt @@ -60,7 +60,7 @@ def __init__( prefetch_size: int = 4, target_averaging: bool = False, target_update_period: int = 100, - target_update_rate: float = None, + target_update_rate: Optional[float] = None, executor_variable_update_period: int = 1000, min_replay_size: int = 1000, max_replay_size: int = 1000000, From 3df2ab0715a66fede092c51233d4ce78aa771bcb Mon Sep 17 00:00:00 2001 From: Arnu Pretorius Date: Mon, 24 May 2021 08:15:45 +0200 Subject: [PATCH 052/188] Update install_sc2.sh --- install_sc2.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/install_sc2.sh b/install_sc2.sh index b7fa1ff2d..f3a4f306b 100755 --- a/install_sc2.sh +++ b/install_sc2.sh @@ -1,5 +1,6 @@ #!/bin/bash # Install SC2 and add the custom maps +# Script adapted from https://github.com/oxwhirl/pymarl mkdir 3rdparty cd 3rdparty From 39bd994fb3d4118f51e94d3e09c68ea9bfa2aee9 Mon Sep 17 00:00:00 2001 From: Arnu Pretorius Date: Mon, 24 May 2021 08:20:15 +0200 Subject: [PATCH 053/188] Remove commented lines of code in wrapper --- mava/wrappers/smac.py | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/mava/wrappers/smac.py b/mava/wrappers/smac.py index 46f7b6041..104831b0f 100644 --- a/mava/wrappers/smac.py +++ b/mava/wrappers/smac.py @@ -128,18 +128,6 @@ def step(self, actions: Dict[str, np.ndarray]) -> Tuple[dm_env.TimeStep, np.arra if self._reset_next_step: return self.reset() - # actions = [] - # for i in self._ready_agents: - # if i not in action_dict: - # raise ValueError(f"You must supply an action for agent: {i}") - # actions.append(action_dict[i]) - - # if len(actions) != len(self._ready_agents): - # raise ValueError( - # f"Number of actions ({len(actions)}) does not match number \ - # of ready agents (len(self._ready_agents))." - # ) - actions_feed = list(actions.values()) reward, terminated, info = self._environment.step(actions_feed) obs_list = self._environment.get_obs() From 659f08b6117268b21786ca29ae38bb70ba0fdfd4 Mon Sep 17 00:00:00 2001 From: Arnu Pretorius Date: Mon, 24 May 2021 10:21:32 +0200 Subject: [PATCH 054/188] Remove chmod in instructions for sc2 install --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 78c370d08..ab5cdbd0d 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,6 @@ We have tested `mava` on Python 3.6, 3.7 and 3.8. 3. Install multi-agent Starcraft 2 environment [Optional]: To install the environment, please run the provided bash script. ```bash - chmod +x install_sc2.sh ./install_sc2.sh ### Python virtual environment From 3c9be70263a492c4d0bfe7b185695a456c1d5bbf Mon Sep 17 00:00:00 2001 From: Dries Date: Mon, 24 May 2021 11:09:45 +0200 Subject: [PATCH 055/188] feature: Add state-based maddpg example. --- examples/README.md | 73 +++++-- .../run_decentralised_recurrent_maddpg.py | 2 +- .../run_state_based_recurrent_maddpg.py | 188 ++++++++++++++++++ .../run_decentralised_recurrent_maddpg.py | 4 +- .../tf/architectures/state_based.py | 2 +- mava/systems/tf/maddpg/training.py | 20 +- 6 files changed, 258 insertions(+), 31 deletions(-) create mode 100644 examples/debugging_envs/run_state_based_recurrent_maddpg.py diff --git a/examples/README.md b/examples/README.md index 327601a6a..b48f814dd 100644 --- a/examples/README.md +++ b/examples/README.md @@ -9,38 +9,69 @@ In Mava we use a variety of different environments which include the ## Continuous control We include a number of systems running on continuous control tasks. -- [PPO (centralised)](debugging_envs/run_centralised_feedforward_mappo.py): - a PPO system using a centralised critic on the continuous action space simple_spread MPE debugging environment. -- [MA-DDPG (feedforward)](debugging_envs/run_feedforward_maddpg.py): - an MA-DDPG system (without recurrence) on the continuous action space simple_spread MPE debugging environment. -- [MA-D4PG](debugging_envs/run_feedforward_mad4pg.py): +- [MA-DDPG (centralised, feedforward)](debugging_envs/run_centralised_feedforward_maddpg.py): + an MA-DDPG system on the continuous action space simple_spread MPE debugging environment. +- [PPO (centralised, feedforward)](debugging_envs/run_centralised_feedforward_mappo.py): + a PPO system on the continuous action space simple_spread MPE debugging environment. +- [MA-D4PG (decentralised, feedforward)](debugging_envs/run_decentralised_feedforward_mad4pg.py): an MA-D4PG system on the continuous action space simple_spread MPE debugging environment. -- [MA-DDPG (recurrent)](debugging_envs/run_recurrent_maddpg.py): - an MA-DDPG system (with recurrence) on the continuous action space simple_spread MPE debugging environment. +- [MA-DDPG (decentralised, feedforward)](debugging_envs/run_decentralised_feedforward_maddpg.py): + an MA-DDPG system on the continuous action space simple_spread MPE debugging environment. +- [PPO (decentralised, feedforward)](debugging_envs/run_decentralised_feedforward_mappo.py): + a PPO system on the continuous action space simple_spread MPE debugging environment. - [MA-D4PG (decentralised, recurrent)](debugging_envs/run_decentralised_recurrent_mad4pg.py): - an MA-D4PG system (with recurrence) on the continuous action space simple_spread MPE debugging environment. -- [PPO (centralised, feedforward)](petting_zoo/run_centralised_feedforward_mappo.py): + an MA-D4PG system on the continuous action space simple_spread MPE debugging environment. +- [MA-DDPG (decentralised, recurrent)](debugging_envs/run_decentralised_recurrent_maddpg.py): + an MA-DDPG system on the continuous action space simple_spread MPE debugging environment. +- [MA-DDPG (decentralised, recurrent)](debugging_envs/run_decentralised_recurrent_maddpg.py): + an MA-DDPG system on the continuous action space simple_spread MPE debugging environment. +- [MA-DDPG (decentralised, feedforward)](debugging_envs/run_feedforward_maddpg_record_video.py): + an MA-DDPG system (with video wrapping) on the continuous action space simple_spread MPE debugging environment. +- [MA-DDPG (networked, feedforward)](debugging_envs/run_networked_feedforward_maddpg.py): + an MA-D4PG system on the continuous action space simple_spread MPE debugging environment. + +- [MA-DDPG (state-based, recurrent)](debugging_envs/run_state_based_recurrent_maddpg.py): + an MA-D4PG system on the continuous action space simple_spread MPE debugging environment. +- [PPO (centralised, feedforward)](petting_zoo/run_centralised_feedforward_mappo.py): a PPO system using a centralised critic on the continuous action space multiwalker_v7 PettingZoo environment. -- [MA-DDPG (centralised)](petting_zoo/run_feedforward_maddpg.py): +- [MA-D4PG (decentralised, feedforward)](petting_zoo/run_decentralised_feedforward_mad4pg.py): + an MA-D4PG system on the continuous action space multiwalker_v7 PettingZoo environment. +- [MA-DDPG (decentralised, feedforward)](petting_zoo/run_decentralised_feedforward_maddpg.py): + an MA-DDPG system on the continuous action space multiwalker_v7 PettingZoo environment. +- [MA-DDPG (decentralised, recurrent)](petting_zoo/run_decentralised_recurrent_maddpg.py): an MA-DDPG system on the continuous action space multiwalker_v7 PettingZoo environment. -- [MA-DDPG (recurrent)](petting_zoo/run_recurrent_maddpg.py): - an MA-DDPG system (with recurrence) on the continuous action space multiwalker_v7 PettingZoo environment. +- [MA-DDPG (decentralised, feedforward)](petting_zoo/run_feedforward_maddpg_record_video.py): + an MA-DDPG system (with video wrapping) on the continuous action space multiwalker_v7 PettingZoo environment. [petting_zoo]: https://github.com/PettingZoo-Team/PettingZoo ## Discrete control We also include a number of systems running on discrete action space environments. - -- [MA-DQN (feedforward)](debugging_envs/run_feedforward_madqn.py): +- [MA-D4PG (decentralised, feedforward)](debugging_envs/run_decentralised_feedforward_discrete_mad4pg.py): + an MA-D4PG system on the discrete action space simple_spread MPE debugging environment. +- [MA-DDPG (decentralised, feedforward)](debugging_envs/run_decentralised_feedforward_discrete_maddpg.py): + an MA-DDPG system on the discrete action space simple_spread MPE debugging environment. +- [MA-DQN (feedforward)](debugging_envs/run_feedforward_madqn.py): an MA-DQN system running on the discrete action space simple_spread MPE debugging environment. -- [PPO](debugging_envs/run_feedforward_mappo.py): - a PPO system using a decentralised critic on the discrete action space simple_spread MPE debugging environment. -- [QMIX](debugging_envs/run_feedforward_qmix.py): +- [MA-DQN (feedforward)](debugging_envs/run_feedforward_madqn.py): + an MA-DQN system (with fingerprints) running on the discrete action space simple_spread MPE debugging environment. +- [QMIX](debugging_envs/run_feedforward_qmix.py): a QMIX system on the two step custom environment. -- [DIAL](debugging_envs/run_recurrent_dial.py): +- [VDN](debugging_envs/run_feedforward_vdn.py): + a VDN system on the two step custom environment. +- [DIAL](debugging_envs/run_recurrent_dial.py): a DIAL system on the custom SwitchGame environment. -- [DIAL](debugging_envs/run_recurrent_dial_spread.py): +- [DIAL](debugging_envs/run_recurrent_dial_spread.py): a DIAL system on the discrete action space simple_spread MPE debugging environment. -- [MA-DQN (feedforward)](debugging_envs/run_feedforward_madqn.py): - an MA-DQN system running on the discrete action space maze_craze_v2 PettingZoo environment. +- [MA-DQN (recurrent)](debugging_envs/run_recurrent_madqn.py): + an MA-DQN system running on the discrete action space simple_spread MPE debugging environment. +- [MA-DQN (feedforward)](petting_zoo/run_feedforward_madqn.py): + an MA-DQN system running on the continuous action space multiwalker_v7 PettingZoo environment. +- [MA-DQN (feedforward)](petting_zoo/run_feedforward_madqn.py): + an MA-DQN system (with fingerprints) running on the continuous action space multiwalker_v7 PettingZoo environment. +- [QMIX](petting_zoo/run_feedforward_qmix.py): + a QMIX system on the two step custom environment. +- [VDN](petting_zoo/run_feedforward_vdn.py): + a VDN system on the two step custom environment. + diff --git a/examples/debugging_envs/run_decentralised_recurrent_maddpg.py b/examples/debugging_envs/run_decentralised_recurrent_maddpg.py index 44c5308f6..b591fd67e 100644 --- a/examples/debugging_envs/run_decentralised_recurrent_maddpg.py +++ b/examples/debugging_envs/run_decentralised_recurrent_maddpg.py @@ -29,7 +29,7 @@ from mava import specs as mava_specs from mava.systems.tf import maddpg -from mava.systems.tf.mad4pg.execution import MADDPGRecurrentExecutor +from mava.systems.tf.maddpg.execution import MADDPGRecurrentExecutor from mava.systems.tf.maddpg.training import DecentralisedRecurrentMADDPGTrainer from mava.utils import lp_utils from mava.utils.environments import debugging_utils diff --git a/examples/debugging_envs/run_state_based_recurrent_maddpg.py b/examples/debugging_envs/run_state_based_recurrent_maddpg.py new file mode 100644 index 000000000..419749d4f --- /dev/null +++ b/examples/debugging_envs/run_state_based_recurrent_maddpg.py @@ -0,0 +1,188 @@ +# python3 +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://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. + +"""Example running recurrent MADDPG on the debug MPE environments.""" +import functools +from datetime import datetime +from typing import Any, Dict, Mapping, Sequence, Union + +import launchpad as lp +import numpy as np +import sonnet as snt +from absl import app, flags +from acme import types +from acme.tf import networks +from acme.tf import utils as tf2_utils +from launchpad.nodes.python.local_multi_processing import PythonProcess + +from mava import specs as mava_specs +from mava.systems.tf import maddpg +from mava.systems.tf.maddpg.execution import MADDPGRecurrentExecutor +from mava.components.tf.architectures import StateBasedQValueCritic +from mava.systems.tf.maddpg.training import StateBasedRecurrentMADDPGTrainer +from mava.utils import lp_utils +from mava.utils.environments import debugging_utils +from mava.utils.loggers import logger_utils + +FLAGS = flags.FLAGS +flags.DEFINE_string( + "env_name", + "simple_spread", + "Debugging environment name (str).", +) +flags.DEFINE_string( + "action_space", + "continuous", + "Environment action space type (str).", +) +flags.DEFINE_string( + "mava_id", + str(datetime.now()), + "Experiment identifier that can be used to continue experiments.", +) +flags.DEFINE_string("base_dir", "~/mava/", "Base dir to store experiments.") + + +def make_networks( + environment_spec: mava_specs.MAEnvironmentSpec, + policy_networks_layer_sizes: Union[Dict[str, Sequence], Sequence] = ( + 256, + 256, + 256, + ), + critic_networks_layer_sizes: Union[Dict[str, Sequence], Sequence] = (512, 512, 256), + shared_weights: bool = True, + sigma: float = 0.3, +) -> Mapping[str, types.TensorTransformation]: + """Creates networks used by the agents.""" + specs = environment_spec.get_agent_specs() + + # Create agent_type specs + if shared_weights: + type_specs = {key.split("_")[0]: specs[key] for key in specs.keys()} + specs = type_specs + + if isinstance(policy_networks_layer_sizes, Sequence): + policy_networks_layer_sizes = { + key: policy_networks_layer_sizes for key in specs.keys() + } + if isinstance(critic_networks_layer_sizes, Sequence): + critic_networks_layer_sizes = { + key: critic_networks_layer_sizes for key in specs.keys() + } + + observation_networks = {} + policy_networks = {} + critic_networks = {} + for key in specs.keys(): + + # Get total number of action dimensions from action spec. + num_dimensions = np.prod(specs[key].actions.shape, dtype=int) + + # Create the observation network. + observation_network = tf2_utils.to_sonnet_module(tf2_utils.batch_concat) + + # Create the policy network. + policy_network = snt.DeepRNN( + [ + observation_network, + snt.Flatten(), + snt.nets.MLP(policy_networks_layer_sizes[key]), + snt.LSTM(25), + snt.nets.MLP([128]), + networks.NearZeroInitializedLinear(num_dimensions), + networks.TanhToSpec(specs[key].actions), + networks.ClippedGaussian(sigma), + networks.ClipToSpec(specs[key].actions), + ] + ) + + # Create the critic network. + critic_network = snt.Sequential( + [ + # The multiplexer concatenates the observations/actions. + networks.CriticMultiplexer(), + networks.LayerNormMLP( + critic_networks_layer_sizes[key], activate_final=False + ), + snt.Linear(1), + ] + ) + + observation_networks[key] = observation_network + policy_networks[key] = policy_network + critic_networks[key] = critic_network + + return { + "observations": observation_networks, + "policies": policy_networks, + "critics": critic_networks, + } + + +def main(_: Any) -> None: + # environment + environment_factory = functools.partial( + debugging_utils.make_environment, + env_name=FLAGS.env_name, + action_space=FLAGS.action_space, + num_agents=3, + return_state_info=True, + ) + + network_factory = lp_utils.partial_kwargs(make_networks) + + # Checkpointer appends "Checkpoints" to checkpoint_dir + checkpoint_dir = f"{FLAGS.base_dir}/{FLAGS.mava_id}" + + # loggers + log_every = 10 + logger_factory = functools.partial( + logger_utils.make_logger, + directory=FLAGS.base_dir, + to_terminal=True, + to_tensorboard=True, + time_stamp=FLAGS.mava_id, + time_delta=log_every, + ) + + program = maddpg.MADDPG( + environment_factory=environment_factory, + network_factory=network_factory, + logger_factory=logger_factory, + num_executors=2, + architecture=StateBasedQValueCritic, + trainer_fn=StateBasedRecurrentMADDPGTrainer, + executor_fn=MADDPGRecurrentExecutor, + checkpoint_subpath=checkpoint_dir, + ).build() + + # launch + gpu_id = -1 + env_vars = {"CUDA_VISIBLE_DEVICES": str(gpu_id)} + local_resources = { + "trainer": [], + "evaluator": PythonProcess(env=env_vars), + "executor": PythonProcess(env=env_vars), + } + lp.launch( + program, + lp.LaunchType.LOCAL_MULTI_PROCESSING, + terminal="current_terminal", + local_resources=local_resources, + ) + +if __name__ == "__main__": + app.run(main) diff --git a/examples/petting_zoo/run_decentralised_recurrent_maddpg.py b/examples/petting_zoo/run_decentralised_recurrent_maddpg.py index 2f6e7f046..de588cad6 100644 --- a/examples/petting_zoo/run_decentralised_recurrent_maddpg.py +++ b/examples/petting_zoo/run_decentralised_recurrent_maddpg.py @@ -31,7 +31,7 @@ from mava import specs as mava_specs from mava.systems.tf import maddpg from mava.systems.tf.maddpg.execution import MADDPGRecurrentExecutor -from mava.systems.tf.maddpg.training import DecentralisedRecurrentMADDPGTrainer +from mava.systems.tf.maddpg.training import StateBasedRecurrentMADDPGTrainer from mava.utils import lp_utils from mava.utils.environments import pettingzoo_utils from mava.utils.loggers import logger_utils @@ -163,7 +163,7 @@ def main(_: Any) -> None: network_factory=network_factory, logger_factory=logger_factory, num_executors=2, - trainer_fn=DecentralisedRecurrentMADDPGTrainer, + trainer_fn=StateBasedRecurrentMADDPGTrainer, executor_fn=MADDPGRecurrentExecutor, policy_optimizer=snt.optimizers.Adam(learning_rate=1e-4), critic_optimizer=snt.optimizers.Adam(learning_rate=1e-4), diff --git a/mava/components/tf/architectures/state_based.py b/mava/components/tf/architectures/state_based.py index eec6172a5..d99b16cb5 100644 --- a/mava/components/tf/architectures/state_based.py +++ b/mava/components/tf/architectures/state_based.py @@ -98,7 +98,7 @@ def _get_critic_specs( # Create one critic per agent. Each critic gets # absolute state information of the environment. - critic_state_shape = self._env_spec.get_extra_specs()["env_state"].shape + critic_state_shape = self._env_spec.get_extra_specs()["s_t"].shape critic_obs_spec = tf.TensorSpec( shape=critic_state_shape, dtype=tf.dtypes.float32, diff --git a/mava/systems/tf/maddpg/training.py b/mava/systems/tf/maddpg/training.py index 11fb35aa2..e23447097 100644 --- a/mava/systems/tf/maddpg/training.py +++ b/mava/systems/tf/maddpg/training.py @@ -848,8 +848,8 @@ def _get_critic_feed( agent: str, ) -> Tuple[tf.Tensor, tf.Tensor, tf.Tensor, tf.Tensor]: # State based - o_tm1_feed = e_tm1["env_state"] - o_t_feed = e_t["env_state"] + o_tm1_feed = e_tm1["s_t"] + o_t_feed = e_t["s_t"] a_tm1_feed = tf.stack([x for x in a_tm1.values()], 1) a_t_feed = tf.stack([x for x in a_t.values()], 1) return o_tm1_feed, o_t_feed, a_tm1_feed, a_t_feed @@ -1268,7 +1268,8 @@ def _forward(self, inputs: Any) -> None: # Get dpg Q values. obs_comb, _ = train_utils.combine_dim(target_obs_trans_feed) act_comb, _ = train_utils.combine_dim(dpg_actions_feed) - dpg_q_values = self._critic_networks[agent_key](obs_comb, act_comb) + dpg_actions_comb, _ = train_utils.combine_dim(dpg_actions) + dpg_q_values = tf.squeeze(self._critic_networks[agent_key](obs_comb, act_comb)) # Actor loss. If clipping is true use dqda clipping and clip the norm. # dpg_q_values = tf.squeeze(dpg_q_values, axis=-1) # [B] @@ -1276,14 +1277,21 @@ def _forward(self, inputs: Any) -> None: dqda_clipping = 1.0 if self._max_gradient_norm is not None else None clip_norm = True if self._max_gradient_norm is not None else False + print("dpg_q_values: ", dpg_q_values.shape) + print("dpg_actions_comb: ", dpg_actions_comb.shape) + policy_loss = losses.dpg( dpg_q_values, - act_comb, + dpg_actions_comb, tape=tape, dqda_clipping=dqda_clipping, clip_norm=clip_norm, ) + print("policy_loss: ", policy_loss.shape) self.policy_losses[agent] = tf.reduce_mean(policy_loss, axis=0) + print("policy_loss reduced: ", self.policy_losses[agent].shape) + exit() + self.tape = tape # Backward pass that calculates gradients and updates network. @@ -1641,8 +1649,8 @@ def _get_critic_feed( ) -> Tuple[tf.Tensor, tf.Tensor, tf.Tensor, tf.Tensor]: # State based - obs_trans_feed = extras["env_state"] - target_obs_trans_feed = extras["env_state"] + obs_trans_feed = extras["s_t"] + target_obs_trans_feed = extras["s_t"] action_feed = tf.stack([x for x in actions.values()], -1) target_actions_feed = tf.stack([x for x in target_actions.values()], -1) return obs_trans_feed, target_obs_trans_feed, action_feed, target_actions_feed From 8b955c0f6127289c2a3d465ced9fff057a2b9e37 Mon Sep 17 00:00:00 2001 From: Kevin Eloff Date: Mon, 24 May 2021 11:47:04 +0200 Subject: [PATCH 056/188] feat: loss masking --- examples/debugging_envs/run_recurrent_dial.py | 6 ++---- mava/systems/tf/dial/__init__.py | 4 ++-- mava/systems/tf/dial/execution.py | 11 ++-------- mava/systems/tf/dial/system.py | 4 ++-- mava/systems/tf/dial/training.py | 21 ++++++++++++------- 5 files changed, 22 insertions(+), 24 deletions(-) diff --git a/examples/debugging_envs/run_recurrent_dial.py b/examples/debugging_envs/run_recurrent_dial.py index e415bce53..72f593e0f 100644 --- a/examples/debugging_envs/run_recurrent_dial.py +++ b/examples/debugging_envs/run_recurrent_dial.py @@ -35,8 +35,6 @@ epsilon_greedy_action_selector, ) from mava.systems.tf import dial -from mava.systems.tf.dial.execution import DIALExecutor -from mava.systems.tf.dial.training import DIALTrainer # from mava.systems.tf.madqn.execution import MADQNRecurrentCommExecutor # from mava.systems.tf.madqn.training import RecurrentCommMADQNTrainer @@ -162,8 +160,8 @@ def main(_: Any) -> None: network_factory=network_factory, logger_factory=logger_factory, num_executors=2, - trainer_fn=DIALTrainer, - executor_fn=DIALExecutor, + trainer_fn=dial.DIALSwitchTrainer, + executor_fn=dial.DIALSwitchExecutor, # trainer_fn=RecurrentCommMADQNTrainer, # executor_fn=MADQNRecurrentCommExecutor, exploration_scheduler_fn=LinearExplorationScheduler, diff --git a/mava/systems/tf/dial/__init__.py b/mava/systems/tf/dial/__init__.py index 9a55ca0fb..dbfea7e80 100644 --- a/mava/systems/tf/dial/__init__.py +++ b/mava/systems/tf/dial/__init__.py @@ -13,6 +13,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -from mava.systems.tf.dial.execution import DIALExecutor +from mava.systems.tf.dial.execution import DIALSwitchExecutor from mava.systems.tf.dial.system import DIAL -from mava.systems.tf.dial.training import DIALTrainer +from mava.systems.tf.dial.training import DIALSwitchTrainer diff --git a/mava/systems/tf/dial/execution.py b/mava/systems/tf/dial/execution.py index ce68e973d..65ff18242 100644 --- a/mava/systems/tf/dial/execution.py +++ b/mava/systems/tf/dial/execution.py @@ -13,14 +13,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -# TODO (Kevin): implement DIAL executor (if required) -# Helper resources -# - single agent generic actors in acme: -# https://github.com/deepmind/acme/blob/master/acme/agents/tf/actors.py -# - single agent custom actor for Impala in acme: -# https://github.com/deepmind/acme/blob/master/acme/agents/tf/impala/acting.py -# - multi-agent generic executors in mava: mava/systems/tf/executors.py - """DIAL executor implementation.""" from typing import Any, Dict, Optional @@ -35,12 +27,13 @@ from mava.systems.tf.madqn.training import MADQNTrainer -class DIALExecutor(MADQNRecurrentCommExecutor): +class DIALSwitchExecutor(MADQNRecurrentCommExecutor): """DIAL executor. An executor based on a recurrent communicating policy for each agent in the system which takes non-batched observations and outputs non-batched actions. It also allows adding experiences to replay and updating the weights from the policy on the learner. + Note: this executor is specific to switch game env. """ def __init__( diff --git a/mava/systems/tf/dial/system.py b/mava/systems/tf/dial/system.py index a6bb1b60b..3009b2147 100644 --- a/mava/systems/tf/dial/system.py +++ b/mava/systems/tf/dial/system.py @@ -13,7 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -"""Defines the MADQN system class.""" +"""Defines the DIAL system class.""" import functools from typing import Any, Callable, Dict, Optional, Type @@ -115,7 +115,7 @@ def __init__( target_update_period: int = 100, executor_variable_update_period: int = 1000, max_executor_steps: int = None, - checkpoint: bool = True, + checkpoint: bool = False, checkpoint_subpath: str = "~/mava/", logger_config: Dict = {}, train_loop_fn: Callable = ParallelEnvironmentLoop, diff --git a/mava/systems/tf/dial/training.py b/mava/systems/tf/dial/training.py index d8f29ae3d..59d5de581 100644 --- a/mava/systems/tf/dial/training.py +++ b/mava/systems/tf/dial/training.py @@ -33,10 +33,11 @@ from mava.systems.tf.madqn.training import RecurrentCommMADQNTrainer -class DIALTrainer(RecurrentCommMADQNTrainer): - """Recurrent Comm DIAL trainer. - This is the trainer component of a MADQN system. IE it takes a dataset as input +class DIALSwitchTrainer(RecurrentCommMADQNTrainer): + """Recurrent Comm DIAL Switch trainer. + This is the trainer component of a DIAL system. IE it takes a dataset as input and implements update functionality to learn from this dataset. + Note: this trainer is specific to switch game env. """ def __init__( @@ -94,14 +95,17 @@ def _forward(self, inputs: Any) -> None: core_message = tree.map_structure( lambda s: s[:, 0, :], inputs.data.extras["core_messages"] ) + T = actions[self._agents[0]].shape[0] + + # Use fact that end of episode always has the reward to + # find episode lengths. This is used to mask loss. + ep_end = tf.argmax(tf.math.abs(rewards[self._agents[0]]), axis=0) with tf.GradientTape(persistent=True) as tape: q_network_losses: Dict[str, NestedArray] = { agent: {"q_value_loss": tf.zeros(())} for agent in self._agents } - T = actions[self._agents[0]].shape[0] - state = {agent: core_state[agent][0] for agent in self._agents} target_state = {agent: core_state[agent][0] for agent in self._agents} @@ -139,7 +143,7 @@ def _forward(self, inputs: Any) -> None: target_state[agent], target_channel[agent], ) - print(m.shape) + target_state[agent] = s target_message[agent] = tf.math.multiply( m, observations[agent].observation[t][:, :1] @@ -150,7 +154,7 @@ def _forward(self, inputs: Any) -> None: state[agent], channel[agent], ) - print("m2 ", m.shape) + state[agent] = s message[agent] = tf.math.multiply( m, observations[agent].observation[t - 1][:, :1] @@ -162,8 +166,11 @@ def _forward(self, inputs: Any) -> None: rewards[agent][t - 1], discount * discounts[agent][t], q_targ, + # q_targ*(ep_end <= t), # mask last episode ) + # Index loss (mask ended episodes) + loss = tf.reduce_mean(loss[ep_end <= t]) loss = tf.reduce_mean(loss) q_network_losses[agent]["q_value_loss"] += loss From e243276f7258b52689bee68eb0228bbab126e4a1 Mon Sep 17 00:00:00 2001 From: Kevin Eloff Date: Mon, 24 May 2021 12:02:57 +0200 Subject: [PATCH 057/188] refactoring --- .../run_recurrent_dial_spread.py | 191 ------------------ mava/components/tf/networks/__init__.py | 1 - mava/components/tf/networks/dial.py | 105 ---------- mava/systems/tf/dial/system.py | 6 +- mava/systems/tf/dial/training.py | 4 +- 5 files changed, 5 insertions(+), 302 deletions(-) delete mode 100644 examples/debugging_envs/run_recurrent_dial_spread.py delete mode 100644 mava/components/tf/networks/dial.py diff --git a/examples/debugging_envs/run_recurrent_dial_spread.py b/examples/debugging_envs/run_recurrent_dial_spread.py deleted file mode 100644 index ac67b88c3..000000000 --- a/examples/debugging_envs/run_recurrent_dial_spread.py +++ /dev/null @@ -1,191 +0,0 @@ -# python3 -# Copyright 2021 [...placeholder...]. All rights reserved. -# -# 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 -# -# http://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. - -"""Example running DIAL""" -import functools -from datetime import datetime -from typing import Any, Dict, Mapping, Sequence, Union - -import launchpad as lp -import numpy as np -import tensorflow as tf -from absl import app, flags -from acme import types -from acme.tf import utils as tf2_utils -from acme.wrappers.gym_wrapper import _convert_to_spec -from gym import spaces -from launchpad.nodes.python.local_multi_processing import PythonProcess - -from mava import specs as mava_specs -from mava.components.tf.networks import DIALPolicy -from mava.systems.tf import dial -from mava.utils import lp_utils -from mava.utils.environments import debugging_utils -from mava.utils.loggers import logger_utils - -FLAGS = flags.FLAGS -flags.DEFINE_string( - "env_name", - "simple_spread", - "Debugging environment name (str).", -) -flags.DEFINE_string( - "action_space", - "discrete", - "Environment action space type (str).", -) -flags.DEFINE_string( - "mava_id", - str(datetime.now()), - "Experiment identifier that can be used to continue experiments.", -) -flags.DEFINE_string("base_dir", "~/mava/", "Base dir to store experiments.") - - -# TODO Kevin: Define message head node correctly -def make_networks( - environment_spec: mava_specs.MAEnvironmentSpec, - policy_network_gru_hidden_sizes: Union[Dict[str, int], int] = 128, - policy_network_gru_layers: Union[Dict[str, int], int] = 2, - policy_network_task_mlp_sizes: Union[Dict[str, Sequence], Sequence] = (128,), - policy_network_message_in_mlp_sizes: Union[Dict[str, Sequence], Sequence] = (128,), - policy_network_message_out_mlp_sizes: Union[Dict[str, Sequence], Sequence] = (128,), - policy_network_output_mlp_sizes: Union[Dict[str, Sequence], Sequence] = (128,), - message_size: int = 10, - shared_weights: bool = True, - sigma: float = 0.3, -) -> Mapping[str, types.TensorTransformation]: - """Creates networks used by the agents.""" - specs = environment_spec.get_agent_specs() - # extra_specs = environment_spec.get_extra_specs() - - # Create agent_type specs - if shared_weights: - type_specs = {key.split("_")[0]: specs[key] for key in specs.keys()} - specs = type_specs - - if isinstance(policy_network_gru_hidden_sizes, int): - policy_network_gru_hidden_sizes = { - key: policy_network_gru_hidden_sizes for key in specs.keys() - } - - if isinstance(policy_network_gru_layers, int): - policy_network_gru_layers = { - key: policy_network_gru_layers for key in specs.keys() - } - - if isinstance(policy_network_task_mlp_sizes, Sequence): - policy_network_task_mlp_sizes = { - key: policy_network_task_mlp_sizes for key in specs.keys() - } - - if isinstance(policy_network_message_in_mlp_sizes, Sequence): - policy_network_message_in_mlp_sizes = { - key: policy_network_message_in_mlp_sizes for key in specs.keys() - } - - if isinstance(policy_network_message_out_mlp_sizes, Sequence): - policy_network_message_out_mlp_sizes = { - key: policy_network_message_out_mlp_sizes for key in specs.keys() - } - - if isinstance(policy_network_output_mlp_sizes, Sequence): - policy_network_output_mlp_sizes = { - key: policy_network_output_mlp_sizes for key in specs.keys() - } - - observation_networks = {} - policy_networks = {} - - for key in specs.keys(): - # Create the shared observation network - observation_network = tf2_utils.to_sonnet_module(tf.identity) - - # Create the policy network. - policy_network = DIALPolicy( - action_spec=specs[key].actions, - message_spec=_convert_to_spec( - spaces.Box(-np.inf, np.inf, (message_size,), dtype=np.float32) - ), - gru_hidden_size=policy_network_gru_hidden_sizes[key], - gru_layers=policy_network_gru_layers[key], - task_mlp_size=policy_network_task_mlp_sizes[key], - message_in_mlp_size=policy_network_message_in_mlp_sizes[key], - message_out_mlp_size=policy_network_message_out_mlp_sizes[key], - output_mlp_size=policy_network_output_mlp_sizes[key], - ) - - observation_networks[key] = observation_network - policy_networks[key] = policy_network - - return { - "policies": policy_networks, - "observations": observation_networks, - } - - -def main(_: Any) -> None: - - # environment - environment_factory = lp_utils.partial_kwargs( - debugging_utils.make_environment, - env_name=FLAGS.env_name, - action_space=FLAGS.action_space, - ) - - network_factory = lp_utils.partial_kwargs(make_networks) - - # Checkpointer appends "Checkpoints" to checkpoint_dir - checkpoint_dir = f"{FLAGS.base_dir}/{FLAGS.mava_id}" - - # loggers - log_every = 10 - logger_factory = functools.partial( - logger_utils.make_logger, - directory=FLAGS.base_dir, - to_terminal=True, - to_tensorboard=True, - time_stamp=FLAGS.mava_id, - time_delta=log_every, - ) - - program = dial.DIAL( - environment_factory=environment_factory, - network_factory=network_factory, - logger_factory=logger_factory, - num_executors=10, - batch_size=32, - sequence_length=100, - checkpoint_subpath=checkpoint_dir, - ).build() - - # launch - gpu_id = -1 - env_vars = {"CUDA_VISIBLE_DEVICES": str(gpu_id)} - local_resources = { - "trainer": [], - "evaluator": PythonProcess(env=env_vars), - "executor": PythonProcess(env=env_vars), - } - lp.launch( - program, - lp.LaunchType.LOCAL_MULTI_PROCESSING, - terminal="current_terminal", - local_resources=local_resources, - ) - - -if __name__ == "__main__": - app.run(main) diff --git a/mava/components/tf/networks/__init__.py b/mava/components/tf/networks/__init__.py index fcb25d850..12bfe9e2b 100644 --- a/mava/components/tf/networks/__init__.py +++ b/mava/components/tf/networks/__init__.py @@ -16,7 +16,6 @@ from mava.components.tf.networks.additive import AdditiveMixingNetwork from mava.components.tf.networks.communication import CommunicationNetwork -from mava.components.tf.networks.dial import DIALPolicy from mava.components.tf.networks.epsilon_greedy import epsilon_greedy_action_selector from mava.components.tf.networks.fingerprints import ObservationNetworkWithFingerprint from mava.components.tf.networks.monotonic import MonotonicMixingNetwork diff --git a/mava/components/tf/networks/dial.py b/mava/components/tf/networks/dial.py deleted file mode 100644 index 71b2d79ff..000000000 --- a/mava/components/tf/networks/dial.py +++ /dev/null @@ -1,105 +0,0 @@ -# Copyright 2021 [...placeholder...]. All rights reserved. -# -# 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 -# -# http://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. - -from typing import Optional, Sequence - -import sonnet as snt -import tensorflow as tf -from acme.specs import EnvironmentSpec -from acme.tf import networks - - -class DIALPolicy(snt.RNNCore): - def __init__( - self, - action_spec: EnvironmentSpec, - message_spec: EnvironmentSpec, - gru_hidden_size: int, - gru_layers: int, - task_mlp_size: Sequence, - message_in_mlp_size: Sequence, - message_out_mlp_size: Sequence, - output_mlp_size: Sequence, - name: str = None, - ): - super(DIALPolicy, self).__init__(name=name) - self._action_spec = action_spec - self._action_dim = self._action_spec.num_values - self._message_spec = message_spec - self._message_dim = self._message_spec.shape[0] - - self._gru_hidden_size = gru_hidden_size - - self.task_mlp = networks.LayerNormMLP( - task_mlp_size, - activate_final=True, - ) - - self.message_in_mlp = networks.LayerNormMLP( - message_in_mlp_size, - activate_final=True, - ) - - self.gru = snt.GRU(gru_hidden_size) - - self.output_mlp = snt.Sequential( - [ - networks.LayerNormMLP(output_mlp_size, activate_final=True), - networks.NearZeroInitializedLinear(self._action_dim), - networks.TanhToSpec(self._action_spec), - ] - ) - - self.message_out_mlp = snt.Sequential( - [ - networks.LayerNormMLP(message_out_mlp_size), - networks.LayerNormMLP([self._message_dim]), - # TODO (dries): Why does this TanhToSpec break things? - # Is it the -inf -> inf bounds? - # Also should NearZeroInitializedLinear be the final layer? - # # networks.TanhToSpec(self._message_spec), - # TODO (Arnu): might need to implement more stable version. - ] - ) - - self._gru_layers = gru_layers - - def initial_state(self, batch_size: int = 1) -> snt.Module: - return self.gru.initial_state(batch_size) - - def initial_message(self, batch_size: int = 1) -> snt.Module: - return tf.zeros([batch_size, self._message_dim], dtype=tf.float32) - - def __call__( - self, - x: snt.Module, - state: Optional[snt.Module] = None, - message: Optional[snt.Module] = None, - ) -> snt.Module: - - if state is None: - state = self.initial_state() - if message is None: - message = tf.zeros((x.shape[0], self._message_dim), dtype=tf.float32) - - x_task = self.task_mlp(x) - x_message = self.message_in_mlp(message) - - x = tf.concat([x_task, x_message], axis=1) - - x, state = self.gru(x, state) - - x_output = self.output_mlp(x) - x_message = self.message_out_mlp(x) - return (x_output, x_message), state diff --git a/mava/systems/tf/dial/system.py b/mava/systems/tf/dial/system.py index 3009b2147..4de921c7c 100644 --- a/mava/systems/tf/dial/system.py +++ b/mava/systems/tf/dial/system.py @@ -105,12 +105,12 @@ def __init__( prefetch_size: int = 4, min_replay_size: int = 1000, max_replay_size: int = 1000000, - samples_per_insert: Optional[float] = 32.0, + samples_per_insert: Optional[float] = 4.0, n_step: int = 5, - sequence_length: int = 20, + sequence_length: int = 6, period: int = 20, clipping: bool = True, - discount: float = 0.99, + discount: float = 1, optimizer: snt.Optimizer = snt.optimizers.Adam(learning_rate=1e-4), target_update_period: int = 100, executor_variable_update_period: int = 1000, diff --git a/mava/systems/tf/dial/training.py b/mava/systems/tf/dial/training.py index 59d5de581..159bbd610 100644 --- a/mava/systems/tf/dial/training.py +++ b/mava/systems/tf/dial/training.py @@ -99,7 +99,7 @@ def _forward(self, inputs: Any) -> None: # Use fact that end of episode always has the reward to # find episode lengths. This is used to mask loss. - ep_end = tf.argmax(tf.math.abs(rewards[self._agents[0]]), axis=0) + # ep_end = tf.argmax(tf.math.abs(rewards[self._agents[0]]), axis=0) with tf.GradientTape(persistent=True) as tape: q_network_losses: Dict[str, NestedArray] = { @@ -170,7 +170,7 @@ def _forward(self, inputs: Any) -> None: ) # Index loss (mask ended episodes) - loss = tf.reduce_mean(loss[ep_end <= t]) + # loss = tf.reduce_mean(loss[ep_end <= t]) loss = tf.reduce_mean(loss) q_network_losses[agent]["q_value_loss"] += loss From f2f035cbaf6811b8545b1c6ab1326d783a106389 Mon Sep 17 00:00:00 2001 From: Kevin Eloff Date: Mon, 24 May 2021 12:25:45 +0200 Subject: [PATCH 058/188] fix: mypy --- mava/systems/tf/qmix/builder.py | 2 ++ mava/systems/tf/vdn/builder.py | 2 ++ 2 files changed, 4 insertions(+) diff --git a/mava/systems/tf/qmix/builder.py b/mava/systems/tf/qmix/builder.py index ffbb27ec6..4d4806313 100644 --- a/mava/systems/tf/qmix/builder.py +++ b/mava/systems/tf/qmix/builder.py @@ -21,6 +21,7 @@ from acme.utils import counting from mava import core, types +from mava.components.tf.modules.communication import BaseCommunicationModule from mava.components.tf.modules.exploration.exploration_scheduling import ( LinearExplorationScheduler, ) @@ -89,6 +90,7 @@ def make_trainer( dataset: Iterator[reverb.ReplaySample], counter: Optional[counting.Counter] = None, logger: Optional[types.NestedLogger] = None, + communication_module: Optional[BaseCommunicationModule] = None, ) -> core.Trainer: """Creates an instance of the trainer. Args: diff --git a/mava/systems/tf/vdn/builder.py b/mava/systems/tf/vdn/builder.py index 916150ebb..972aa9272 100644 --- a/mava/systems/tf/vdn/builder.py +++ b/mava/systems/tf/vdn/builder.py @@ -21,6 +21,7 @@ from acme.utils import counting from mava import core, types +from mava.components.tf.modules.communication import BaseCommunicationModule from mava.components.tf.modules.exploration.exploration_scheduling import ( LinearExplorationScheduler, ) @@ -90,6 +91,7 @@ def make_trainer( dataset: Iterator[reverb.ReplaySample], counter: Optional[counting.Counter] = None, logger: Optional[types.NestedLogger] = None, + communication_module: Optional[BaseCommunicationModule] = None, ) -> core.Trainer: """Creates an instance of the trainer. Args: From 3e9875c097a63d3f974f80f266099685545b38e9 Mon Sep 17 00:00:00 2001 From: Dries Date: Mon, 24 May 2021 12:49:59 +0200 Subject: [PATCH 059/188] Update trainers. --- mava/systems/tf/mad4pg/training.py | 9 ++++++++- mava/systems/tf/maddpg/training.py | 29 ++++++++++++++--------------- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/mava/systems/tf/mad4pg/training.py b/mava/systems/tf/mad4pg/training.py index c70a50373..c2b123776 100644 --- a/mava/systems/tf/mad4pg/training.py +++ b/mava/systems/tf/mad4pg/training.py @@ -601,6 +601,13 @@ def _forward(self, inputs: Any) -> None: dpg_actions = tf2_utils.batch_to_sequence(outputs) + # Note (dries): This is done to so that losses.dpg can verify using gradient.tape that there is a + # gradient relationship between dpg_q_values and dpg_actions_comb. + dpg_actions_comb, dim = train_utils.combine_dim(dpg_actions) + + # Note (dries): This seemingly useless line is is important! Don't remove it. See above note. + dpg_actions = train_utils.extract_dim(dpg_actions_comb, dim) + # Get dpg actions dpg_actions_feed = self._get_dpg_feed( target_actions, dpg_actions, agent @@ -618,7 +625,7 @@ def _forward(self, inputs: Any) -> None: policy_loss = losses.dpg( dpg_q_values, - act_comb, + dpg_actions_comb, tape=tape, dqda_clipping=dqda_clipping, clip_norm=clip_norm, diff --git a/mava/systems/tf/maddpg/training.py b/mava/systems/tf/maddpg/training.py index 8e6e0a027..6d3e17662 100644 --- a/mava/systems/tf/maddpg/training.py +++ b/mava/systems/tf/maddpg/training.py @@ -372,6 +372,7 @@ def _forward(self, inputs: Any) -> None: dqda_clipping=dqda_clipping, clip_norm=clip_norm, ) + self.policy_losses[agent] = tf.reduce_mean(policy_loss, axis=0) self.tape = tape @@ -631,8 +632,8 @@ def _get_dpg_feed( # Note (dries): Copy has to be made because the input # variables cannot be changed. dpg_a_t_feed = copy.copy(a_t) - dpg_a_t_feed[agent] = dpg_a_t tree.map_structure(tf.stop_gradient, dpg_a_t_feed) + dpg_a_t_feed[agent] = dpg_a_t return dpg_a_t_feed @@ -755,8 +756,8 @@ def _get_dpg_feed( # Note (dries): Copy has to be made because the input # variables cannot be changed. dpg_a_t_feed = copy.copy(a_t) - dpg_a_t_feed[agent] = dpg_a_t tree.map_structure(tf.stop_gradient, dpg_a_t_feed) + dpg_a_t_feed[agent] = dpg_a_t return dpg_a_t_feed @@ -864,8 +865,8 @@ def _get_dpg_feed( # Note (dries): Copy has to be made because the input # variables cannot be changed. dpg_a_t_feed = copy.copy(a_t) - dpg_a_t_feed[agent] = dpg_a_t tree.map_structure(tf.stop_gradient, dpg_a_t_feed) + dpg_a_t_feed[agent] = dpg_a_t return dpg_a_t_feed @@ -1261,6 +1262,13 @@ def _forward(self, inputs: Any) -> None: dpg_actions = tf2_utils.batch_to_sequence(outputs) + # Note (dries): This is done to so that losses.dpg can verify using gradient.tape that there is a + # gradient relationship between dpg_q_values and dpg_actions_comb. + dpg_actions_comb, dim = train_utils.combine_dim(dpg_actions) + + # Note (dries): This seemingly useless line is is important! Don't remove it. See above note. + dpg_actions = train_utils.extract_dim(dpg_actions_comb, dim) + # Get dpg actions dpg_actions_feed = self._get_dpg_feed( target_actions, dpg_actions, agent @@ -1269,18 +1277,13 @@ def _forward(self, inputs: Any) -> None: # Get dpg Q values. obs_comb, _ = train_utils.combine_dim(target_obs_trans_feed) act_comb, _ = train_utils.combine_dim(dpg_actions_feed) - dpg_actions_comb, _ = train_utils.combine_dim(dpg_actions) + dpg_q_values = tf.squeeze(self._critic_networks[agent_key](obs_comb, act_comb)) # Actor loss. If clipping is true use dqda clipping and clip the norm. - # dpg_q_values = tf.squeeze(dpg_q_values, axis=-1) # [B] - dqda_clipping = 1.0 if self._max_gradient_norm is not None else None clip_norm = True if self._max_gradient_norm is not None else False - print("dpg_q_values: ", dpg_q_values.shape) - print("dpg_actions_comb: ", dpg_actions_comb.shape) - policy_loss = losses.dpg( dpg_q_values, dpg_actions_comb, @@ -1288,11 +1291,7 @@ def _forward(self, inputs: Any) -> None: dqda_clipping=dqda_clipping, clip_norm=clip_norm, ) - print("policy_loss: ", policy_loss.shape) self.policy_losses[agent] = tf.reduce_mean(policy_loss, axis=0) - print("policy_loss reduced: ", self.policy_losses[agent].shape) - exit() - self.tape = tape # Backward pass that calculates gradients and updates network. @@ -1553,11 +1552,11 @@ def _get_dpg_feed( # Note (dries): Copy has to be made because the input # variables cannot be changed. dpg_actions_feed = copy.copy(actions) + tree.map_structure(tf.stop_gradient, dpg_actions_feed) dpg_actions_feed[agent] = dpg_actions dpg_actions_feed = tf.squeeze( tf.stack([x for x in dpg_actions_feed.values()], -1) ) - tree.map_structure(tf.stop_gradient, dpg_actions_feed) return dpg_actions_feed @@ -1666,9 +1665,9 @@ def _get_dpg_feed( # Note (dries): Copy has to be made because the input # variables cannot be changed. dpg_actions_feed = copy.copy(actions) + tree.map_structure(tf.stop_gradient, dpg_actions_feed) dpg_actions_feed[agent] = dpg_actions dpg_actions_feed = tf.squeeze( tf.stack([x for x in dpg_actions_feed.values()], -1) ) - tree.map_structure(tf.stop_gradient, dpg_actions_feed) return dpg_actions_feed From e777089572927e6182375e357e221a7f69a746b2 Mon Sep 17 00:00:00 2001 From: Kevin Eloff Date: Mon, 24 May 2021 14:09:17 +0200 Subject: [PATCH 060/188] feat: loss masking --- examples/debugging_envs/run_recurrent_dial.py | 2 +- mava/systems/tf/dial/system.py | 2 +- mava/systems/tf/dial/training.py | 23 +++++++++++++++---- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/examples/debugging_envs/run_recurrent_dial.py b/examples/debugging_envs/run_recurrent_dial.py index 72f593e0f..23264cdaf 100644 --- a/examples/debugging_envs/run_recurrent_dial.py +++ b/examples/debugging_envs/run_recurrent_dial.py @@ -168,7 +168,7 @@ def main(_: Any) -> None: communication_module=BroadcastedCommunication, sequence_length=6, epsilon_min=0.05, - epsilon_decay=5e-4, + epsilon_decay=1e-2, # optimizer=snt.optimizers.Adam(learning_rate=1e-4), optimizer=snt.optimizers.RMSProp(learning_rate=1e-4, momentum=0.95), checkpoint_subpath=checkpoint_dir, diff --git a/mava/systems/tf/dial/system.py b/mava/systems/tf/dial/system.py index 4de921c7c..00b62284d 100644 --- a/mava/systems/tf/dial/system.py +++ b/mava/systems/tf/dial/system.py @@ -96,7 +96,7 @@ def __init__( ] = LinearExplorationScheduler, replay_stabilisation_fn: Optional[Type[FingerPrintStabalisation]] = None, epsilon_min: float = 0.05, - epsilon_decay: float = 1e-4, + epsilon_decay: float = 1e-3, num_executors: int = 1, num_caches: int = 0, environment_spec: mava_specs.MAEnvironmentSpec = None, diff --git a/mava/systems/tf/dial/training.py b/mava/systems/tf/dial/training.py index 159bbd610..10732930e 100644 --- a/mava/systems/tf/dial/training.py +++ b/mava/systems/tf/dial/training.py @@ -99,7 +99,7 @@ def _forward(self, inputs: Any) -> None: # Use fact that end of episode always has the reward to # find episode lengths. This is used to mask loss. - # ep_end = tf.argmax(tf.math.abs(rewards[self._agents[0]]), axis=0) + ep_end = tf.argmax(tf.math.abs(rewards[self._agents[0]]), axis=0) with tf.GradientTape(persistent=True) as tape: q_network_losses: Dict[str, NestedArray] = { @@ -160,19 +160,34 @@ def _forward(self, inputs: Any) -> None: m, observations[agent].observation[t - 1][:, :1] ) + # Mask target + q_targ = tf.concat( + [ + [q_targ[i]] + if t <= ep_end[i] + else [tf.zeros_like(q_targ[i])] + for i in range(q_targ.shape[0]) + ], + axis=0, + ) + loss, _ = trfl.qlearning( q, actions[agent][t - 1], rewards[agent][t - 1], discount * discounts[agent][t], q_targ, - # q_targ*(ep_end <= t), # mask last episode ) # Index loss (mask ended episodes) - # loss = tf.reduce_mean(loss[ep_end <= t]) - loss = tf.reduce_mean(loss) + if not tf.reduce_any(t - 1 <= ep_end): + continue + + loss = tf.reduce_mean(loss[t - 1 <= ep_end]) + # loss = tf.reduce_mean(loss) q_network_losses[agent]["q_value_loss"] += loss + # print(q_network_losses['agent_0']) self._q_network_losses = q_network_losses self.tape = tape + # {}.t From 6fec483166989921d768b94ea980753816b25963 Mon Sep 17 00:00:00 2001 From: Kevin Eloff Date: Mon, 24 May 2021 14:23:17 +0200 Subject: [PATCH 061/188] feat: channel capacity 1 --- examples/debugging_envs/run_recurrent_dial.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/debugging_envs/run_recurrent_dial.py b/examples/debugging_envs/run_recurrent_dial.py index 23264cdaf..a6fb93ef2 100644 --- a/examples/debugging_envs/run_recurrent_dial.py +++ b/examples/debugging_envs/run_recurrent_dial.py @@ -64,7 +64,7 @@ def make_networks( environment_spec: mava_specs.MAEnvironmentSpec, - message_size: int = 10, + message_size: int = 1, shared_weights: bool = True, ) -> Mapping[str, types.TensorTransformation]: """Creates networks used by the agents.""" @@ -168,7 +168,7 @@ def main(_: Any) -> None: communication_module=BroadcastedCommunication, sequence_length=6, epsilon_min=0.05, - epsilon_decay=1e-2, + epsilon_decay=5e-4, # optimizer=snt.optimizers.Adam(learning_rate=1e-4), optimizer=snt.optimizers.RMSProp(learning_rate=1e-4, momentum=0.95), checkpoint_subpath=checkpoint_dir, From 2b9b0a64913d3dfa93293ae441d51a7eaaf31ebf Mon Sep 17 00:00:00 2001 From: Kale-ab Date: Mon, 24 May 2021 17:21:01 +0200 Subject: [PATCH 062/188] feat: Split optims by agent type. --- mava/systems/tf/mad4pg/training.py | 96 ++++++++-------- mava/systems/tf/maddpg/builder.py | 14 ++- mava/systems/tf/maddpg/training.py | 124 ++++++++++----------- mava/wrappers/system_trainer_statistics.py | 6 +- 4 files changed, 124 insertions(+), 116 deletions(-) diff --git a/mava/systems/tf/mad4pg/training.py b/mava/systems/tf/mad4pg/training.py index c70a50373..33e5875e9 100644 --- a/mava/systems/tf/mad4pg/training.py +++ b/mava/systems/tf/mad4pg/training.py @@ -52,8 +52,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizer: snt.Optimizer, - critic_optimizer: snt.Optimizer, + policy_optimizers: Dict[str, snt.Optimizer], + critic_optimizers: Dict[str, snt.Optimizer], discount: float, target_averaging: bool, target_update_period: int, @@ -83,8 +83,8 @@ def __init__( observation_network: an optional online network to process observations before the policy and the critic. target_observation_network: the target observation network. - policy_optimizer: the optimizer to be applied to the DPG (policy) loss. - critic_optimizer: the optimizer to be applied to the critic loss. + policy_optimizers: the optimizer to be applied to the DPG (policy) loss. + critic_optimizers: the optimizer to be applied to the critic loss. clipping: whether to clip gradients by global norm. counter: counter object used to keep track of steps. logger: logger object to be used by learner. @@ -98,8 +98,8 @@ def __init__( critic_networks=critic_networks, target_policy_networks=target_policy_networks, target_critic_networks=target_critic_networks, - policy_optimizer=policy_optimizer, - critic_optimizer=critic_optimizer, + policy_optimizers=policy_optimizers, + critic_optimizers=critic_optimizers, discount=discount, target_averaging=target_averaging, target_update_period=target_update_period, @@ -203,8 +203,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizer: snt.Optimizer, - critic_optimizer: snt.Optimizer, + policy_optimizers: Dict[str, snt.Optimizer], + critic_optimizers: Dict[str, snt.Optimizer], discount: float, target_averaging: bool, target_update_period: int, @@ -234,8 +234,8 @@ def __init__( observation_network: an optional online network to process observations before the policy and the critic. target_observation_network: the target observation network. - policy_optimizer: the optimizer to be applied to the DPG (policy) loss. - critic_optimizer: the optimizer to be applied to the critic loss. + policy_optimizers: the optimizer to be applied to the DPG (policy) loss. + critic_optimizers: the optimizer to be applied to the critic loss. clipping: whether to clip gradients by global norm. counter: counter object used to keep track of steps. logger: logger object to be used by learner. @@ -257,8 +257,8 @@ def __init__( observation_networks=observation_networks, target_observation_networks=target_observation_networks, shared_weights=shared_weights, - policy_optimizer=policy_optimizer, - critic_optimizer=critic_optimizer, + policy_optimizers=policy_optimizers, + critic_optimizers=critic_optimizers, max_gradient_norm=max_gradient_norm, counter=counter, logger=logger, @@ -281,8 +281,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizer: snt.Optimizer, - critic_optimizer: snt.Optimizer, + policy_optimizers: Dict[str, snt.Optimizer], + critic_optimizers: Dict[str, snt.Optimizer], discount: float, target_averaging: bool, target_update_period: int, @@ -312,8 +312,8 @@ def __init__( observation_network: an optional online network to process observations before the policy and the critic. target_observation_network: the target observation network. - policy_optimizer: the optimizer to be applied to the DPG (policy) loss. - critic_optimizer: the optimizer to be applied to the critic loss. + policy_optimizers: the optimizer to be applied to the DPG (policy) loss. + critic_optimizers: the optimizer to be applied to the critic loss. clipping: whether to clip gradients by global norm. counter: counter object used to keep track of steps. logger: logger object to be used by learner. @@ -335,8 +335,8 @@ def __init__( observation_networks=observation_networks, target_observation_networks=target_observation_networks, shared_weights=shared_weights, - policy_optimizer=policy_optimizer, - critic_optimizer=critic_optimizer, + policy_optimizers=policy_optimizers, + critic_optimizers=critic_optimizers, max_gradient_norm=max_gradient_norm, counter=counter, logger=logger, @@ -359,8 +359,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizer: snt.Optimizer, - critic_optimizer: snt.Optimizer, + policy_optimizers: Dict[str, snt.Optimizer], + critic_optimizers: Dict[str, snt.Optimizer], discount: float, target_averaging: bool, target_update_period: int, @@ -390,8 +390,8 @@ def __init__( observation_network: an optional online network to process observations before the policy and the critic. target_observation_network: the target observation network. - policy_optimizer: the optimizer to be applied to the DPG (policy) loss. - critic_optimizer: the optimizer to be applied to the critic loss. + policy_optimizers: the optimizer to be applied to the DPG (policy) loss. + critic_optimizers: the optimizer to be applied to the critic loss. clipping: whether to clip gradients by global norm. counter: counter object used to keep track of steps. logger: logger object to be used by learner. @@ -413,8 +413,8 @@ def __init__( observation_networks=observation_networks, target_observation_networks=target_observation_networks, shared_weights=shared_weights, - policy_optimizer=policy_optimizer, - critic_optimizer=critic_optimizer, + policy_optimizers=policy_optimizers, + critic_optimizers=critic_optimizers, max_gradient_norm=max_gradient_norm, counter=counter, logger=logger, @@ -437,8 +437,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizer: snt.Optimizer, - critic_optimizer: snt.Optimizer, + policy_optimizers: Dict[str, snt.Optimizer], + critic_optimizers: Dict[str, snt.Optimizer], discount: float, target_averaging: bool, target_update_period: int, @@ -469,8 +469,8 @@ def __init__( observation_network: an optional online network to process observations before the policy and the critic. target_observation_network: the target observation network. - policy_optimizer: the optimizer to be applied to the DPG (policy) loss. - critic_optimizer: the optimizer to be applied to the critic loss. + policy_optimizers: the optimizer to be applied to the DPG (policy) loss. + critic_optimizers: the optimizer to be applied to the critic loss. clipping: whether to clip gradients by global norm. counter: counter object used to keep track of steps. logger: logger object to be used by learner. @@ -492,8 +492,8 @@ def __init__( observation_networks=observation_networks, target_observation_networks=target_observation_networks, shared_weights=shared_weights, - policy_optimizer=policy_optimizer, - critic_optimizer=critic_optimizer, + policy_optimizers=policy_optimizers, + critic_optimizers=critic_optimizers, max_gradient_norm=max_gradient_norm, counter=counter, logger=logger, @@ -643,8 +643,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizer: snt.Optimizer, - critic_optimizer: snt.Optimizer, + policy_optimizers: Dict[str, snt.Optimizer], + critic_optimizers: Dict[str, snt.Optimizer], discount: float, target_averaging: bool, target_update_period: int, @@ -675,8 +675,8 @@ def __init__( observation_network: an optional online network to process observations before the policy and the critic. target_observation_network: the target observation network. - policy_optimizer: the optimizer to be applied to the DPG (policy) loss. - critic_optimizer: the optimizer to be applied to the critic loss. + policy_optimizers: the optimizer to be applied to the DPG (policy) loss. + critic_optimizers: the optimizer to be applied to the critic loss. clipping: whether to clip gradients by global norm. counter: counter object used to keep track of steps. logger: logger object to be used by learner. @@ -698,8 +698,8 @@ def __init__( observation_networks=observation_networks, target_observation_networks=target_observation_networks, shared_weights=shared_weights, - policy_optimizer=policy_optimizer, - critic_optimizer=critic_optimizer, + policy_optimizers=policy_optimizers, + critic_optimizers=critic_optimizers, max_gradient_norm=max_gradient_norm, counter=counter, logger=logger, @@ -725,8 +725,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizer: snt.Optimizer, - critic_optimizer: snt.Optimizer, + policy_optimizers: Dict[str, snt.Optimizer], + critic_optimizers: Dict[str, snt.Optimizer], discount: float, target_averaging: bool, target_update_period: int, @@ -757,8 +757,8 @@ def __init__( observation_network: an optional online network to process observations before the policy and the critic. target_observation_network: the target observation network. - policy_optimizer: the optimizer to be applied to the DPG (policy) loss. - critic_optimizer: the optimizer to be applied to the critic loss. + policy_optimizers: the optimizer to be applied to the DPG (policy) loss. + critic_optimizers: the optimizer to be applied to the critic loss. clipping: whether to clip gradients by global norm. counter: counter object used to keep track of steps. logger: logger object to be used by learner. @@ -780,8 +780,8 @@ def __init__( observation_networks=observation_networks, target_observation_networks=target_observation_networks, shared_weights=shared_weights, - policy_optimizer=policy_optimizer, - critic_optimizer=critic_optimizer, + policy_optimizers=policy_optimizers, + critic_optimizers=critic_optimizers, max_gradient_norm=max_gradient_norm, counter=counter, logger=logger, @@ -807,8 +807,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizer: snt.Optimizer, - critic_optimizer: snt.Optimizer, + policy_optimizers: Dict[str, snt.Optimizer], + critic_optimizers: Dict[str, snt.Optimizer], discount: float, target_averaging: bool, target_update_period: int, @@ -839,8 +839,8 @@ def __init__( observation_network: an optional online network to process observations before the policy and the critic. target_observation_network: the target observation network. - policy_optimizer: the optimizer to be applied to the DPG (policy) loss. - critic_optimizer: the optimizer to be applied to the critic loss. + policy_optimizers: the optimizer to be applied to the DPG (policy) loss. + critic_optimizers: the optimizer to be applied to the critic loss. clipping: whether to clip gradients by global norm. counter: counter object used to keep track of steps. logger: logger object to be used by learner. @@ -862,8 +862,8 @@ def __init__( observation_networks=observation_networks, target_observation_networks=target_observation_networks, shared_weights=shared_weights, - policy_optimizer=policy_optimizer, - critic_optimizer=critic_optimizer, + policy_optimizers=policy_optimizers, + critic_optimizers=critic_optimizers, max_gradient_norm=max_gradient_norm, counter=counter, logger=logger, diff --git a/mava/systems/tf/maddpg/builder.py b/mava/systems/tf/maddpg/builder.py index 1fd2a33d7..3929a42b9 100644 --- a/mava/systems/tf/maddpg/builder.py +++ b/mava/systems/tf/maddpg/builder.py @@ -323,8 +323,16 @@ def make_trainer( target_averaging = self._config.target_averaging target_update_rate = self._config.target_update_rate + # Create optimizers for different agent types. + # TODO(Kale-ab): Allow this to be passed as a system param. + policy_optimizers: Dict[str, snt.Optimizer] = {} + critic_optimizers: Dict[str, snt.Optimizer] = {} + for agent in self._agent_types: + policy_optimizers[agent] = copy.deepcopy(self._config.policy_optimizer) + critic_optimizers[agent] = copy.deepcopy(self._config.critic_optimizer) + # trainer args - trainer_config = { + trainer_config: Dict[str, Any] = { "agents": agents, "agent_types": agent_types, "policy_networks": networks["policies"], @@ -334,8 +342,8 @@ def make_trainer( "target_critic_networks": networks["target_critics"], "target_observation_networks": networks["target_observations"], "shared_weights": shared_weights, - "policy_optimizer": self._config.policy_optimizer, - "critic_optimizer": self._config.critic_optimizer, + "policy_optimizers": policy_optimizers, + "critic_optimizers": critic_optimizers, "max_gradient_norm": max_gradient_norm, "discount": discount, "target_averaging": target_averaging, diff --git a/mava/systems/tf/maddpg/training.py b/mava/systems/tf/maddpg/training.py index f1a35b6f3..89676c09b 100644 --- a/mava/systems/tf/maddpg/training.py +++ b/mava/systems/tf/maddpg/training.py @@ -51,8 +51,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizer: snt.Optimizer, - critic_optimizer: snt.Optimizer, + policy_optimizers: Dict[str, snt.Optimizer], + critic_optimizers: Dict[str, snt.Optimizer], discount: float, target_averaging: bool, target_update_period: int, @@ -86,8 +86,8 @@ def __init__( observation_network: an optional online network to process observations before the policy and the critic. target_observation_network: the target observation network. - policy_optimizer: the optimizer to be applied to the DPG (policy) loss. - critic_optimizer: the optimizer to be applied to the critic loss. + policy_optimizers: the optimizer to be applied to the DPG (policy) loss. + critic_optimizers: the optimizer to be applied to the critic loss. clipping: whether to clip gradients by global norm. counter: counter object used to keep track of steps. logger: logger object to be used by learner. @@ -136,8 +136,8 @@ def __init__( # Create an iterator to go through the dataset. self._iterator = iter(dataset) # pytype: disable=wrong-arg-types - self._critic_optimizer = critic_optimizer - self._policy_optimizer = policy_optimizer + self._critic_optimizers = critic_optimizers + self._policy_optimizers = policy_optimizers # Dictionary with network keys for each agent. self.agent_net_keys = {agent: agent for agent in self._agents} @@ -179,8 +179,8 @@ def __init__( "target_policy": self._target_policy_networks[agent_key], "target_critic": self._target_critic_networks[agent_key], "target_observation": self._target_observation_networks[agent_key], - "policy_optimizer": self._policy_optimizer, - "critic_optimizer": self._critic_optimizer, + "policy_optimizer": self._policy_optimizers, + "critic_optimizer": self._critic_optimizers, "num_steps": self._num_steps, } @@ -412,8 +412,8 @@ def _backward(self) -> None: )[0] # Apply gradients. - self._policy_optimizer.apply(policy_gradients, policy_variables) - self._critic_optimizer.apply(critic_gradients, critic_variables) + self._policy_optimizers[agent_key].apply(policy_gradients, policy_variables) + self._critic_optimizers[agent_key].apply(critic_gradients, critic_variables) train_utils.safe_del(self, "tape") def step(self) -> None: @@ -462,8 +462,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizer: snt.Optimizer, - critic_optimizer: snt.Optimizer, + policy_optimizers: Dict[str, snt.Optimizer], + critic_optimizers: Dict[str, snt.Optimizer], discount: float, target_averaging: bool, target_update_period: int, @@ -493,8 +493,8 @@ def __init__( observation_network: an optional online network to process observations before the policy and the critic. target_observation_network: the target observation network. - policy_optimizer: the optimizer to be applied to the DPG (policy) loss. - critic_optimizer: the optimizer to be applied to the critic loss. + policy_optimizers: the optimizers to be applied to the DPG (policy) loss. + critic_optimizers: the optimizers to be applied to the critic loss. clipping: whether to clip gradients by global norm. counter: counter object used to keep track of steps. logger: logger object to be used by learner. @@ -516,8 +516,8 @@ def __init__( observation_networks=observation_networks, target_observation_networks=target_observation_networks, shared_weights=shared_weights, - policy_optimizer=policy_optimizer, - critic_optimizer=critic_optimizer, + policy_optimizers=policy_optimizers, + critic_optimizers=critic_optimizers, max_gradient_norm=max_gradient_norm, counter=counter, logger=logger, @@ -540,8 +540,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizer: snt.Optimizer, - critic_optimizer: snt.Optimizer, + policy_optimizers: Dict[str, snt.Optimizer], + critic_optimizers: Dict[str, snt.Optimizer], discount: float, target_averaging: bool, target_update_period: int, @@ -571,8 +571,8 @@ def __init__( observation_network: an optional online network to process observations before the policy and the critic. target_observation_network: the target observation network. - policy_optimizer: the optimizer to be applied to the DPG (policy) loss. - critic_optimizer: the optimizer to be applied to the critic loss. + policy_optimizers: the optimizer to be applied to the DPG (policy) loss. + critic_optimizers: the optimizer to be applied to the critic loss. clipping: whether to clip gradients by global norm. counter: counter object used to keep track of steps. logger: logger object to be used by learner. @@ -594,8 +594,8 @@ def __init__( observation_networks=observation_networks, target_observation_networks=target_observation_networks, shared_weights=shared_weights, - policy_optimizer=policy_optimizer, - critic_optimizer=critic_optimizer, + policy_optimizers=policy_optimizers, + critic_optimizers=critic_optimizers, max_gradient_norm=max_gradient_norm, counter=counter, logger=logger, @@ -656,11 +656,11 @@ def __init__( target_update_period: int, target_update_rate: float, dataset: tf.data.Dataset, + policy_optimizers: Dict[str, snt.Optimizer], + critic_optimizers: Dict[str, snt.Optimizer], observation_networks: Dict[str, snt.Module], target_observation_networks: Dict[str, snt.Module], shared_weights: bool = False, - policy_optimizer: snt.Optimizer = None, - critic_optimizer: snt.Optimizer = None, max_gradient_norm: float = None, counter: counting.Counter = None, logger: loggers.Logger = None, @@ -682,8 +682,8 @@ def __init__( observation_network: an optional online network to process observations before the policy and the critic. target_observation_network: the target observation network. - policy_optimizer: the optimizer to be applied to the DPG (policy) loss. - critic_optimizer: the optimizer to be applied to the critic loss. + policy_optimizers: the optimizer to be applied to the DPG (policy) loss. + critic_optimizers: the optimizer to be applied to the critic loss. clipping: whether to clip gradients by global norm. counter: counter object used to keep track of steps. logger: logger object to be used by learner. @@ -705,8 +705,8 @@ def __init__( observation_networks=observation_networks, target_observation_networks=target_observation_networks, shared_weights=shared_weights, - policy_optimizer=policy_optimizer, - critic_optimizer=critic_optimizer, + policy_optimizers=policy_optimizers, + critic_optimizers=critic_optimizers, max_gradient_norm=max_gradient_norm, counter=counter, logger=logger, @@ -774,8 +774,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizer: snt.Optimizer, - critic_optimizer: snt.Optimizer, + policy_optimizers: Dict[str, snt.Optimizer], + critic_optimizers: Dict[str, snt.Optimizer], discount: float, target_averaging: bool, target_update_period: int, @@ -805,8 +805,8 @@ def __init__( observation_network: an optional online network to process observations before the policy and the critic. target_observation_network: the target observation network. - policy_optimizer: the optimizer to be applied to the DPG (policy) loss. - critic_optimizer: the optimizer to be applied to the critic loss. + policy_optimizers: the optimizer to be applied to the DPG (policy) loss. + critic_optimizers: the optimizer to be applied to the critic loss. clipping: whether to clip gradients by global norm. counter: counter object used to keep track of steps. logger: logger object to be used by learner. @@ -828,8 +828,8 @@ def __init__( observation_networks=observation_networks, target_observation_networks=target_observation_networks, shared_weights=shared_weights, - policy_optimizer=policy_optimizer, - critic_optimizer=critic_optimizer, + policy_optimizers=policy_optimizers, + critic_optimizers=critic_optimizers, max_gradient_norm=max_gradient_norm, counter=counter, logger=logger, @@ -884,8 +884,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizer: snt.Optimizer, - critic_optimizer: snt.Optimizer, + policy_optimizers: Dict[str, snt.Optimizer], + critic_optimizers: Dict[str, snt.Optimizer], discount: float, target_averaging: bool, target_update_period: int, @@ -916,8 +916,8 @@ def __init__( observation_network: an optional online network to process observations before the policy and the critic. target_observation_network: the target observation network. - policy_optimizer: the optimizer to be applied to the DPG (policy) loss. - critic_optimizer: the optimizer to be applied to the critic loss. + policy_optimizers: the optimizer to be applied to the DPG (policy) loss. + critic_optimizers: the optimizer to be applied to the critic loss. clipping: whether to clip gradients by global norm. counter: counter object used to keep track of steps. logger: logger object to be used by learner. @@ -967,8 +967,8 @@ def __init__( # Create an iterator to go through the dataset. self._iterator = iter(dataset) # pytype: disable=wrong-arg-types - self._critic_optimizer = critic_optimizer - self._policy_optimizer = policy_optimizer + self._critic_optimizers = critic_optimizers + self._policy_optimizers = policy_optimizers # Dictionary with network keys for each agent. self.agent_net_keys = {agent: agent for agent in self._agents} @@ -1010,8 +1010,8 @@ def __init__( "target_policy": self._target_policy_networks[agent_key], "target_critic": self._target_critic_networks[agent_key], "target_observation": self._target_observation_networks[agent_key], - "policy_optimizer": self._policy_optimizer, - "critic_optimizer": self._critic_optimizer, + "policy_optimizer": self._policy_optimizers, + "critic_optimizer": self._critic_optimizers, "num_steps": self._num_steps, } @@ -1324,8 +1324,8 @@ def _backward(self) -> None: )[0] # Apply gradients. - self._policy_optimizer.apply(policy_gradients, policy_variables) - self._critic_optimizer.apply(critic_gradients, critic_variables) + self._policy_optimizers[agent_key].apply(policy_gradients, policy_variables) + self._critic_optimizers[agent_key].apply(critic_gradients, critic_variables) train_utils.safe_del(self, "tape") def step(self) -> None: @@ -1374,8 +1374,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizer: snt.Optimizer, - critic_optimizer: snt.Optimizer, + policy_optimizers: Dict[str, snt.Optimizer], + critic_optimizers: Dict[str, snt.Optimizer], discount: float, target_averaging: bool, target_update_period: int, @@ -1406,8 +1406,8 @@ def __init__( observation_network: an optional online network to process observations before the policy and the critic. target_observation_network: the target observation network. - policy_optimizer: the optimizer to be applied to the DPG (policy) loss. - critic_optimizer: the optimizer to be applied to the critic loss. + policy_optimizers: the optimizer to be applied to the DPG (policy) loss. + critic_optimizers: the optimizer to be applied to the critic loss. clipping: whether to clip gradients by global norm. counter: counter object used to keep track of steps. logger: logger object to be used by learner. @@ -1429,8 +1429,8 @@ def __init__( observation_networks=observation_networks, target_observation_networks=target_observation_networks, shared_weights=shared_weights, - policy_optimizer=policy_optimizer, - critic_optimizer=critic_optimizer, + policy_optimizers=policy_optimizers, + critic_optimizers=critic_optimizers, max_gradient_norm=max_gradient_norm, counter=counter, logger=logger, @@ -1454,8 +1454,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizer: snt.Optimizer, - critic_optimizer: snt.Optimizer, + policy_optimizers: Dict[str, snt.Optimizer], + critic_optimizers: Dict[str, snt.Optimizer], discount: float, target_averaging: bool, target_update_period: int, @@ -1486,8 +1486,8 @@ def __init__( observation_network: an optional online network to process observations before the policy and the critic. target_observation_network: the target observation network. - policy_optimizer: the optimizer to be applied to the DPG (policy) loss. - critic_optimizer: the optimizer to be applied to the critic loss. + policy_optimizers: the optimizer to be applied to the DPG (policy) loss. + critic_optimizers: the optimizer to be applied to the critic loss. clipping: whether to clip gradients by global norm. counter: counter object used to keep track of steps. logger: logger object to be used by learner. @@ -1508,8 +1508,8 @@ def __init__( observation_networks=observation_networks, target_observation_networks=target_observation_networks, shared_weights=shared_weights, - policy_optimizer=policy_optimizer, - critic_optimizer=critic_optimizer, + policy_optimizers=policy_optimizers, + critic_optimizers=critic_optimizers, max_gradient_norm=max_gradient_norm, counter=counter, logger=logger, @@ -1567,8 +1567,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizer: snt.Optimizer, - critic_optimizer: snt.Optimizer, + policy_optimizers: Dict[str, snt.Optimizer], + critic_optimizers: Dict[str, snt.Optimizer], discount: float, target_averaging: bool, target_update_period: int, @@ -1599,8 +1599,8 @@ def __init__( observation_network: an optional online network to process observations before the policy and the critic. target_observation_network: the target observation network. - policy_optimizer: the optimizer to be applied to the DPG (policy) loss. - critic_optimizer: the optimizer to be applied to the critic loss. + policy_optimizers: the optimizer to be applied to the DPG (policy) loss. + critic_optimizers: the optimizer to be applied to the critic loss. clipping: whether to clip gradients by global norm. counter: counter object used to keep track of steps. logger: logger object to be used by learner. @@ -1621,8 +1621,8 @@ def __init__( observation_networks=observation_networks, target_observation_networks=target_observation_networks, shared_weights=shared_weights, - policy_optimizer=policy_optimizer, - critic_optimizer=critic_optimizer, + policy_optimizers=policy_optimizers, + critic_optimizers=critic_optimizers, max_gradient_norm=max_gradient_norm, counter=counter, logger=logger, diff --git a/mava/wrappers/system_trainer_statistics.py b/mava/wrappers/system_trainer_statistics.py index 7d005ba0d..9e1ba6fe4 100644 --- a/mava/wrappers/system_trainer_statistics.py +++ b/mava/wrappers/system_trainer_statistics.py @@ -409,7 +409,7 @@ def _backward(self) -> None: policy_gradients = tf.clip_by_global_norm(policy_gradients, 40.0)[0] # Apply gradients. - self._policy_optimizer.apply(policy_gradients, policy_variables) + self._policy_optimizers[agent_key].apply(policy_gradients, policy_variables) if log_current_timestep: if self.log_weights: @@ -509,8 +509,8 @@ def _backward(self) -> None: )[0] # Apply gradients. - self._policy_optimizer.apply(policy_gradients, policy_variables) - self._critic_optimizer.apply(critic_gradients, critic_variables) + self._policy_optimizers[agent_key].apply(policy_gradients, policy_variables) + self._critic_optimizers[agent_key].apply(critic_gradients, critic_variables) if log_current_timestep: if self.log_weights: From 6a3e16efd672fc5a4c3314c2dd9a6288df90039f Mon Sep 17 00:00:00 2001 From: Kale-ab Date: Mon, 24 May 2021 17:28:11 +0200 Subject: [PATCH 063/188] feat: Added discrete maddpg PZ example and set mappo to use diff optims. --- Makefile | 4 +- README.md | 2 +- ...entralised_feedforward_mad4pg_discrete.py} | 0 ...entralised_feedforward_maddpg_discrete.py} | 0 ...ntralised_feedforward_maddpg_continous.py} | 2 +- ...centralised_feedforward_maddpg_discrete.py | 198 ++++++++++++++++++ mava/systems/tf/mappo/builder.py | 12 +- mava/systems/tf/mappo/training.py | 44 ++-- 8 files changed, 234 insertions(+), 28 deletions(-) rename examples/debugging_envs/{run_decentralised_feedforward_discrete_mad4pg.py => run_decentralised_feedforward_mad4pg_discrete.py} (100%) rename examples/debugging_envs/{run_decentralised_feedforward_discrete_maddpg.py => run_decentralised_feedforward_maddpg_discrete.py} (100%) rename examples/petting_zoo/{run_decentralised_feedforward_maddpg.py => run_decentralised_feedforward_maddpg_continous.py} (98%) create mode 100644 examples/petting_zoo/run_decentralised_feedforward_maddpg_discrete.py diff --git a/Makefile b/Makefile index 6b77da4a4..b56c8a67a 100755 --- a/Makefile +++ b/Makefile @@ -16,13 +16,13 @@ DOCKER_RUN=docker run $(RUN_FLAGS) $(IMAGE) DOCKER_RUN_TENSORBOARD=docker run $(RUN_FLAGS_TENSORBOARD) $(IMAGE) # Set example to run when using `make run` -MADDPG=examples/debugging_envs/run_decentralised_feedforward_maddpg.py +MADDPG=examples/debugging_envs/run_decentralised_feedforward_maddpg_continous.py MAPPO=examples/debugging_envs/run_decentralised_feedforward_mappo.py MADQN=examples/debugging_envs/run_feedforward_madqn.py QMIX=examples/debugging_envs/run_feedforward_qmix.py VDN=examples/debugging_envs/run_feedforward_vdn.py -MADDPG-PZ=examples/petting_zoo/run_decentralised_feedforward_maddpg.py +MADDPG-PZ=examples/petting_zoo/run_decentralised_feedforward_maddpg_continous.py QMIX-PZ=examples/petting_zoo/run_feedforward_qmix.py VDN-PZ==examples/petting_zoo/run_feedforward_vdn.py diff --git a/README.md b/README.md index ab5cdbd0d..a0a2ddc8a 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ We have tested `mava` on Python 3.6, 3.7 and 3.8. ```bash make run EXAMPLE=dir/to/example/example.py ``` - For example, `make run EXAMPLE=examples/petting_zoo/run_decentralised_feedforward_maddpg.py`. + For example, `make run EXAMPLE=examples/petting_zoo/run_decentralised_feedforward_maddpg_continous.py`. Alternatively, you can also run a specific system that is defined in the `Makefile`: ```bash diff --git a/examples/debugging_envs/run_decentralised_feedforward_discrete_mad4pg.py b/examples/debugging_envs/run_decentralised_feedforward_mad4pg_discrete.py similarity index 100% rename from examples/debugging_envs/run_decentralised_feedforward_discrete_mad4pg.py rename to examples/debugging_envs/run_decentralised_feedforward_mad4pg_discrete.py diff --git a/examples/debugging_envs/run_decentralised_feedforward_discrete_maddpg.py b/examples/debugging_envs/run_decentralised_feedforward_maddpg_discrete.py similarity index 100% rename from examples/debugging_envs/run_decentralised_feedforward_discrete_maddpg.py rename to examples/debugging_envs/run_decentralised_feedforward_maddpg_discrete.py diff --git a/examples/petting_zoo/run_decentralised_feedforward_maddpg.py b/examples/petting_zoo/run_decentralised_feedforward_maddpg_continous.py similarity index 98% rename from examples/petting_zoo/run_decentralised_feedforward_maddpg.py rename to examples/petting_zoo/run_decentralised_feedforward_maddpg_continous.py index 177dcc308..23435eb9b 100644 --- a/examples/petting_zoo/run_decentralised_feedforward_maddpg.py +++ b/examples/petting_zoo/run_decentralised_feedforward_maddpg_continous.py @@ -13,7 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -"""Example running MADDPG on pettinzoo MPE environments.""" +"""Example running continous MADDPG on pettinzoo MPE environments.""" import functools from datetime import datetime diff --git a/examples/petting_zoo/run_decentralised_feedforward_maddpg_discrete.py b/examples/petting_zoo/run_decentralised_feedforward_maddpg_discrete.py new file mode 100644 index 000000000..01435143e --- /dev/null +++ b/examples/petting_zoo/run_decentralised_feedforward_maddpg_discrete.py @@ -0,0 +1,198 @@ +# python3 +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://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. + +"""Example running discrete MADDPG on pettinzoo MPE environments.""" + +import functools +from datetime import datetime +from typing import Any, Dict, Mapping, Sequence, Union + +import launchpad as lp +import numpy as np +import sonnet as snt +import tensorflow as tf +from absl import app, flags +from acme import types +from acme.specs import BoundedArray, DiscreteArray +from acme.tf import networks +from acme.tf import utils as tf2_utils +from launchpad.nodes.python.local_multi_processing import PythonProcess + +from mava import specs as mava_specs +from mava.systems.tf import maddpg +from mava.utils import lp_utils +from mava.utils.environments import pettingzoo_utils +from mava.utils.loggers import logger_utils + +FLAGS = flags.FLAGS + +flags.DEFINE_string( + "env_class", + "mpe", + "Pettingzoo environment class, e.g. atari (str).", +) + +flags.DEFINE_string( + "env_name", + "simple_adversary_v2", + "Pettingzoo environment name, e.g. pong (str).", +) +flags.DEFINE_string( + "mava_id", + str(datetime.now()), + "Experiment identifier that can be used to continue experiments.", +) +flags.DEFINE_string("base_dir", "~/mava/", "Base dir to store experiments.") + + +def make_networks( + environment_spec: mava_specs.MAEnvironmentSpec, + policy_networks_layer_sizes: Union[Dict[str, Sequence], Sequence] = ( + 256, + 256, + 256, + ), + critic_networks_layer_sizes: Union[Dict[str, Sequence], Sequence] = (512, 512, 256), + shared_weights: bool = True, + sigma: float = 0.3, +) -> Mapping[str, types.TensorTransformation]: + """Creates networks used by the agents.""" + specs = environment_spec.get_agent_specs() + + # Create agent_type specs + if shared_weights: + type_specs = {key.split("_")[0]: specs[key] for key in specs.keys()} + specs = type_specs + + if isinstance(policy_networks_layer_sizes, Sequence): + policy_networks_layer_sizes = { + key: policy_networks_layer_sizes for key in specs.keys() + } + if isinstance(critic_networks_layer_sizes, Sequence): + critic_networks_layer_sizes = { + key: critic_networks_layer_sizes for key in specs.keys() + } + + observation_networks = {} + policy_networks = {} + critic_networks = {} + for key in specs.keys(): + # TODO (dries): Make specs[key].actions + # return a list of specs for hybrid action space + # Get total number of action dimensions from action spec. + agent_act_spec = specs[key].actions + if type(specs[key].actions) == DiscreteArray: + num_actions = agent_act_spec.num_values + minimum = [-1.0] * num_actions + maximum = [1.0] * num_actions + agent_act_spec = BoundedArray( + shape=(num_actions,), + minimum=minimum, + maximum=maximum, + dtype="float32", + name="actions", + ) + + num_dimensions = np.prod(agent_act_spec.shape, dtype=int) + # Create the shared observation network; here simply a state-less operation. + observation_network = tf2_utils.to_sonnet_module(tf.identity) + # Create the policy network. + policy_network = snt.Sequential( + [ + networks.LayerNormMLP( + policy_networks_layer_sizes[key], activate_final=True + ), + networks.NearZeroInitializedLinear(num_dimensions), + networks.TanhToSpec(agent_act_spec), + networks.ClippedGaussian(sigma), + networks.ClipToSpec(agent_act_spec), + ] + ) + + # Create the critic network. + critic_network = snt.Sequential( + [ + # The multiplexer concatenates the observations/actions. + networks.CriticMultiplexer(), + networks.LayerNormMLP( + critic_networks_layer_sizes[key], activate_final=False + ), + snt.Linear(1), + ] + ) + observation_networks[key] = observation_network + policy_networks[key] = policy_network + critic_networks[key] = critic_network + + return { + "policies": policy_networks, + "critics": critic_networks, + "observations": observation_networks, + } + + +def main(_: Any) -> None: + + environment_factory = functools.partial( + pettingzoo_utils.make_environment, + env_class=FLAGS.env_class, + env_name=FLAGS.env_name, + ) + + network_factory = lp_utils.partial_kwargs(make_networks) + + # Checkpointer appends "Checkpoints" to checkpoint_dir + checkpoint_dir = f"{FLAGS.base_dir}/{FLAGS.mava_id}" + + # loggers + log_every = 10 + logger_factory = functools.partial( + logger_utils.make_logger, + directory=FLAGS.base_dir, + to_terminal=True, + to_tensorboard=True, + time_stamp=FLAGS.mava_id, + time_delta=log_every, + ) + + program = maddpg.MADDPG( + environment_factory=environment_factory, + network_factory=network_factory, + logger_factory=logger_factory, + num_executors=2, + policy_optimizer=snt.optimizers.Adam(learning_rate=1e-4), + critic_optimizer=snt.optimizers.Adam(learning_rate=1e-4), + checkpoint_subpath=checkpoint_dir, + ).build() + + # Launch gpu config - let trainer use gpu. + gpu_id = -1 + env_vars = {"CUDA_VISIBLE_DEVICES": str(gpu_id)} + local_resources = { + "trainer": [], + "evaluator": PythonProcess(env=env_vars), + "executor": PythonProcess(env=env_vars), + } + + lp.launch( + program, + lp.LaunchType.LOCAL_MULTI_PROCESSING, + terminal="current_terminal", + local_resources=local_resources, + ) + + +if __name__ == "__main__": + app.run(main) diff --git a/mava/systems/tf/mappo/builder.py b/mava/systems/tf/mappo/builder.py index 431ecdeee..f3c7e9f6e 100644 --- a/mava/systems/tf/mappo/builder.py +++ b/mava/systems/tf/mappo/builder.py @@ -14,6 +14,7 @@ # limitations under the License. """MAPPO builder and config.""" +import copy import dataclasses from typing import Dict, Iterator, List, Optional, Type @@ -242,6 +243,13 @@ def make_trainer( policy_networks = networks["policies"] critic_networks = networks["critics"] + # Create optimizers for different agent types. + policy_optimizers: Dict[str, snt.Optimizer] = {} + critic_optimizers: Dict[str, snt.Optimizer] = {} + for agent in self._agent_types: + policy_optimizers[agent] = copy.deepcopy(self._config.policy_optimizer) + critic_optimizers[agent] = copy.deepcopy(self._config.critic_optimizer) + # The learner updates the parameters (and initializes them). trainer = self._trainer_fn( agents=agents, @@ -251,8 +259,8 @@ def make_trainer( critic_networks=critic_networks, dataset=dataset, shared_weights=shared_weights, - critic_optimizer=self._config.critic_optimizer, - policy_optimizer=self._config.policy_optimizer, + critic_optimizers=critic_optimizers, + policy_optimizers=policy_optimizers, discount=self._config.discount, lambda_gae=self._config.lambda_gae, entropy_cost=self._config.entropy_cost, diff --git a/mava/systems/tf/mappo/training.py b/mava/systems/tf/mappo/training.py index e0af4f36f..08b92049b 100644 --- a/mava/systems/tf/mappo/training.py +++ b/mava/systems/tf/mappo/training.py @@ -47,8 +47,8 @@ def __init__( policy_networks: Dict[str, snt.Module], critic_networks: Dict[str, snt.Module], dataset: tf.data.Dataset, - policy_optimizer: snt.Optimizer, - critic_optimizer: snt.Optimizer, + policy_optimizers: Dict[str, snt.Optimizer], + critic_optimizers: Dict[str, snt.Optimizer], shared_weights: bool, discount: float = 0.99, lambda_gae: float = 1.0, @@ -65,8 +65,8 @@ def __init__( Args: policy_networks: ... critic_networks: ... - policy_optimizer: policy optimizer, - critic_optimizer: critic optimizer, + policy_optimizers: policy optimizer, + critic_optimizers: critic optimizer, shared_weights: ... discount: discount to use for TD updates. dataset: dataset to learn from, whether fixed or from a replay buffer @@ -96,8 +96,8 @@ def __init__( self._critic_networks = critic_networks # Get optimizers - self._policy_optimizer = policy_optimizer - self._critic_optimizer = critic_optimizer + self._policy_optimizers = policy_optimizers + self._critic_optimizers = critic_optimizers # Dictionary with network keys for each agent. self.agent_net_keys = {agent: agent for agent in self._agents} @@ -156,8 +156,8 @@ def __init__( "policy": self._policy_networks[agent_key], "critic": self._critic_networks[agent_key], "observation": self._observation_networks[agent_key], - "policy_optimizer": self._policy_optimizer, - "critic_optimizer": self._critic_optimizer, + "policy_optimizers": self._policy_optimizers, + "critic_optimizers": self._critic_optimizers, } subdir = os.path.join("trainer", agent_key) @@ -255,9 +255,9 @@ def _forward(self, inputs: Any) -> None: discount = discount[:-1] # Get agent network - network_key = agent.split("_")[0] if self._shared_weights else agent - policy_network = self._policy_networks[network_key] - critic_network = self._critic_networks[network_key] + agent_key = agent.split("_")[0] if self._shared_weights else agent + policy_network = self._policy_networks[agent_key] + critic_network = self._critic_networks[agent_key] # Reshape inputs. dims = actor_observation.shape[:2] @@ -342,15 +342,15 @@ def _backward(self) -> None: tape = self.tape for agent in self._agents: - # Get network_key. - network_key = agent.split("_")[0] if self._shared_weights else agent + # Get agent_key. + agent_key = agent.split("_")[0] if self._shared_weights else agent # Get trainable variables. policy_variables = ( - self._observation_networks[network_key].trainable_variables - + self._policy_networks[network_key].trainable_variables + self._observation_networks[agent_key].trainable_variables + + self._policy_networks[agent_key].trainable_variables ) - critic_variables = self._critic_networks[network_key].trainable_variables + critic_variables = self._critic_networks[agent_key].trainable_variables # Get gradients. policy_gradients = tape.gradient(policy_losses[agent], policy_variables) @@ -365,8 +365,8 @@ def _backward(self) -> None: ) # Apply gradients. - self._critic_optimizer.apply(critic_grads, critic_variables) - self._policy_optimizer.apply(policy_grads, policy_variables) + self._critic_optimizers[agent_key].apply(critic_grads, critic_variables) + self._policy_optimizers[agent_key].apply(policy_grads, policy_variables) train_utils.safe_del(self, "tape") @@ -412,8 +412,8 @@ def __init__( policy_networks: Dict[str, snt.Module], critic_networks: Dict[str, snt.Module], dataset: tf.data.Dataset, - policy_optimizer: snt.Optimizer, - critic_optimizer: snt.Optimizer, + policy_optimizers: Dict[str, snt.Optimizer], + critic_optimizers: Dict[str, snt.Optimizer], shared_weights: bool, discount: float = 0.99, lambda_gae: float = 1.0, @@ -435,8 +435,8 @@ def __init__( observation_networks=observation_networks, dataset=dataset, shared_weights=shared_weights, - policy_optimizer=policy_optimizer, - critic_optimizer=critic_optimizer, + policy_optimizers=policy_optimizers, + critic_optimizers=critic_optimizers, discount=discount, lambda_gae=lambda_gae, entropy_cost=entropy_cost, From 0e775345abe41225e09c2fe2f3227fbac4e2f808 Mon Sep 17 00:00:00 2001 From: Kale-ab Date: Mon, 24 May 2021 17:40:21 +0200 Subject: [PATCH 064/188] chore: Updated example env. --- .../run_decentralised_feedforward_maddpg_discrete.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/petting_zoo/run_decentralised_feedforward_maddpg_discrete.py b/examples/petting_zoo/run_decentralised_feedforward_maddpg_discrete.py index 01435143e..0917f4240 100644 --- a/examples/petting_zoo/run_decentralised_feedforward_maddpg_discrete.py +++ b/examples/petting_zoo/run_decentralised_feedforward_maddpg_discrete.py @@ -46,7 +46,7 @@ flags.DEFINE_string( "env_name", - "simple_adversary_v2", + "simple_speaker_listener_v3", "Pettingzoo environment name, e.g. pong (str).", ) flags.DEFINE_string( From 4cc601ef99bf439bddf440fe473d229b748d7326 Mon Sep 17 00:00:00 2001 From: Claude Formanek Date: Mon, 24 May 2021 17:50:36 +0200 Subject: [PATCH 065/188] VDN works --- .../debugging_envs/run_feedforward_qmix_v2.py | 175 +++++++ mava/components/tf/networks/mixers.py | 63 +++ mava/systems/tf/qmixV2/README.md | 0 mava/systems/tf/qmixV2/__init__.py | 19 + mava/systems/tf/qmixV2/builder.py | 327 +++++++++++++ mava/systems/tf/qmixV2/execution.py | 283 ++++++++++++ mava/systems/tf/qmixV2/system.py | 437 ++++++++++++++++++ mava/systems/tf/qmixV2/training.py | 367 +++++++++++++++ mava/wrappers/__init__.py | 4 +- mava/wrappers/smac.py | 5 +- 10 files changed, 1678 insertions(+), 2 deletions(-) create mode 100644 examples/debugging_envs/run_feedforward_qmix_v2.py create mode 100644 mava/components/tf/networks/mixers.py create mode 100644 mava/systems/tf/qmixV2/README.md create mode 100644 mava/systems/tf/qmixV2/__init__.py create mode 100644 mava/systems/tf/qmixV2/builder.py create mode 100644 mava/systems/tf/qmixV2/execution.py create mode 100644 mava/systems/tf/qmixV2/system.py create mode 100644 mava/systems/tf/qmixV2/training.py diff --git a/examples/debugging_envs/run_feedforward_qmix_v2.py b/examples/debugging_envs/run_feedforward_qmix_v2.py new file mode 100644 index 000000000..b4bb850b5 --- /dev/null +++ b/examples/debugging_envs/run_feedforward_qmix_v2.py @@ -0,0 +1,175 @@ +# python3 +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import functools +from datetime import datetime +from typing import Any, Dict, Mapping, Optional, Sequence, Union + +import launchpad as lp +import sonnet as snt +import tensorflow as tf +from absl import app, flags +from acme import types +from acme.tf import networks +from launchpad.nodes.python.local_multi_processing import PythonProcess + +from mava import specs as mava_specs +from mava.components.tf.modules.exploration import LinearExplorationScheduler +from mava.components.tf.networks import epsilon_greedy_action_selector +from mava.components.tf.networks.mixers import QMixer +from mava.systems.tf import qmixV2 +from mava.utils import lp_utils +from mava.utils.environments import debugging_utils +from mava.utils.loggers import logger_utils + +FLAGS = flags.FLAGS +flags.DEFINE_string( + "env_name", + "simple_spread", + "Debugging environment name (str).", +) +flags.DEFINE_string( + "action_space", + "discrete", + "Environment action space type (str).", +) + +flags.DEFINE_string( + "mava_id", + str(datetime.now()), + "Experiment identifier that can be used to continue experiments.", +) +flags.DEFINE_string("base_dir", "./logs/", "Base dir to store experiments.") + + +def make_networks( + environment_spec: mava_specs.MAEnvironmentSpec, + q_networks_layer_sizes: Union[Dict[str, Sequence], Sequence] = ( + 512, + 512, + 256, + ), + shared_weights: bool = True, +) -> Mapping[str, types.TensorTransformation]: + """Creates networks used by the agents.""" + + specs = environment_spec.get_agent_specs() + + # Create agent_type specs + if shared_weights: + type_specs = {key.split("_")[0]: specs[key] for key in specs.keys()} + specs = type_specs + + if isinstance(q_networks_layer_sizes, Sequence): + q_networks_layer_sizes = {key: q_networks_layer_sizes for key in specs.keys()} + + def action_selector_fn( + q_values: types.NestedTensor, + legal_actions: types.NestedTensor, + epsilon: Optional[tf.Variable] = None, + ) -> types.NestedTensor: + return epsilon_greedy_action_selector( + action_values=q_values, legal_actions_mask=legal_actions, epsilon=epsilon + ) + + q_networks = {} + action_selectors = {} + for key in specs.keys(): + + # Get total number of action dimensions from action spec. + num_dimensions = specs[key].actions.num_values + + # Create the policy network. + q_network = snt.Sequential( + [ + networks.LayerNormMLP( + q_networks_layer_sizes[key], activate_final=False + ), + networks.NearZeroInitializedLinear(num_dimensions), + ] + ) + + # epsilon greedy action selector + action_selector = action_selector_fn + + q_networks[key] = q_network + action_selectors[key] = action_selector + + return { + "q_networks": q_networks, + "action_selectors": action_selectors, + } + + +def main(_: Any) -> None: + + # environment + environment_factory = functools.partial( + debugging_utils.make_environment, + env_name=FLAGS.env_name, + action_space=FLAGS.action_space, + num_agents=3, + return_state_info=True, + ) + + # networks + network_factory = lp_utils.partial_kwargs(make_networks) + + # Checkpointer appends "Checkpoints" to checkpoint_dir + checkpoint_dir = f"{FLAGS.base_dir}/{FLAGS.mava_id}" + + # loggers + log_every = 10 + logger_factory = functools.partial( + logger_utils.make_logger, + directory=FLAGS.base_dir, + to_terminal=True, + to_tensorboard=True, + time_stamp=FLAGS.mava_id, + time_delta=log_every, + ) + + # distributed program + program = qmixV2.QMix( + environment_factory=environment_factory, + network_factory=network_factory, + logger_factory=logger_factory, + num_executors=2, + exploration_scheduler_fn=LinearExplorationScheduler, + epsilon_min=0.05, + epsilon_decay=5e-4, + mixer_fn=QMixer, + optimizer=snt.optimizers.Adam(learning_rate=1e-4), + checkpoint_subpath=checkpoint_dir, + ).build() + + # launch + gpu_id = -1 + env_vars = {"CUDA_VISIBLE_DEVICES": str(gpu_id)} + local_resources = { + "trainer": [], + "evaluator": PythonProcess(env=env_vars), + "executor": PythonProcess(env=env_vars), + } + lp.launch( + program, + lp.LaunchType.LOCAL_MULTI_PROCESSING, + terminal="current_terminal", + local_resources=local_resources, + ) + + +if __name__ == "__main__": + app.run(main) diff --git a/mava/components/tf/networks/mixers.py b/mava/components/tf/networks/mixers.py new file mode 100644 index 000000000..b9aab0753 --- /dev/null +++ b/mava/components/tf/networks/mixers.py @@ -0,0 +1,63 @@ +from typing import Any + +import numpy as np +import sonnet as snt +import tensorflow as tf +from tensorflow import keras + + +class AdditiveMixingNetwork(snt.Module): + """Multi-agent monotonic mixing architecture.""" + + def __init__(self) -> None: + """Initializes the mixer.""" + super(AdditiveMixingNetwork, self).__init__() + + def __call__(self, q_values: tf.Tensor) -> tf.Tensor: + """Monotonic mixing logic.""" + return tf.math.reduce_sum(q_values, keepdims=True) + + +class QMixer(snt.Module): + def __init__(self, n_agents: Any, state_shape: Any, mixing_embed_dim: Any) -> None: + super().__init__() + self.n_agents = n_agents + self.embed_dim = mixing_embed_dim + self.state_dim = int(np.prod(state_shape)) + + self.hyper_w_1 = snt.Linear(self.embed_dim * self.n_agents) + self.hyper_w_final = snt.Linear(self.embed_dim) + + # State dependent bias for hidden layer + self.hyper_b_1 = snt.Linear(self.embed_dim) + + # V(s) instead of a bias for the last layers + self.V = snt.Sequential( + [snt.Linear(self.embed_dim), tf.keras.layers.ReLU(), snt.Linear(1)] + ) + + def __call__(self, agent_qs: Any, states: Any) -> tf.Tensor: + """Forward pass for the mixer. + Args: + agent_qs: Tensor of shape [B, n_agents] + states: Tensor of shape [B, state_dim] + """ + bs = agent_qs.shape[0] + states = tf.reshape(states, (-1, self.state_dim)) + agent_qs = tf.reshape(agent_qs, (-1, 1, self.n_agents)) + # First layer + w1 = tf.math.abs(self.hyper_w_1(states)) + b1 = self.hyper_b_1(states) + w1 = tf.reshape(w1, (-1, self.n_agents, self.embed_dim)) + b1 = tf.reshape(b1, (-1, 1, self.embed_dim)) + hidden = tf.keras.activations.elu(tf.linalg.matmul(agent_qs, w1) + b1) + # Second layer + w_final = tf.math.abs(self.hyper_w_final(states)) + w_final = tf.reshape(w_final, (-1, self.embed_dim, 1)) + # State-dependent bias + v = tf.reshape(self.V(states), (-1, 1, 1)) + # Compute final output + y = tf.linalg.matmul(hidden, w_final) + v + # Reshape and return + q_tot = tf.reshape(y, (bs, -1, 1)) + return q_tot diff --git a/mava/systems/tf/qmixV2/README.md b/mava/systems/tf/qmixV2/README.md new file mode 100644 index 000000000..e69de29bb diff --git a/mava/systems/tf/qmixV2/__init__.py b/mava/systems/tf/qmixV2/__init__.py new file mode 100644 index 000000000..a74c659df --- /dev/null +++ b/mava/systems/tf/qmixV2/__init__.py @@ -0,0 +1,19 @@ +# python3 +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://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. + +"""Implementations of a IDQN agent.""" + +from mava.systems.tf.qmixV2.system import QMix +from mava.systems.tf.qmixV2.training import QMixTrainer diff --git a/mava/systems/tf/qmixV2/builder.py b/mava/systems/tf/qmixV2/builder.py new file mode 100644 index 000000000..27f86c595 --- /dev/null +++ b/mava/systems/tf/qmixV2/builder.py @@ -0,0 +1,327 @@ +# python3 +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import dataclasses +from typing import Any, Dict, Iterator, List, Optional, Type + +import numpy as np +import reverb +import sonnet as snt +import tensorflow as tf +from acme import datasets +from acme.tf import utils as tf_utils +from acme.tf import variable_utils +from acme.utils import counting + +from mava import adders, core, specs, types +from mava.adders import reverb as reverb_adders +from mava.components.tf.modules.exploration.exploration_scheduling import ( + LinearExplorationScheduler, +) +from mava.components.tf.modules.stabilising import FingerPrintStabalisation +from mava.systems.tf import executors +from mava.systems.tf.qmixV2 import execution, training +from mava.wrappers import DetailedTrainerStatisticsWithEpsilon + + +@dataclasses.dataclass +class QMixConfig: + """Configuration options for the MADDPG system. + Args: + environment_spec: description of the actions, observations, etc. + discount: discount to use for TD updates. + batch_size: batch size for updates. + prefetch_size: size to prefetch from replay. + target_update_period: number of learner steps to perform before updating + the target networks. + min_replay_size: minimum replay size before updating. + max_replay_size: maximum replay size. + samples_per_insert: number of samples to take from replay for every insert + that is made. + n_step: number of steps to squash into a single transition. + sigma: standard deviation of zero-mean, Gaussian exploration noise. + clipping: whether to clip gradients by global norm. + replay_table_name: string indicating what name to give the replay table.""" + + environment_spec: specs.MAEnvironmentSpec + epsilon_min: float + epsilon_decay: float + shared_weights: bool + target_update_period: int + executor_variable_update_period: int + clipping: bool + min_replay_size: int + max_replay_size: int + samples_per_insert: Optional[float] + prefetch_size: int + batch_size: int + n_step: int + sequence_length: int + period: int + discount: float + checkpoint: bool + optimizer: snt.Optimizer + replay_table_name: str = reverb_adders.DEFAULT_PRIORITY_TABLE + checkpoint_subpath: str = "~/mava/" + + +class QMixBuilder: + """Builder for MADQN which constructs individual components of the system.""" + + """Defines an interface for defining the components of an RL system. + Implementations of this interface contain a complete specification of a + concrete RL system. An instance of this class can be used to build an + RL system which interacts with the environment either locally or in a + distributed setup. + """ + + def __init__( + self, + config: QMixConfig, + trainer_fn: Type[training.QMixTrainer] = training.QMixTrainer, + executor_fn: Type[core.Executor] = execution.QMixFeedForwardExecutor, + extra_specs: Dict[str, Any] = {}, + exploration_scheduler_fn: Type[ + LinearExplorationScheduler + ] = LinearExplorationScheduler, + replay_stabilisation_fn: Optional[Type[FingerPrintStabalisation]] = None, + mixer_fn: Optional[Type[snt.Module]] = None, + ): + """Args: + _config: Configuration options for the MADQN system. + _trainer_fn: Trainer module to use.""" + self._config = config + self._extra_specs = extra_specs + + self._agents = self._config.environment_spec.get_agent_ids() + self._agent_types = self._config.environment_spec.get_agent_types() + self._trainer_fn = trainer_fn + self._executor_fn = executor_fn + self._exploration_scheduler_fn = exploration_scheduler_fn + self._replay_stabiliser_fn = replay_stabilisation_fn + self._mixer_fn = mixer_fn + + def make_replay_tables( + self, + environment_spec: specs.MAEnvironmentSpec, + ) -> List[reverb.Table]: + """Create tables to insert data into.""" + + # Select adder + if issubclass(self._executor_fn, executors.FeedForwardExecutor): + # Check if we should use fingerprints + if self._replay_stabiliser_fn is not None: + self._extra_specs.update({"fingerprint": np.array([1.0, 1.0])}) + adder_sig = reverb_adders.ParallelNStepTransitionAdder.signature( + environment_spec, self._extra_specs + ) + elif issubclass(self._executor_fn, executors.RecurrentExecutor): + adder_sig = reverb_adders.ParallelSequenceAdder.signature( + environment_spec, self._extra_specs + ) + else: + raise NotImplementedError("Unknown executor type: ", self._executor_fn) + + if self._config.samples_per_insert is None: + # We will take a samples_per_insert ratio of None to mean that there is + # no limit, i.e. this only implies a min size limit. + limiter = reverb.rate_limiters.MinSize(self._config.min_replay_size) + + else: + # Create enough of an error buffer to give a 10% tolerance in rate. + samples_per_insert_tolerance = 0.1 * self._config.samples_per_insert + error_buffer = self._config.min_replay_size * samples_per_insert_tolerance + limiter = reverb.rate_limiters.SampleToInsertRatio( + min_size_to_sample=self._config.min_replay_size, + samples_per_insert=self._config.samples_per_insert, + error_buffer=error_buffer, + ) + + replay_table = reverb.Table( + name=self._config.replay_table_name, + sampler=reverb.selectors.Uniform(), + remover=reverb.selectors.Fifo(), + max_size=self._config.max_replay_size, + rate_limiter=limiter, + signature=adder_sig, + ) + + return [replay_table] + + def make_dataset_iterator( + self, replay_client: reverb.Client + ) -> Iterator[reverb.ReplaySample]: + """Create a dataset iterator to use for learning/updating the system. + Args: + replay_client: Reverb Client which points to the replay server.""" + + sequence_length = ( + self._config.sequence_length + if issubclass(self._executor_fn, executors.RecurrentExecutor) + else None + ) + + dataset = datasets.make_reverb_dataset( + table=self._config.replay_table_name, + server_address=replay_client.server_address, + batch_size=self._config.batch_size, + prefetch_size=self._config.prefetch_size, + sequence_length=sequence_length, + ) + return iter(dataset) + + def make_adder( + self, replay_client: reverb.Client + ) -> Optional[adders.ParallelAdder]: + """Create an adder which records data generated by the executor/environment. + Args: + replay_client: Reverb Client which points to the replay server.""" + + # Select adder + if issubclass(self._executor_fn, executors.FeedForwardExecutor): + adder = reverb_adders.ParallelNStepTransitionAdder( + priority_fns=None, + client=replay_client, + n_step=self._config.n_step, + discount=self._config.discount, + ) + elif issubclass(self._executor_fn, executors.RecurrentExecutor): + adder = reverb_adders.ParallelSequenceAdder( + priority_fns=None, + client=replay_client, + sequence_length=self._config.sequence_length, + period=self._config.period, + ) + else: + raise NotImplementedError("Unknown executor type: ", self._executor_fn) + + return adder + + def make_executor( + self, + q_networks: Dict[str, snt.Module], + action_selectors: Dict[str, Any], + adder: Optional[adders.ParallelAdder] = None, + variable_source: Optional[core.VariableSource] = None, + trainer: Optional[training.QMixTrainer] = None, + evaluator: bool = False, + ) -> core.Executor: + """Create an executor instance. + Args: + q_networks: A struct of instance of all + the different system q networks, + this should be a callable which takes as input observations + and returns actions. + adder: How data is recorded (e.g. added to replay). + variable_source: collection of (nested) numpy arrays. Contains + source variables as defined in mava.core. + """ + + shared_weights = self._config.shared_weights + + variable_client = None + if variable_source: + agent_keys = self._agent_types if shared_weights else self._agents + + # Create policy variables + variables = {agent: q_networks[agent].variables for agent in agent_keys} + # Get new policy variables + variable_client = variable_utils.VariableClient( + client=variable_source, + variables={"q_network": variables}, + update_period=self._config.executor_variable_update_period, + ) + + # Make sure not to use a random policy after checkpoint restoration by + # assigning variables before running the environment loop. + variable_client.update_and_wait() + + # Check if we should use fingerprints + fingerprint = True if self._replay_stabiliser_fn is not None else False + + # Create the executor which coordinates the actors. + return self._executor_fn( + q_networks=q_networks, + action_selectors=action_selectors, + shared_weights=shared_weights, + variable_client=variable_client, + adder=adder, + trainer=trainer, + evaluator=evaluator, + fingerprint=fingerprint, + ) + + def make_trainer( + self, + networks: Dict[str, Dict[str, snt.Module]], + dataset: Iterator[reverb.ReplaySample], + counter: Optional[counting.Counter] = None, + logger: Optional[types.NestedLogger] = None, + ) -> core.Trainer: + """Creates an instance of the trainer. + Args: + networks: struct describing the networks needed by the trainer; this can + be specific to the trainer in question. + dataset: iterator over samples from replay. + counter: a Counter which allows for recording of counts (trainer steps, + executor steps, etc.) distributed throughout the system. + logger: Logger object for logging metadata. + checkpoint: bool controlling whether the trainer checkpoints itself. + """ + q_networks = networks["values"] + target_q_networks = networks["target_values"] + + agents = self._config.environment_spec.get_agent_ids() + agent_types = self._config.environment_spec.get_agent_types() + + # Make epsilon scheduler + exploration_scheduler = self._exploration_scheduler_fn( + epsilon_min=self._config.epsilon_min, + epsilon_decay=self._config.epsilon_decay, + ) + + # Check if we should use fingerprints + fingerprint = True if self._replay_stabiliser_fn is not None else False + + # Mixer + if self._mixer_fn: + state_spec = self._config.environment_spec.get_extra_specs()["s_t"] + mixer = self._mixer_fn(len(agents), state_spec.shape, 256) + tf_utils.create_variables(mixer, [tf.ones(len(agents)), state_spec]) + + # The learner updates the parameters (and initializes them). + trainer = self._trainer_fn( + agents=agents, + agent_types=agent_types, + discount=self._config.discount, + q_networks=q_networks, + target_q_networks=target_q_networks, + shared_weights=self._config.shared_weights, + optimizer=self._config.optimizer, + target_update_period=self._config.target_update_period, + clipping=self._config.clipping, + exploration_scheduler=exploration_scheduler, + dataset=dataset, + counter=counter, + fingerprint=fingerprint, + logger=logger, + mixer=mixer, + checkpoint=self._config.checkpoint, + checkpoint_subpath=self._config.checkpoint_subpath, + ) + + trainer = DetailedTrainerStatisticsWithEpsilon(trainer) # type:ignore + + return trainer diff --git a/mava/systems/tf/qmixV2/execution.py b/mava/systems/tf/qmixV2/execution.py new file mode 100644 index 000000000..fd4041306 --- /dev/null +++ b/mava/systems/tf/qmixV2/execution.py @@ -0,0 +1,283 @@ +# python3 +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://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. + + +"""Executor implementations for MADQN.""" + +from typing import Any, Dict, Optional + +import dm_env +import numpy as np +import sonnet as snt +import tensorflow as tf +from acme import types + +# Internal imports. +from acme.tf import utils as tf2_utils +from acme.tf import variable_utils as tf2_variable_utils + +from mava import adders +from mava.systems.tf.executors import FeedForwardExecutor, RecurrentExecutor +from mava.systems.tf.qmixV2.training import QMixTrainer +from mava.types import OLT + + +class QMixFeedForwardExecutor(FeedForwardExecutor): + """A feed-forward executor. + An executor based on a feed-forward policy for each agent in the system + which takes non-batched observations and outputs non-batched actions. + It also allows adding experiences to replay and updating the weights + from the policy on the learner. + """ + + def __init__( + self, + q_networks: Dict[str, snt.Module], + action_selectors: Dict[str, snt.Module], + trainer: QMixTrainer, + shared_weights: bool = True, + adder: Optional[adders.ParallelAdder] = None, + variable_client: Optional[tf2_variable_utils.VariableClient] = None, + fingerprint: bool = False, + evaluator: bool = False, + ): + """Initializes the executor. + Args: + policy_network: the policy to run for each agent in the system. + shared_weights: specify if weights are shared between agent networks. + adder: the adder object to which allows to add experiences to a + dataset/replay buffer. + variable_client: object which allows to copy weights from the trainer copy + of the policies to the executor copy (in case they are separate). + """ + + # Store these for later use. + self._adder = adder + self._variable_client = variable_client + self._q_networks = q_networks + self._action_selectors = action_selectors + self._trainer = trainer + self._shared_weights = shared_weights + self._fingerprint = fingerprint + self._evaluator = evaluator + + @tf.function + def _policy( + self, + agent: str, + observation: types.NestedTensor, + legal_actions: types.NestedTensor, + epsilon: tf.Tensor, + fingerprint: Optional[tf.Tensor] = None, + ) -> types.NestedTensor: + + # Add a dummy batch dimension and as a side effect convert numpy to TF. + batched_observation = tf2_utils.add_batch_dim(observation) + batched_legals = tf2_utils.add_batch_dim(legal_actions) + + # index network either on agent type or on agent id + agent_key = agent.split("_")[0] if self._shared_weights else agent + + # Compute the policy, conditioned on the observation and + # possibly the fingerprint. + if fingerprint is not None: + q_values = self._q_networks[agent_key](batched_observation, fingerprint) + else: + q_values = self._q_networks[agent_key](batched_observation) + + # select legal action + action = self._action_selectors[agent_key]( + q_values, batched_legals, epsilon=epsilon + ) + + return action + + def select_action( + self, agent: str, observation: types.NestedArray + ) -> types.NestedArray: + raise NotImplementedError + + def observe_first( + self, + timestep: dm_env.TimeStep, + extras: Dict[str, types.NestedArray] = {}, + ) -> None: + + if self._fingerprint and self._trainer is not None: + epsilon = self._trainer.get_epsilon() + trainer_step = self._trainer.get_trainer_steps() + fingerprint = np.array([epsilon, trainer_step]) + extras.update({"fingerprint": fingerprint}) + + if self._adder: + self._adder.add_first(timestep, extras) + + def observe( + self, + actions: Dict[str, types.NestedArray], + next_timestep: dm_env.TimeStep, + next_extras: Dict[str, types.NestedArray] = {}, + ) -> None: + if self._fingerprint and self._trainer is not None: + trainer_step = self._trainer.get_trainer_steps() + epsilon = self._trainer.get_epsilon() + fingerprint = np.array([epsilon, trainer_step]) + next_extras.update({"fingerprint": fingerprint}) + + if self._adder: + self._adder.add(actions, next_timestep, next_extras) + + def select_actions( + self, observations: Dict[str, OLT] + ) -> Dict[str, types.NestedArray]: + actions = {} + for agent, observation in observations.items(): + # Pass the observation through the policy network. + if not self._evaluator: + epsilon = self._trainer.get_epsilon() + else: + epsilon = 0.0 + + epsilon = tf.convert_to_tensor(epsilon) + + if self._fingerprint: + trainer_step = self._trainer.get_trainer_steps() + fingerprint = tf.concat([epsilon, trainer_step], axis=0) + fingerprint = tf.expand_dims(fingerprint, axis=0) + fingerprint = tf.cast(fingerprint, "float32") + else: + fingerprint = None + + action = self._policy( + agent, + observation.observation, + observation.legal_actions, + epsilon, + fingerprint, + ) + + actions[agent] = tf2_utils.to_numpy_squeeze(action) + + # Return a numpy array with squeezed out batch dimension. + return actions + + def update(self, wait: bool = False) -> None: + if self._variable_client: + self._variable_client.update(wait) + + +class MADQNRecurrentExecutor(RecurrentExecutor): + """A feed-forward executor. + An executor based on a feed-forward policy for each agent in the system + which takes non-batched observations and outputs non-batched actions. + It also allows adding experiences to replay and updating the weights + from the policy on the learner. + """ + + def __init__( + self, + q_networks: Dict[str, snt.Module], + action_selectors: Dict[str, snt.Module], + shared_weights: bool = True, + adder: Optional[adders.ParallelAdder] = None, + variable_client: Optional[tf2_variable_utils.VariableClient] = None, + store_recurrent_state: bool = True, + trainer: QMixTrainer = None, + evaluator: bool = False, + fingerprint: bool = False, + ): + """Initializes the executor. + Args: + policy_network: the policy to run for each agent in the system. + shared_weights: specify if weights are shared between agent networks. + adder: the adder object to which allows to add experiences to a + dataset/replay buffer. + variable_client: object which allows to copy weights from the trainer copy + of the policies to the executor copy (in case they are separate). + """ + + # Store these for later use. + self._adder = adder + self._variable_client = variable_client + self._q_networks = q_networks + self._policy_networks = q_networks + self._action_selectors = action_selectors + self._store_recurrent_state = store_recurrent_state + self._trainer = trainer + self._shared_weights = shared_weights + + self._states: Dict[str, Any] = {} + + @tf.function + def _policy( + self, + agent: str, + observation: types.NestedTensor, + state: types.NestedTensor, + legal_actions: types.NestedTensor, + epsilon: tf.Tensor, + ) -> types.NestedTensor: + + # Add a dummy batch dimension and as a side effect convert numpy to TF. + batched_observation = tf2_utils.add_batch_dim(observation) + batched_legals = tf2_utils.add_batch_dim(legal_actions) + + # index network either on agent type or on agent id + agent_key = agent.split("_")[0] if self._shared_weights else agent + + # Compute the policy, conditioned on the observation. + q_values, new_state = self._q_networks[agent_key](batched_observation, state) + + # select legal action + action = self._action_selectors[agent_key]( + q_values, batched_legals, epsilon=epsilon + ) + + return action, new_state + + def select_action( + self, agent: str, observation: types.NestedArray + ) -> types.NestedArray: + raise NotImplementedError + + def select_actions( + self, observations: Dict[str, OLT] + ) -> Dict[str, types.NestedArray]: + actions = {} + + for agent, observation in observations.items(): + + # Pass the observation through the policy network. + if self._trainer is not None: + epsilon = self._trainer.get_epsilon() + else: + epsilon = 0.0 + + epsilon = tf.convert_to_tensor(epsilon) + + policy_output, new_state = self._policy( + agent, + observation.observation, + self._states[agent], + observation.legal_actions, + epsilon, + ) + + self._states[agent] = new_state + + actions[agent] = tf2_utils.to_numpy_squeeze(policy_output) + + # Return a numpy array with squeezed out batch dimension. + return actions diff --git a/mava/systems/tf/qmixV2/system.py b/mava/systems/tf/qmixV2/system.py new file mode 100644 index 000000000..06097509e --- /dev/null +++ b/mava/systems/tf/qmixV2/system.py @@ -0,0 +1,437 @@ +# python3 +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://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. + +"""Defines the MADQN system class.""" +import functools +from typing import Any, Callable, Dict, Optional, Type, Union + +import acme +import dm_env +import launchpad as lp +import reverb +import sonnet as snt +from acme import specs as acme_specs +from acme.tf import utils as tf2_utils +from acme.utils import counting + +import mava +from mava import core +from mava import specs as mava_specs +from mava.components.tf.architectures import DecentralisedValueActor +from mava.components.tf.modules.exploration import LinearExplorationScheduler +from mava.components.tf.modules.stabilising import FingerPrintStabalisation +from mava.environment_loop import ParallelEnvironmentLoop +from mava.systems.tf import executors +from mava.systems.tf import savers as tf2_savers +from mava.systems.tf.qmixV2 import builder, execution, training +from mava.utils import lp_utils +from mava.utils.loggers import MavaLogger, logger_utils +from mava.wrappers import DetailedPerAgentStatistics + + +class QMix: + """MADQN system. + This implements a single-process QMIX system. + Args: + environment_factory: Callable to instantiate an environment on a compute node. + network_factory: Callable to instantiate system networks on a compute node. + logger_factory: Callable to instantiate a system logger on a compute node. + architecture: system architecture, e.g. decentralised or centralised. + trainer_fn: training type associated with executor and architecture, + e.g. centralised training. + executor_fn: executor type for example feedforward or recurrent. + num_executors: number of executor processes to run in parallel. + num_caches: number of trainer node caches. + environment_spec: description of the actions, observations, etc. + q_networks: the online Q network (the one being optimized) + epsilon: probability of taking a random action; ignored if a policy + network is given. + trainer_fn: the class used for training the agent and mixing networks. + shared_weights: boolean determining whether shared weights is used. + target_update_period: number of learner steps to perform before updating + the target networks. + clipping: whether to clip gradients by global norm. + replay_table_name: string indicating what name to give the replay table. + max_replay_size: maximum replay size. + samples_per_insert: number of samples to take from replay for every insert + that is made. + prefetch_size: size to prefetch from replay. + batch_size: batch size for updates. + n_step: number of steps to squash into a single transition. + discount: discount to use for TD updates. + counter: counter object used to keep track of steps. + checkpoint: boolean indicating whether to checkpoint the learner. + """ + + def __init__( + self, + environment_factory: Callable[[bool], dm_env.Environment], + network_factory: Callable[[acme_specs.BoundedArray], Dict[str, snt.Module]], + logger_factory: Callable[[str], MavaLogger] = None, + architecture: Type[DecentralisedValueActor] = DecentralisedValueActor, + trainer_fn: Type[training.QMixTrainer] = training.QMixTrainer, + executor_fn: Type[core.Executor] = execution.QMixFeedForwardExecutor, + exploration_scheduler_fn: Type[ + LinearExplorationScheduler + ] = LinearExplorationScheduler, + replay_stabilisation_fn: Optional[Type[FingerPrintStabalisation]] = None, + mixer_fn: Optional[Type[snt.Module]] = None, + epsilon_min: float = 0.05, + epsilon_decay: float = 1e-4, + num_executors: int = 1, + num_caches: int = 0, + environment_spec: mava_specs.MAEnvironmentSpec = None, + shared_weights: bool = True, + batch_size: int = 256, + prefetch_size: int = 4, + min_replay_size: int = 1000, + max_replay_size: int = 1000000, + samples_per_insert: Optional[float] = 32.0, + n_step: int = 5, + sequence_length: int = 20, + period: int = 20, + clipping: bool = True, + discount: float = 0.99, + optimizer: snt.Optimizer = snt.optimizers.Adam(learning_rate=1e-4), + target_update_period: int = 100, + executor_variable_update_period: int = 1000, + max_executor_steps: int = None, + checkpoint: bool = True, + checkpoint_subpath: str = "~/mava/", + logger_config: Dict = {}, + train_loop_fn: Callable = ParallelEnvironmentLoop, + eval_loop_fn: Callable = ParallelEnvironmentLoop, + train_loop_fn_kwargs: Dict = {}, + eval_loop_fn_kwargs: Dict = {}, + ): + + if not environment_spec: + environment_spec = mava_specs.MAEnvironmentSpec( + environment_factory(evaluation=False) # type:ignore + ) + + # set default logger if no logger provided + if not logger_factory: + logger_factory = functools.partial( + logger_utils.make_logger, + directory="~/mava", + to_terminal=True, + time_delta=10, + ) + + self._architecture = architecture + self._environment_factory = environment_factory + self._network_factory = network_factory + self._logger_factory = logger_factory + self._environment_spec = environment_spec + self._shared_weights = shared_weights + self._num_exectors = num_executors + self._num_caches = num_caches + self._max_executor_steps = max_executor_steps + self._checkpoint_subpath = checkpoint_subpath + self._checkpoint = checkpoint + self._logger_config = logger_config + self._train_loop_fn = train_loop_fn + self._train_loop_fn_kwargs = train_loop_fn_kwargs + self._eval_loop_fn = eval_loop_fn + self._eval_loop_fn_kwargs = eval_loop_fn_kwargs + + if issubclass(executor_fn, executors.RecurrentExecutor): + extra_specs = self._get_extra_specs() + else: + extra_specs = {} + + self._builder = builder.QMixBuilder( + builder.QMixConfig( + environment_spec=environment_spec, + epsilon_min=epsilon_min, + epsilon_decay=epsilon_decay, + shared_weights=shared_weights, + discount=discount, + batch_size=batch_size, + prefetch_size=prefetch_size, + target_update_period=target_update_period, + executor_variable_update_period=executor_variable_update_period, + min_replay_size=min_replay_size, + max_replay_size=max_replay_size, + samples_per_insert=samples_per_insert, + n_step=n_step, + sequence_length=sequence_length, + period=period, + clipping=clipping, + checkpoint=checkpoint, + optimizer=optimizer, + checkpoint_subpath=checkpoint_subpath, + ), + trainer_fn=trainer_fn, + executor_fn=executor_fn, + extra_specs=extra_specs, + exploration_scheduler_fn=exploration_scheduler_fn, + replay_stabilisation_fn=replay_stabilisation_fn, + mixer_fn=mixer_fn, + ) + + def _get_extra_specs(self) -> Any: + agents = self._environment_spec.get_agent_ids() + core_state_specs = {} + networks = self._network_factory( # type: ignore + environment_spec=self._environment_spec + ) + for agent in agents: + agent_type = agent.split("_")[0] + core_state_specs[agent] = ( + tf2_utils.squeeze_batch_dim( + networks["q_networks"][agent_type].initial_state(1) + ), + ) + return {"core_states": core_state_specs} + + def replay(self) -> Any: + """The replay storage.""" + return self._builder.make_replay_tables(self._environment_spec) + + def counter(self) -> Any: + return tf2_savers.CheckpointingRunner( + counting.Counter(), + time_delta_minutes=15, + directory=self._checkpoint_subpath, + subdirectory="counter", + ) + + def coordinator(self, counter: counting.Counter) -> Any: + return lp_utils.StepsLimiter(counter, self._max_executor_steps) # type: ignore + + def trainer( + self, + replay: reverb.Client, + counter: counting.Counter, + ) -> mava.core.Trainer: + """The Trainer part of the system.""" + + # Create the networks to optimize (online) + networks = self._network_factory( # type: ignore + environment_spec=self._environment_spec, shared_weights=self._shared_weights + ) + + # Create system architecture with target networks. + architecture = self._architecture( + environment_spec=self._environment_spec, + value_networks=networks["q_networks"], + shared_weights=self._shared_weights, + ) + + if self._builder._replay_stabiliser_fn is not None: + architecture = self._builder._replay_stabiliser_fn( # type: ignore + architecture + ) + + system_networks = architecture.create_system() + + # create logger + trainer_logger_config = {} + if self._logger_config and "trainer" in self._logger_config: + trainer_logger_config = self._logger_config["trainer"] + trainer_logger = self._logger_factory( # type: ignore + "trainer", **trainer_logger_config + ) + + dataset = self._builder.make_dataset_iterator(replay) + counter = counting.Counter(counter, "trainer") + + return self._builder.make_trainer( + networks=system_networks, + dataset=dataset, + counter=counter, + logger=trainer_logger, + ) + + def executor( + self, + executor_id: str, + replay: reverb.Client, + variable_source: acme.VariableSource, + counter: counting.Counter, + trainer: Optional[training.QMixTrainer] = None, + ) -> mava.ParallelEnvironmentLoop: + """The executor process.""" + + # Create the behavior policy. + networks = self._network_factory( # type: ignore + environment_spec=self._environment_spec, shared_weights=self._shared_weights + ) + + # Create system architecture with target networks. + architecture = self._architecture( + environment_spec=self._environment_spec, + value_networks=networks["q_networks"], + shared_weights=self._shared_weights, + ) + + if self._builder._replay_stabiliser_fn is not None: + architecture = self._builder._replay_stabiliser_fn( # type: ignore + architecture + ) + + system_networks = architecture.create_system() + + # Create the executor. + executor = self._builder.make_executor( + q_networks=system_networks["values"], + action_selectors=networks["action_selectors"], + adder=self._builder.make_adder(replay), + variable_source=variable_source, + trainer=trainer, + ) + + # TODO (Arnu): figure out why factory function are giving type errors + # Create the environment. + environment = self._environment_factory(evaluation=False) # type: ignore + + # Create logger and counter; actors will not spam bigtable. + counter = counting.Counter(counter, "executor") + + # Create executor logger + executor_logger_config = {} + if self._logger_config and "executor" in self._logger_config: + executor_logger_config = self._logger_config["executor"] + exec_logger = self._logger_factory( # type: ignore + f"executor_{executor_id}", **executor_logger_config + ) + + # Create the loop to connect environment and executor. + train_loop = self._train_loop_fn( + environment, + executor, + counter=counter, + logger=exec_logger, + **self._train_loop_fn_kwargs, + ) + + train_loop = DetailedPerAgentStatistics(train_loop) + + return train_loop + + def evaluator( + self, + variable_source: acme.VariableSource, + counter: counting.Counter, + trainer: training.QMixTrainer, + ) -> Any: + """The evaluation process.""" + + # Create the behavior policy. + networks = self._network_factory( # type: ignore + environment_spec=self._environment_spec, shared_weights=self._shared_weights + ) + + # Create system architecture with target networks. + architecture = self._architecture( + environment_spec=self._environment_spec, + value_networks=networks["q_networks"], + shared_weights=self._shared_weights, + ) + + if self._builder._replay_stabiliser_fn is not None: + architecture = self._builder._replay_stabiliser_fn( # type: ignore + architecture + ) + + system_networks = architecture.create_system() + + # Create the agent. + executor = self._builder.make_executor( + q_networks=system_networks["values"], + action_selectors=networks["action_selectors"], + variable_source=variable_source, + trainer=trainer, + evaluator=True, + ) + + # Make the environment. + environment = self._environment_factory(evaluation=True) # type: ignore + + # Create logger and counter. + counter = counting.Counter(counter, "evaluator") + evaluator_logger_config = {} + if self._logger_config and "evaluator" in self._logger_config: + evaluator_logger_config = self._logger_config["evaluator"] + eval_logger = self._logger_factory( # type: ignore + "evaluator", **evaluator_logger_config + ) + + # Create the run loop and return it. + # Create the loop to connect environment and executor. + eval_loop = self._eval_loop_fn( + environment, + executor, + counter=counter, + logger=eval_logger, + **self._eval_loop_fn_kwargs, + ) + + eval_loop = DetailedPerAgentStatistics(eval_loop) + return eval_loop + + def build(self, name: str = "madqn") -> Any: + """Build the distributed system topology.""" + program = lp.Program(name=name) + + with program.group("replay"): + replay = program.add_node(lp.ReverbNode(self.replay)) + + with program.group("counter"): + counter = program.add_node(lp.CourierNode(self.counter)) + + if self._max_executor_steps: + with program.group("coordinator"): + _ = program.add_node(lp.CourierNode(self.coordinator, counter)) + + with program.group("trainer"): + trainer = program.add_node(lp.CourierNode(self.trainer, replay, counter)) + + with program.group("evaluator"): + program.add_node(lp.CourierNode(self.evaluator, trainer, counter, trainer)) + + if not self._num_caches: + # Use the trainer as a single variable source. + sources = [trainer] + else: + with program.group("cacher"): + # Create a set of trainer caches. + sources = [] + for _ in range(self._num_caches): + cacher = program.add_node( + lp.CacherNode( + trainer, refresh_interval_ms=2000, stale_after_ms=4000 + ) + ) + sources.append(cacher) + + with program.group("executor"): + # Add executors which pull round-robin from our variable sources. + for executor_id in range(self._num_exectors): + source = sources[executor_id % len(sources)] + program.add_node( + lp.CourierNode( + self.executor, + executor_id, + replay, + source, + counter, + trainer, + ) + ) + + return program diff --git a/mava/systems/tf/qmixV2/training.py b/mava/systems/tf/qmixV2/training.py new file mode 100644 index 000000000..0976c04fc --- /dev/null +++ b/mava/systems/tf/qmixV2/training.py @@ -0,0 +1,367 @@ +# python3 +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import copy +import time +from typing import Any, Dict, List, Optional, Sequence, Tuple + +import numpy as np +import sonnet as snt +import tensorflow as tf +import tree +import trfl +from acme.tf import utils as tf2_utils +from acme.types import NestedArray +from acme.utils import counting, loggers +from trfl.indexing_ops import batched_index + +import mava +from mava.components.tf.modules.exploration.exploration_scheduling import ( + LinearExplorationScheduler, +) +from mava.systems.tf import savers as tf2_savers +from mava.utils import training_utils as train_utils + + +class QMixTrainer(mava.Trainer): + """MADQN trainer. + This is the trainer component of a MADQN system. IE it takes a dataset as input + and implements update functionality to learn from this dataset. + """ + + def __init__( + self, + agents: List[str], + agent_types: List[str], + q_networks: Dict[str, snt.Module], + target_q_networks: Dict[str, snt.Module], + target_update_period: int, + dataset: tf.data.Dataset, + optimizer: snt.Optimizer, + discount: float, + shared_weights: bool, + exploration_scheduler: LinearExplorationScheduler, + clipping: bool = True, + fingerprint: bool = False, + mixer: Optional[snt.Module] = None, + counter: counting.Counter = None, + logger: loggers.Logger = None, + checkpoint: bool = True, + checkpoint_subpath: str = "~/mava/", + ): + + self._agents = agents + self._agent_types = agent_types + self._shared_weights = shared_weights + self._optimizer = optimizer + self._checkpoint = checkpoint + + # Store online and target q-networks. + self._q_networks = q_networks + self._target_q_networks = target_q_networks + + # General learner book-keeping and loggers. + self._counter = counter or counting.Counter() + self._logger = logger + + # Other learner parameters. + self._discount = discount + self._clipping = clipping + self._fingerprint = fingerprint + + # Necessary to track when to update target networks. + self._num_steps = tf.Variable(0, dtype=tf.int32) + self._target_update_period = target_update_period + + # Create an iterator to go through the dataset. + self._iterator = dataset + + # Store the exploration scheduler + self._exploration_scheduler = exploration_scheduler + + # mixer + self._mixer = mixer + self._target_mixer = copy.deepcopy(mixer) + + # Dictionary with network keys for each agent. + self.agent_net_keys = {agent: agent for agent in self._agents} + if self._shared_weights: + self.agent_net_keys = {agent: agent.split("_")[0] for agent in self._agents} + + self.unique_net_keys = self._agent_types if shared_weights else self._agents + + # Expose the variables. + q_networks_to_expose = {} + self._system_network_variables: Dict[str, Dict[str, snt.Module]] = { + "q_network": {}, + } + for agent_key in self.unique_net_keys: + q_network_to_expose = self._target_q_networks[agent_key] + + q_networks_to_expose[agent_key] = q_network_to_expose + + self._system_network_variables["q_network"][ + agent_key + ] = q_network_to_expose.variables + + # Checkpointer + self._system_checkpointer = {} + if checkpoint: + for agent_key in self.unique_net_keys: + + checkpointer = tf2_savers.Checkpointer( + directory=checkpoint_subpath, + time_delta_minutes=15, + objects_to_save={ + "counter": self._counter, + "q_network": self._q_networks[agent_key], + "target_q_network": self._target_q_networks[agent_key], + "optimizer": self._optimizer, + "num_steps": self._num_steps, + }, + enable_checkpointing=checkpoint, + ) + + self._system_checkpointer[agent_key] = checkpointer + + # Do not record timestamps until after the first learning step is done. + # This is to avoid including the time it takes for actors to come online and + # fill the replay buffer. + + self._timestamp: Optional[float] = None + + def get_epsilon(self) -> float: + return self._exploration_scheduler.get_epsilon() + + def get_trainer_steps(self) -> float: + return self._num_steps.numpy() + + def _decrement_epsilon(self) -> None: + self._exploration_scheduler.decrement_epsilon() + + def _update_target_networks(self) -> None: + for key in self.unique_net_keys: + # Update target network. + online_variables = [ + *self._q_networks[key].variables, + ] + + target_variables = [ + *self._target_q_networks[key].variables, + ] + + if self._mixer and self._target_mixer: + online_variables += self._mixer.variables + target_variables += self._target_mixer.variables + + # Make online -> target network update ops. + if tf.math.mod(self._num_steps, self._target_update_period) == 0: + for src, dest in zip(online_variables, target_variables): + dest.assign(src) + self._num_steps.assign_add(1) + + def _get_feed( + self, + o_tm1_trans: Dict[str, np.ndarray], + o_t_trans: Dict[str, np.ndarray], + a_tm1: Dict[str, np.ndarray], + agent: str, + ) -> Tuple[tf.Tensor, tf.Tensor, tf.Tensor]: + + # Decentralised + o_tm1_feed = o_tm1_trans[agent].observation + o_t_feed = o_t_trans[agent].observation + a_tm1_feed = a_tm1[agent] + + return o_tm1_feed, o_t_feed, a_tm1_feed + + def step(self) -> None: + # Run the learning step. + fetches = self._step() + + # Compute elapsed time. + timestamp = time.time() + if self._timestamp: + elapsed_time = timestamp - self._timestamp + else: + elapsed_time = 0 + self._timestamp = timestamp # type: ignore + + # Update our counts and record it. + counts = self._counter.increment(steps=1, walltime=elapsed_time) + fetches.update(counts) + + # Checkpoint and attempt to write the logs. + if self._checkpoint: + train_utils.checkpoint_networks(self._system_checkpointer) + + # Log and decrement epsilon + epsilon = self.get_epsilon() + fetches["epsilon"] = epsilon + self._decrement_epsilon() + + if self._logger: + self._logger.write(fetches) + + @tf.function + def _step( + self, + ) -> Dict[str, Dict[str, Any]]: + + # Update the target networks + self._update_target_networks() + + # Get data from replay (dropping extras if any). Note there is no + # extra data here because we do not insert any into Reverb. + inputs = next(self._iterator) + + self._forward(inputs) + + self._backward() + + # Log losses per agent + return {agent: {"q_value_loss": self.loss} for agent in self._agents} + + def _forward(self, inputs: Any) -> None: + # Unpack input data as follows: + # o_tm1 = dictionary of observations one for each agent + # a_tm1 = dictionary of actions taken from obs in o_tm1 + # r_t = dictionary of rewards or rewards sequences + # (if using N step transitions) ensuing from actions a_tm1 + # d_t = environment discount ensuing from actions a_tm1. + # This discount is applied to future rewards after r_t. + # o_t = dictionary of next observations or next observation sequences + # e_t [Optional] = extra data that the agents persist in replay. + o_tm1, a_tm1, e_tm1, r_t, d_t, o_t, e_t = inputs.data + s_tm1 = e_tm1["s_t"] + s_t = e_t["s_t"] + with tf.GradientTape(persistent=True) as tape: + q_network_losses: Dict[str, NestedArray] = {} + q_acts = [] + q_targets = [] + for agent in self._agents: + agent_key = self.agent_net_keys[agent] + + # Cast the additional discount to match the environment discount dtype. + discount = tf.cast(self._discount, dtype=d_t[agent].dtype) + + # Maybe transform the observation before feeding into policy and critic. + # Transforming the observations this way at the start of the learning + # step effectively means that the policy and critic share observation + # network weights. + + o_tm1_feed, o_t_feed, a_tm1_feed = self._get_feed( + o_tm1, o_t, a_tm1, agent + ) + q_tm1 = self._q_networks[agent_key](o_tm1_feed) + q_t_value = self._target_q_networks[agent_key](o_t_feed) + q_t_selector = self._q_networks[agent_key](o_t_feed) + best_action = tf.argmax(q_t_selector, axis=1, output_type=tf.int32) + + # TODO Make use of q_t_selector for fingerprinting. Speak to Claude. + q_act = batched_index(q_tm1, a_tm1_feed, keepdims=True) # [B, 1] + q_target = batched_index( + q_t_value, best_action, keepdims=True + ) # [B, 1] + + q_acts.append(q_act) + q_targets.append(q_target) + + if self._mixer and self._target_mixer: + # NOTE we expect a cooperative environment where agents share + # the same scalar reward and discount. + rewards = tf.concat( + [tf.reshape(val, (-1, 1)) for val in list(r_t.values())], axis=1 + ) + rewards = tf.reduce_mean(rewards, axis=1) # [B] + + pcont = tf.concat( + [tf.reshape(val, (-1, 1)) for val in list(d_t.values())], axis=1 + ) + pcont = tf.reduce_mean(pcont, axis=1) + discount = tf.cast(self._discount, list(d_t.values())[0].dtype) + pcont = discount * pcont # [B] + + q_acts = tf.concat(q_acts, axis=1) # [B, num_agents] + q_targets = tf.concat(q_targets, axis=1) # [B, num_agents] + + # q_tot_mixed = self._mixer(q_acts, s_tm1) # [B, 1, 1] + # q_tot_target_mixed = self._target_mixer(q_targets, s_t) # [B, 1, 1] + + q_tot_mixed = tf.reduce_sum(q_acts, axis=1) # [B, 1, 1] + q_tot_target_mixed = tf.reduce_sum(q_targets, axis=1) # [B, 1, 1] + + q_tot_mixed = tf.reshape(q_tot_mixed, (-1,)) + q_tot_target_mixed = tf.reshape(q_tot_target_mixed, (-1,)) + + # Calculate Q loss. + targets = rewards + pcont * q_tot_target_mixed + targets = tf.stop_gradient(targets) + td_error = targets - q_tot_mixed + + # Loss is MSE scaled by 0.5, so the gradient is equal to the TD error. + self.loss = 0.5 * tf.reduce_mean(tf.square(td_error)) + self.tape = tape + else: + # Q-network learning + loss, _ = trfl.double_qlearning( + q_tm1, + a_tm1_feed, + r_t[agent], + discount * d_t[agent], + q_t_value, + q_t_selector, + ) + + loss = tf.reduce_mean(loss) + + q_network_losses[agent] = {"q_value_loss": loss} + self._q_network_losses = q_network_losses + self.tape = tape + + def _backward(self) -> None: + loss = self.loss + tape = self.tape + variables = [] + for agent in self._agents: + agent_key = self.agent_net_keys[agent] + + # Get trainable variables + variables = self._q_networks[agent_key].trainable_variables + if self._mixer: + variables += self._mixer.trainable_variables + + # Compute gradients + gradients = tape.gradient(loss, variables) + + # Maybe clip gradients. + if self._clipping: + gradients = tf.clip_by_global_norm(gradients, 40.0)[0] + + # Apply gradients. + self._optimizer.apply(gradients, variables) + + train_utils.safe_del(self, "tape") + + def get_variables(self, names: Sequence[str]) -> Dict[str, Dict[str, np.ndarray]]: + variables: Dict[str, Dict[str, np.ndarray]] = {} + for network_type in names: + variables[network_type] = { + agent: tf2_utils.to_numpy( + self._system_network_variables[network_type][agent] + ) + for agent in self.unique_net_keys + } + return variables diff --git a/mava/wrappers/__init__.py b/mava/wrappers/__init__.py index b0f47b4b8..66657ed37 100644 --- a/mava/wrappers/__init__.py +++ b/mava/wrappers/__init__.py @@ -24,7 +24,9 @@ PettingZooAECEnvWrapper, PettingZooParallelEnvWrapper, ) -from mava.wrappers.smac import SMACEnvWrapper + +# TODO only import smac if the user needs it. +# from mava.wrappers.smac import SMACEnvWrapper from mava.wrappers.system_trainer_statistics import ( DetailedTrainerStatistics, DetailedTrainerStatisticsWithEpsilon, diff --git a/mava/wrappers/smac.py b/mava/wrappers/smac.py index 104831b0f..0bf9b5f41 100644 --- a/mava/wrappers/smac.py +++ b/mava/wrappers/smac.py @@ -26,12 +26,15 @@ from acme.wrappers.gym_wrapper import _convert_to_spec from gym.spaces import Box, Discrete from pettingzoo.utils.env import ParallelEnv -from smac.env import StarCraft2Env # type:ignore from mava import types from mava.utils.wrapper_utils import convert_np_type, parameterized_restart from mava.wrappers.env_wrappers import ParallelEnvWrapper +# TODO should not be imported unless user wants the smax env. +# from smac.env import StarCraft2Env # type:ignore + + class SMACEnvWrapper(ParallelEnvWrapper): """ From 5ba25ffa2a7f49a00f0e48c9a9d1727885906c88 Mon Sep 17 00:00:00 2001 From: Kale-ab Date: Mon, 24 May 2021 18:13:01 +0200 Subject: [PATCH 066/188] fix: Work with shared weights false. --- ...ntralised_feedforward_mad4pg_continous.py} | 0 ...centralised_feedforward_mad4pg_discrete.py | 206 ++++++++++++++++++ mava/systems/tf/mad4pg/training.py | 96 ++++---- mava/systems/tf/maddpg/builder.py | 12 +- mava/systems/tf/maddpg/training.py | 122 ++++++----- mava/systems/tf/mappo/builder.py | 12 +- mava/systems/tf/mappo/training.py | 33 +-- 7 files changed, 343 insertions(+), 138 deletions(-) rename examples/petting_zoo/{run_decentralised_feedforward_mad4pg.py => run_decentralised_feedforward_mad4pg_continous.py} (100%) create mode 100644 examples/petting_zoo/run_decentralised_feedforward_mad4pg_discrete.py diff --git a/examples/petting_zoo/run_decentralised_feedforward_mad4pg.py b/examples/petting_zoo/run_decentralised_feedforward_mad4pg_continous.py similarity index 100% rename from examples/petting_zoo/run_decentralised_feedforward_mad4pg.py rename to examples/petting_zoo/run_decentralised_feedforward_mad4pg_continous.py diff --git a/examples/petting_zoo/run_decentralised_feedforward_mad4pg_discrete.py b/examples/petting_zoo/run_decentralised_feedforward_mad4pg_discrete.py new file mode 100644 index 000000000..6b44bedcd --- /dev/null +++ b/examples/petting_zoo/run_decentralised_feedforward_mad4pg_discrete.py @@ -0,0 +1,206 @@ +# python3 +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://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. + +"""Example running MAD4PG on PZ environments.""" + +import functools +from datetime import datetime +from typing import Any, Dict, Mapping, Sequence, Union + +import launchpad as lp +import numpy as np +import sonnet as snt +from absl import app, flags +from acme import types +from acme.specs import BoundedArray, DiscreteArray +from acme.tf import networks +from acme.tf import utils as tf2_utils +from launchpad.nodes.python.local_multi_processing import PythonProcess + +from mava import specs as mava_specs +from mava.components.tf.networks.mad4pg import DiscreteValuedHead +from mava.systems.tf import mad4pg +from mava.utils import lp_utils +from mava.utils.environments import pettingzoo_utils +from mava.utils.loggers import logger_utils + +FLAGS = flags.FLAGS + +flags.DEFINE_string( + "env_class", + "mpe", + "Pettingzoo environment class, e.g. atari (str).", +) + +flags.DEFINE_string( + "env_name", + "simple_speaker_listener_v3", + "Pettingzoo environment name, e.g. pong (str).", +) +flags.DEFINE_string( + "mava_id", + str(datetime.now()), + "Experiment identifier that can be used to continue experiments.", +) +flags.DEFINE_string("base_dir", "~/mava/", "Base dir to store experiments.") + + +def make_networks( + environment_spec: mava_specs.MAEnvironmentSpec, + policy_networks_layer_sizes: Union[Dict[str, Sequence], Sequence] = ( + 256, + 256, + 256, + ), + critic_networks_layer_sizes: Union[Dict[str, Sequence], Sequence] = (512, 512, 256), + shared_weights: bool = True, + sigma: float = 0.3, + vmin: float = -150.0, + vmax: float = 150.0, + num_atoms: int = 51, +) -> Mapping[str, types.TensorTransformation]: + """Creates networks used by the agents.""" + specs = environment_spec.get_agent_specs() + + # Create agent_type specs + if shared_weights: + type_specs = {key.split("_")[0]: specs[key] for key in specs.keys()} + specs = type_specs + + if isinstance(policy_networks_layer_sizes, Sequence): + policy_networks_layer_sizes = { + key: policy_networks_layer_sizes for key in specs.keys() + } + if isinstance(critic_networks_layer_sizes, Sequence): + critic_networks_layer_sizes = { + key: critic_networks_layer_sizes for key in specs.keys() + } + + observation_networks = {} + policy_networks = {} + critic_networks = {} + for key in specs.keys(): + # TODO (dries): Make specs[key].actions + # return a list of specs for hybrid action space + # Get total number of action dimensions from action spec. + agent_act_spec = specs[key].actions + if type(specs[key].actions) == DiscreteArray: + num_actions = agent_act_spec.num_values + minimum = [-1.0] * num_actions + maximum = [1.0] * num_actions + agent_act_spec = BoundedArray( + shape=(num_actions,), + minimum=minimum, + maximum=maximum, + dtype="float32", + name="actions", + ) + + # Get total number of action dimensions from action spec. + num_dimensions = np.prod(agent_act_spec.shape, dtype=int) + + # Create the shared observation network; here simply a state-less operation. + observation_network = tf2_utils.to_sonnet_module(tf2_utils.batch_concat) + + # Create the policy network. + policy_network = snt.Sequential( + [ + networks.LayerNormMLP( + policy_networks_layer_sizes[key], activate_final=True + ), + networks.NearZeroInitializedLinear(num_dimensions), + networks.TanhToSpec(agent_act_spec), + networks.ClippedGaussian(sigma), + networks.ClipToSpec(agent_act_spec), + ] + ) + + # Create the critic network. + critic_network = snt.Sequential( + [ + # The multiplexer concatenates the observations/actions. + networks.CriticMultiplexer(), + networks.LayerNormMLP( + critic_networks_layer_sizes[key], activate_final=False + ), + DiscreteValuedHead(vmin, vmax, num_atoms), + ] + ) + observation_networks[key] = observation_network + policy_networks[key] = policy_network + critic_networks[key] = critic_network + + return { + "policies": policy_networks, + "critics": critic_networks, + "observations": observation_networks, + } + + +def main(_: Any) -> None: + + # environment + environment_factory = functools.partial( + pettingzoo_utils.make_environment, + env_name=FLAGS.env_name, + env_class=FLAGS.env_class, + ) + + # networks + network_factory = lp_utils.partial_kwargs(make_networks) + + # Checkpointer appends "Checkpoints" to checkpoint_dir + checkpoint_dir = f"{FLAGS.base_dir}/{FLAGS.mava_id}" + + # loggers + log_every = 10 + logger_factory = functools.partial( + logger_utils.make_logger, + directory=FLAGS.base_dir, + to_terminal=True, + to_tensorboard=True, + time_stamp=FLAGS.mava_id, + time_delta=log_every, + ) + + # distributed program + program = mad4pg.MAD4PG( + environment_factory=environment_factory, + network_factory=network_factory, + logger_factory=logger_factory, + num_executors=2, + policy_optimizer=snt.optimizers.Adam(learning_rate=1e-4), + critic_optimizer=snt.optimizers.Adam(learning_rate=1e-4), + checkpoint_subpath=checkpoint_dir, + ).build() + + # launch + gpu_id = -1 + env_vars = {"CUDA_VISIBLE_DEVICES": str(gpu_id)} + local_resources = { + "trainer": [], + "evaluator": PythonProcess(env=env_vars), + "executor": PythonProcess(env=env_vars), + } + lp.launch( + program, + lp.LaunchType.LOCAL_MULTI_PROCESSING, + terminal="current_terminal", + local_resources=local_resources, + ) + + +if __name__ == "__main__": + app.run(main) diff --git a/mava/systems/tf/mad4pg/training.py b/mava/systems/tf/mad4pg/training.py index 33e5875e9..fcfbe8448 100644 --- a/mava/systems/tf/mad4pg/training.py +++ b/mava/systems/tf/mad4pg/training.py @@ -52,8 +52,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizers: Dict[str, snt.Optimizer], - critic_optimizers: Dict[str, snt.Optimizer], + policy_optimizer: snt.Optimizer, + critic_optimizer: snt.Optimizer, discount: float, target_averaging: bool, target_update_period: int, @@ -83,8 +83,8 @@ def __init__( observation_network: an optional online network to process observations before the policy and the critic. target_observation_network: the target observation network. - policy_optimizers: the optimizer to be applied to the DPG (policy) loss. - critic_optimizers: the optimizer to be applied to the critic loss. + policy_optimizer: the optimizer to be applied to the DPG (policy) loss. + critic_optimizer: the optimizer to be applied to the critic loss. clipping: whether to clip gradients by global norm. counter: counter object used to keep track of steps. logger: logger object to be used by learner. @@ -98,8 +98,8 @@ def __init__( critic_networks=critic_networks, target_policy_networks=target_policy_networks, target_critic_networks=target_critic_networks, - policy_optimizers=policy_optimizers, - critic_optimizers=critic_optimizers, + policy_optimizer=policy_optimizer, + critic_optimizer=critic_optimizer, discount=discount, target_averaging=target_averaging, target_update_period=target_update_period, @@ -203,8 +203,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizers: Dict[str, snt.Optimizer], - critic_optimizers: Dict[str, snt.Optimizer], + policy_optimizer: Dict[str, snt.Optimizer], + critic_optimizer: Dict[str, snt.Optimizer], discount: float, target_averaging: bool, target_update_period: int, @@ -234,8 +234,8 @@ def __init__( observation_network: an optional online network to process observations before the policy and the critic. target_observation_network: the target observation network. - policy_optimizers: the optimizer to be applied to the DPG (policy) loss. - critic_optimizers: the optimizer to be applied to the critic loss. + policy_optimizer: the optimizer to be applied to the DPG (policy) loss. + critic_optimizer: the optimizer to be applied to the critic loss. clipping: whether to clip gradients by global norm. counter: counter object used to keep track of steps. logger: logger object to be used by learner. @@ -257,8 +257,8 @@ def __init__( observation_networks=observation_networks, target_observation_networks=target_observation_networks, shared_weights=shared_weights, - policy_optimizers=policy_optimizers, - critic_optimizers=critic_optimizers, + policy_optimizer=policy_optimizer, + critic_optimizer=critic_optimizer, max_gradient_norm=max_gradient_norm, counter=counter, logger=logger, @@ -281,8 +281,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizers: Dict[str, snt.Optimizer], - critic_optimizers: Dict[str, snt.Optimizer], + policy_optimizer: Dict[str, snt.Optimizer], + critic_optimizer: Dict[str, snt.Optimizer], discount: float, target_averaging: bool, target_update_period: int, @@ -312,8 +312,8 @@ def __init__( observation_network: an optional online network to process observations before the policy and the critic. target_observation_network: the target observation network. - policy_optimizers: the optimizer to be applied to the DPG (policy) loss. - critic_optimizers: the optimizer to be applied to the critic loss. + policy_optimizer: the optimizer to be applied to the DPG (policy) loss. + critic_optimizer: the optimizer to be applied to the critic loss. clipping: whether to clip gradients by global norm. counter: counter object used to keep track of steps. logger: logger object to be used by learner. @@ -335,8 +335,8 @@ def __init__( observation_networks=observation_networks, target_observation_networks=target_observation_networks, shared_weights=shared_weights, - policy_optimizers=policy_optimizers, - critic_optimizers=critic_optimizers, + policy_optimizer=policy_optimizer, + critic_optimizer=critic_optimizer, max_gradient_norm=max_gradient_norm, counter=counter, logger=logger, @@ -359,8 +359,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizers: Dict[str, snt.Optimizer], - critic_optimizers: Dict[str, snt.Optimizer], + policy_optimizer: Dict[str, snt.Optimizer], + critic_optimizer: Dict[str, snt.Optimizer], discount: float, target_averaging: bool, target_update_period: int, @@ -390,8 +390,8 @@ def __init__( observation_network: an optional online network to process observations before the policy and the critic. target_observation_network: the target observation network. - policy_optimizers: the optimizer to be applied to the DPG (policy) loss. - critic_optimizers: the optimizer to be applied to the critic loss. + policy_optimizer: the optimizer to be applied to the DPG (policy) loss. + critic_optimizer: the optimizer to be applied to the critic loss. clipping: whether to clip gradients by global norm. counter: counter object used to keep track of steps. logger: logger object to be used by learner. @@ -413,8 +413,8 @@ def __init__( observation_networks=observation_networks, target_observation_networks=target_observation_networks, shared_weights=shared_weights, - policy_optimizers=policy_optimizers, - critic_optimizers=critic_optimizers, + policy_optimizer=policy_optimizer, + critic_optimizer=critic_optimizer, max_gradient_norm=max_gradient_norm, counter=counter, logger=logger, @@ -437,8 +437,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizers: Dict[str, snt.Optimizer], - critic_optimizers: Dict[str, snt.Optimizer], + policy_optimizer: Dict[str, snt.Optimizer], + critic_optimizer: Dict[str, snt.Optimizer], discount: float, target_averaging: bool, target_update_period: int, @@ -469,8 +469,8 @@ def __init__( observation_network: an optional online network to process observations before the policy and the critic. target_observation_network: the target observation network. - policy_optimizers: the optimizer to be applied to the DPG (policy) loss. - critic_optimizers: the optimizer to be applied to the critic loss. + policy_optimizer: the optimizer to be applied to the DPG (policy) loss. + critic_optimizer: the optimizer to be applied to the critic loss. clipping: whether to clip gradients by global norm. counter: counter object used to keep track of steps. logger: logger object to be used by learner. @@ -492,8 +492,8 @@ def __init__( observation_networks=observation_networks, target_observation_networks=target_observation_networks, shared_weights=shared_weights, - policy_optimizers=policy_optimizers, - critic_optimizers=critic_optimizers, + policy_optimizer=policy_optimizer, + critic_optimizer=critic_optimizer, max_gradient_norm=max_gradient_norm, counter=counter, logger=logger, @@ -643,8 +643,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizers: Dict[str, snt.Optimizer], - critic_optimizers: Dict[str, snt.Optimizer], + policy_optimizer: Dict[str, snt.Optimizer], + critic_optimizer: Dict[str, snt.Optimizer], discount: float, target_averaging: bool, target_update_period: int, @@ -675,8 +675,8 @@ def __init__( observation_network: an optional online network to process observations before the policy and the critic. target_observation_network: the target observation network. - policy_optimizers: the optimizer to be applied to the DPG (policy) loss. - critic_optimizers: the optimizer to be applied to the critic loss. + policy_optimizer: the optimizer to be applied to the DPG (policy) loss. + critic_optimizer: the optimizer to be applied to the critic loss. clipping: whether to clip gradients by global norm. counter: counter object used to keep track of steps. logger: logger object to be used by learner. @@ -698,8 +698,8 @@ def __init__( observation_networks=observation_networks, target_observation_networks=target_observation_networks, shared_weights=shared_weights, - policy_optimizers=policy_optimizers, - critic_optimizers=critic_optimizers, + policy_optimizer=policy_optimizer, + critic_optimizer=critic_optimizer, max_gradient_norm=max_gradient_norm, counter=counter, logger=logger, @@ -725,8 +725,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizers: Dict[str, snt.Optimizer], - critic_optimizers: Dict[str, snt.Optimizer], + policy_optimizer: Dict[str, snt.Optimizer], + critic_optimizer: Dict[str, snt.Optimizer], discount: float, target_averaging: bool, target_update_period: int, @@ -757,8 +757,8 @@ def __init__( observation_network: an optional online network to process observations before the policy and the critic. target_observation_network: the target observation network. - policy_optimizers: the optimizer to be applied to the DPG (policy) loss. - critic_optimizers: the optimizer to be applied to the critic loss. + policy_optimizer: the optimizer to be applied to the DPG (policy) loss. + critic_optimizer: the optimizer to be applied to the critic loss. clipping: whether to clip gradients by global norm. counter: counter object used to keep track of steps. logger: logger object to be used by learner. @@ -780,8 +780,8 @@ def __init__( observation_networks=observation_networks, target_observation_networks=target_observation_networks, shared_weights=shared_weights, - policy_optimizers=policy_optimizers, - critic_optimizers=critic_optimizers, + policy_optimizer=policy_optimizer, + critic_optimizer=critic_optimizer, max_gradient_norm=max_gradient_norm, counter=counter, logger=logger, @@ -807,8 +807,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizers: Dict[str, snt.Optimizer], - critic_optimizers: Dict[str, snt.Optimizer], + policy_optimizer: Dict[str, snt.Optimizer], + critic_optimizer: Dict[str, snt.Optimizer], discount: float, target_averaging: bool, target_update_period: int, @@ -839,8 +839,8 @@ def __init__( observation_network: an optional online network to process observations before the policy and the critic. target_observation_network: the target observation network. - policy_optimizers: the optimizer to be applied to the DPG (policy) loss. - critic_optimizers: the optimizer to be applied to the critic loss. + policy_optimizer: the optimizer to be applied to the DPG (policy) loss. + critic_optimizer: the optimizer to be applied to the critic loss. clipping: whether to clip gradients by global norm. counter: counter object used to keep track of steps. logger: logger object to be used by learner. @@ -862,8 +862,8 @@ def __init__( observation_networks=observation_networks, target_observation_networks=target_observation_networks, shared_weights=shared_weights, - policy_optimizers=policy_optimizers, - critic_optimizers=critic_optimizers, + policy_optimizer=policy_optimizer, + critic_optimizer=critic_optimizer, max_gradient_norm=max_gradient_norm, counter=counter, logger=logger, diff --git a/mava/systems/tf/maddpg/builder.py b/mava/systems/tf/maddpg/builder.py index 3929a42b9..a40bb92eb 100644 --- a/mava/systems/tf/maddpg/builder.py +++ b/mava/systems/tf/maddpg/builder.py @@ -323,14 +323,6 @@ def make_trainer( target_averaging = self._config.target_averaging target_update_rate = self._config.target_update_rate - # Create optimizers for different agent types. - # TODO(Kale-ab): Allow this to be passed as a system param. - policy_optimizers: Dict[str, snt.Optimizer] = {} - critic_optimizers: Dict[str, snt.Optimizer] = {} - for agent in self._agent_types: - policy_optimizers[agent] = copy.deepcopy(self._config.policy_optimizer) - critic_optimizers[agent] = copy.deepcopy(self._config.critic_optimizer) - # trainer args trainer_config: Dict[str, Any] = { "agents": agents, @@ -342,8 +334,8 @@ def make_trainer( "target_critic_networks": networks["target_critics"], "target_observation_networks": networks["target_observations"], "shared_weights": shared_weights, - "policy_optimizers": policy_optimizers, - "critic_optimizers": critic_optimizers, + "policy_optimizer": self._config.policy_optimizer, + "critic_optimizer": self._config.critic_optimizer, "max_gradient_norm": max_gradient_norm, "discount": discount, "target_averaging": target_averaging, diff --git a/mava/systems/tf/maddpg/training.py b/mava/systems/tf/maddpg/training.py index 89676c09b..367ba6ae8 100644 --- a/mava/systems/tf/maddpg/training.py +++ b/mava/systems/tf/maddpg/training.py @@ -51,8 +51,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizers: Dict[str, snt.Optimizer], - critic_optimizers: Dict[str, snt.Optimizer], + policy_optimizer: snt.Optimizer, + critic_optimizer: snt.Optimizer, discount: float, target_averaging: bool, target_update_period: int, @@ -86,8 +86,8 @@ def __init__( observation_network: an optional online network to process observations before the policy and the critic. target_observation_network: the target observation network. - policy_optimizers: the optimizer to be applied to the DPG (policy) loss. - critic_optimizers: the optimizer to be applied to the critic loss. + policy_optimizer: the optimizer to be applied to the DPG (policy) loss. + critic_optimizer: the optimizer to be applied to the critic loss. clipping: whether to clip gradients by global norm. counter: counter object used to keep track of steps. logger: logger object to be used by learner. @@ -136,9 +136,6 @@ def __init__( # Create an iterator to go through the dataset. self._iterator = iter(dataset) # pytype: disable=wrong-arg-types - self._critic_optimizers = critic_optimizers - self._policy_optimizers = policy_optimizers - # Dictionary with network keys for each agent. self.agent_net_keys = {agent: agent for agent in self._agents} if self._shared_weights: @@ -146,6 +143,14 @@ def __init__( self.unique_net_keys = self._agent_types if shared_weights else self._agents + # Create optimizers for different agent types. + # TODO(Kale-ab): Allow this to be passed as a system param. + self._policy_optimizers: snt.Optimizer = {} + self._critic_optimizers: snt.Optimizer = {} + for agent in self.unique_net_keys: + self._policy_optimizers[agent] = copy.deepcopy(policy_optimizer) + self._critic_optimizers[agent] = copy.deepcopy(critic_optimizer) + # Expose the variables. policy_networks_to_expose = {} self._system_network_variables: Dict[str, Dict[str, snt.Module]] = { @@ -462,8 +467,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizers: Dict[str, snt.Optimizer], - critic_optimizers: Dict[str, snt.Optimizer], + policy_optimizer: snt.Optimizer, + critic_optimizer: snt.Optimizer, discount: float, target_averaging: bool, target_update_period: int, @@ -493,8 +498,8 @@ def __init__( observation_network: an optional online network to process observations before the policy and the critic. target_observation_network: the target observation network. - policy_optimizers: the optimizers to be applied to the DPG (policy) loss. - critic_optimizers: the optimizers to be applied to the critic loss. + policy_optimizer: the optimizers to be applied to the DPG (policy) loss. + critic_optimizer: the optimizers to be applied to the critic loss. clipping: whether to clip gradients by global norm. counter: counter object used to keep track of steps. logger: logger object to be used by learner. @@ -516,8 +521,8 @@ def __init__( observation_networks=observation_networks, target_observation_networks=target_observation_networks, shared_weights=shared_weights, - policy_optimizers=policy_optimizers, - critic_optimizers=critic_optimizers, + policy_optimizer=policy_optimizer, + critic_optimizer=critic_optimizer, max_gradient_norm=max_gradient_norm, counter=counter, logger=logger, @@ -540,8 +545,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizers: Dict[str, snt.Optimizer], - critic_optimizers: Dict[str, snt.Optimizer], + policy_optimizer: snt.Optimizer, + critic_optimizer: snt.Optimizer, discount: float, target_averaging: bool, target_update_period: int, @@ -571,8 +576,8 @@ def __init__( observation_network: an optional online network to process observations before the policy and the critic. target_observation_network: the target observation network. - policy_optimizers: the optimizer to be applied to the DPG (policy) loss. - critic_optimizers: the optimizer to be applied to the critic loss. + policy_optimizer: the optimizer to be applied to the DPG (policy) loss. + critic_optimizer: the optimizer to be applied to the critic loss. clipping: whether to clip gradients by global norm. counter: counter object used to keep track of steps. logger: logger object to be used by learner. @@ -594,8 +599,8 @@ def __init__( observation_networks=observation_networks, target_observation_networks=target_observation_networks, shared_weights=shared_weights, - policy_optimizers=policy_optimizers, - critic_optimizers=critic_optimizers, + policy_optimizer=policy_optimizer, + critic_optimizer=critic_optimizer, max_gradient_norm=max_gradient_norm, counter=counter, logger=logger, @@ -656,8 +661,8 @@ def __init__( target_update_period: int, target_update_rate: float, dataset: tf.data.Dataset, - policy_optimizers: Dict[str, snt.Optimizer], - critic_optimizers: Dict[str, snt.Optimizer], + policy_optimizer: snt.Optimizer, + critic_optimizer: snt.Optimizer, observation_networks: Dict[str, snt.Module], target_observation_networks: Dict[str, snt.Module], shared_weights: bool = False, @@ -682,8 +687,8 @@ def __init__( observation_network: an optional online network to process observations before the policy and the critic. target_observation_network: the target observation network. - policy_optimizers: the optimizer to be applied to the DPG (policy) loss. - critic_optimizers: the optimizer to be applied to the critic loss. + policy_optimizer: the optimizer to be applied to the DPG (policy) loss. + critic_optimizer: the optimizer to be applied to the critic loss. clipping: whether to clip gradients by global norm. counter: counter object used to keep track of steps. logger: logger object to be used by learner. @@ -705,8 +710,8 @@ def __init__( observation_networks=observation_networks, target_observation_networks=target_observation_networks, shared_weights=shared_weights, - policy_optimizers=policy_optimizers, - critic_optimizers=critic_optimizers, + policy_optimizer=policy_optimizer, + critic_optimizer=critic_optimizer, max_gradient_norm=max_gradient_norm, counter=counter, logger=logger, @@ -774,8 +779,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizers: Dict[str, snt.Optimizer], - critic_optimizers: Dict[str, snt.Optimizer], + policy_optimizer: snt.Optimizer, + critic_optimizer: snt.Optimizer, discount: float, target_averaging: bool, target_update_period: int, @@ -805,8 +810,8 @@ def __init__( observation_network: an optional online network to process observations before the policy and the critic. target_observation_network: the target observation network. - policy_optimizers: the optimizer to be applied to the DPG (policy) loss. - critic_optimizers: the optimizer to be applied to the critic loss. + policy_optimizer: the optimizer to be applied to the DPG (policy) loss. + critic_optimizer: the optimizer to be applied to the critic loss. clipping: whether to clip gradients by global norm. counter: counter object used to keep track of steps. logger: logger object to be used by learner. @@ -828,8 +833,8 @@ def __init__( observation_networks=observation_networks, target_observation_networks=target_observation_networks, shared_weights=shared_weights, - policy_optimizers=policy_optimizers, - critic_optimizers=critic_optimizers, + policy_optimizer=policy_optimizer, + critic_optimizer=critic_optimizer, max_gradient_norm=max_gradient_norm, counter=counter, logger=logger, @@ -884,8 +889,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizers: Dict[str, snt.Optimizer], - critic_optimizers: Dict[str, snt.Optimizer], + policy_optimizer: snt.Optimizer, + critic_optimizer: snt.Optimizer, discount: float, target_averaging: bool, target_update_period: int, @@ -916,8 +921,8 @@ def __init__( observation_network: an optional online network to process observations before the policy and the critic. target_observation_network: the target observation network. - policy_optimizers: the optimizer to be applied to the DPG (policy) loss. - critic_optimizers: the optimizer to be applied to the critic loss. + policy_optimizer: the optimizer to be applied to the DPG (policy) loss. + critic_optimizer: the optimizer to be applied to the critic loss. clipping: whether to clip gradients by global norm. counter: counter object used to keep track of steps. logger: logger object to be used by learner. @@ -967,9 +972,6 @@ def __init__( # Create an iterator to go through the dataset. self._iterator = iter(dataset) # pytype: disable=wrong-arg-types - self._critic_optimizers = critic_optimizers - self._policy_optimizers = policy_optimizers - # Dictionary with network keys for each agent. self.agent_net_keys = {agent: agent for agent in self._agents} if self._shared_weights: @@ -977,6 +979,14 @@ def __init__( self.unique_net_keys = self._agent_types if shared_weights else self._agents + # Create optimizers for different agent types. + # TODO(Kale-ab): Allow this to be passed as a system param. + self._policy_optimizers: snt.Optimizer = {} + self._critic_optimizers: snt.Optimizer = {} + for agent in self.unique_net_keys: + self._policy_optimizers[agent] = copy.deepcopy(policy_optimizer) + self._critic_optimizers[agent] = copy.deepcopy(critic_optimizer) + # Expose the variables. policy_networks_to_expose = {} self._system_network_variables: Dict[str, Dict[str, snt.Module]] = { @@ -1374,8 +1384,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizers: Dict[str, snt.Optimizer], - critic_optimizers: Dict[str, snt.Optimizer], + policy_optimizer: snt.Optimizer, + critic_optimizer: snt.Optimizer, discount: float, target_averaging: bool, target_update_period: int, @@ -1406,8 +1416,8 @@ def __init__( observation_network: an optional online network to process observations before the policy and the critic. target_observation_network: the target observation network. - policy_optimizers: the optimizer to be applied to the DPG (policy) loss. - critic_optimizers: the optimizer to be applied to the critic loss. + policy_optimizer: the optimizer to be applied to the DPG (policy) loss. + critic_optimizer: the optimizer to be applied to the critic loss. clipping: whether to clip gradients by global norm. counter: counter object used to keep track of steps. logger: logger object to be used by learner. @@ -1429,8 +1439,8 @@ def __init__( observation_networks=observation_networks, target_observation_networks=target_observation_networks, shared_weights=shared_weights, - policy_optimizers=policy_optimizers, - critic_optimizers=critic_optimizers, + policy_optimizer=policy_optimizer, + critic_optimizer=critic_optimizer, max_gradient_norm=max_gradient_norm, counter=counter, logger=logger, @@ -1454,8 +1464,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizers: Dict[str, snt.Optimizer], - critic_optimizers: Dict[str, snt.Optimizer], + policy_optimizer: snt.Optimizer, + critic_optimizer: snt.Optimizer, discount: float, target_averaging: bool, target_update_period: int, @@ -1486,8 +1496,8 @@ def __init__( observation_network: an optional online network to process observations before the policy and the critic. target_observation_network: the target observation network. - policy_optimizers: the optimizer to be applied to the DPG (policy) loss. - critic_optimizers: the optimizer to be applied to the critic loss. + policy_optimizer: the optimizer to be applied to the DPG (policy) loss. + critic_optimizer: the optimizer to be applied to the critic loss. clipping: whether to clip gradients by global norm. counter: counter object used to keep track of steps. logger: logger object to be used by learner. @@ -1508,8 +1518,8 @@ def __init__( observation_networks=observation_networks, target_observation_networks=target_observation_networks, shared_weights=shared_weights, - policy_optimizers=policy_optimizers, - critic_optimizers=critic_optimizers, + policy_optimizer=policy_optimizer, + critic_optimizer=critic_optimizer, max_gradient_norm=max_gradient_norm, counter=counter, logger=logger, @@ -1567,8 +1577,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizers: Dict[str, snt.Optimizer], - critic_optimizers: Dict[str, snt.Optimizer], + policy_optimizer: snt.Optimizer, + critic_optimizer: snt.Optimizer, discount: float, target_averaging: bool, target_update_period: int, @@ -1599,8 +1609,8 @@ def __init__( observation_network: an optional online network to process observations before the policy and the critic. target_observation_network: the target observation network. - policy_optimizers: the optimizer to be applied to the DPG (policy) loss. - critic_optimizers: the optimizer to be applied to the critic loss. + policy_optimizer: the optimizer to be applied to the DPG (policy) loss. + critic_optimizer: the optimizer to be applied to the critic loss. clipping: whether to clip gradients by global norm. counter: counter object used to keep track of steps. logger: logger object to be used by learner. @@ -1621,8 +1631,8 @@ def __init__( observation_networks=observation_networks, target_observation_networks=target_observation_networks, shared_weights=shared_weights, - policy_optimizers=policy_optimizers, - critic_optimizers=critic_optimizers, + policy_optimizer=policy_optimizer, + critic_optimizer=critic_optimizer, max_gradient_norm=max_gradient_norm, counter=counter, logger=logger, diff --git a/mava/systems/tf/mappo/builder.py b/mava/systems/tf/mappo/builder.py index f3c7e9f6e..431ecdeee 100644 --- a/mava/systems/tf/mappo/builder.py +++ b/mava/systems/tf/mappo/builder.py @@ -14,7 +14,6 @@ # limitations under the License. """MAPPO builder and config.""" -import copy import dataclasses from typing import Dict, Iterator, List, Optional, Type @@ -243,13 +242,6 @@ def make_trainer( policy_networks = networks["policies"] critic_networks = networks["critics"] - # Create optimizers for different agent types. - policy_optimizers: Dict[str, snt.Optimizer] = {} - critic_optimizers: Dict[str, snt.Optimizer] = {} - for agent in self._agent_types: - policy_optimizers[agent] = copy.deepcopy(self._config.policy_optimizer) - critic_optimizers[agent] = copy.deepcopy(self._config.critic_optimizer) - # The learner updates the parameters (and initializes them). trainer = self._trainer_fn( agents=agents, @@ -259,8 +251,8 @@ def make_trainer( critic_networks=critic_networks, dataset=dataset, shared_weights=shared_weights, - critic_optimizers=critic_optimizers, - policy_optimizers=policy_optimizers, + critic_optimizer=self._config.critic_optimizer, + policy_optimizer=self._config.policy_optimizer, discount=self._config.discount, lambda_gae=self._config.lambda_gae, entropy_cost=self._config.entropy_cost, diff --git a/mava/systems/tf/mappo/training.py b/mava/systems/tf/mappo/training.py index 08b92049b..793600218 100644 --- a/mava/systems/tf/mappo/training.py +++ b/mava/systems/tf/mappo/training.py @@ -14,6 +14,7 @@ # limitations under the License. """MAPPO trainer implementation.""" +import copy import os import time from typing import Any, Dict, List, Optional, Sequence @@ -47,8 +48,8 @@ def __init__( policy_networks: Dict[str, snt.Module], critic_networks: Dict[str, snt.Module], dataset: tf.data.Dataset, - policy_optimizers: Dict[str, snt.Optimizer], - critic_optimizers: Dict[str, snt.Optimizer], + policy_optimizer: snt.Optimizer, + critic_optimizer: snt.Optimizer, shared_weights: bool, discount: float = 0.99, lambda_gae: float = 1.0, @@ -65,8 +66,8 @@ def __init__( Args: policy_networks: ... critic_networks: ... - policy_optimizers: policy optimizer, - critic_optimizers: critic optimizer, + policy_optimizer: policy optimizer, + critic_optimizer: critic optimizer, shared_weights: ... discount: discount to use for TD updates. dataset: dataset to learn from, whether fixed or from a replay buffer @@ -95,10 +96,6 @@ def __init__( self._policy_networks = policy_networks self._critic_networks = critic_networks - # Get optimizers - self._policy_optimizers = policy_optimizers - self._critic_optimizers = critic_optimizers - # Dictionary with network keys for each agent. self.agent_net_keys = {agent: agent for agent in self._agents} if self._shared_weights: @@ -106,6 +103,14 @@ def __init__( self.unique_net_keys = self._agent_types if shared_weights else self._agents + # Create optimizers for different agent types. + # TODO(Kale-ab): Allow this to be passed as a system param. + self._policy_optimizers: snt.Optimizer = {} + self._critic_optimizers: snt.Optimizer = {} + for agent in self.unique_net_keys: + self._policy_optimizers[agent] = copy.deepcopy(policy_optimizer) + self._critic_optimizers[agent] = copy.deepcopy(critic_optimizer) + # Expose the variables. policy_networks_to_expose = {} self._system_network_variables: Dict[str, Dict[str, snt.Module]] = { @@ -156,8 +161,8 @@ def __init__( "policy": self._policy_networks[agent_key], "critic": self._critic_networks[agent_key], "observation": self._observation_networks[agent_key], - "policy_optimizers": self._policy_optimizers, - "critic_optimizers": self._critic_optimizers, + "policy_optimizer": self._policy_optimizers, + "critic_optimizer": self._critic_optimizers, } subdir = os.path.join("trainer", agent_key) @@ -412,8 +417,8 @@ def __init__( policy_networks: Dict[str, snt.Module], critic_networks: Dict[str, snt.Module], dataset: tf.data.Dataset, - policy_optimizers: Dict[str, snt.Optimizer], - critic_optimizers: Dict[str, snt.Optimizer], + policy_optimizer: snt.Optimizer, + critic_optimizer: snt.Optimizer, shared_weights: bool, discount: float = 0.99, lambda_gae: float = 1.0, @@ -435,8 +440,8 @@ def __init__( observation_networks=observation_networks, dataset=dataset, shared_weights=shared_weights, - policy_optimizers=policy_optimizers, - critic_optimizers=critic_optimizers, + policy_optimizer=policy_optimizer, + critic_optimizer=critic_optimizer, discount=discount, lambda_gae=lambda_gae, entropy_cost=entropy_cost, From 01e3ff2e7f6973c6da0f2864a1b020d2ac39335c Mon Sep 17 00:00:00 2001 From: Kale-ab Date: Mon, 24 May 2021 18:20:47 +0200 Subject: [PATCH 067/188] feat: Updated dqn, qmix and vdn trainers. --- ...dqn.py => run_decentralised_feedforward_madqn.py} | 2 +- mava/systems/tf/madqn/training.py | 12 +++++++++--- mava/systems/tf/qmix/training.py | 2 +- mava/systems/tf/vdn/training.py | 2 +- 4 files changed, 12 insertions(+), 6 deletions(-) rename examples/petting_zoo/{run_feedforward_madqn.py => run_decentralised_feedforward_madqn.py} (98%) diff --git a/examples/petting_zoo/run_feedforward_madqn.py b/examples/petting_zoo/run_decentralised_feedforward_madqn.py similarity index 98% rename from examples/petting_zoo/run_feedforward_madqn.py rename to examples/petting_zoo/run_decentralised_feedforward_madqn.py index 6ae205151..1ef4a1aed 100644 --- a/examples/petting_zoo/run_feedforward_madqn.py +++ b/examples/petting_zoo/run_decentralised_feedforward_madqn.py @@ -50,7 +50,7 @@ str(datetime.now()), "Experiment identifier that can be used to continue experiments.", ) -flags.DEFINE_string("base_dir", "./logs/", "Base dir to store experiments.") +flags.DEFINE_string("base_dir", "~/mava/", "Base dir to store experiments.") def make_networks( diff --git a/mava/systems/tf/madqn/training.py b/mava/systems/tf/madqn/training.py index ffd1293ee..8456dae82 100644 --- a/mava/systems/tf/madqn/training.py +++ b/mava/systems/tf/madqn/training.py @@ -13,6 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +import copy import time from typing import Any, Dict, List, Optional, Sequence, Tuple @@ -62,7 +63,6 @@ def __init__( self._agents = agents self._agent_types = agent_types self._shared_weights = shared_weights - self._optimizer = optimizer self._checkpoint = checkpoint # Store online and target q-networks. @@ -95,6 +95,12 @@ def __init__( self.unique_net_keys = self._agent_types if shared_weights else self._agents + # Create optimizers for different agent types. + # TODO(Kale-ab): Allow this to be passed as a system param. + self._optimizers: snt.Optimizer = {} + for agent in self.unique_net_keys: + self._optimizers[agent] = copy.deepcopy(optimizer) + # Expose the variables. q_networks_to_expose = {} self._system_network_variables: Dict[str, Dict[str, snt.Module]] = { @@ -121,7 +127,7 @@ def __init__( "counter": self._counter, "q_network": self._q_networks[agent_key], "target_q_network": self._target_q_networks[agent_key], - "optimizer": self._optimizer, + "optimizer": self._optimizers, "num_steps": self._num_steps, }, enable_checkpointing=checkpoint, @@ -298,7 +304,7 @@ def _backward(self) -> None: gradients = tf.clip_by_global_norm(gradients, 40.0)[0] # Apply gradients. - self._optimizer.apply(gradients, q_network_variables) + self._optimizers[agent_key].apply(gradients, q_network_variables) train_utils.safe_del(self, "tape") diff --git a/mava/systems/tf/qmix/training.py b/mava/systems/tf/qmix/training.py index 252828182..212aad6df 100644 --- a/mava/systems/tf/qmix/training.py +++ b/mava/systems/tf/qmix/training.py @@ -229,7 +229,7 @@ def _backward(self) -> None: gradients = tf.clip_by_global_norm(gradients, 40.0)[0] # Apply gradients. - self._optimizer.apply(gradients, trainable_variables) + self._optimizers[agent_key].apply(gradients, trainable_variables) # Delete the tape manually because of the persistent=True flag. train_utils.safe_del(self, "tape") diff --git a/mava/systems/tf/vdn/training.py b/mava/systems/tf/vdn/training.py index d48080bb2..951c14099 100644 --- a/mava/systems/tf/vdn/training.py +++ b/mava/systems/tf/vdn/training.py @@ -169,7 +169,7 @@ def _backward(self) -> None: gradients = tf.clip_by_global_norm(gradients, 40.0)[0] # Apply gradients. - self._optimizer.apply(gradients, trainable_variables) + self._optimizers[agent_key].apply(gradients, trainable_variables) # Delete the tape manually because of the persistent=True flag. train_utils.safe_del(self, "tape") From fb6c50a779896bca33bff854d3bc79a01c55c674 Mon Sep 17 00:00:00 2001 From: Kale-ab Date: Mon, 24 May 2021 18:33:43 +0200 Subject: [PATCH 068/188] fix: Updated types. --- mava/systems/tf/mad4pg/training.py | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/mava/systems/tf/mad4pg/training.py b/mava/systems/tf/mad4pg/training.py index fcfbe8448..c70a50373 100644 --- a/mava/systems/tf/mad4pg/training.py +++ b/mava/systems/tf/mad4pg/training.py @@ -203,8 +203,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizer: Dict[str, snt.Optimizer], - critic_optimizer: Dict[str, snt.Optimizer], + policy_optimizer: snt.Optimizer, + critic_optimizer: snt.Optimizer, discount: float, target_averaging: bool, target_update_period: int, @@ -281,8 +281,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizer: Dict[str, snt.Optimizer], - critic_optimizer: Dict[str, snt.Optimizer], + policy_optimizer: snt.Optimizer, + critic_optimizer: snt.Optimizer, discount: float, target_averaging: bool, target_update_period: int, @@ -359,8 +359,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizer: Dict[str, snt.Optimizer], - critic_optimizer: Dict[str, snt.Optimizer], + policy_optimizer: snt.Optimizer, + critic_optimizer: snt.Optimizer, discount: float, target_averaging: bool, target_update_period: int, @@ -437,8 +437,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizer: Dict[str, snt.Optimizer], - critic_optimizer: Dict[str, snt.Optimizer], + policy_optimizer: snt.Optimizer, + critic_optimizer: snt.Optimizer, discount: float, target_averaging: bool, target_update_period: int, @@ -643,8 +643,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizer: Dict[str, snt.Optimizer], - critic_optimizer: Dict[str, snt.Optimizer], + policy_optimizer: snt.Optimizer, + critic_optimizer: snt.Optimizer, discount: float, target_averaging: bool, target_update_period: int, @@ -725,8 +725,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizer: Dict[str, snt.Optimizer], - critic_optimizer: Dict[str, snt.Optimizer], + policy_optimizer: snt.Optimizer, + critic_optimizer: snt.Optimizer, discount: float, target_averaging: bool, target_update_period: int, @@ -807,8 +807,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizer: Dict[str, snt.Optimizer], - critic_optimizer: Dict[str, snt.Optimizer], + policy_optimizer: snt.Optimizer, + critic_optimizer: snt.Optimizer, discount: float, target_averaging: bool, target_update_period: int, From aaaca0f70e60cd7d4b57d70d585c1b406466238b Mon Sep 17 00:00:00 2001 From: Dries Date: Mon, 24 May 2021 19:01:29 +0200 Subject: [PATCH 069/188] fix: Nothing. --- mava/components/tf/networks/mixers.py | 56 +++++++++++++++++++++++++++ mava/systems/tf/qmixV2/builder.py | 2 +- mava/systems/tf/qmixV2/training.py | 9 +++-- 3 files changed, 62 insertions(+), 5 deletions(-) diff --git a/mava/components/tf/networks/mixers.py b/mava/components/tf/networks/mixers.py index b9aab0753..6267776ee 100644 --- a/mava/components/tf/networks/mixers.py +++ b/mava/components/tf/networks/mixers.py @@ -36,6 +36,10 @@ def __init__(self, n_agents: Any, state_shape: Any, mixing_embed_dim: Any) -> No [snt.Linear(self.embed_dim), tf.keras.layers.ReLU(), snt.Linear(1)] ) + self.linear_layer = snt.Sequential( + [snt.Linear(self.n_agents)]#, tf.keras.layers.ReLU()] + ) + def __call__(self, agent_qs: Any, states: Any) -> tf.Tensor: """Forward pass for the mixer. Args: @@ -57,7 +61,59 @@ def __call__(self, agent_qs: Any, states: Any) -> tf.Tensor: # State-dependent bias v = tf.reshape(self.V(states), (-1, 1, 1)) # Compute final output + + # print("hidden: ", hidden.shape) + # print("w_final: ", w_final.shape) + # print("v: ", v.shape) + y = tf.linalg.matmul(hidden, w_final) + v + # print("tf.linalg.matmul(hidden, w_final): ", tf.linalg.matmul(hidden, w_final).shape) + # print("y: ", y.shape) + # Reshape and return q_tot = tf.reshape(y, (bs, -1, 1)) + # print("q_tot: ", q_tot.shape) return q_tot + + # hidden: (256, 1, 32) + # w_final: (256, 32, 1) + # tf.linalg.matmul(hidden, w_final): (256, 1, 1) + + + # v: (256, 1, 1) + + # y: (256, 1, 1) + # q_tot: (256, 1, 1) + + # def __call__(self, agent_qs: Any, states: Any) -> tf.Tensor: + # """Forward pass for the mixer. + # Args: + # agent_qs: Tensor of shape [B, n_agents] + # states: Tensor of shape [B, state_dim] + # """ + # bs = agent_qs.shape[0] + # states = tf.reshape(states, (-1, self.state_dim)) + # # First layer + # # print("states: ", states.shape) # 1, 19 + # w = self.linear_layer(states) + # + # w = tf.math.abs(w) + # + # # print("agent_qs: ", agent_qs.shape) + # # print("w: ", w.shape) # 1, 3 + # + # # out = agent_qs*w + # + # # y: (256, 1, 1) + # # q_tot: (256, 1, 1) + # # hidden: (256, 1, 256) + # # w_final: (256, 256, 1) + # # v: (256, 1, 1) + # # tf.linalg.matmul(hidden, w_final): (256, 1, 1) + # # y: (256, 1, 1) + # # q_tot: (256, 1, 1) + # + # y = tf.linalg.matmul(hidden, w_final) # + v + # q_tot = tf.reshape(y, (bs, -1, 1)) + # return q_tot + diff --git a/mava/systems/tf/qmixV2/builder.py b/mava/systems/tf/qmixV2/builder.py index 27f86c595..398b0f1b8 100644 --- a/mava/systems/tf/qmixV2/builder.py +++ b/mava/systems/tf/qmixV2/builder.py @@ -298,7 +298,7 @@ def make_trainer( # Mixer if self._mixer_fn: state_spec = self._config.environment_spec.get_extra_specs()["s_t"] - mixer = self._mixer_fn(len(agents), state_spec.shape, 256) + mixer = self._mixer_fn(len(agents), state_spec.shape, 32) tf_utils.create_variables(mixer, [tf.ones(len(agents)), state_spec]) # The learner updates the parameters (and initializes them). diff --git a/mava/systems/tf/qmixV2/training.py b/mava/systems/tf/qmixV2/training.py index 0976c04fc..20fc18d7e 100644 --- a/mava/systems/tf/qmixV2/training.py +++ b/mava/systems/tf/qmixV2/training.py @@ -297,11 +297,12 @@ def _forward(self, inputs: Any) -> None: q_acts = tf.concat(q_acts, axis=1) # [B, num_agents] q_targets = tf.concat(q_targets, axis=1) # [B, num_agents] - # q_tot_mixed = self._mixer(q_acts, s_tm1) # [B, 1, 1] - # q_tot_target_mixed = self._target_mixer(q_targets, s_t) # [B, 1, 1] - q_tot_mixed = tf.reduce_sum(q_acts, axis=1) # [B, 1, 1] - q_tot_target_mixed = tf.reduce_sum(q_targets, axis=1) # [B, 1, 1] + q_tot_mixed = self._mixer(q_acts, s_tm1) # [B, 1, 1] + q_tot_target_mixed = self._target_mixer(q_targets, s_t) # [B, 1, 1] + + # q_tot_mixed = tf.reduce_sum(q_acts, axis=1) # [B, 1, 1] + # q_tot_target_mixed = tf.reduce_sum(q_targets, axis=1) # [B, 1, 1] q_tot_mixed = tf.reshape(q_tot_mixed, (-1,)) q_tot_target_mixed = tf.reshape(q_tot_target_mixed, (-1,)) From 6749a61efd8b2a2d5c8a3d7e1579e28ccb933b9b Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Mon, 24 May 2021 19:23:01 +0200 Subject: [PATCH 070/188] debug/small changes --- mava/components/tf/networks/mixers.py | 29 ++++++++++++++++++--------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/mava/components/tf/networks/mixers.py b/mava/components/tf/networks/mixers.py index 6267776ee..f7dc075f9 100644 --- a/mava/components/tf/networks/mixers.py +++ b/mava/components/tf/networks/mixers.py @@ -37,7 +37,7 @@ def __init__(self, n_agents: Any, state_shape: Any, mixing_embed_dim: Any) -> No ) self.linear_layer = snt.Sequential( - [snt.Linear(self.n_agents)]#, tf.keras.layers.ReLU()] + [snt.Linear(self.n_agents)] # , tf.keras.layers.ReLU()] ) def __call__(self, agent_qs: Any, states: Any) -> tf.Tensor: @@ -48,30 +48,41 @@ def __call__(self, agent_qs: Any, states: Any) -> tf.Tensor: """ bs = agent_qs.shape[0] states = tf.reshape(states, (-1, self.state_dim)) - agent_qs = tf.reshape(agent_qs, (-1, 1, self.n_agents)) + print("states reshape: ", states.shape) + agent_qs = tf.reshape(agent_qs, (-1, self.n_agents)) + print("agent_qs: ", agent_qs.shape) # First layer w1 = tf.math.abs(self.hyper_w_1(states)) + print("w1: ", w1.shape) b1 = self.hyper_b_1(states) + print("b1: ", b1.shape) w1 = tf.reshape(w1, (-1, self.n_agents, self.embed_dim)) - b1 = tf.reshape(b1, (-1, 1, self.embed_dim)) + print("w1: ", w1.shape) + b1 = tf.reshape(b1, (-1, self.embed_dim)) + print("b1: ", b1.shape) hidden = tf.keras.activations.elu(tf.linalg.matmul(agent_qs, w1) + b1) + print("hidden: ", hidden.shape) + hidden = tf.reshape(hidden, (-1, self.embed_dim)) # Second layer w_final = tf.math.abs(self.hyper_w_final(states)) - w_final = tf.reshape(w_final, (-1, self.embed_dim, 1)) + print("w_final: ", w_final.shape) + w_final = tf.reshape(w_final, (-1, self.embed_dim)) + print("w_final: ", w_final.shape) # State-dependent bias - v = tf.reshape(self.V(states), (-1, 1, 1)) + v = tf.reshape(self.V(states), (-1, 1)) + print("v: ", v.shape) # Compute final output # print("hidden: ", hidden.shape) # print("w_final: ", w_final.shape) # print("v: ", v.shape) - y = tf.linalg.matmul(hidden, w_final) + v + y = tf.linalg.matmul(hidden, w_final, transpose_b=True) + v # print("tf.linalg.matmul(hidden, w_final): ", tf.linalg.matmul(hidden, w_final).shape) - # print("y: ", y.shape) + print("y: ", y.shape) # Reshape and return - q_tot = tf.reshape(y, (bs, -1, 1)) + q_tot = tf.reshape(y, (bs, -1)) # print("q_tot: ", q_tot.shape) return q_tot @@ -79,7 +90,6 @@ def __call__(self, agent_qs: Any, states: Any) -> tf.Tensor: # w_final: (256, 32, 1) # tf.linalg.matmul(hidden, w_final): (256, 1, 1) - # v: (256, 1, 1) # y: (256, 1, 1) @@ -116,4 +126,3 @@ def __call__(self, agent_qs: Any, states: Any) -> tf.Tensor: # y = tf.linalg.matmul(hidden, w_final) # + v # q_tot = tf.reshape(y, (bs, -1, 1)) # return q_tot - From 0765401ca14dddff8df21518c4a9f6b6fc6ac4ad Mon Sep 17 00:00:00 2001 From: Dries Date: Mon, 24 May 2021 21:25:20 +0200 Subject: [PATCH 071/188] fix: Small changes. --- .../debugging_envs/run_feedforward_qmix_v2.py | 4 +- mava/components/tf/networks/mixers.py | 76 +++++++------------ mava/systems/tf/qmixV2/system.py | 1 - 3 files changed, 31 insertions(+), 50 deletions(-) diff --git a/examples/debugging_envs/run_feedforward_qmix_v2.py b/examples/debugging_envs/run_feedforward_qmix_v2.py index b4bb850b5..2dcc6dc88 100644 --- a/examples/debugging_envs/run_feedforward_qmix_v2.py +++ b/examples/debugging_envs/run_feedforward_qmix_v2.py @@ -149,9 +149,9 @@ def main(_: Any) -> None: num_executors=2, exploration_scheduler_fn=LinearExplorationScheduler, epsilon_min=0.05, - epsilon_decay=5e-4, + epsilon_decay=3e-4, mixer_fn=QMixer, - optimizer=snt.optimizers.Adam(learning_rate=1e-4), + optimizer=snt.optimizers.RMSProp(learning_rate=1e-4), checkpoint_subpath=checkpoint_dir, ).build() diff --git a/mava/components/tf/networks/mixers.py b/mava/components/tf/networks/mixers.py index f7dc075f9..f953a3931 100644 --- a/mava/components/tf/networks/mixers.py +++ b/mava/components/tf/networks/mixers.py @@ -25,7 +25,7 @@ def __init__(self, n_agents: Any, state_shape: Any, mixing_embed_dim: Any) -> No self.embed_dim = mixing_embed_dim self.state_dim = int(np.prod(state_shape)) - self.hyper_w_1 = snt.Linear(self.embed_dim * self.n_agents) + self.hyper_w_1 = snt.Linear(self.embed_dim*self.n_agents) self.hyper_w_final = snt.Linear(self.embed_dim) # State dependent bias for hidden layer @@ -36,9 +36,9 @@ def __init__(self, n_agents: Any, state_shape: Any, mixing_embed_dim: Any) -> No [snt.Linear(self.embed_dim), tf.keras.layers.ReLU(), snt.Linear(1)] ) - self.linear_layer = snt.Sequential( - [snt.Linear(self.n_agents)] # , tf.keras.layers.ReLU()] - ) + # self.linear_layer = snt.Sequential( + # [snt.Linear(self.n_agents)] # , tf.keras.layers.ReLU()] + # ) def __call__(self, agent_qs: Any, states: Any) -> tf.Tensor: """Forward pass for the mixer. @@ -48,41 +48,27 @@ def __call__(self, agent_qs: Any, states: Any) -> tf.Tensor: """ bs = agent_qs.shape[0] states = tf.reshape(states, (-1, self.state_dim)) - print("states reshape: ", states.shape) - agent_qs = tf.reshape(agent_qs, (-1, self.n_agents)) - print("agent_qs: ", agent_qs.shape) + agent_qs = tf.reshape(agent_qs, (-1, 1, self.n_agents)) # First layer w1 = tf.math.abs(self.hyper_w_1(states)) - print("w1: ", w1.shape) b1 = self.hyper_b_1(states) - print("b1: ", b1.shape) w1 = tf.reshape(w1, (-1, self.n_agents, self.embed_dim)) - print("w1: ", w1.shape) - b1 = tf.reshape(b1, (-1, self.embed_dim)) - print("b1: ", b1.shape) + b1 = tf.reshape(b1, (-1, 1, self.embed_dim)) hidden = tf.keras.activations.elu(tf.linalg.matmul(agent_qs, w1) + b1) - print("hidden: ", hidden.shape) - hidden = tf.reshape(hidden, (-1, self.embed_dim)) # Second layer w_final = tf.math.abs(self.hyper_w_final(states)) - print("w_final: ", w_final.shape) - w_final = tf.reshape(w_final, (-1, self.embed_dim)) - print("w_final: ", w_final.shape) + w_final = tf.reshape(w_final, (-1, self.embed_dim, 1)) # State-dependent bias - v = tf.reshape(self.V(states), (-1, 1)) - print("v: ", v.shape) + v = tf.reshape(self.V(states), (-1, 1, 1)) # Compute final output - # print("hidden: ", hidden.shape) # print("w_final: ", w_final.shape) # print("v: ", v.shape) - - y = tf.linalg.matmul(hidden, w_final, transpose_b=True) + v + y = tf.linalg.matmul(hidden, w_final) + v # print("tf.linalg.matmul(hidden, w_final): ", tf.linalg.matmul(hidden, w_final).shape) - print("y: ", y.shape) - + # print("y: ", y.shape) # Reshape and return - q_tot = tf.reshape(y, (bs, -1)) + q_tot = tf.reshape(y, (bs, -1, 1)) # print("q_tot: ", q_tot.shape) return q_tot @@ -102,27 +88,23 @@ def __call__(self, agent_qs: Any, states: Any) -> tf.Tensor: # states: Tensor of shape [B, state_dim] # """ # bs = agent_qs.shape[0] - # states = tf.reshape(states, (-1, self.state_dim)) + # states = tf.reshape(states, (-1, self.state_dim)) # (1, num_states) + # print("states: ", states.shape) + # agent_qs = tf.reshape(agent_qs, (-1, 1, self.n_agents)) + # print("agent_qs: ", agent_qs.shape) # # First layer - # # print("states: ", states.shape) # 1, 19 - # w = self.linear_layer(states) - # - # w = tf.math.abs(w) - # - # # print("agent_qs: ", agent_qs.shape) - # # print("w: ", w.shape) # 1, 3 - # - # # out = agent_qs*w - # - # # y: (256, 1, 1) - # # q_tot: (256, 1, 1) - # # hidden: (256, 1, 256) - # # w_final: (256, 256, 1) - # # v: (256, 1, 1) - # # tf.linalg.matmul(hidden, w_final): (256, 1, 1) - # # y: (256, 1, 1) - # # q_tot: (256, 1, 1) - # - # y = tf.linalg.matmul(hidden, w_final) # + v + # w1 = tf.math.abs(self.hyper_w_1(states)) # bs, n_agents + # b1 = self.hyper_b_1(states) + # print("w1 before: ", w1.shape) + # w1 = tf.reshape(w1, (-1, self.n_agents, 1)) + # print("w1: ", w1.shape) + # b1 = tf.reshape(b1, (-1, 1, 1)) + # print("b1: ", b1.shape) + # # Compute final output + # print("agent_qs: ", agent_qs.shape) + # print("tf.transpose(w1): ", w1.shape) + # y = tf.linalg.matmul(agent_qs, w1) + b1 + # print("y: ", y.shape) # q_tot = tf.reshape(y, (bs, -1, 1)) - # return q_tot + # print("q_tot: ", q_tot.shape) + # return q_tot \ No newline at end of file diff --git a/mava/systems/tf/qmixV2/system.py b/mava/systems/tf/qmixV2/system.py index 06097509e..319308146 100644 --- a/mava/systems/tf/qmixV2/system.py +++ b/mava/systems/tf/qmixV2/system.py @@ -116,7 +116,6 @@ def __init__( train_loop_fn_kwargs: Dict = {}, eval_loop_fn_kwargs: Dict = {}, ): - if not environment_spec: environment_spec = mava_specs.MAEnvironmentSpec( environment_factory(evaluation=False) # type:ignore From 381490e7c77bd446607a84d93bbe221f866f4f2e Mon Sep 17 00:00:00 2001 From: Dries Date: Tue, 25 May 2021 05:41:09 +0200 Subject: [PATCH 072/188] fix: Fix decentralised maddpg example. --- examples/petting_zoo/run_decentralised_recurrent_maddpg.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/petting_zoo/run_decentralised_recurrent_maddpg.py b/examples/petting_zoo/run_decentralised_recurrent_maddpg.py index de588cad6..2f6e7f046 100644 --- a/examples/petting_zoo/run_decentralised_recurrent_maddpg.py +++ b/examples/petting_zoo/run_decentralised_recurrent_maddpg.py @@ -31,7 +31,7 @@ from mava import specs as mava_specs from mava.systems.tf import maddpg from mava.systems.tf.maddpg.execution import MADDPGRecurrentExecutor -from mava.systems.tf.maddpg.training import StateBasedRecurrentMADDPGTrainer +from mava.systems.tf.maddpg.training import DecentralisedRecurrentMADDPGTrainer from mava.utils import lp_utils from mava.utils.environments import pettingzoo_utils from mava.utils.loggers import logger_utils @@ -163,7 +163,7 @@ def main(_: Any) -> None: network_factory=network_factory, logger_factory=logger_factory, num_executors=2, - trainer_fn=StateBasedRecurrentMADDPGTrainer, + trainer_fn=DecentralisedRecurrentMADDPGTrainer, executor_fn=MADDPGRecurrentExecutor, policy_optimizer=snt.optimizers.Adam(learning_rate=1e-4), critic_optimizer=snt.optimizers.Adam(learning_rate=1e-4), From 6bc7bdeca6c617512b4407e9850408e213dfeffa Mon Sep 17 00:00:00 2001 From: Dries Date: Tue, 25 May 2021 05:44:26 +0200 Subject: [PATCH 073/188] fix: mypy. --- examples/README.md | 5 ++--- .../debugging_envs/run_state_based_recurrent_maddpg.py | 3 ++- mava/systems/tf/mad4pg/training.py | 6 ++++-- mava/systems/tf/maddpg/training.py | 10 +++++++--- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/examples/README.md b/examples/README.md index b48f814dd..b99aac4ce 100644 --- a/examples/README.md +++ b/examples/README.md @@ -29,7 +29,7 @@ We include a number of systems running on continuous control tasks. an MA-DDPG system (with video wrapping) on the continuous action space simple_spread MPE debugging environment. - [MA-DDPG (networked, feedforward)](debugging_envs/run_networked_feedforward_maddpg.py): an MA-D4PG system on the continuous action space simple_spread MPE debugging environment. - + - [MA-DDPG (state-based, recurrent)](debugging_envs/run_state_based_recurrent_maddpg.py): an MA-D4PG system on the continuous action space simple_spread MPE debugging environment. - [PPO (centralised, feedforward)](petting_zoo/run_centralised_feedforward_mappo.py): @@ -49,7 +49,7 @@ We include a number of systems running on continuous control tasks. We also include a number of systems running on discrete action space environments. - [MA-D4PG (decentralised, feedforward)](debugging_envs/run_decentralised_feedforward_discrete_mad4pg.py): - an MA-D4PG system on the discrete action space simple_spread MPE debugging environment. + an MA-D4PG system on the discrete action space simple_spread MPE debugging environment. - [MA-DDPG (decentralised, feedforward)](debugging_envs/run_decentralised_feedforward_discrete_maddpg.py): an MA-DDPG system on the discrete action space simple_spread MPE debugging environment. - [MA-DQN (feedforward)](debugging_envs/run_feedforward_madqn.py): @@ -74,4 +74,3 @@ We also include a number of systems running on discrete action space environment a QMIX system on the two step custom environment. - [VDN](petting_zoo/run_feedforward_vdn.py): a VDN system on the two step custom environment. - diff --git a/examples/debugging_envs/run_state_based_recurrent_maddpg.py b/examples/debugging_envs/run_state_based_recurrent_maddpg.py index 419749d4f..c92322d1a 100644 --- a/examples/debugging_envs/run_state_based_recurrent_maddpg.py +++ b/examples/debugging_envs/run_state_based_recurrent_maddpg.py @@ -28,9 +28,9 @@ from launchpad.nodes.python.local_multi_processing import PythonProcess from mava import specs as mava_specs +from mava.components.tf.architectures import StateBasedQValueCritic from mava.systems.tf import maddpg from mava.systems.tf.maddpg.execution import MADDPGRecurrentExecutor -from mava.components.tf.architectures import StateBasedQValueCritic from mava.systems.tf.maddpg.training import StateBasedRecurrentMADDPGTrainer from mava.utils import lp_utils from mava.utils.environments import debugging_utils @@ -184,5 +184,6 @@ def main(_: Any) -> None: local_resources=local_resources, ) + if __name__ == "__main__": app.run(main) diff --git a/mava/systems/tf/mad4pg/training.py b/mava/systems/tf/mad4pg/training.py index c2b123776..a6f82728a 100644 --- a/mava/systems/tf/mad4pg/training.py +++ b/mava/systems/tf/mad4pg/training.py @@ -601,11 +601,13 @@ def _forward(self, inputs: Any) -> None: dpg_actions = tf2_utils.batch_to_sequence(outputs) - # Note (dries): This is done to so that losses.dpg can verify using gradient.tape that there is a + # Note (dries): This is done to so that losses.dpg can verify + # using gradient.tape that there is a # gradient relationship between dpg_q_values and dpg_actions_comb. dpg_actions_comb, dim = train_utils.combine_dim(dpg_actions) - # Note (dries): This seemingly useless line is is important! Don't remove it. See above note. + # Note (dries): This seemingly useless line is is important! + # Don't remove it. See above note. dpg_actions = train_utils.extract_dim(dpg_actions_comb, dim) # Get dpg actions diff --git a/mava/systems/tf/maddpg/training.py b/mava/systems/tf/maddpg/training.py index 209399eab..0bfd43387 100644 --- a/mava/systems/tf/maddpg/training.py +++ b/mava/systems/tf/maddpg/training.py @@ -1272,11 +1272,13 @@ def _forward(self, inputs: Any) -> None: dpg_actions = tf2_utils.batch_to_sequence(outputs) - # Note (dries): This is done to so that losses.dpg can verify using gradient.tape that there is a + # Note (dries): This is done to so that losses.dpg + # can verify using gradient.tape that there is a # gradient relationship between dpg_q_values and dpg_actions_comb. dpg_actions_comb, dim = train_utils.combine_dim(dpg_actions) - # Note (dries): This seemingly useless line is is important! Don't remove it. See above note. + # Note (dries): This seemingly useless line is is important! + # Don't remove it. See above note. dpg_actions = train_utils.extract_dim(dpg_actions_comb, dim) # Get dpg actions @@ -1288,7 +1290,9 @@ def _forward(self, inputs: Any) -> None: obs_comb, _ = train_utils.combine_dim(target_obs_trans_feed) act_comb, _ = train_utils.combine_dim(dpg_actions_feed) - dpg_q_values = tf.squeeze(self._critic_networks[agent_key](obs_comb, act_comb)) + dpg_q_values = tf.squeeze( + self._critic_networks[agent_key](obs_comb, act_comb) + ) # Actor loss. If clipping is true use dqda clipping and clip the norm. dqda_clipping = 1.0 if self._max_gradient_norm is not None else None From 3ad1cf0233a77a6e4f7d9c7c14d8a64e881b3fa4 Mon Sep 17 00:00:00 2001 From: Dries Date: Tue, 25 May 2021 05:49:19 +0200 Subject: [PATCH 074/188] fix: Small fixes. --- mava/systems/tf/mad4pg/training.py | 2 +- mava/systems/tf/maddpg/training.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mava/systems/tf/mad4pg/training.py b/mava/systems/tf/mad4pg/training.py index a6f82728a..aa31b8362 100644 --- a/mava/systems/tf/mad4pg/training.py +++ b/mava/systems/tf/mad4pg/training.py @@ -606,7 +606,7 @@ def _forward(self, inputs: Any) -> None: # gradient relationship between dpg_q_values and dpg_actions_comb. dpg_actions_comb, dim = train_utils.combine_dim(dpg_actions) - # Note (dries): This seemingly useless line is is important! + # Note (dries): This seemingly useless line is important! # Don't remove it. See above note. dpg_actions = train_utils.extract_dim(dpg_actions_comb, dim) diff --git a/mava/systems/tf/maddpg/training.py b/mava/systems/tf/maddpg/training.py index 0bfd43387..c727b3769 100644 --- a/mava/systems/tf/maddpg/training.py +++ b/mava/systems/tf/maddpg/training.py @@ -1277,7 +1277,7 @@ def _forward(self, inputs: Any) -> None: # gradient relationship between dpg_q_values and dpg_actions_comb. dpg_actions_comb, dim = train_utils.combine_dim(dpg_actions) - # Note (dries): This seemingly useless line is is important! + # Note (dries): This seemingly useless line is important! # Don't remove it. See above note. dpg_actions = train_utils.extract_dim(dpg_actions_comb, dim) From 79addbe8732433144f1f519ab6e1a260d80e8952 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Tue, 25 May 2021 09:31:45 +0200 Subject: [PATCH 075/188] make q net smaller --- examples/debugging_envs/run_feedforward_qmix_v2.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/examples/debugging_envs/run_feedforward_qmix_v2.py b/examples/debugging_envs/run_feedforward_qmix_v2.py index 2dcc6dc88..1a59cee6c 100644 --- a/examples/debugging_envs/run_feedforward_qmix_v2.py +++ b/examples/debugging_envs/run_feedforward_qmix_v2.py @@ -57,9 +57,8 @@ def make_networks( environment_spec: mava_specs.MAEnvironmentSpec, q_networks_layer_sizes: Union[Dict[str, Sequence], Sequence] = ( - 512, - 512, - 256, + 64, + 64, ), shared_weights: bool = True, ) -> Mapping[str, types.TensorTransformation]: From 3df0196cd4286cbd4dda6d5dd37ee6c4f378f40e Mon Sep 17 00:00:00 2001 From: Kevin Eloff Date: Tue, 25 May 2021 10:16:06 +0200 Subject: [PATCH 076/188] cleanup --- examples/debugging_envs/run_recurrent_dial.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/examples/debugging_envs/run_recurrent_dial.py b/examples/debugging_envs/run_recurrent_dial.py index a6fb93ef2..5bf98bc9b 100644 --- a/examples/debugging_envs/run_recurrent_dial.py +++ b/examples/debugging_envs/run_recurrent_dial.py @@ -35,9 +35,6 @@ epsilon_greedy_action_selector, ) from mava.systems.tf import dial - -# from mava.systems.tf.madqn.execution import MADQNRecurrentCommExecutor -# from mava.systems.tf.madqn.training import RecurrentCommMADQNTrainer from mava.utils import lp_utils from mava.utils.environments import debugging_utils from mava.utils.loggers import logger_utils @@ -162,13 +159,11 @@ def main(_: Any) -> None: num_executors=2, trainer_fn=dial.DIALSwitchTrainer, executor_fn=dial.DIALSwitchExecutor, - # trainer_fn=RecurrentCommMADQNTrainer, - # executor_fn=MADQNRecurrentCommExecutor, exploration_scheduler_fn=LinearExplorationScheduler, communication_module=BroadcastedCommunication, sequence_length=6, epsilon_min=0.05, - epsilon_decay=5e-4, + epsilon_decay=2.5e-4, # optimizer=snt.optimizers.Adam(learning_rate=1e-4), optimizer=snt.optimizers.RMSProp(learning_rate=1e-4, momentum=0.95), checkpoint_subpath=checkpoint_dir, From a7adc13d713a166ae2fb86e6333fb5b08f793bd5 Mon Sep 17 00:00:00 2001 From: Kevin Eloff Date: Tue, 25 May 2021 11:34:02 +0200 Subject: [PATCH 077/188] pr comments --- examples/debugging_envs/run_recurrent_comm_madqn.py | 4 +--- examples/debugging_envs/run_recurrent_dial.py | 5 +---- mava/systems/tf/executors.py | 2 +- mava/systems/tf/madqn/execution.py | 4 ++-- 4 files changed, 5 insertions(+), 10 deletions(-) diff --git a/examples/debugging_envs/run_recurrent_comm_madqn.py b/examples/debugging_envs/run_recurrent_comm_madqn.py index e8c1169c3..c518e7c54 100644 --- a/examples/debugging_envs/run_recurrent_comm_madqn.py +++ b/examples/debugging_envs/run_recurrent_comm_madqn.py @@ -26,9 +26,7 @@ from launchpad.nodes.python.local_multi_processing import PythonProcess from mava import specs as mava_specs -from mava.components.tf.modules.communication.broadcasted import ( - BroadcastedCommunication, -) +from mava.components.tf.modules.communication import BroadcastedCommunication from mava.components.tf.modules.exploration import LinearExplorationScheduler from mava.components.tf.networks import ( CommunicationNetwork, diff --git a/examples/debugging_envs/run_recurrent_dial.py b/examples/debugging_envs/run_recurrent_dial.py index 5bf98bc9b..fa456fbbc 100644 --- a/examples/debugging_envs/run_recurrent_dial.py +++ b/examples/debugging_envs/run_recurrent_dial.py @@ -26,9 +26,7 @@ from launchpad.nodes.python.local_multi_processing import PythonProcess from mava import specs as mava_specs -from mava.components.tf.modules.communication.broadcasted import ( - BroadcastedCommunication, -) +from mava.components.tf.modules.communication import BroadcastedCommunication from mava.components.tf.modules.exploration import LinearExplorationScheduler from mava.components.tf.networks import ( CommunicationNetwork, @@ -164,7 +162,6 @@ def main(_: Any) -> None: sequence_length=6, epsilon_min=0.05, epsilon_decay=2.5e-4, - # optimizer=snt.optimizers.Adam(learning_rate=1e-4), optimizer=snt.optimizers.RMSProp(learning_rate=1e-4, momentum=0.95), checkpoint_subpath=checkpoint_dir, n_step=1, diff --git a/mava/systems/tf/executors.py b/mava/systems/tf/executors.py index 43c3d4b95..64606c886 100644 --- a/mava/systems/tf/executors.py +++ b/mava/systems/tf/executors.py @@ -272,7 +272,7 @@ def update(self, wait: bool = False) -> None: self._variable_client.update(wait) -class RecurrentExecutorWithComms(RecurrentExecutor): +class RecurrentCommExecutor(RecurrentExecutor): """Recurrent executor where agents can communicate.""" def __init__( diff --git a/mava/systems/tf/madqn/execution.py b/mava/systems/tf/madqn/execution.py index 4358d150b..16c0f665d 100644 --- a/mava/systems/tf/madqn/execution.py +++ b/mava/systems/tf/madqn/execution.py @@ -32,8 +32,8 @@ from mava.components.tf.modules.communication import BaseCommunicationModule from mava.systems.tf.executors import ( FeedForwardExecutor, + RecurrentCommExecutor, RecurrentExecutor, - RecurrentExecutorWithComms, ) from mava.systems.tf.madqn.training import MADQNTrainer from mava.types import OLT @@ -290,7 +290,7 @@ def select_actions( return actions -class MADQNRecurrentCommExecutor(RecurrentExecutorWithComms): +class MADQNRecurrentCommExecutor(RecurrentCommExecutor): """A feed-forward executor. An executor based on a feed-forward policy for each agent in the system which takes non-batched observations and outputs non-batched actions. From cc69a31488a8a2b4268858d4c69ffe3eeba123ef Mon Sep 17 00:00:00 2001 From: Dries Date: Tue, 25 May 2021 12:06:45 +0200 Subject: [PATCH 078/188] fix: Update trainers and examples. --- .../run_centralised_feedforward_maddpg.py | 1 + .../debugging_envs/run_state_based_recurrent_maddpg.py | 1 + mava/systems/tf/maddpg/training.py | 10 +++++----- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/examples/debugging_envs/run_centralised_feedforward_maddpg.py b/examples/debugging_envs/run_centralised_feedforward_maddpg.py index fb06e4f1e..98b829731 100644 --- a/examples/debugging_envs/run_centralised_feedforward_maddpg.py +++ b/examples/debugging_envs/run_centralised_feedforward_maddpg.py @@ -184,6 +184,7 @@ def main(_: Any) -> None: checkpoint_subpath=checkpoint_dir, max_gradient_norm=40.0, trainer_fn=maddpg.CentralisedMADDPGTrainer, + shared_weights=False, ).build() # launch diff --git a/examples/debugging_envs/run_state_based_recurrent_maddpg.py b/examples/debugging_envs/run_state_based_recurrent_maddpg.py index c92322d1a..4237dacd6 100644 --- a/examples/debugging_envs/run_state_based_recurrent_maddpg.py +++ b/examples/debugging_envs/run_state_based_recurrent_maddpg.py @@ -167,6 +167,7 @@ def main(_: Any) -> None: trainer_fn=StateBasedRecurrentMADDPGTrainer, executor_fn=MADDPGRecurrentExecutor, checkpoint_subpath=checkpoint_dir, + shared_weights=False, ).build() # launch diff --git a/mava/systems/tf/maddpg/training.py b/mava/systems/tf/maddpg/training.py index c727b3769..dbf0f7381 100644 --- a/mava/systems/tf/maddpg/training.py +++ b/mava/systems/tf/maddpg/training.py @@ -636,8 +636,8 @@ def _get_dpg_feed( # Centralised and StateBased DPG # Note (dries): Copy has to be made because the input # variables cannot be changed. + tree.map_structure(tf.stop_gradient, a_t) dpg_a_t_feed = copy.copy(a_t) - tree.map_structure(tf.stop_gradient, dpg_a_t_feed) dpg_a_t_feed[agent] = dpg_a_t return dpg_a_t_feed @@ -760,8 +760,8 @@ def _get_dpg_feed( # Centralised and StateBased DPG # Note (dries): Copy has to be made because the input # variables cannot be changed. + tree.map_structure(tf.stop_gradient, a_t) dpg_a_t_feed = copy.copy(a_t) - tree.map_structure(tf.stop_gradient, dpg_a_t_feed) dpg_a_t_feed[agent] = dpg_a_t return dpg_a_t_feed @@ -869,8 +869,8 @@ def _get_dpg_feed( # Centralised and StateBased DPG # Note (dries): Copy has to be made because the input # variables cannot be changed. + tree.map_structure(tf.stop_gradient, a_t) dpg_a_t_feed = copy.copy(a_t) - tree.map_structure(tf.stop_gradient, dpg_a_t_feed) dpg_a_t_feed[agent] = dpg_a_t return dpg_a_t_feed @@ -1565,8 +1565,8 @@ def _get_dpg_feed( # Centralised and StateBased DPG # Note (dries): Copy has to be made because the input # variables cannot be changed. + tree.map_structure(tf.stop_gradient, actions) dpg_actions_feed = copy.copy(actions) - tree.map_structure(tf.stop_gradient, dpg_actions_feed) dpg_actions_feed[agent] = dpg_actions dpg_actions_feed = tf.squeeze( tf.stack([x for x in dpg_actions_feed.values()], -1) @@ -1678,8 +1678,8 @@ def _get_dpg_feed( # Centralised and StateBased DPG # Note (dries): Copy has to be made because the input # variables cannot be changed. + tree.map_structure(tf.stop_gradient, actions) dpg_actions_feed = copy.copy(actions) - tree.map_structure(tf.stop_gradient, dpg_actions_feed) dpg_actions_feed[agent] = dpg_actions dpg_actions_feed = tf.squeeze( tf.stack([x for x in dpg_actions_feed.values()], -1) From b008db5bcaa717a76c3461ca76cc025eb32cccc2 Mon Sep 17 00:00:00 2001 From: Kevin Eloff Date: Tue, 25 May 2021 12:28:10 +0200 Subject: [PATCH 079/188] feat: rename trainer functions --- examples/debugging_envs/run_recurrent_comm_madqn.py | 4 ++-- examples/debugging_envs/run_recurrent_madqn.py | 4 ++-- examples/smac/run_recurrent_madqn.py | 4 ++-- mava/systems/tf/dial/builder.py | 6 +++--- mava/systems/tf/dial/system.py | 8 ++++---- mava/systems/tf/dial/training.py | 4 ++-- mava/systems/tf/madqn/__init__.py | 2 +- mava/systems/tf/madqn/system.py | 2 +- mava/systems/tf/madqn/training.py | 4 ++-- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/examples/debugging_envs/run_recurrent_comm_madqn.py b/examples/debugging_envs/run_recurrent_comm_madqn.py index c518e7c54..9dbb17bda 100644 --- a/examples/debugging_envs/run_recurrent_comm_madqn.py +++ b/examples/debugging_envs/run_recurrent_comm_madqn.py @@ -34,7 +34,7 @@ ) from mava.systems.tf import madqn from mava.systems.tf.madqn.execution import MADQNRecurrentCommExecutor -from mava.systems.tf.madqn.training import RecurrentCommMADQNTrainer +from mava.systems.tf.madqn.training import MADQNRecurrentCommTrainer from mava.utils import lp_utils from mava.utils.environments import debugging_utils from mava.utils.loggers import logger_utils @@ -157,7 +157,7 @@ def main(_: Any) -> None: network_factory=network_factory, logger_factory=logger_factory, num_executors=2, - trainer_fn=RecurrentCommMADQNTrainer, + trainer_fn=MADQNRecurrentCommTrainer, executor_fn=MADQNRecurrentCommExecutor, exploration_scheduler_fn=LinearExplorationScheduler, communication_module=BroadcastedCommunication, diff --git a/examples/debugging_envs/run_recurrent_madqn.py b/examples/debugging_envs/run_recurrent_madqn.py index 897056799..3f755744e 100644 --- a/examples/debugging_envs/run_recurrent_madqn.py +++ b/examples/debugging_envs/run_recurrent_madqn.py @@ -30,7 +30,7 @@ from mava.components.tf.networks import epsilon_greedy_action_selector from mava.systems.tf import madqn from mava.systems.tf.madqn.execution import MADQNRecurrentExecutor -from mava.systems.tf.madqn.training import RecurrentMADQNTrainer +from mava.systems.tf.madqn.training import MADQNRecurrentTrainer from mava.utils import lp_utils from mava.utils.environments import debugging_utils from mava.utils.loggers import logger_utils @@ -148,7 +148,7 @@ def main(_: Any) -> None: network_factory=network_factory, logger_factory=logger_factory, num_executors=2, - trainer_fn=RecurrentMADQNTrainer, + trainer_fn=MADQNRecurrentTrainer, executor_fn=MADQNRecurrentExecutor, exploration_scheduler_fn=LinearExplorationScheduler, epsilon_min=0.05, diff --git a/examples/smac/run_recurrent_madqn.py b/examples/smac/run_recurrent_madqn.py index 049624851..731f24005 100644 --- a/examples/smac/run_recurrent_madqn.py +++ b/examples/smac/run_recurrent_madqn.py @@ -32,7 +32,7 @@ from mava.components.tf.networks import epsilon_greedy_action_selector from mava.systems.tf import madqn from mava.systems.tf.madqn.execution import MADQNRecurrentExecutor -from mava.systems.tf.madqn.training import RecurrentMADQNTrainer +from mava.systems.tf.madqn.training import MADQNRecurrentTrainer from mava.utils import lp_utils from mava.utils.environments import smac_utils from mava.utils.loggers import logger_utils @@ -143,7 +143,7 @@ def main(_: Any) -> None: network_factory=network_factory, logger_factory=logger_factory, num_executors=1, - trainer_fn=RecurrentMADQNTrainer, + trainer_fn=MADQNRecurrentTrainer, executor_fn=MADQNRecurrentExecutor, exploration_scheduler_fn=LinearExplorationScheduler, epsilon_min=0.05, diff --git a/mava/systems/tf/dial/builder.py b/mava/systems/tf/dial/builder.py index 6ecd93f77..c7e5d0e21 100644 --- a/mava/systems/tf/dial/builder.py +++ b/mava/systems/tf/dial/builder.py @@ -89,8 +89,8 @@ def __init__( self, config: DIALConfig, trainer_fn: Type[ - training.RecurrentCommMADQNTrainer - ] = training.RecurrentCommMADQNTrainer, + training.MADQNRecurrentCommTrainer + ] = training.MADQNRecurrentCommTrainer, executor_fn: Type[core.Executor] = execution.MADQNRecurrentCommExecutor, extra_specs: Dict[str, Any] = {}, exploration_scheduler_fn: Type[ @@ -222,7 +222,7 @@ def make_executor( communication_module: BaseCommunicationModule, adder: Optional[adders.ParallelAdder] = None, variable_source: Optional[core.VariableSource] = None, - trainer: Optional[training.RecurrentCommMADQNTrainer] = None, + trainer: Optional[training.MADQNRecurrentCommTrainer] = None, evaluator: bool = False, ) -> core.Executor: """Create an executor instance. diff --git a/mava/systems/tf/dial/system.py b/mava/systems/tf/dial/system.py index 00b62284d..8edcdb697 100644 --- a/mava/systems/tf/dial/system.py +++ b/mava/systems/tf/dial/system.py @@ -87,8 +87,8 @@ def __init__( logger_factory: Callable[[str], MavaLogger] = None, architecture: Type[DecentralisedValueActor] = DecentralisedValueActor, trainer_fn: Type[ - training.RecurrentCommMADQNTrainer - ] = training.RecurrentCommMADQNTrainer, + training.MADQNRecurrentCommTrainer + ] = training.MADQNRecurrentCommTrainer, communication_module: Type[BaseCommunicationModule] = BroadcastedCommunication, executor_fn: Type[core.Executor] = execution.MADQNFeedForwardExecutor, exploration_scheduler_fn: Type[ @@ -294,7 +294,7 @@ def executor( replay: reverb.Client, variable_source: acme.VariableSource, counter: counting.Counter, - trainer: Optional[training.RecurrentCommMADQNTrainer] = None, + trainer: Optional[training.MADQNRecurrentCommTrainer] = None, ) -> mava.ParallelEnvironmentLoop: """The executor process.""" @@ -369,7 +369,7 @@ def evaluator( self, variable_source: acme.VariableSource, counter: counting.Counter, - trainer: training.RecurrentCommMADQNTrainer, + trainer: training.MADQNRecurrentCommTrainer, ) -> Any: """The evaluation process.""" diff --git a/mava/systems/tf/dial/training.py b/mava/systems/tf/dial/training.py index 10732930e..5146d57b5 100644 --- a/mava/systems/tf/dial/training.py +++ b/mava/systems/tf/dial/training.py @@ -30,10 +30,10 @@ from mava.components.tf.modules.exploration.exploration_scheduling import ( LinearExplorationScheduler, ) -from mava.systems.tf.madqn.training import RecurrentCommMADQNTrainer +from mava.systems.tf.madqn.training import MADQNRecurrentCommTrainer -class DIALSwitchTrainer(RecurrentCommMADQNTrainer): +class DIALSwitchTrainer(MADQNRecurrentCommTrainer): """Recurrent Comm DIAL Switch trainer. This is the trainer component of a DIAL system. IE it takes a dataset as input and implements update functionality to learn from this dataset. diff --git a/mava/systems/tf/madqn/__init__.py b/mava/systems/tf/madqn/__init__.py index 73a036e12..274426e19 100644 --- a/mava/systems/tf/madqn/__init__.py +++ b/mava/systems/tf/madqn/__init__.py @@ -16,4 +16,4 @@ """Implementations of a IDQN agent.""" from mava.systems.tf.madqn.system import MADQN -from mava.systems.tf.madqn.training import MADQNTrainer, RecurrentMADQNTrainer +from mava.systems.tf.madqn.training import MADQNRecurrentTrainer, MADQNTrainer diff --git a/mava/systems/tf/madqn/system.py b/mava/systems/tf/madqn/system.py index 18637215a..e37769324 100644 --- a/mava/systems/tf/madqn/system.py +++ b/mava/systems/tf/madqn/system.py @@ -83,7 +83,7 @@ def __init__( logger_factory: Callable[[str], MavaLogger] = None, architecture: Type[DecentralisedValueActor] = DecentralisedValueActor, trainer_fn: Union[ - Type[training.MADQNTrainer], Type[training.RecurrentMADQNTrainer] + Type[training.MADQNTrainer], Type[training.MADQNRecurrentTrainer] ] = training.MADQNTrainer, communication_module: Type[BaseCommunicationModule] = None, executor_fn: Type[core.Executor] = execution.MADQNFeedForwardExecutor, diff --git a/mava/systems/tf/madqn/training.py b/mava/systems/tf/madqn/training.py index d16fad401..448b1eefb 100644 --- a/mava/systems/tf/madqn/training.py +++ b/mava/systems/tf/madqn/training.py @@ -322,7 +322,7 @@ def get_variables(self, names: Sequence[str]) -> Dict[str, Dict[str, np.ndarray] return variables -class RecurrentMADQNTrainer(MADQNTrainer): +class MADQNRecurrentTrainer(MADQNTrainer): """Recurrent MADQN trainer. This is the trainer component of a MADQN system. IE it takes a dataset as input and implements update functionality to learn from this dataset. @@ -417,7 +417,7 @@ def _forward(self, inputs: Any) -> None: self.tape = tape -class RecurrentCommMADQNTrainer(MADQNTrainer): +class MADQNRecurrentCommTrainer(MADQNTrainer): """Recurrent MADQN trainer. This is the trainer component of a MADQN system. IE it takes a dataset as input and implements update functionality to learn from this dataset. From 7965de275a7b7fa5873dac40fb9a9cf72d33f950 Mon Sep 17 00:00:00 2001 From: St John Grimbly Date: Tue, 25 May 2021 16:34:55 +0200 Subject: [PATCH 080/188] fix: VDN and update files. --- mava/systems/tf/qmix/training.py | 115 +++++++++++++++---------------- 1 file changed, 57 insertions(+), 58 deletions(-) diff --git a/mava/systems/tf/qmix/training.py b/mava/systems/tf/qmix/training.py index 212aad6df..5cd719a7d 100644 --- a/mava/systems/tf/qmix/training.py +++ b/mava/systems/tf/qmix/training.py @@ -15,7 +15,7 @@ """Qmix trainer implementation.""" -from typing import Any, Dict, List, Sequence +from typing import Any, Dict, List, Sequence, Optional import numpy as np import sonnet as snt @@ -24,6 +24,7 @@ from acme.utils import counting, loggers from trfl.indexing_ops import batched_index +from mava.components.tf.modules.communication import BaseCommunicationModule from mava.components.tf.modules.exploration.exploration_scheduling import ( LinearExplorationScheduler, ) @@ -53,8 +54,10 @@ def __init__( discount: float, shared_weights: bool, exploration_scheduler: LinearExplorationScheduler, + communication_module: Optional[BaseCommunicationModule] = None, clipping: bool = True, counter: counting.Counter = None, + fingerprint: bool = False, logger: loggers.Logger = None, checkpoint: bool = True, checkpoint_subpath: str = "~/mava/", @@ -74,8 +77,10 @@ def __init__( discount=discount, shared_weights=shared_weights, exploration_scheduler=exploration_scheduler, + communication_module=communication_module, clipping=clipping, counter=counter, + fingerprint=fingerprint, logger=logger, checkpoint=checkpoint, checkpoint_subpath=checkpoint_subpath, @@ -104,34 +109,40 @@ def __init__( # ) def _update_target_networks(self) -> None: - online_variables = [] - target_variables = [] + # Update target networks (incl. mixing networks). for key in self.unique_net_keys: - # Update target networks (incl. mixing networks). - online_variables += self._q_networks[key].variables - target_variables += self._target_q_networks[key].variables + online_variables = [*self._q_networks[key].variables,] + target_variables = [*self._target_q_networks[key].variables,] - online_variables += self._mixing_network.variables - target_variables += self._target_mixing_network.variables + # NOTE These shouldn't really be in the agent for loop. + online_variables += self._mixing_network.variables + target_variables += self._target_mixing_network.variables - # Make online -> target network update ops. - if tf.math.mod(self._num_steps, self._target_update_period) == 0: - for src, dest in zip(online_variables, target_variables): - dest.assign(src) + # Make online -> target network update ops. + if tf.math.mod(self._num_steps, self._target_update_period) == 0: + for src, dest in zip(online_variables, target_variables): + dest.assign(src) self._num_steps.assign_add(1) @tf.function - def _step(self) -> Dict[str, Dict[str, Any]]: + def _step( + self, + ) -> Dict[str, Dict[str, Any]]: + # Update the target networks self._update_target_networks() + # Get data from replay (dropping extras if any). Note there is no + # extra data here because we do not insert any into Reverb. inputs = next(self._iterator) self._forward(inputs) + self._backward() - return {"system": {"q_value_loss": self.loss}} # Return total system loss + # Log losses per agent + return {agent: {"q_value_loss": self.loss} for agent in self._agents} def _forward(self, inputs: Any) -> None: # Unpack input data as follows: @@ -145,68 +156,56 @@ def _forward(self, inputs: Any) -> None: # o_t = dictionary of next observations or next observation sequences # e_t = [Optional] = extra data that the agents persist in replay. o_tm1, a_tm1, e_tm1, r_t, d_t, o_t, e_t = inputs.data - - # Global state (for hypernetwork) - # TODO Switch between one-hot for discrete state space and no one-hot - # for continuous state spaces. `depth` param should be taken from - # state specs - or somewhere else in a cleaner way? - - # One-hot if discrete states - # s_tm1 = tf.one_hot(e_tm1["s_t"], depth=3) - # s_t = tf.one_hot(e_t["s_t"], depth=3) - - # Don't one-hot for continuous states s_tm1 = e_tm1["s_t"] s_t = e_t["s_t"] # Do forward passes through the networks and calculate the losses with tf.GradientTape(persistent=True) as tape: - q_tm1 = [] # Q vals - q_t = [] # Target Q vals + q_acts = [] # Q vals + q_targets = [] # Target Q vals for agent in self._agents: agent_key = self.agent_net_keys[agent] o_tm1_feed, o_t_feed, a_tm1_feed = self._get_feed( o_tm1, o_t, a_tm1, agent ) + q_tm1 = self._q_networks[agent_key](o_tm1_feed) + q_t_value = self._target_q_networks[agent_key](o_t_feed) + q_t_selector = self._q_networks[agent_key](o_t_feed) + best_action = tf.argmax(q_t_selector, axis=1, output_type=tf.int32) + + # TODO Make use of q_t_selector for fingerprinting. Speak to Claude. + q_act = batched_index(q_tm1, a_tm1_feed, keepdims=True) # [B, 1] + q_target = batched_index( + q_t_value, best_action, keepdims=True + ) # [B, 1] + + q_acts.append(q_act) + q_targets.append(q_target) + + rewards = tf.concat( + [tf.reshape(val, (-1, 1)) for val in list(r_t.values())], axis=1 + ) + rewards = tf.reduce_mean(rewards, axis=1) # [B] - q_tm1_agent = self._q_networks[agent_key](o_tm1_feed) # [B, n_actions] - q_act = batched_index(q_tm1_agent, a_tm1_feed, keepdims=True) # [B, 1] - - q_t_agent = self._target_q_networks[agent_key]( - o_t_feed - ) # [B, n_actions] - q_target_max = tf.reduce_max(q_t_agent, axis=1, keepdims=True) # [B, 1] - - q_tm1.append(q_act) - q_t.append(q_target_max) - - num_agents = len(self._agents) - - rewards = [tf.reshape(val, (-1, 1)) for val in list(r_t.values())] - rewards = tf.reshape( - tf.concat(rewards, axis=1), (-1, 1, num_agents) - ) # [B, 1, num_agents] - - dones = [tf.reshape(val.terminal, (-1, 1)) for val in list(o_tm1.values())] - dones = tf.reshape( - tf.concat(dones, axis=1), (-1, 1, num_agents) - ) # [B, 1, num_agents] + pcont = tf.concat( + [tf.reshape(val, (-1, 1)) for val in list(d_t.values())], axis=1 + ) + pcont = tf.reduce_mean(pcont, axis=1) + discount = tf.cast(self._discount, list(d_t.values())[0].dtype) + pcont = discount * pcont # [B] - q_tm1 = tf.concat(q_tm1, axis=1) # [B, num_agents] - q_t = tf.concat(q_t, axis=1) # [B, num_agents] + q_acts = tf.concat(q_acts, axis=1) # [B, num_agents] + q_targets = tf.concat(q_targets, axis=1) # [B, num_agents] - q_tot_mixed = self._mixing_network(q_tm1, s_tm1) # [B, 1, 1] - q_tot_target_mixed = self._target_mixing_network(q_t, s_t) # [B, 1, 1] + q_tot_mixed = self._mixing_network(q_acts, s_tm1) # [B, 1, 1] + q_tot_target_mixed = self._target_mixing_network(q_targets, s_t) # [B, 1, 1] # Calculate Q loss. - targets = ( - rewards - + self._discount * (tf.constant(1.0) - dones) * q_tot_target_mixed - ) + targets = rewards + pcont * q_tot_target_mixed targets = tf.stop_gradient(targets) td_error = targets - q_tot_mixed - + # Loss is MSE scaled by 0.5, so the gradient is equal to the TD error. self.loss = 0.5 * tf.reduce_mean(tf.square(td_error)) self.tape = tape From cbcae80aaeec18a2e433284a250895f6f2b73665 Mon Sep 17 00:00:00 2001 From: St John Grimbly Date: Tue, 25 May 2021 16:35:18 +0200 Subject: [PATCH 081/188] fix: VDN and update files. --- Makefile | 4 + .../debugging_envs/run_feedforward_qmix.py | 10 +-- .../debugging_envs/run_feedforward_qmix_v2.py | 5 +- .../debugging_envs/run_feedforward_vdn.py | 9 +- mava/components/tf/networks/additive.py | 2 +- mava/components/tf/networks/hypernetwork.py | 4 +- mava/components/tf/networks/mixers.py | 6 +- mava/systems/tf/qmix/builder.py | 10 +++ mava/systems/tf/qmix/execution.py | 5 ++ mava/systems/tf/qmix/system.py | 5 +- mava/systems/tf/qmixV2/system.py | 2 +- mava/systems/tf/qmixV2/training.py | 10 +-- mava/systems/tf/vdn/builder.py | 9 ++ mava/systems/tf/vdn/execution.py | 5 ++ mava/systems/tf/vdn/system.py | 2 +- mava/systems/tf/vdn/training.py | 85 +++++++++++-------- mava/utils/environments/smac_utils.py | 2 +- mava/wrappers/smac.py | 7 +- 18 files changed, 115 insertions(+), 67 deletions(-) diff --git a/Makefile b/Makefile index b56c8a67a..af24c30c6 100755 --- a/Makefile +++ b/Makefile @@ -20,6 +20,7 @@ MADDPG=examples/debugging_envs/run_decentralised_feedforward_maddpg_continous.py MAPPO=examples/debugging_envs/run_decentralised_feedforward_mappo.py MADQN=examples/debugging_envs/run_feedforward_madqn.py QMIX=examples/debugging_envs/run_feedforward_qmix.py +QMIXv2=examples/debugging_envs/run_feedforward_qmix_V2.py VDN=examples/debugging_envs/run_feedforward_vdn.py MADDPG-PZ=examples/petting_zoo/run_decentralised_feedforward_maddpg_continous.py @@ -44,6 +45,9 @@ run-mappo: run-qmix: $(DOCKER_RUN) python $(QMIX) --base_dir /home/app/mava/logs/ +run-qmix-v2: + $(DOCKER_RUN) python $(QMIXv2) --base_dir /home/app/mava/logs/ + run-vdn: $(DOCKER_RUN) python $(VDN) --base_dir /home/app/mava/logs/ diff --git a/examples/debugging_envs/run_feedforward_qmix.py b/examples/debugging_envs/run_feedforward_qmix.py index ccfbd3beb..64d3fa1d4 100644 --- a/examples/debugging_envs/run_feedforward_qmix.py +++ b/examples/debugging_envs/run_feedforward_qmix.py @@ -63,7 +63,7 @@ def make_networks( environment_spec: mava_specs.MAEnvironmentSpec, q_networks_layer_sizes: Union[Dict[str, Sequence], Sequence] = (512, 512, 256), - shared_weights: bool = False, + shared_weights: bool = True, ) -> Mapping[str, types.TensorTransformation]: """Creates networks used by the agents.""" @@ -120,7 +120,7 @@ def main(_: Any) -> None: debugging_utils.make_environment, env_name=FLAGS.env_name, action_space=FLAGS.action_space, - num_agents=2, + num_agents=3, return_state_info=True, ) @@ -148,9 +148,9 @@ def main(_: Any) -> None: logger_factory=logger_factory, num_executors=2, exploration_scheduler_fn=LinearExplorationScheduler, - epsilon_min=0.01, - epsilon_decay=1e-4, - optimizer=snt.optimizers.Adam(learning_rate=1e-4), + epsilon_min=0.05, + epsilon_decay=3e-4, + optimizer=snt.optimizers.RMSProp(learning_rate=1e-4), checkpoint_subpath=checkpoint_dir, ).build() diff --git a/examples/debugging_envs/run_feedforward_qmix_v2.py b/examples/debugging_envs/run_feedforward_qmix_v2.py index 1a59cee6c..2dcc6dc88 100644 --- a/examples/debugging_envs/run_feedforward_qmix_v2.py +++ b/examples/debugging_envs/run_feedforward_qmix_v2.py @@ -57,8 +57,9 @@ def make_networks( environment_spec: mava_specs.MAEnvironmentSpec, q_networks_layer_sizes: Union[Dict[str, Sequence], Sequence] = ( - 64, - 64, + 512, + 512, + 256, ), shared_weights: bool = True, ) -> Mapping[str, types.TensorTransformation]: diff --git a/examples/debugging_envs/run_feedforward_vdn.py b/examples/debugging_envs/run_feedforward_vdn.py index b0ca1df91..4d2652bdf 100644 --- a/examples/debugging_envs/run_feedforward_vdn.py +++ b/examples/debugging_envs/run_feedforward_vdn.py @@ -62,7 +62,7 @@ def make_networks( environment_spec: mava_specs.MAEnvironmentSpec, - q_networks_layer_sizes: Union[Dict[str, Sequence], Sequence] = (64,), + q_networks_layer_sizes: Union[Dict[str, Sequence], Sequence] = (512, 512, 256), shared_weights: bool = False, ) -> Mapping[str, types.TensorTransformation]: """Creates networks used by the agents.""" @@ -148,9 +148,10 @@ def main(_: Any) -> None: logger_factory=logger_factory, num_executors=2, exploration_scheduler_fn=LinearExplorationScheduler, - epsilon_min=0.01, - epsilon_decay=1e-4, - optimizer=snt.optimizers.Adam(learning_rate=1e-4), + epsilon_min=0.05, + epsilon_decay=3e-4, + max_replay_size=1000000, + optimizer=snt.optimizers.RMSProp(learning_rate=1e-4), checkpoint_subpath=checkpoint_dir, ).build() diff --git a/mava/components/tf/networks/additive.py b/mava/components/tf/networks/additive.py index ceab813cc..db827f0a5 100644 --- a/mava/components/tf/networks/additive.py +++ b/mava/components/tf/networks/additive.py @@ -26,4 +26,4 @@ def __init__(self) -> None: def __call__(self, q_values: tf.Tensor) -> tf.Tensor: """Monotonic mixing logic.""" - return tf.math.reduce_sum(q_values, keepdims=True) + return tf.math.reduce_sum(q_values, axis=1) diff --git a/mava/components/tf/networks/hypernetwork.py b/mava/components/tf/networks/hypernetwork.py index 8c23f6a44..f0462efcb 100644 --- a/mava/components/tf/networks/hypernetwork.py +++ b/mava/components/tf/networks/hypernetwork.py @@ -53,7 +53,9 @@ def __init__( # Set up hypernetwork configuration if self._num_hypernet_layers == 1: - self.hyper_w1 = snt.nets.MLP(output_sizes=[self._qmix_hidden_dim]) + self.hyper_w1 = snt.nets.MLP( + output_sizes=[self._qmix_hidden_dim * self._n_agents] + ) self.hyper_w2 = snt.nets.MLP(output_sizes=[self._qmix_hidden_dim]) # Default diff --git a/mava/components/tf/networks/mixers.py b/mava/components/tf/networks/mixers.py index f953a3931..cc1884abf 100644 --- a/mava/components/tf/networks/mixers.py +++ b/mava/components/tf/networks/mixers.py @@ -3,7 +3,6 @@ import numpy as np import sonnet as snt import tensorflow as tf -from tensorflow import keras class AdditiveMixingNetwork(snt.Module): @@ -25,7 +24,7 @@ def __init__(self, n_agents: Any, state_shape: Any, mixing_embed_dim: Any) -> No self.embed_dim = mixing_embed_dim self.state_dim = int(np.prod(state_shape)) - self.hyper_w_1 = snt.Linear(self.embed_dim*self.n_agents) + self.hyper_w_1 = snt.Linear(self.embed_dim * self.n_agents) self.hyper_w_final = snt.Linear(self.embed_dim) # State dependent bias for hidden layer @@ -65,7 +64,6 @@ def __call__(self, agent_qs: Any, states: Any) -> tf.Tensor: # print("w_final: ", w_final.shape) # print("v: ", v.shape) y = tf.linalg.matmul(hidden, w_final) + v - # print("tf.linalg.matmul(hidden, w_final): ", tf.linalg.matmul(hidden, w_final).shape) # print("y: ", y.shape) # Reshape and return q_tot = tf.reshape(y, (bs, -1, 1)) @@ -107,4 +105,4 @@ def __call__(self, agent_qs: Any, states: Any) -> tf.Tensor: # print("y: ", y.shape) # q_tot = tf.reshape(y, (bs, -1, 1)) # print("q_tot: ", q_tot.shape) - # return q_tot \ No newline at end of file + # return q_tot diff --git a/mava/systems/tf/qmix/builder.py b/mava/systems/tf/qmix/builder.py index 4d4806313..4fdafbd19 100644 --- a/mava/systems/tf/qmix/builder.py +++ b/mava/systems/tf/qmix/builder.py @@ -25,6 +25,7 @@ from mava.components.tf.modules.exploration.exploration_scheduling import ( LinearExplorationScheduler, ) +from mava.components.tf.modules.stabilising import FingerPrintStabalisation from mava.systems.tf.madqn.builder import MADQNBuilder, MADQNConfig from mava.systems.tf.qmix import execution, training from mava.wrappers import DetailedTrainerStatisticsWithEpsilon @@ -34,6 +35,7 @@ @dataclasses.dataclass class QMIXConfig(MADQNConfig): + # TODO Match documentation with MADQNConfig once cleaned. """Configuration options for the QMIX system. Args: environment_spec: description of the actions, observations, etc. @@ -71,6 +73,7 @@ def __init__( exploration_scheduler_fn: Type[ LinearExplorationScheduler ] = LinearExplorationScheduler, + replay_stabilisation_fn: Optional[Type[FingerPrintStabalisation]] = None, ) -> None: """Args: _config: Configuration options for the QMIX system. @@ -82,6 +85,7 @@ def __init__( executor_fn=executor_fn, extra_specs=extra_specs, exploration_scheduler_fn=exploration_scheduler_fn, + replay_stabilisation_fn=replay_stabilisation_fn, ) def make_trainer( @@ -114,6 +118,10 @@ def make_trainer( epsilon_min=self._config.epsilon_min, epsilon_decay=self._config.epsilon_decay, ) + + # Check if we should use fingerprints + fingerprint = True if self._replay_stabiliser_fn is not None else False + # The learner updates the parameters (and initializes them). trainer = self._trainer_fn( # type:ignore agents=agents, @@ -128,8 +136,10 @@ def make_trainer( target_update_period=self._config.target_update_period, clipping=self._config.clipping, exploration_scheduler=exploration_scheduler, + communication_module=communication_module, dataset=dataset, counter=counter, + fingerprint=fingerprint, logger=logger, checkpoint=self._config.checkpoint, checkpoint_subpath=self._config.checkpoint_subpath, diff --git a/mava/systems/tf/qmix/execution.py b/mava/systems/tf/qmix/execution.py index 1f11d34c5..bd320ea90 100644 --- a/mava/systems/tf/qmix/execution.py +++ b/mava/systems/tf/qmix/execution.py @@ -21,6 +21,7 @@ from acme.tf import variable_utils as tf2_variable_utils from mava import adders +from mava.components.tf.modules.communication import BaseCommunicationModule from mava.systems.tf.madqn.execution import MADQNFeedForwardExecutor from mava.systems.tf.madqn.training import MADQNTrainer @@ -41,6 +42,8 @@ def __init__( shared_weights: bool = True, adder: Optional[adders.ParallelAdder] = None, variable_client: Optional[tf2_variable_utils.VariableClient] = None, + communication_module: Optional[BaseCommunicationModule] = None, + fingerprint: bool = False, evaluator: bool = False, ): """Initializes the executor. @@ -58,6 +61,8 @@ def __init__( shared_weights=shared_weights, adder=adder, variable_client=variable_client, + communication_module=communication_module, + fingerprint=fingerprint, trainer=trainer, evaluator=evaluator, ) diff --git a/mava/systems/tf/qmix/system.py b/mava/systems/tf/qmix/system.py index c1197da49..76cd44e83 100644 --- a/mava/systems/tf/qmix/system.py +++ b/mava/systems/tf/qmix/system.py @@ -80,7 +80,7 @@ def __init__( architecture: Type[DecentralisedValueActor] = DecentralisedValueActor, trainer_fn: Type[training.QMIXTrainer] = training.QMIXTrainer, executor_fn: Type[core.Executor] = execution.QMIXFeedForwardExecutor, - mixer: Type[mixing.BaseMixingModule] = mixing.MonotonicMixing, + mixer: Type[mixing.MonotonicMixing] = mixing.MonotonicMixing, exploration_scheduler_fn: Type[ LinearExplorationScheduler ] = LinearExplorationScheduler, @@ -93,7 +93,7 @@ def __init__( batch_size: int = 256, prefetch_size: int = 4, min_replay_size: int = 1000, - max_replay_size: int = 1000, + max_replay_size: int = 1000000, samples_per_insert: Optional[float] = 32.0, n_step: int = 5, sequence_length: int = 20, @@ -205,6 +205,7 @@ def trainer( architecture=architecture, environment_spec=self._environment_spec, agent_networks=agent_networks, + num_hypernet_layers=1, ).create_system() # create logger diff --git a/mava/systems/tf/qmixV2/system.py b/mava/systems/tf/qmixV2/system.py index 319308146..85de21e64 100644 --- a/mava/systems/tf/qmixV2/system.py +++ b/mava/systems/tf/qmixV2/system.py @@ -15,7 +15,7 @@ """Defines the MADQN system class.""" import functools -from typing import Any, Callable, Dict, Optional, Type, Union +from typing import Any, Callable, Dict, Optional, Type import acme import dm_env diff --git a/mava/systems/tf/qmixV2/training.py b/mava/systems/tf/qmixV2/training.py index 20fc18d7e..c54e7017b 100644 --- a/mava/systems/tf/qmixV2/training.py +++ b/mava/systems/tf/qmixV2/training.py @@ -20,7 +20,6 @@ import numpy as np import sonnet as snt import tensorflow as tf -import tree import trfl from acme.tf import utils as tf2_utils from acme.types import NestedArray @@ -297,15 +296,14 @@ def _forward(self, inputs: Any) -> None: q_acts = tf.concat(q_acts, axis=1) # [B, num_agents] q_targets = tf.concat(q_targets, axis=1) # [B, num_agents] - q_tot_mixed = self._mixer(q_acts, s_tm1) # [B, 1, 1] q_tot_target_mixed = self._target_mixer(q_targets, s_t) # [B, 1, 1] - # q_tot_mixed = tf.reduce_sum(q_acts, axis=1) # [B, 1, 1] - # q_tot_target_mixed = tf.reduce_sum(q_targets, axis=1) # [B, 1, 1] + q_tot_mixed = tf.reduce_sum(q_acts, axis=1) # [B, 1, 1] + q_tot_target_mixed = tf.reduce_sum(q_targets, axis=1) # [B, 1, 1] - q_tot_mixed = tf.reshape(q_tot_mixed, (-1,)) - q_tot_target_mixed = tf.reshape(q_tot_target_mixed, (-1,)) + # q_tot_mixed = tf.reshape(q_tot_mixed, (-1,)) + # q_tot_target_mixed = tf.reshape(q_tot_target_mixed, (-1,)) # Calculate Q loss. targets = rewards + pcont * q_tot_target_mixed diff --git a/mava/systems/tf/vdn/builder.py b/mava/systems/tf/vdn/builder.py index 972aa9272..61ecce3cb 100644 --- a/mava/systems/tf/vdn/builder.py +++ b/mava/systems/tf/vdn/builder.py @@ -25,6 +25,7 @@ from mava.components.tf.modules.exploration.exploration_scheduling import ( LinearExplorationScheduler, ) +from mava.components.tf.modules.stabilising import FingerPrintStabalisation from mava.systems.tf.madqn.builder import MADQNBuilder, MADQNConfig from mava.systems.tf.vdn import execution, training from mava.wrappers import DetailedTrainerStatisticsWithEpsilon @@ -72,6 +73,7 @@ def __init__( exploration_scheduler_fn: Type[ LinearExplorationScheduler ] = LinearExplorationScheduler, + replay_stabilisation_fn: Optional[Type[FingerPrintStabalisation]] = None, ) -> None: """Args: _config: Configuration options for the QMIX system. @@ -83,6 +85,7 @@ def __init__( executor_fn=executor_fn, extra_specs=extra_specs, exploration_scheduler_fn=exploration_scheduler_fn, + replay_stabilisation_fn=replay_stabilisation_fn, ) def make_trainer( @@ -115,6 +118,10 @@ def make_trainer( epsilon_min=self._config.epsilon_min, epsilon_decay=self._config.epsilon_decay, ) + + # Check if we should use fingerprints + fingerprint = True if self._replay_stabiliser_fn is not None else False + # The learner updates the parameters (and initializes them). trainer = self._trainer_fn( # type:ignore agents=agents, @@ -129,8 +136,10 @@ def make_trainer( target_update_period=self._config.target_update_period, clipping=self._config.clipping, exploration_scheduler=exploration_scheduler, + communication_module=communication_module, dataset=dataset, counter=counter, + fingerprint=fingerprint, logger=logger, checkpoint=self._config.checkpoint, checkpoint_subpath=self._config.checkpoint_subpath, diff --git a/mava/systems/tf/vdn/execution.py b/mava/systems/tf/vdn/execution.py index bcd9d7da9..22dd62fa3 100644 --- a/mava/systems/tf/vdn/execution.py +++ b/mava/systems/tf/vdn/execution.py @@ -21,6 +21,7 @@ from acme.tf import variable_utils as tf2_variable_utils from mava import adders +from mava.components.tf.modules.communication import BaseCommunicationModule from mava.systems.tf.madqn.execution import MADQNFeedForwardExecutor from mava.systems.tf.madqn.training import MADQNTrainer @@ -41,6 +42,8 @@ def __init__( shared_weights: bool = True, adder: Optional[adders.ParallelAdder] = None, variable_client: Optional[tf2_variable_utils.VariableClient] = None, + communication_module: Optional[BaseCommunicationModule] = None, + fingerprint: bool = False, evaluator: bool = False, ): """Initializes the executor. @@ -58,6 +61,8 @@ def __init__( shared_weights=shared_weights, adder=adder, variable_client=variable_client, + communication_module=communication_module, + fingerprint=fingerprint, trainer=trainer, evaluator=evaluator, ) diff --git a/mava/systems/tf/vdn/system.py b/mava/systems/tf/vdn/system.py index fa8603445..0d5e0eb29 100644 --- a/mava/systems/tf/vdn/system.py +++ b/mava/systems/tf/vdn/system.py @@ -93,7 +93,7 @@ def __init__( batch_size: int = 256, prefetch_size: int = 4, min_replay_size: int = 1000, - max_replay_size: int = 1000, + max_replay_size: int = 1000000, samples_per_insert: Optional[float] = 32.0, n_step: int = 5, sequence_length: int = 20, diff --git a/mava/systems/tf/vdn/training.py b/mava/systems/tf/vdn/training.py index 951c14099..b7b1380d6 100644 --- a/mava/systems/tf/vdn/training.py +++ b/mava/systems/tf/vdn/training.py @@ -15,13 +15,14 @@ """VDN trainer implementation.""" -from typing import Any, Dict, List +from typing import Any, Dict, List, Optional import sonnet as snt import tensorflow as tf from acme.utils import counting, loggers from trfl.indexing_ops import batched_index +from mava.components.tf.modules.communication import BaseCommunicationModule from mava.components.tf.modules.exploration.exploration_scheduling import ( LinearExplorationScheduler, ) @@ -49,8 +50,10 @@ def __init__( discount: float, shared_weights: bool, exploration_scheduler: LinearExplorationScheduler, + communication_module: Optional[BaseCommunicationModule] = None, clipping: bool = True, counter: counting.Counter = None, + fingerprint: bool = False, logger: loggers.Logger = None, checkpoint: bool = True, checkpoint_subpath: str = "~/mava/", @@ -70,24 +73,33 @@ def __init__( discount=discount, shared_weights=shared_weights, exploration_scheduler=exploration_scheduler, + communication_module=communication_module, clipping=clipping, counter=counter, + fingerprint=fingerprint, logger=logger, checkpoint=checkpoint, checkpoint_subpath=checkpoint_subpath, ) @tf.function - def _step(self) -> Dict[str, Dict[str, Any]]: + def _step( + self, + ) -> Dict[str, Dict[str, Any]]: + # Update the target networks self._update_target_networks() + # Get data from replay (dropping extras if any). Note there is no + # extra data here because we do not insert any into Reverb. inputs = next(self._iterator) self._forward(inputs) + self._backward() - return {"system": {"q_value_loss": self.loss}} # Return total system loss + # Log losses per agent + return {agent: {"q_value_loss": self.loss} for agent in self._agents} def _forward(self, inputs: Any) -> None: # Unpack input data as follows: @@ -104,49 +116,51 @@ def _forward(self, inputs: Any) -> None: # Do forward passes through the networks and calculate the losses with tf.GradientTape(persistent=True) as tape: - q_tm1 = [] # Q vals - q_t = [] # Target Q vals + q_acts = [] # Q vals + q_targets = [] # Target Q vals for agent in self._agents: agent_key = self.agent_net_keys[agent] o_tm1_feed, o_t_feed, a_tm1_feed = self._get_feed( o_tm1, o_t, a_tm1, agent ) + q_tm1 = self._q_networks[agent_key](o_tm1_feed) + q_t_value = self._target_q_networks[agent_key](o_t_feed) + q_t_selector = self._q_networks[agent_key](o_t_feed) + best_action = tf.argmax(q_t_selector, axis=1, output_type=tf.int32) + + # TODO Make use of q_t_selector for fingerprinting. Speak to Claude. + q_act = batched_index(q_tm1, a_tm1_feed, keepdims=True) # [B, 1] + q_target = batched_index( + q_t_value, best_action, keepdims=True + ) # [B, 1] + + q_acts.append(q_act) + q_targets.append(q_target) + + rewards = tf.concat( + [tf.reshape(val, (-1, 1)) for val in list(r_t.values())], axis=1 + ) + rewards = tf.reduce_mean(rewards, axis=1) # [B] - q_tm1_agent = self._q_networks[agent_key](o_tm1_feed) # [B, n_actions] - q_act = batched_index(q_tm1_agent, a_tm1_feed, keepdims=True) # [B, 1] - - q_t_agent = self._target_q_networks[agent_key]( - o_t_feed - ) # [B, n_actions] - q_target_max = tf.reduce_max(q_t_agent, axis=1, keepdims=True) # [B, 1] - - q_tm1.append(q_act) - q_t.append(q_target_max) - - num_agents = len(self._agents) - - rewards = [tf.reshape(val, (-1, 1)) for val in list(r_t.values())] - rewards = tf.reshape( - tf.concat(rewards, axis=1), (-1, 1, num_agents) - ) # [B, 1, num_agents] + pcont = tf.concat( + [tf.reshape(val, (-1, 1)) for val in list(d_t.values())], axis=1 + ) + pcont = tf.reduce_mean(pcont, axis=1) + discount = tf.cast(self._discount, list(d_t.values())[0].dtype) + pcont = discount * pcont # [B] - dones = [tf.reshape(val.terminal, (-1, 1)) for val in list(o_tm1.values())] - dones = tf.reshape( - tf.concat(dones, axis=1), (-1, 1, num_agents) - ) # [B, 1, num_agents] + q_acts = tf.concat(q_acts, axis=1) # [B, num_agents] + q_targets = tf.concat(q_targets, axis=1) # [B, num_agents] - q_tm1 = tf.concat(q_tm1, axis=1) # [B, num_agents] - q_t = tf.concat(q_t, axis=1) # [B, num_agents] + q_tot_mixed = self._mixing_network(q_acts) # [B, 1, 1] + q_tot_target_mixed = self._target_mixing_network(q_targets) # [B, 1, 1] - q_tot_mixed = self._mixing_network(q_tm1) # [B, 1, 1] - q_tot_target_mixed = self._target_mixing_network(q_t) # [B, 1, 1] + # q_tot_mixed = tf.reduce_sum(q_acts, axis=1) # [B, 1, 1] + # q_tot_target_mixed = tf.reduce_sum(q_targets, axis=1) # [B, 1, 1] # Calculate Q loss. - targets = ( - rewards - + self._discount * (tf.constant(1.0) - dones) * q_tot_target_mixed - ) + targets = rewards + pcont * q_tot_target_mixed targets = tf.stop_gradient(targets) td_error = targets - q_tot_mixed @@ -156,10 +170,11 @@ def _forward(self, inputs: Any) -> None: def _backward(self) -> None: # Calculate the gradients and update the networks + trainable_variables = [] for agent in self._agents: agent_key = self.agent_net_keys[agent] # Get trainable variables. - trainable_variables = self._q_networks[agent_key].trainable_variables + trainable_variables += self._q_networks[agent_key].trainable_variables # Compute gradients. gradients = self.tape.gradient(self.loss, trainable_variables) diff --git a/mava/utils/environments/smac_utils.py b/mava/utils/environments/smac_utils.py index 4db2fa554..d2cacba16 100644 --- a/mava/utils/environments/smac_utils.py +++ b/mava/utils/environments/smac_utils.py @@ -20,7 +20,7 @@ import dm_env from smac.env import StarCraft2Env -from mava.wrappers import SMACEnvWrapper +from mava.wrappers import SMACEnvWrapper # type:ignore def load_smac_env(env_config: Dict[str, Any]) -> StarCraft2Env: diff --git a/mava/wrappers/smac.py b/mava/wrappers/smac.py index 0bf9b5f41..c6c5784be 100644 --- a/mava/wrappers/smac.py +++ b/mava/wrappers/smac.py @@ -27,14 +27,13 @@ from gym.spaces import Box, Discrete from pettingzoo.utils.env import ParallelEnv +# TODO should not be imported unless user wants the smac env. +from smac.env import StarCraft2Env # type:ignore + from mava import types from mava.utils.wrapper_utils import convert_np_type, parameterized_restart from mava.wrappers.env_wrappers import ParallelEnvWrapper -# TODO should not be imported unless user wants the smax env. -# from smac.env import StarCraft2Env # type:ignore - - class SMACEnvWrapper(ParallelEnvWrapper): """ From edeeefd83f4f8dd82f6ab27ea51801acf3aa1c25 Mon Sep 17 00:00:00 2001 From: St John Grimbly Date: Tue, 25 May 2021 17:36:34 +0200 Subject: [PATCH 082/188] fix: bug in VDN. --- mava/systems/tf/qmix/training.py | 61 +++++++++++++++++++------------- mava/systems/tf/vdn/training.py | 17 +++++---- 2 files changed, 44 insertions(+), 34 deletions(-) diff --git a/mava/systems/tf/qmix/training.py b/mava/systems/tf/qmix/training.py index 5cd719a7d..99ca0cfc7 100644 --- a/mava/systems/tf/qmix/training.py +++ b/mava/systems/tf/qmix/training.py @@ -15,7 +15,7 @@ """Qmix trainer implementation.""" -from typing import Any, Dict, List, Sequence, Optional +from typing import Any, Dict, List, Optional, Sequence import numpy as np import sonnet as snt @@ -65,6 +65,7 @@ def __init__( self._mixing_network = mixing_network self._target_mixing_network = target_mixing_network + self._optimizer = optimizer super(QMIXTrainer, self).__init__( agents=agents, @@ -110,18 +111,29 @@ def __init__( def _update_target_networks(self) -> None: # Update target networks (incl. mixing networks). - for key in self.unique_net_keys: - online_variables = [*self._q_networks[key].variables,] - target_variables = [*self._target_q_networks[key].variables,] + if tf.math.mod(self._num_steps, self._target_update_period) == 0: + for key in self.unique_net_keys: + online_variables = [ + *self._q_networks[key].variables, + ] + target_variables = [ + *self._target_q_networks[key].variables, + ] + + # Make online -> target network update ops. + for src, dest in zip(online_variables, target_variables): + dest.assign(src) # NOTE These shouldn't really be in the agent for loop. - online_variables += self._mixing_network.variables - target_variables += self._target_mixing_network.variables - + online_variables = [ + *self._mixing_network.variables, + ] + target_variables = [ + *self._target_mixing_network.variables, + ] # Make online -> target network update ops. - if tf.math.mod(self._num_steps, self._target_update_period) == 0: - for src, dest in zip(online_variables, target_variables): - dest.assign(src) + for src, dest in zip(online_variables, target_variables): + dest.assign(src) self._num_steps.assign_add(1) @@ -199,38 +211,37 @@ def _forward(self, inputs: Any) -> None: q_targets = tf.concat(q_targets, axis=1) # [B, num_agents] q_tot_mixed = self._mixing_network(q_acts, s_tm1) # [B, 1, 1] - q_tot_target_mixed = self._target_mixing_network(q_targets, s_t) # [B, 1, 1] + q_tot_target_mixed = self._target_mixing_network( + q_targets, s_t + ) # [B, 1, 1] # Calculate Q loss. targets = rewards + pcont * q_tot_target_mixed targets = tf.stop_gradient(targets) td_error = targets - q_tot_mixed - + # Loss is MSE scaled by 0.5, so the gradient is equal to the TD error. self.loss = 0.5 * tf.reduce_mean(tf.square(td_error)) self.tape = tape def _backward(self) -> None: - # Calculate the gradients and update the networks - trainable_variables = [] for agent in self._agents: agent_key = self.agent_net_keys[agent] - # Get trainable variables. - trainable_variables += self._q_networks[agent_key].trainable_variables - trainable_variables += self._mixing_network.trainable_variables + # Update agent networks + variables = self._q_networks[agent_key].trainable_variables + gradients = self.tape.gradient(self.loss, variables) + if self._clipping: + gradients = tf.clip_by_global_norm(gradients, 40.0)[0] + self._optimizers[agent_key].apply(gradients, variables) - # Compute gradients. - gradients = self.tape.gradient(self.loss, trainable_variables) - - # Maybe clip gradients. + # Update mixing network + variables = self._mixing_network.trainable_variables + gradients = self.tape.gradient(self.loss, variables) if self._clipping: gradients = tf.clip_by_global_norm(gradients, 40.0)[0] + self._optimizer.apply(gradients, variables) - # Apply gradients. - self._optimizers[agent_key].apply(gradients, trainable_variables) - - # Delete the tape manually because of the persistent=True flag. train_utils.safe_del(self, "tape") def get_variables(self, names: Sequence[str]) -> Dict[str, Dict[str, np.ndarray]]: diff --git a/mava/systems/tf/vdn/training.py b/mava/systems/tf/vdn/training.py index b7b1380d6..63e58ee40 100644 --- a/mava/systems/tf/vdn/training.py +++ b/mava/systems/tf/vdn/training.py @@ -170,21 +170,20 @@ def _forward(self, inputs: Any) -> None: def _backward(self) -> None: # Calculate the gradients and update the networks - trainable_variables = [] for agent in self._agents: agent_key = self.agent_net_keys[agent] # Get trainable variables. - trainable_variables += self._q_networks[agent_key].trainable_variables + trainable_variables = self._q_networks[agent_key].trainable_variables - # Compute gradients. - gradients = self.tape.gradient(self.loss, trainable_variables) + # Compute gradients. + gradients = self.tape.gradient(self.loss, trainable_variables) - # Maybe clip gradients. - if self._clipping: - gradients = tf.clip_by_global_norm(gradients, 40.0)[0] + # Maybe clip gradients. + if self._clipping: + gradients = tf.clip_by_global_norm(gradients, 40.0)[0] - # Apply gradients. - self._optimizers[agent_key].apply(gradients, trainable_variables) + # Apply gradients. + self._optimizers[agent_key].apply(gradients, trainable_variables) # Delete the tape manually because of the persistent=True flag. train_utils.safe_del(self, "tape") From 97ded76817bed969033a7a0fc6a832da0db38adc Mon Sep 17 00:00:00 2001 From: Kale-ab Date: Tue, 25 May 2021 19:35:15 +0200 Subject: [PATCH 083/188] feat: Made grad norm configurable for madqn and derivatives. --- .../run_feedforward_madqn_with_fingerprints.py | 2 +- mava/systems/tf/maddpg/training.py | 1 - mava/systems/tf/madqn/builder.py | 4 ++-- mava/systems/tf/madqn/system.py | 3 ++- mava/systems/tf/madqn/training.py | 18 +++++++++++------- mava/systems/tf/qmix/builder.py | 2 +- mava/systems/tf/qmix/system.py | 4 ++-- mava/systems/tf/qmix/training.py | 9 ++++----- mava/systems/tf/vdn/builder.py | 3 +-- mava/systems/tf/vdn/system.py | 4 ++-- mava/systems/tf/vdn/training.py | 9 ++++----- 11 files changed, 30 insertions(+), 29 deletions(-) diff --git a/examples/petting_zoo/run_feedforward_madqn_with_fingerprints.py b/examples/petting_zoo/run_feedforward_madqn_with_fingerprints.py index 903f52389..f69930e84 100644 --- a/examples/petting_zoo/run_feedforward_madqn_with_fingerprints.py +++ b/examples/petting_zoo/run_feedforward_madqn_with_fingerprints.py @@ -54,7 +54,7 @@ str(datetime.now()), "Experiment identifier that can be used to continue experiments.", ) -flags.DEFINE_string("base_dir", "./logs/", "Base dir to store experiments.") +flags.DEFINE_string("base_dir", "~/mava/", "Base dir to store experiments.") def make_networks( diff --git a/mava/systems/tf/maddpg/training.py b/mava/systems/tf/maddpg/training.py index 367ba6ae8..6bf2c04c8 100644 --- a/mava/systems/tf/maddpg/training.py +++ b/mava/systems/tf/maddpg/training.py @@ -578,7 +578,6 @@ def __init__( target_observation_network: the target observation network. policy_optimizer: the optimizer to be applied to the DPG (policy) loss. critic_optimizer: the optimizer to be applied to the critic loss. - clipping: whether to clip gradients by global norm. counter: counter object used to keep track of steps. logger: logger object to be used by learner. checkpoint: boolean indicating whether to checkpoint the learner. diff --git a/mava/systems/tf/madqn/builder.py b/mava/systems/tf/madqn/builder.py index 8eb246480..5b370279c 100644 --- a/mava/systems/tf/madqn/builder.py +++ b/mava/systems/tf/madqn/builder.py @@ -57,9 +57,9 @@ class MADQNConfig: epsilon_min: float epsilon_decay: float shared_weights: bool + max_gradient_norm: Optional[float] target_update_period: int executor_variable_update_period: int - clipping: bool min_replay_size: int max_replay_size: int samples_per_insert: Optional[float] @@ -301,7 +301,7 @@ def make_trainer( shared_weights=self._config.shared_weights, optimizer=self._config.optimizer, target_update_period=self._config.target_update_period, - clipping=self._config.clipping, + max_gradient_norm=self._config.max_gradient_norm, exploration_scheduler=exploration_scheduler, dataset=dataset, counter=counter, diff --git a/mava/systems/tf/madqn/system.py b/mava/systems/tf/madqn/system.py index 371df4b94..a85e399e1 100644 --- a/mava/systems/tf/madqn/system.py +++ b/mava/systems/tf/madqn/system.py @@ -104,6 +104,7 @@ def __init__( sequence_length: int = 20, period: int = 20, clipping: bool = True, + max_gradient_norm: float = None, discount: float = 0.99, optimizer: snt.Optimizer = snt.optimizers.Adam(learning_rate=1e-4), target_update_period: int = 100, @@ -171,7 +172,7 @@ def __init__( n_step=n_step, sequence_length=sequence_length, period=period, - clipping=clipping, + max_gradient_norm=max_gradient_norm, checkpoint=checkpoint, optimizer=optimizer, checkpoint_subpath=checkpoint_subpath, diff --git a/mava/systems/tf/madqn/training.py b/mava/systems/tf/madqn/training.py index 8456dae82..ad462c1d5 100644 --- a/mava/systems/tf/madqn/training.py +++ b/mava/systems/tf/madqn/training.py @@ -52,7 +52,7 @@ def __init__( discount: float, shared_weights: bool, exploration_scheduler: LinearExplorationScheduler, - clipping: bool = True, + max_gradient_norm: float = None, fingerprint: bool = False, counter: counting.Counter = None, logger: loggers.Logger = None, @@ -75,7 +75,12 @@ def __init__( # Other learner parameters. self._discount = discount - self._clipping = clipping + # Set up gradient clipping. + if max_gradient_norm is not None: + self._max_gradient_norm = tf.convert_to_tensor(max_gradient_norm) + else: # A very large number. Infinity results in NaNs. + self._max_gradient_norm = tf.convert_to_tensor(1e10) + self._fingerprint = fingerprint # Necessary to track when to update target networks. @@ -299,9 +304,8 @@ def _backward(self) -> None: # Compute gradients gradients = tape.gradient(q_network_losses[agent], q_network_variables) - # Maybe clip gradients. - if self._clipping: - gradients = tf.clip_by_global_norm(gradients, 40.0)[0] + # Clip gradients. + gradients = tf.clip_by_global_norm(gradients, self._max_gradient_norm)[0] # Apply gradients. self._optimizers[agent_key].apply(gradients, q_network_variables) @@ -338,7 +342,7 @@ def __init__( discount: float, shared_weights: bool, exploration_scheduler: LinearExplorationScheduler, - clipping: bool = True, + max_gradient_norm: float = None, counter: counting.Counter = None, logger: loggers.Logger = None, fingerprint: bool = False, @@ -356,7 +360,7 @@ def __init__( discount=discount, shared_weights=shared_weights, exploration_scheduler=exploration_scheduler, - clipping=clipping, + max_gradient_norm=max_gradient_norm, counter=counter, logger=logger, fingerprint=fingerprint, diff --git a/mava/systems/tf/qmix/builder.py b/mava/systems/tf/qmix/builder.py index ffbb27ec6..3d8e3fddd 100644 --- a/mava/systems/tf/qmix/builder.py +++ b/mava/systems/tf/qmix/builder.py @@ -124,7 +124,7 @@ def make_trainer( shared_weights=self._config.shared_weights, optimizer=self._config.optimizer, target_update_period=self._config.target_update_period, - clipping=self._config.clipping, + max_gradient_norm=self._config.max_gradient_norm, exploration_scheduler=exploration_scheduler, dataset=dataset, counter=counter, diff --git a/mava/systems/tf/qmix/system.py b/mava/systems/tf/qmix/system.py index c1197da49..c5952c9f0 100644 --- a/mava/systems/tf/qmix/system.py +++ b/mava/systems/tf/qmix/system.py @@ -98,7 +98,7 @@ def __init__( n_step: int = 5, sequence_length: int = 20, period: int = 20, - clipping: bool = True, + max_gradient_norm: float = None, discount: float = 0.99, optimizer: snt.Optimizer = snt.optimizers.Adam(learning_rate=1e-4), target_update_period: int = 100, @@ -169,7 +169,7 @@ def __init__( n_step=n_step, sequence_length=sequence_length, period=period, - clipping=clipping, + max_gradient_norm=max_gradient_norm, checkpoint=checkpoint, optimizer=optimizer, checkpoint_subpath=checkpoint_subpath, diff --git a/mava/systems/tf/qmix/training.py b/mava/systems/tf/qmix/training.py index 212aad6df..c06e0024b 100644 --- a/mava/systems/tf/qmix/training.py +++ b/mava/systems/tf/qmix/training.py @@ -53,7 +53,7 @@ def __init__( discount: float, shared_weights: bool, exploration_scheduler: LinearExplorationScheduler, - clipping: bool = True, + max_gradient_norm: float = None, counter: counting.Counter = None, logger: loggers.Logger = None, checkpoint: bool = True, @@ -74,7 +74,7 @@ def __init__( discount=discount, shared_weights=shared_weights, exploration_scheduler=exploration_scheduler, - clipping=clipping, + max_gradient_norm=max_gradient_norm, counter=counter, logger=logger, checkpoint=checkpoint, @@ -224,9 +224,8 @@ def _backward(self) -> None: # Compute gradients. gradients = self.tape.gradient(self.loss, trainable_variables) - # Maybe clip gradients. - if self._clipping: - gradients = tf.clip_by_global_norm(gradients, 40.0)[0] + # Clip gradients. + gradients = tf.clip_by_global_norm(gradients, self._max_gradient_norm)[0] # Apply gradients. self._optimizers[agent_key].apply(gradients, trainable_variables) diff --git a/mava/systems/tf/vdn/builder.py b/mava/systems/tf/vdn/builder.py index 916150ebb..0668f1ae4 100644 --- a/mava/systems/tf/vdn/builder.py +++ b/mava/systems/tf/vdn/builder.py @@ -48,7 +48,6 @@ class VDNConfig(MADQNConfig): that is made. n_step: number of steps to squash into a single transition. sigma: standard deviation of zero-mean, Gaussian exploration noise. - clipping: whether to clip gradients by global norm. replay_table_name: string indicating what name to give the replay table.""" @@ -125,7 +124,7 @@ def make_trainer( shared_weights=self._config.shared_weights, optimizer=self._config.optimizer, target_update_period=self._config.target_update_period, - clipping=self._config.clipping, + max_gradient_norm=self._config.max_gradient_norm, exploration_scheduler=exploration_scheduler, dataset=dataset, counter=counter, diff --git a/mava/systems/tf/vdn/system.py b/mava/systems/tf/vdn/system.py index fa8603445..ff53125f0 100644 --- a/mava/systems/tf/vdn/system.py +++ b/mava/systems/tf/vdn/system.py @@ -98,7 +98,7 @@ def __init__( n_step: int = 5, sequence_length: int = 20, period: int = 20, - clipping: bool = True, + max_gradient_norm: float = None, discount: float = 0.99, optimizer: snt.Optimizer = snt.optimizers.Adam(learning_rate=1e-4), target_update_period: int = 100, @@ -169,7 +169,7 @@ def __init__( n_step=n_step, sequence_length=sequence_length, period=period, - clipping=clipping, + max_gradient_norm=max_gradient_norm, checkpoint=checkpoint, optimizer=optimizer, checkpoint_subpath=checkpoint_subpath, diff --git a/mava/systems/tf/vdn/training.py b/mava/systems/tf/vdn/training.py index 951c14099..232468f68 100644 --- a/mava/systems/tf/vdn/training.py +++ b/mava/systems/tf/vdn/training.py @@ -49,7 +49,7 @@ def __init__( discount: float, shared_weights: bool, exploration_scheduler: LinearExplorationScheduler, - clipping: bool = True, + max_gradient_norm: float = None, counter: counting.Counter = None, logger: loggers.Logger = None, checkpoint: bool = True, @@ -70,7 +70,7 @@ def __init__( discount=discount, shared_weights=shared_weights, exploration_scheduler=exploration_scheduler, - clipping=clipping, + max_gradient_norm=max_gradient_norm, counter=counter, logger=logger, checkpoint=checkpoint, @@ -164,9 +164,8 @@ def _backward(self) -> None: # Compute gradients. gradients = self.tape.gradient(self.loss, trainable_variables) - # Maybe clip gradients. - if self._clipping: - gradients = tf.clip_by_global_norm(gradients, 40.0)[0] + # Clip gradients. + gradients = tf.clip_by_global_norm(gradients, self._max_gradient_norm)[0] # Apply gradients. self._optimizers[agent_key].apply(gradients, trainable_variables) From a1c0e7cc47301aaa370fb5c7c15a1d900a1ca967 Mon Sep 17 00:00:00 2001 From: Kale-ab Date: Tue, 25 May 2021 19:44:58 +0200 Subject: [PATCH 084/188] feat: Updated dial. --- mava/systems/tf/dial/builder.py | 4 ++-- mava/systems/tf/dial/system.py | 4 ++-- mava/systems/tf/dial/training.py | 4 ++-- mava/systems/tf/madqn/training.py | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/mava/systems/tf/dial/builder.py b/mava/systems/tf/dial/builder.py index c7e5d0e21..148f90b97 100644 --- a/mava/systems/tf/dial/builder.py +++ b/mava/systems/tf/dial/builder.py @@ -59,7 +59,7 @@ class DIALConfig: shared_weights: bool target_update_period: int executor_variable_update_period: int - clipping: bool + max_gradient_norm: Optional[float] min_replay_size: int max_replay_size: int samples_per_insert: Optional[float] @@ -314,7 +314,7 @@ def make_trainer( shared_weights=self._config.shared_weights, optimizer=self._config.optimizer, target_update_period=self._config.target_update_period, - clipping=self._config.clipping, + max_gradient_norm=self._config.max_gradient_norm, exploration_scheduler=exploration_scheduler, communication_module=communication_module, dataset=dataset, diff --git a/mava/systems/tf/dial/system.py b/mava/systems/tf/dial/system.py index 8edcdb697..9570ef437 100644 --- a/mava/systems/tf/dial/system.py +++ b/mava/systems/tf/dial/system.py @@ -109,7 +109,7 @@ def __init__( n_step: int = 5, sequence_length: int = 6, period: int = 20, - clipping: bool = True, + max_gradient_norm: float = None, discount: float = 1, optimizer: snt.Optimizer = snt.optimizers.Adam(learning_rate=1e-4), target_update_period: int = 100, @@ -178,7 +178,7 @@ def __init__( n_step=n_step, sequence_length=sequence_length, period=period, - clipping=clipping, + max_gradient_norm=max_gradient_norm, checkpoint=checkpoint, optimizer=optimizer, checkpoint_subpath=checkpoint_subpath, diff --git a/mava/systems/tf/dial/training.py b/mava/systems/tf/dial/training.py index 5146d57b5..080650edc 100644 --- a/mava/systems/tf/dial/training.py +++ b/mava/systems/tf/dial/training.py @@ -53,7 +53,7 @@ def __init__( shared_weights: bool, exploration_scheduler: LinearExplorationScheduler, communication_module: BaseCommunicationModule, - clipping: bool = True, + max_gradient_norm: float = None, fingerprint: bool = False, counter: counting.Counter = None, logger: loggers.Logger = None, @@ -71,7 +71,7 @@ def __init__( discount=discount, shared_weights=shared_weights, exploration_scheduler=exploration_scheduler, - clipping=clipping, + max_gradient_norm=max_gradient_norm, fingerprint=fingerprint, counter=counter, logger=logger, diff --git a/mava/systems/tf/madqn/training.py b/mava/systems/tf/madqn/training.py index 526e65a4d..ab971894b 100644 --- a/mava/systems/tf/madqn/training.py +++ b/mava/systems/tf/madqn/training.py @@ -440,7 +440,7 @@ def __init__( shared_weights: bool, exploration_scheduler: LinearExplorationScheduler, communication_module: BaseCommunicationModule, - clipping: bool = True, + max_gradient_norm: float = None, fingerprint: bool = False, counter: counting.Counter = None, logger: loggers.Logger = None, @@ -458,7 +458,7 @@ def __init__( discount=discount, shared_weights=shared_weights, exploration_scheduler=exploration_scheduler, - clipping=clipping, + max_gradient_norm=max_gradient_norm, fingerprint=fingerprint, counter=counter, logger=logger, From 92863f3b7b5a37ca8304c79f0a0d4c9844fbbc5f Mon Sep 17 00:00:00 2001 From: Dries Date: Tue, 25 May 2021 21:24:03 +0200 Subject: [PATCH 085/188] fix: Fix centralised training bug. --- .../tf/architectures/centralised.py | 7 ++++++ mava/components/tf/architectures/networked.py | 1 - mava/systems/tf/maddpg/training.py | 24 +++++++++++++++---- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/mava/components/tf/architectures/centralised.py b/mava/components/tf/architectures/centralised.py index b84b5b1c0..0c92c5dfd 100644 --- a/mava/components/tf/architectures/centralised.py +++ b/mava/components/tf/architectures/centralised.py @@ -143,6 +143,10 @@ def _get_critic_specs( for agent_type, agents in agents_by_type.items(): agent_key = agent_type if self._shared_weights else agents[0] + + # TODO (dries): Add a check to see if all + # self._embed_specs[agent_key].shape are of the same shape + critic_obs_shape = list(copy.copy(self._embed_specs[agent_key].shape)) critic_obs_shape.insert(0, len(agents)) obs_specs_per_type[agent_type] = tf.TensorSpec( @@ -153,6 +157,9 @@ def _get_critic_specs( critic_act_shape = list( copy.copy(self._agent_specs[agents[0]].actions.shape) ) + # TODO (dries): Add a check to see if all + # self._agent_specs[agents[0]].actions.shape are of the same shape + critic_act_shape.insert(0, len(agents)) action_specs_per_type[agent_type] = tf.TensorSpec( shape=critic_act_shape, diff --git a/mava/components/tf/architectures/networked.py b/mava/components/tf/architectures/networked.py index 3b63ea40d..92e282ea4 100644 --- a/mava/components/tf/architectures/networked.py +++ b/mava/components/tf/architectures/networked.py @@ -126,5 +126,4 @@ def _get_critic_specs( shape=critic_act_shape, dtype=tf.dtypes.float32, ) - return critic_obs_specs, critic_act_specs diff --git a/mava/systems/tf/maddpg/training.py b/mava/systems/tf/maddpg/training.py index dbf0f7381..d633b08eb 100644 --- a/mava/systems/tf/maddpg/training.py +++ b/mava/systems/tf/maddpg/training.py @@ -621,10 +621,25 @@ def _get_critic_feed( ) -> Tuple[tf.Tensor, tf.Tensor, tf.Tensor, tf.Tensor]: # Centralised based - o_tm1_feed = tf.stack([x for x in o_tm1_trans.values()], 1) - o_t_feed = tf.stack([x for x in o_t_trans.values()], 1) - a_tm1_feed = tf.stack([x for x in a_tm1.values()], 1) - a_t_feed = tf.stack([x for x in a_t.values()], 1) + # o_tm1_feed = tf.stack([x for x in o_tm1_trans.values()], 1) + # o_t_feed = tf.stack([x for x in o_t_trans.values()], 1) + # a_tm1_feed = tf.stack([x for x in a_tm1.values()], 1) + # a_t_feed = tf.stack([x for x in a_t.values()], 1) + + o_tm1_vals = [] + o_t_vals = [] + a_tm1_vals = [] + a_t_vals = [] + for connected_agent in o_tm1_trans.keys(): + o_tm1_vals.append(o_tm1_trans[connected_agent]) + o_t_vals.append(o_t_trans[connected_agent]) + a_tm1_vals.append(a_tm1[connected_agent]) + a_t_vals.append(a_t[connected_agent]) + o_tm1_feed = tf.stack(o_tm1_vals, 1) + o_t_feed = tf.stack(o_t_vals, 1) + a_tm1_feed = tf.stack(a_tm1_vals, 1) + a_t_feed = tf.stack(a_t_vals, 1) + return o_tm1_feed, o_t_feed, a_tm1_feed, a_t_feed def _get_dpg_feed( @@ -749,6 +764,7 @@ def _get_critic_feed( o_t_feed = tf.stack(o_t_vals, 1) a_tm1_feed = tf.stack(a_tm1_vals, 1) a_t_feed = tf.stack(a_t_vals, 1) + return o_tm1_feed, o_t_feed, a_tm1_feed, a_t_feed def _get_dpg_feed( From 56e0d99956bdf20633217c0f164ba7655950a103 Mon Sep 17 00:00:00 2001 From: Dries Date: Tue, 25 May 2021 21:26:12 +0200 Subject: [PATCH 086/188] fix: Small fixes. --- mava/systems/tf/maddpg/training.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mava/systems/tf/maddpg/training.py b/mava/systems/tf/maddpg/training.py index ef0ebeffd..d90c17df8 100644 --- a/mava/systems/tf/maddpg/training.py +++ b/mava/systems/tf/maddpg/training.py @@ -629,11 +629,11 @@ def _get_critic_feed( o_t_vals = [] a_tm1_vals = [] a_t_vals = [] - for connected_agent in o_tm1_trans.keys(): - o_tm1_vals.append(o_tm1_trans[connected_agent]) - o_t_vals.append(o_t_trans[connected_agent]) - a_tm1_vals.append(a_tm1[connected_agent]) - a_t_vals.append(a_t[connected_agent]) + for agent_key in o_tm1_trans.keys(): + o_tm1_vals.append(o_tm1_trans[agent_key]) + o_t_vals.append(o_t_trans[agent_key]) + a_tm1_vals.append(a_tm1[agent_key]) + a_t_vals.append(a_t[agent_key]) o_tm1_feed = tf.stack(o_tm1_vals, 1) o_t_feed = tf.stack(o_t_vals, 1) a_tm1_feed = tf.stack(a_tm1_vals, 1) From 2933b7443d19973e2fa9bf7df4be5b9de53efd84 Mon Sep 17 00:00:00 2001 From: Dries Date: Tue, 25 May 2021 21:38:16 +0200 Subject: [PATCH 087/188] fix: Fix state based and recurrent versions. --- mava/systems/tf/maddpg/training.py | 65 +++++++++++++++++++++++------- 1 file changed, 51 insertions(+), 14 deletions(-) diff --git a/mava/systems/tf/maddpg/training.py b/mava/systems/tf/maddpg/training.py index d90c17df8..ed2f1916f 100644 --- a/mava/systems/tf/maddpg/training.py +++ b/mava/systems/tf/maddpg/training.py @@ -620,10 +620,10 @@ def _get_critic_feed( ) -> Tuple[tf.Tensor, tf.Tensor, tf.Tensor, tf.Tensor]: # Centralised based - # o_tm1_feed = tf.stack([x for x in o_tm1_trans.values()], 1) - # o_t_feed = tf.stack([x for x in o_t_trans.values()], 1) - # a_tm1_feed = tf.stack([x for x in a_tm1.values()], 1) - # a_t_feed = tf.stack([x for x in a_t.values()], 1) + # o_tm1_feed_cen = tf.stack([x for x in o_tm1_trans.values()], 1) + # o_t_feed_cen = tf.stack([x for x in o_t_trans.values()], 1) + # a_tm1_feed_cen = tf.stack([x for x in a_tm1.values()], 1) + # a_t_feed_cen = tf.stack([x for x in a_t.values()], 1) o_tm1_vals = [] o_t_vals = [] @@ -639,6 +639,12 @@ def _get_critic_feed( a_tm1_feed = tf.stack(a_tm1_vals, 1) a_t_feed = tf.stack(a_t_vals, 1) + # assert o_tm1_feed.numpy() == o_tm1_feed_cen.numpy() + + # print( + # "o_tm1_feed: ", o_tm1_feed.shape, "o_tm1_feed_cen: ", o_tm1_feed_cen.shape + # ) + return o_tm1_feed, o_t_feed, a_tm1_feed, a_t_feed def _get_dpg_feed( @@ -871,8 +877,17 @@ def _get_critic_feed( # State based o_tm1_feed = e_tm1["s_t"] o_t_feed = e_t["s_t"] - a_tm1_feed = tf.stack([x for x in a_tm1.values()], 1) - a_t_feed = tf.stack([x for x in a_t.values()], 1) + + a_tm1_vals = [] + a_t_vals = [] + for agent_key in o_tm1_trans.keys(): + a_tm1_vals.append(a_tm1[agent_key]) + a_t_vals.append(a_t[agent_key]) + a_tm1_feed = tf.stack(a_tm1_vals, 1) + a_t_feed = tf.stack(a_t_vals, 1) + + # a_tm1_feed = tf.stack([x for x in a_tm1.values()], 1) + # a_t_feed = tf.stack([x for x in a_t.values()], 1) return o_tm1_feed, o_t_feed, a_tm1_feed, a_t_feed def _get_dpg_feed( @@ -1565,11 +1580,25 @@ def _get_critic_feed( ) -> Tuple[tf.Tensor, tf.Tensor, tf.Tensor, tf.Tensor]: # Centralised based - obs_trans_feed = tf.stack([x for x in obs_trans.values()], -1) - target_obs_trans_feed = tf.stack([x for x in target_obs_trans.values()], -1) - action_feed = tf.stack([x for x in actions.values()], -1) - target_actions_feed = tf.stack([x for x in target_actions.values()], -1) - return obs_trans_feed, target_obs_trans_feed, action_feed, target_actions_feed + obs_trans_vals = [] + target_obs_trans_vals = [] + actions_vals = [] + target_actions_vals = [] + for agent_key in obs_trans.keys(): + obs_trans_vals.append(obs_trans[agent_key]) + target_obs_trans_vals.append(target_obs_trans[agent_key]) + actions_vals.append(actions[agent_key]) + target_actions_vals.append(target_actions[agent_key]) + obs_trans_feed = tf.stack(obs_trans_vals, 1) + target_obs_trans_feed = tf.stack(target_obs_trans_vals, 1) + actions_feed = tf.stack(actions_vals, 1) + target_actions_feed = tf.stack(target_actions_vals, 1) + + # obs_trans_feed = tf.stack([x for x in obs_trans.values()], -1) + # target_obs_trans_feed = tf.stack([x for x in target_obs_trans.values()], -1) + # actions_feed = tf.stack([x for x in actions.values()], -1) + # target_actions_feed = tf.stack([x for x in target_actions.values()], -1) + return obs_trans_feed, target_obs_trans_feed, actions_feed, target_actions_feed def _get_dpg_feed( self, @@ -1680,9 +1709,17 @@ def _get_critic_feed( # State based obs_trans_feed = extras["s_t"] target_obs_trans_feed = extras["s_t"] - action_feed = tf.stack([x for x in actions.values()], -1) - target_actions_feed = tf.stack([x for x in target_actions.values()], -1) - return obs_trans_feed, target_obs_trans_feed, action_feed, target_actions_feed + actions_vals = [] + target_actions_vals = [] + for agent_key in obs_trans.keys(): + actions_vals.append(actions[agent_key]) + target_actions_vals.append(target_actions[agent_key]) + actions_feed = tf.stack(actions_vals, 1) + target_actions_feed = tf.stack(target_actions_vals, 1) + + # actions_feed = tf.stack([x for x in actions.values()], -1) + # target_actions_feed = tf.stack([x for x in target_actions.values()], -1) + return obs_trans_feed, target_obs_trans_feed, actions_feed, target_actions_feed def _get_dpg_feed( self, From dc4acf827176fcf65da5b227e462771ec6fbddae Mon Sep 17 00:00:00 2001 From: St John Grimbly Date: Tue, 25 May 2021 21:44:28 +0200 Subject: [PATCH 088/188] fix: get Qmix trainer loops running again. --- .../debugging_envs/run_feedforward_qmix.py | 3 +- .../debugging_envs/run_feedforward_vdn.py | 2 +- .../components/tf/modules/mixing/monotonic.py | 25 +++---- mava/components/tf/networks/hypernetwork.py | 8 +-- mava/components/tf/networks/monotonic.py | 67 ++++++++++------- mava/systems/tf/qmix/builder.py | 17 +++-- mava/systems/tf/qmix/system.py | 72 +++++++++++++++---- mava/systems/tf/qmix/training.py | 38 +++++++++- mava/systems/tf/vdn/system.py | 1 + 9 files changed, 167 insertions(+), 66 deletions(-) diff --git a/examples/debugging_envs/run_feedforward_qmix.py b/examples/debugging_envs/run_feedforward_qmix.py index 64d3fa1d4..b0417862c 100644 --- a/examples/debugging_envs/run_feedforward_qmix.py +++ b/examples/debugging_envs/run_feedforward_qmix.py @@ -63,7 +63,7 @@ def make_networks( environment_spec: mava_specs.MAEnvironmentSpec, q_networks_layer_sizes: Union[Dict[str, Sequence], Sequence] = (512, 512, 256), - shared_weights: bool = True, + shared_weights: bool = False, ) -> Mapping[str, types.TensorTransformation]: """Creates networks used by the agents.""" @@ -150,6 +150,7 @@ def main(_: Any) -> None: exploration_scheduler_fn=LinearExplorationScheduler, epsilon_min=0.05, epsilon_decay=3e-4, + max_replay_size=1000000, optimizer=snt.optimizers.RMSProp(learning_rate=1e-4), checkpoint_subpath=checkpoint_dir, ).build() diff --git a/examples/debugging_envs/run_feedforward_vdn.py b/examples/debugging_envs/run_feedforward_vdn.py index 4d2652bdf..fae4ea2a4 100644 --- a/examples/debugging_envs/run_feedforward_vdn.py +++ b/examples/debugging_envs/run_feedforward_vdn.py @@ -120,7 +120,7 @@ def main(_: Any) -> None: debugging_utils.make_environment, env_name=FLAGS.env_name, action_space=FLAGS.action_space, - num_agents=2, + num_agents=3, return_state_info=True, ) diff --git a/mava/components/tf/modules/mixing/monotonic.py b/mava/components/tf/modules/mixing/monotonic.py index 1a8fe9a09..a31251c86 100644 --- a/mava/components/tf/modules/mixing/monotonic.py +++ b/mava/components/tf/modules/mixing/monotonic.py @@ -17,7 +17,7 @@ # - [] Complete class for monotonic mixing """Mixing for multi-agent RL systems""" - +import copy from typing import Dict, Optional import sonnet as snt @@ -59,26 +59,21 @@ def __init__( if agent_networks is None: agent_networks = self._architecture.create_actor_variables() - self._agent_networks = {} - self._agent_networks["values"] = agent_networks["values"] - self._agent_networks["target_values"] = agent_networks["target_values"] + self._agent_networks = agent_networks + # self._agent_networks["values"] = agent_networks["values"] + # self._agent_networks["target_values"] = agent_networks["target_values"] def _create_mixing_layer(self) -> snt.Module: """Modify and return system architecture given mixing structure.""" state_specs = self._environment_spec.get_extra_specs() state_specs = state_specs["s_t"] - # TODO Currently hard coded to 3 but need to generalise - # Need to figure out how to get the size of one-hot representation - # of the global state that is returned by the environment. - # One hot input dimension of global state - # state_specs = tf.TensorSpec(shape=(1, 3)) # Check this shape - self._num_agents = len(self._agent_networks["values"]) - q_value_dim = tf.TensorSpec(self._num_agents) + + self._n_agents = len(self._agent_networks["values"]) + q_value_dim = tf.TensorSpec(self._n_agents) # Implement method from base class self._mixed_network = MonotonicMixingNetwork( - self._architecture, - self._agent_networks, + self._n_agents, self._qmix_hidden_dim, num_hypernet_layers=self._num_hypernet_layers, hypernet_hidden_dim=self._hypernet_hidden_dim, @@ -90,5 +85,7 @@ def _create_mixing_layer(self) -> snt.Module: def create_system(self) -> Dict[str, Dict[str, snt.Module]]: # Implement method from base class self._agent_networks["mixing"] = self._create_mixing_layer() - self._agent_networks["target_mixing"] = self._create_mixing_layer() + self._agent_networks["target_mixing"] = copy.deepcopy( + self._agent_networks["mixing"] + ) return self._agent_networks diff --git a/mava/components/tf/networks/hypernetwork.py b/mava/components/tf/networks/hypernetwork.py index f0462efcb..8771d4ef9 100644 --- a/mava/components/tf/networks/hypernetwork.py +++ b/mava/components/tf/networks/hypernetwork.py @@ -74,16 +74,14 @@ def __init__( self.hyper_b1 = snt.nets.MLP(output_sizes=[self._qmix_hidden_dim]) self.hyper_b2 = snt.nets.MLP(output_sizes=[self._qmix_hidden_dim, 1]) - def __call__( - self, states: Tensor # [batch_size=B, self._state_dim=3] - ) -> Dict[str, float]: + def __call__(self, states: Tensor) -> Dict[str, float]: # [batch_size=B, state_dim] w1 = tf.abs( self.hyper_w1(states) ) # [B, qmix_hidden_dim] = [B, qmix_hidden_dim] w1 = tf.reshape( w1, (-1, self._n_agents, self._qmix_hidden_dim), - ) # [B, n_agents, qmix_hidden_dim] = [B, 2, qmix_hidden_dim] + ) # [B, n_agents, qmix_hidden_dim] b1 = self.hyper_b1(states) # [B, qmix_hidden_dim] = [B, qmix_hidden_dim] b1 = tf.reshape(b1, [-1, 1, self._qmix_hidden_dim]) # [B, 1, qmix_hidden_dim] @@ -97,7 +95,7 @@ def __call__( b2 = tf.reshape(b2, shape=(-1, 1, 1)) # [B, 1, 1] hyperparams = {} - hyperparams["w1"] = w1 # [B, 2, qmix_hidden_dim] + hyperparams["w1"] = w1 # [B, n_agents, qmix_hidden_dim] hyperparams["b1"] = b1 # [B, 1, qmix_hidden_dim] hyperparams["w2"] = w2 # [B, qmix_hidden_dim] hyperparams["b2"] = b2 # [B, 1] diff --git a/mava/components/tf/networks/monotonic.py b/mava/components/tf/networks/monotonic.py index 9e38e0a04..089eca67e 100644 --- a/mava/components/tf/networks/monotonic.py +++ b/mava/components/tf/networks/monotonic.py @@ -13,22 +13,17 @@ # See the License for the specific language governing permissions and # limitations under the License. -# TODO (StJohn): Generalise Qmixing to allow for different activations, -# hypernetwork structures etc. - # Code inspired by PyMARL framework implementation # https://github.com/oxwhirl/pymarl/blob/master/src/modules/mixers/qmix.py """Mixing for multi-agent RL systems""" -from typing import Dict - # import launchpad as lp import sonnet as snt import tensorflow as tf -from mava.components.tf.architectures.base import BaseArchitecture -from mava.components.tf.networks.hypernetwork import HyperNetwork +# from mava.components.tf.architectures.base import BaseArchitecture +# from mava.components.tf.networks.hypernetwork import HyperNetwork class MonotonicMixingNetwork(snt.Module): @@ -39,15 +34,13 @@ class MonotonicMixingNetwork(snt.Module): def __init__( self, - architecture: BaseArchitecture, - agent_networks: Dict[str, snt.Module], + n_agents: int, qmix_hidden_dim: int = 64, num_hypernet_layers: int = 2, hypernet_hidden_dim: int = 0, ) -> None: """Initializes the mixer. Args: - architecture: the BaseArchitecture used. state_shape: The state shape as defined by the environment. n_agents: The number of agents (i.e. Q-values) to mix. qmix_hidden_dim: Mixing layers hidden dimensions. @@ -56,36 +49,62 @@ def __init__( layer. Relevant for num_hypernet_layers > 1. """ super(MonotonicMixingNetwork, self).__init__() - self._architecture = architecture - self._agent_networks = agent_networks + self._n_agents = n_agents self._qmix_hidden_dim = qmix_hidden_dim self._num_hypernet_layers = num_hypernet_layers self._hypernet_hidden_dim = hypernet_hidden_dim # Create hypernetwork - self._hypernetworks = HyperNetwork( - self._agent_networks, - self._qmix_hidden_dim, - self._num_hypernet_layers, - self._hypernet_hidden_dim, + # self._hypernetworks = HyperNetwork( + # self._agent_networks, + # self._qmix_hidden_dim, + # self._num_hypernet_layers, + # self._hypernet_hidden_dim, + # ) + self.hyper_w1 = snt.nets.MLP( + output_sizes=[self._qmix_hidden_dim * self._n_agents] ) + self.hyper_w2 = snt.nets.MLP(output_sizes=[self._qmix_hidden_dim]) + self.hyper_b1 = snt.nets.MLP(output_sizes=[self._qmix_hidden_dim]) + self.hyper_b2 = snt.nets.MLP(output_sizes=[self._qmix_hidden_dim, 1]) def __call__( self, - q_values: tf.Tensor, # [batch_size, n_agents] = [B,2] - states: tf.Tensor, # [batch_size, one_hot_state_dim = 3] + q_values: tf.Tensor, # [batch_size, n_agents] + states: tf.Tensor, # [batch_size, state_dim] ) -> tf.Tensor: """Monotonic mixing logic.""" # Expand dimensions to [B, 1, n_agents] = [B,1,2] for matmul q_values = tf.expand_dims(q_values, axis=1) - self._hyperparams = self._hypernetworks(states) + + # --- HYPERNET ---- + w1 = tf.abs( + self.hyper_w1(states) + ) # [B, qmix_hidden_dim] = [B, qmix_hidden_dim] + w1 = tf.reshape( + w1, + (-1, self._n_agents, self._qmix_hidden_dim), + ) # [B, n_agents, qmix_hidden_dim] + + b1 = self.hyper_b1(states) # [B, qmix_hidden_dim] = [B, qmix_hidden_dim] + b1 = tf.reshape(b1, [-1, 1, self._qmix_hidden_dim]) # [B, 1, qmix_hidden_dim] + + w2 = tf.abs(self.hyper_w2(states)) + w2 = tf.reshape( + w2, shape=(-1, self._qmix_hidden_dim, 1) + ) # [B, qmix_hidden_dim, 1] + + b2 = self.hyper_b2(states) # [B, 1] + b2 = tf.reshape(b2, shape=(-1, 1, 1)) # [B, 1, 1] + # ----------------- + # self._hyperparams = self._hypernetworks(states) # For convenience - w1 = self._hyperparams["w1"] # [B, 2, qmix_hidden_dim] - b1 = self._hyperparams["b1"] # [B, 1, qmix_hidden_dim] - w2 = self._hyperparams["w2"] # [B, qmix_hidden_dim, 1] - b2 = self._hyperparams["b2"] # [B, 1, 1] + # w1 = self._hyperparams["w1"] # [B, n_agents, qmix_hidden_dim] + # b1 = self._hyperparams["b1"] # [B, 1, qmix_hidden_dim] + # w2 = self._hyperparams["w2"] # [B, qmix_hidden_dim, 1] + # b2 = self._hyperparams["b2"] # [B, 1, 1] # ELU -> Exp. linear unit hidden = tf.nn.elu(tf.matmul(q_values, w1) + b1) # [B, 1, qmix_hidden_dim] diff --git a/mava/systems/tf/qmix/builder.py b/mava/systems/tf/qmix/builder.py index 4fdafbd19..fe5d420b1 100644 --- a/mava/systems/tf/qmix/builder.py +++ b/mava/systems/tf/qmix/builder.py @@ -13,11 +13,14 @@ # See the License for the specific language governing permissions and # limitations under the License. +import copy import dataclasses from typing import Any, Dict, Iterator, Optional, Type import reverb import sonnet as snt +import tensorflow as tf +from acme.tf import utils as tf_utils from acme.utils import counting from mava import core, types @@ -26,6 +29,7 @@ LinearExplorationScheduler, ) from mava.components.tf.modules.stabilising import FingerPrintStabalisation +from mava.components.tf.networks import MonotonicMixingNetwork from mava.systems.tf.madqn.builder import MADQNBuilder, MADQNConfig from mava.systems.tf.qmix import execution, training from mava.wrappers import DetailedTrainerStatisticsWithEpsilon @@ -69,6 +73,7 @@ def __init__( config: QMIXConfig, trainer_fn: Type[training.QMIXTrainer] = training.QMIXTrainer, executor_fn: Type[core.Executor] = execution.QMIXFeedForwardExecutor, + mixer: Type[MonotonicMixingNetwork] = MonotonicMixingNetwork, extra_specs: Dict[str, Any] = {}, exploration_scheduler_fn: Type[ LinearExplorationScheduler @@ -87,6 +92,7 @@ def __init__( exploration_scheduler_fn=exploration_scheduler_fn, replay_stabilisation_fn=replay_stabilisation_fn, ) + self._mixer = mixer def make_trainer( self, @@ -105,13 +111,16 @@ def make_trainer( executor steps, etc.) distributed throughout the system. logger: Logger object for logging metadata. """ + agents = self._config.environment_spec.get_agent_ids() + agent_types = self._config.environment_spec.get_agent_types() + q_networks = networks["values"] target_q_networks = networks["target_values"] - mixing_network = networks["mixing"] - target_mixing_network = networks["target_mixing"] - agents = self._config.environment_spec.get_agent_ids() - agent_types = self._config.environment_spec.get_agent_types() + mixing_network = self._mixer(len(agents)) + state_spec = self._config.environment_spec.get_extra_specs()["s_t"] + tf_utils.create_variables(mixing_network, [tf.ones(len(agents)), state_spec]) + target_mixing_network = copy.deepcopy(mixing_network) # Make epsilon scheduler exploration_scheduler = self._exploration_scheduler_fn( diff --git a/mava/systems/tf/qmix/system.py b/mava/systems/tf/qmix/system.py index 76cd44e83..28fa8a4f2 100644 --- a/mava/systems/tf/qmix/system.py +++ b/mava/systems/tf/qmix/system.py @@ -27,8 +27,10 @@ from mava import core from mava import specs as mava_specs from mava.components.tf.architectures import DecentralisedValueActor -from mava.components.tf.modules import mixing +from mava.components.tf.modules.communication import BaseCommunicationModule from mava.components.tf.modules.exploration import LinearExplorationScheduler +from mava.components.tf.modules.stabilising import FingerPrintStabalisation +from mava.components.tf.networks import MonotonicMixingNetwork from mava.environment_loop import ParallelEnvironmentLoop from mava.systems.tf import executors from mava.systems.tf.madqn.system import MADQN @@ -80,10 +82,12 @@ def __init__( architecture: Type[DecentralisedValueActor] = DecentralisedValueActor, trainer_fn: Type[training.QMIXTrainer] = training.QMIXTrainer, executor_fn: Type[core.Executor] = execution.QMIXFeedForwardExecutor, - mixer: Type[mixing.MonotonicMixing] = mixing.MonotonicMixing, + mixer: Type[MonotonicMixingNetwork] = MonotonicMixingNetwork, + communication_module: Type[BaseCommunicationModule] = None, exploration_scheduler_fn: Type[ LinearExplorationScheduler ] = LinearExplorationScheduler, + replay_stabilisation_fn: Optional[Type[FingerPrintStabalisation]] = None, epsilon_min: float = 0.05, epsilon_decay: float = 1e-4, num_executors: int = 1, @@ -130,20 +134,41 @@ def __init__( ) super(QMIX, self).__init__( - architecture=architecture, environment_factory=environment_factory, network_factory=network_factory, logger_factory=logger_factory, - environment_spec=environment_spec, - shared_weights=shared_weights, + architecture=architecture, + trainer_fn=trainer_fn, + communication_module=communication_module, + executor_fn=executor_fn, + exploration_scheduler_fn=exploration_scheduler_fn, + replay_stabilisation_fn=replay_stabilisation_fn, + epsilon_min=epsilon_min, + epsilon_decay=epsilon_decay, num_executors=num_executors, num_caches=num_caches, + environment_spec=environment_spec, + shared_weights=shared_weights, + batch_size=batch_size, + prefetch_size=prefetch_size, + min_replay_size=min_replay_size, + max_replay_size=max_replay_size, + samples_per_insert=samples_per_insert, + n_step=n_step, + sequence_length=sequence_length, + period=period, + clipping=clipping, + discount=discount, + optimizer=optimizer, + target_update_period=target_update_period, + executor_variable_update_period=executor_variable_update_period, max_executor_steps=max_executor_steps, - checkpoint_subpath=checkpoint_subpath, checkpoint=checkpoint, + checkpoint_subpath=checkpoint_subpath, + logger_config=logger_config, train_loop_fn=train_loop_fn, - train_loop_fn_kwargs=train_loop_fn_kwargs, eval_loop_fn=eval_loop_fn, + train_loop_fn_kwargs=train_loop_fn_kwargs, eval_loop_fn_kwargs=eval_loop_fn_kwargs, ) @@ -178,6 +203,8 @@ def __init__( executor_fn=executor_fn, extra_specs=extra_specs, exploration_scheduler_fn=exploration_scheduler_fn, + replay_stabilisation_fn=replay_stabilisation_fn, + mixer=mixer, ) def trainer( @@ -198,15 +225,29 @@ def trainer( shared_weights=self._shared_weights, ) - agent_networks = architecture.create_actor_variables() + if self._builder._replay_stabiliser_fn is not None: + architecture = self._builder._replay_stabiliser_fn( # type: ignore + architecture + ) - # Augment network architecture by adding mixing layer network. - system_networks = self._mixer( - architecture=architecture, - environment_spec=self._environment_spec, - agent_networks=agent_networks, - num_hypernet_layers=1, - ).create_system() + communication_module = None + if self._communication_module_fn is not None: + communication_module = self._communication_module_fn( + architecture=architecture, + shared=True, + channel_size=1, + channel_noise=0, + ) + system_networks = communication_module.create_system() + else: + system_networks = architecture.create_system() + + # # Augment network architecture by adding mixing layer network. + # system_networks = self._mixer( + # environment_spec=self._environment_spec, + # agent_networks=system_networks, + # num_hypernet_layers=1, + # ).create_system() # create logger trainer_logger_config = {} @@ -223,6 +264,7 @@ def trainer( networks=system_networks, dataset=dataset, counter=counter, + communication_module=communication_module, logger=trainer_logger, ) diff --git a/mava/systems/tf/qmix/training.py b/mava/systems/tf/qmix/training.py index 99ca0cfc7..499b9be5a 100644 --- a/mava/systems/tf/qmix/training.py +++ b/mava/systems/tf/qmix/training.py @@ -15,6 +15,7 @@ """Qmix trainer implementation.""" +import time from typing import Any, Dict, List, Optional, Sequence import numpy as np @@ -127,9 +128,11 @@ def _update_target_networks(self) -> None: # NOTE These shouldn't really be in the agent for loop. online_variables = [ *self._mixing_network.variables, + # *self._mixing_network._hypernetworks.variables, ] target_variables = [ *self._target_mixing_network.variables, + # *self._target_mixing_network._hypernetworks.variables, ] # Make online -> target network update ops. for src, dest in zip(online_variables, target_variables): @@ -137,6 +140,34 @@ def _update_target_networks(self) -> None: self._num_steps.assign_add(1) + def step(self) -> None: + # Run the learning step. + fetches = self._step() + + # Compute elapsed time. + timestamp = time.time() + if self._timestamp: + elapsed_time = timestamp - self._timestamp + else: + elapsed_time = 0 + self._timestamp = timestamp # type: ignore + + # Update our counts and record it. + counts = self._counter.increment(steps=1, walltime=elapsed_time) + fetches.update(counts) + + # Checkpoint and attempt to write the logs. + if self._checkpoint: + train_utils.checkpoint_networks(self._system_checkpointer) + + # Log and decrement epsilon + epsilon = self.get_epsilon() + fetches["epsilon"] = epsilon + self._decrement_epsilon() + + if self._logger: + self._logger.write(fetches) + @tf.function def _step( self, @@ -229,14 +260,17 @@ def _backward(self) -> None: agent_key = self.agent_net_keys[agent] # Update agent networks - variables = self._q_networks[agent_key].trainable_variables + variables = [*self._q_networks[agent_key].trainable_variables] gradients = self.tape.gradient(self.loss, variables) if self._clipping: gradients = tf.clip_by_global_norm(gradients, 40.0)[0] self._optimizers[agent_key].apply(gradients, variables) # Update mixing network - variables = self._mixing_network.trainable_variables + variables = [ + *self._mixing_network.trainable_variables, + # *self._mixing_network._hypernetworks.trainable_variables, + ] gradients = self.tape.gradient(self.loss, variables) if self._clipping: gradients = tf.clip_by_global_norm(gradients, 40.0)[0] diff --git a/mava/systems/tf/vdn/system.py b/mava/systems/tf/vdn/system.py index 0d5e0eb29..f68ff4f85 100644 --- a/mava/systems/tf/vdn/system.py +++ b/mava/systems/tf/vdn/system.py @@ -119,6 +119,7 @@ def __init__( environment_spec = mava_specs.MAEnvironmentSpec( environment_factory(evaluation=False) # type:ignore ) + self._environment_spec = environment_spec # set default logger if no logger provided if not logger_factory: From 43c67cb3798fae82811bb583278088695f6946ab Mon Sep 17 00:00:00 2001 From: Dries Date: Tue, 25 May 2021 21:45:04 +0200 Subject: [PATCH 089/188] fix: Small space fix. --- mava/components/tf/architectures/networked.py | 1 + 1 file changed, 1 insertion(+) diff --git a/mava/components/tf/architectures/networked.py b/mava/components/tf/architectures/networked.py index 92e282ea4..3b63ea40d 100644 --- a/mava/components/tf/architectures/networked.py +++ b/mava/components/tf/architectures/networked.py @@ -126,4 +126,5 @@ def _get_critic_specs( shape=critic_act_shape, dtype=tf.dtypes.float32, ) + return critic_obs_specs, critic_act_specs From e41baf0104bff4e67c8421e9ec64e7b53bdc8239 Mon Sep 17 00:00:00 2001 From: Dries Date: Wed, 26 May 2021 05:51:19 +0200 Subject: [PATCH 090/188] fix: Fixes .keys() and .values() code in MA-DDPG trainers. --- examples/README.md | 9 +- .../run_centralised_feedforward_maddpg.py | 4 +- .../run_state_based_feedforward_maddpg.py | 208 ++++++++++++++++++ mava/systems/tf/maddpg/training.py | 100 ++++----- 4 files changed, 251 insertions(+), 70 deletions(-) create mode 100644 examples/debugging_envs/run_state_based_feedforward_maddpg.py diff --git a/examples/README.md b/examples/README.md index b99aac4ce..553ee3f7c 100644 --- a/examples/README.md +++ b/examples/README.md @@ -23,15 +23,14 @@ We include a number of systems running on continuous control tasks. an MA-D4PG system on the continuous action space simple_spread MPE debugging environment. - [MA-DDPG (decentralised, recurrent)](debugging_envs/run_decentralised_recurrent_maddpg.py): an MA-DDPG system on the continuous action space simple_spread MPE debugging environment. -- [MA-DDPG (decentralised, recurrent)](debugging_envs/run_decentralised_recurrent_maddpg.py): - an MA-DDPG system on the continuous action space simple_spread MPE debugging environment. - [MA-DDPG (decentralised, feedforward)](debugging_envs/run_feedforward_maddpg_record_video.py): an MA-DDPG system (with video wrapping) on the continuous action space simple_spread MPE debugging environment. - [MA-DDPG (networked, feedforward)](debugging_envs/run_networked_feedforward_maddpg.py): - an MA-D4PG system on the continuous action space simple_spread MPE debugging environment. - + an MA-DDPG system on the continuous action space simple_spread MPE debugging environment. +- [MA-DDPG (state-based, feedforward)](debugging_envs/run_state_based_feedforward_maddpg.py): + an MA-DDPG system on the continuous action space simple_spread MPE debugging environment. - [MA-DDPG (state-based, recurrent)](debugging_envs/run_state_based_recurrent_maddpg.py): - an MA-D4PG system on the continuous action space simple_spread MPE debugging environment. + an MA-DDPG system on the continuous action space simple_spread MPE debugging environment. - [PPO (centralised, feedforward)](petting_zoo/run_centralised_feedforward_mappo.py): a PPO system using a centralised critic on the continuous action space multiwalker_v7 PettingZoo environment. - [MA-D4PG (decentralised, feedforward)](petting_zoo/run_decentralised_feedforward_mad4pg.py): diff --git a/examples/debugging_envs/run_centralised_feedforward_maddpg.py b/examples/debugging_envs/run_centralised_feedforward_maddpg.py index 98b829731..4680230bc 100644 --- a/examples/debugging_envs/run_centralised_feedforward_maddpg.py +++ b/examples/debugging_envs/run_centralised_feedforward_maddpg.py @@ -30,7 +30,7 @@ from launchpad.nodes.python.local_multi_processing import PythonProcess from mava import specs as mava_specs -from mava.components.tf.architectures import CentralisedQValueCritic +from mava.components.tf import architectures from mava.systems.tf import maddpg from mava.utils import lp_utils from mava.utils.environments import debugging_utils @@ -177,7 +177,7 @@ def main(_: Any) -> None: environment_factory=environment_factory, network_factory=network_factory, logger_config=logger_config, - architecture=CentralisedQValueCritic, + architecture=architectures.CentralisedQValueCritic, num_executors=2, policy_optimizer=snt.optimizers.Adam(learning_rate=1e-4), critic_optimizer=snt.optimizers.Adam(learning_rate=1e-4), diff --git a/examples/debugging_envs/run_state_based_feedforward_maddpg.py b/examples/debugging_envs/run_state_based_feedforward_maddpg.py new file mode 100644 index 000000000..c127de397 --- /dev/null +++ b/examples/debugging_envs/run_state_based_feedforward_maddpg.py @@ -0,0 +1,208 @@ +# python3 +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://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. + +"""Example running feedforward MADDPG on debug MPE environments.""" + +import functools +from datetime import datetime +from typing import Any, Dict, Mapping, Sequence, Union + +import launchpad as lp +import numpy as np +import sonnet as snt +import tensorflow as tf +from absl import app, flags +from acme import types +from acme.tf import networks +from acme.tf import utils as tf2_utils +from launchpad.nodes.python.local_multi_processing import PythonProcess + +from mava import specs as mava_specs +from mava.components.tf import architectures +from mava.systems.tf import maddpg +from mava.utils import lp_utils +from mava.utils.environments import debugging_utils + +FLAGS = flags.FLAGS +flags.DEFINE_string( + "env_name", + "simple_spread", + "Debugging environment name (str).", +) +flags.DEFINE_string( + "action_space", + "continuous", + "Environment action space type (str).", +) +flags.DEFINE_string( + "mava_id", + str(datetime.now()), + "Experiment identifier that can be used to continue experiments.", +) +flags.DEFINE_string("base_dir", "~/mava/", "Base dir to store experiments.") + + +def make_networks( + environment_spec: mava_specs.MAEnvironmentSpec, + policy_networks_layer_sizes: Union[Dict[str, Sequence], Sequence] = ( + 256, + 256, + 256, + ), + critic_networks_layer_sizes: Union[Dict[str, Sequence], Sequence] = (512, 512, 256), + shared_weights: bool = True, + sigma: float = 0.3, +) -> Mapping[str, types.TensorTransformation]: + """Creates networks used by the agents.""" + specs = environment_spec.get_agent_specs() + + # Create agent_type specs + if shared_weights: + type_specs = {key.split("_")[0]: specs[key] for key in specs.keys()} + specs = type_specs + + if isinstance(policy_networks_layer_sizes, Sequence): + policy_networks_layer_sizes = { + key: policy_networks_layer_sizes for key in specs.keys() + } + if isinstance(critic_networks_layer_sizes, Sequence): + critic_networks_layer_sizes = { + key: critic_networks_layer_sizes for key in specs.keys() + } + + observation_networks = {} + policy_networks = {} + critic_networks = {} + for key in specs.keys(): + + # Get total number of action dimensions from action spec. + num_dimensions = np.prod(specs[key].actions.shape, dtype=int) + + # Create the shared observation network; here simply a state-less operation. + observation_network = tf2_utils.to_sonnet_module(tf.identity) + + # Create the policy network. + policy_network = snt.Sequential( + [ + networks.LayerNormMLP( + policy_networks_layer_sizes[key], activate_final=True + ), + networks.NearZeroInitializedLinear(num_dimensions), + networks.TanhToSpec(specs[key].actions), + networks.ClippedGaussian(sigma), + networks.ClipToSpec(specs[key].actions), + ] + ) + + # Create the critic network. + critic_network = snt.Sequential( + [ + # The multiplexer concatenates the observations/actions. + networks.CriticMultiplexer(), + networks.LayerNormMLP( + critic_networks_layer_sizes[key], activate_final=False + ), + snt.Linear(1), + ] + ) + observation_networks[key] = observation_network + policy_networks[key] = policy_network + critic_networks[key] = critic_network + + return { + "policies": policy_networks, + "critics": critic_networks, + "observations": observation_networks, + } + + +def main(_: Any) -> None: + + # environment + environment_factory = functools.partial( + debugging_utils.make_environment, + env_name=FLAGS.env_name, + action_space=FLAGS.action_space, + return_state_info=True, + ) + + # networks + network_factory = lp_utils.partial_kwargs(make_networks) + + # loggers + # set custom logger config for each process + # -- log trainer,executor and evaluator to TF + # -- log only evaluator to terminal + log_every = 10 + logger_config = { + "trainer": { + "directory": FLAGS.base_dir, + "to_terminal": False, + "to_tensorboard": True, + "time_stamp": FLAGS.mava_id, + "time_delta": log_every, + }, + "executor": { + "directory": FLAGS.base_dir, + "to_terminal": False, + "to_tensorboard": True, + "time_stamp": FLAGS.mava_id, + "time_delta": log_every, + }, + "evaluator": { + "directory": FLAGS.base_dir, + "to_terminal": True, + "to_tensorboard": True, + "time_stamp": FLAGS.mava_id, + "time_delta": log_every, + }, + } + + # Checkpointer appends "Checkpoints" to checkpoint_dir + checkpoint_dir = f"{FLAGS.base_dir}/{FLAGS.mava_id}" + + # distributed program + program = maddpg.MADDPG( + environment_factory=environment_factory, + network_factory=network_factory, + logger_config=logger_config, + architecture=architectures.StateBasedQValueCritic, + num_executors=2, + policy_optimizer=snt.optimizers.Adam(learning_rate=1e-4), + critic_optimizer=snt.optimizers.Adam(learning_rate=1e-4), + checkpoint_subpath=checkpoint_dir, + max_gradient_norm=40.0, + trainer_fn=maddpg.StateBasedMADDPGTrainer, + shared_weights=False, + ).build() + + # launch + gpu_id = -1 + env_vars = {"CUDA_VISIBLE_DEVICES": str(gpu_id)} + local_resources = { + "trainer": [], + "evaluator": PythonProcess(env=env_vars), + "executor": PythonProcess(env=env_vars), + } + lp.launch( + program, + lp.LaunchType.LOCAL_MULTI_PROCESSING, + terminal="current_terminal", + local_resources=local_resources, + ) + + +if __name__ == "__main__": + app.run(main) diff --git a/mava/systems/tf/maddpg/training.py b/mava/systems/tf/maddpg/training.py index ed2f1916f..6656a52a1 100644 --- a/mava/systems/tf/maddpg/training.py +++ b/mava/systems/tf/maddpg/training.py @@ -620,30 +620,14 @@ def _get_critic_feed( ) -> Tuple[tf.Tensor, tf.Tensor, tf.Tensor, tf.Tensor]: # Centralised based - # o_tm1_feed_cen = tf.stack([x for x in o_tm1_trans.values()], 1) - # o_t_feed_cen = tf.stack([x for x in o_t_trans.values()], 1) - # a_tm1_feed_cen = tf.stack([x for x in a_tm1.values()], 1) - # a_t_feed_cen = tf.stack([x for x in a_t.values()], 1) + o_tm1_feed = tf.stack([o_tm1_trans[agent] for agent in self._agents], 1) + o_t_feed = tf.stack([o_t_trans[agent] for agent in self._agents], 1) + a_tm1_feed = tf.stack([a_tm1[agent] for agent in self._agents], 1) + a_t_feed = tf.stack([a_t[agent] for agent in self._agents], 1) - o_tm1_vals = [] - o_t_vals = [] - a_tm1_vals = [] - a_t_vals = [] - for agent_key in o_tm1_trans.keys(): - o_tm1_vals.append(o_tm1_trans[agent_key]) - o_t_vals.append(o_t_trans[agent_key]) - a_tm1_vals.append(a_tm1[agent_key]) - a_t_vals.append(a_t[agent_key]) - o_tm1_feed = tf.stack(o_tm1_vals, 1) - o_t_feed = tf.stack(o_t_vals, 1) - a_tm1_feed = tf.stack(a_tm1_vals, 1) - a_t_feed = tf.stack(a_t_vals, 1) - - # assert o_tm1_feed.numpy() == o_tm1_feed_cen.numpy() - - # print( - # "o_tm1_feed: ", o_tm1_feed.shape, "o_tm1_feed_cen: ", o_tm1_feed_cen.shape - # ) + # TODO (dries): Make sure self._agents are always in the same order. + # It might be that if a checkpoint is loaded the order might be + # different if one uses python 3.6 due to a .keys() call. return o_tm1_feed, o_t_feed, a_tm1_feed, a_t_feed @@ -659,6 +643,11 @@ def _get_dpg_feed( tree.map_structure(tf.stop_gradient, a_t) dpg_a_t_feed = copy.copy(a_t) dpg_a_t_feed[agent] = dpg_a_t + + dpg_a_t_feed = tf.squeeze( + tf.stack([dpg_a_t_feed[agent] for agent in self._agents], 1) + ) + return dpg_a_t_feed @@ -784,6 +773,9 @@ def _get_dpg_feed( tree.map_structure(tf.stop_gradient, a_t) dpg_a_t_feed = copy.copy(a_t) dpg_a_t_feed[agent] = dpg_a_t + dpg_a_t_feed = tf.squeeze( + tf.stack([dpg_a_t_feed[agent] for agent in self._agents], 1) + ) return dpg_a_t_feed @@ -877,17 +869,9 @@ def _get_critic_feed( # State based o_tm1_feed = e_tm1["s_t"] o_t_feed = e_t["s_t"] + a_tm1_feed = tf.stack([a_tm1[agent] for agent in self._agents], 1) + a_t_feed = tf.stack([a_t[agent] for agent in self._agents], 1) - a_tm1_vals = [] - a_t_vals = [] - for agent_key in o_tm1_trans.keys(): - a_tm1_vals.append(a_tm1[agent_key]) - a_t_vals.append(a_t[agent_key]) - a_tm1_feed = tf.stack(a_tm1_vals, 1) - a_t_feed = tf.stack(a_t_vals, 1) - - # a_tm1_feed = tf.stack([x for x in a_tm1.values()], 1) - # a_t_feed = tf.stack([x for x in a_t.values()], 1) return o_tm1_feed, o_t_feed, a_tm1_feed, a_t_feed def _get_dpg_feed( @@ -903,6 +887,10 @@ def _get_dpg_feed( dpg_a_t_feed = copy.copy(a_t) dpg_a_t_feed[agent] = dpg_a_t + dpg_a_t_feed = tf.squeeze( + tf.stack([dpg_a_t_feed[agent] for agent in self._agents], 1) + ) + return dpg_a_t_feed @@ -1580,24 +1568,15 @@ def _get_critic_feed( ) -> Tuple[tf.Tensor, tf.Tensor, tf.Tensor, tf.Tensor]: # Centralised based - obs_trans_vals = [] - target_obs_trans_vals = [] - actions_vals = [] - target_actions_vals = [] - for agent_key in obs_trans.keys(): - obs_trans_vals.append(obs_trans[agent_key]) - target_obs_trans_vals.append(target_obs_trans[agent_key]) - actions_vals.append(actions[agent_key]) - target_actions_vals.append(target_actions[agent_key]) - obs_trans_feed = tf.stack(obs_trans_vals, 1) - target_obs_trans_feed = tf.stack(target_obs_trans_vals, 1) - actions_feed = tf.stack(actions_vals, 1) - target_actions_feed = tf.stack(target_actions_vals, 1) - - # obs_trans_feed = tf.stack([x for x in obs_trans.values()], -1) - # target_obs_trans_feed = tf.stack([x for x in target_obs_trans.values()], -1) - # actions_feed = tf.stack([x for x in actions.values()], -1) - # target_actions_feed = tf.stack([x for x in target_actions.values()], -1) + obs_trans_feed = tf.stack([obs_trans[agent] for agent in self._agents], -1) + target_obs_trans_feed = tf.stack( + [target_obs_trans[agent] for agent in self._agents], -1 + ) + actions_feed = tf.stack([actions[agent] for agent in self._agents], -1) + target_actions_feed = tf.stack( + [target_actions[agent] for agent in self._agents], -1 + ) + return obs_trans_feed, target_obs_trans_feed, actions_feed, target_actions_feed def _get_dpg_feed( @@ -1613,7 +1592,7 @@ def _get_dpg_feed( dpg_actions_feed = copy.copy(actions) dpg_actions_feed[agent] = dpg_actions dpg_actions_feed = tf.squeeze( - tf.stack([x for x in dpg_actions_feed.values()], -1) + tf.stack([dpg_actions_feed[agent] for agent in self._agents], -1) ) return dpg_actions_feed @@ -1709,16 +1688,11 @@ def _get_critic_feed( # State based obs_trans_feed = extras["s_t"] target_obs_trans_feed = extras["s_t"] - actions_vals = [] - target_actions_vals = [] - for agent_key in obs_trans.keys(): - actions_vals.append(actions[agent_key]) - target_actions_vals.append(target_actions[agent_key]) - actions_feed = tf.stack(actions_vals, 1) - target_actions_feed = tf.stack(target_actions_vals, 1) - - # actions_feed = tf.stack([x for x in actions.values()], -1) - # target_actions_feed = tf.stack([x for x in target_actions.values()], -1) + actions_feed = tf.stack([actions[agent] for agent in self._agents], -1) + target_actions_feed = tf.stack( + [target_actions[agent] for agent in self._agents], -1 + ) + return obs_trans_feed, target_obs_trans_feed, actions_feed, target_actions_feed def _get_dpg_feed( @@ -1734,6 +1708,6 @@ def _get_dpg_feed( dpg_actions_feed = copy.copy(actions) dpg_actions_feed[agent] = dpg_actions dpg_actions_feed = tf.squeeze( - tf.stack([x for x in dpg_actions_feed.values()], -1) + tf.stack([dpg_actions_feed[agent] for agent in self._agents], -1) ) return dpg_actions_feed From 5722a7b16194d1efd420e1e8b48fb25b8b5fd248 Mon Sep 17 00:00:00 2001 From: Dries Date: Wed, 26 May 2021 06:00:43 +0200 Subject: [PATCH 091/188] fix: Sort specs and keys inside Mava specs. --- mava/specs.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mava/specs.py b/mava/specs.py index 7d0933366..cf4851cde 100644 --- a/mava/specs.py +++ b/mava/specs.py @@ -15,8 +15,9 @@ # the specs on the wrappers themselves class MAEnvironmentSpec: def __init__(self, environment: dm_env.Environment): - self._specs = self._make_ma_environment_spec(environment) - self._keys = list(self._specs.keys()) + specs = self._make_ma_environment_spec(environment) + self._keys = list(sorted(specs.keys())) + self._specs = {key: specs[key] for key in self._keys} def _make_ma_environment_spec( self, environment: dm_env.Environment From 45397a83f393e854ef80f263c9c5a8224d047556 Mon Sep 17 00:00:00 2001 From: Dries Date: Wed, 26 May 2021 07:24:21 +0200 Subject: [PATCH 092/188] fix: Remove comments. --- mava/systems/tf/maddpg/training.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/mava/systems/tf/maddpg/training.py b/mava/systems/tf/maddpg/training.py index 6656a52a1..9e46cebe0 100644 --- a/mava/systems/tf/maddpg/training.py +++ b/mava/systems/tf/maddpg/training.py @@ -625,10 +625,6 @@ def _get_critic_feed( a_tm1_feed = tf.stack([a_tm1[agent] for agent in self._agents], 1) a_t_feed = tf.stack([a_t[agent] for agent in self._agents], 1) - # TODO (dries): Make sure self._agents are always in the same order. - # It might be that if a checkpoint is loaded the order might be - # different if one uses python 3.6 due to a .keys() call. - return o_tm1_feed, o_t_feed, a_tm1_feed, a_t_feed def _get_dpg_feed( From 733a7d538eca9c3005043914bfb9929d90f1e539 Mon Sep 17 00:00:00 2001 From: Dries Date: Wed, 26 May 2021 10:09:36 +0200 Subject: [PATCH 093/188] fix: Rename MADDPG and MAD4PG trainers. --- .../run_centralised_feedforward_maddpg.py | 2 +- .../run_decentralised_recurrent_mad4pg.py | 4 +- .../run_decentralised_recurrent_maddpg.py | 4 +- .../run_networked_feedforward_maddpg.py | 2 +- .../run_state_based_feedforward_maddpg.py | 2 +- .../run_state_based_recurrent_maddpg.py | 4 +- ...tralised_feedforward_mad4pg_continuous.py} | 0 ...tralised_feedforward_maddpg_continuous.py} | 0 .../run_decentralised_recurrent_maddpg.py | 4 +- mava/systems/tf/mad4pg/__init__.py | 12 ++++-- mava/systems/tf/mad4pg/builder.py | 9 +++-- mava/systems/tf/mad4pg/system.py | 6 +-- mava/systems/tf/mad4pg/training.py | 38 +++++++++---------- mava/systems/tf/maddpg/__init__.py | 14 ++++--- mava/systems/tf/maddpg/builder.py | 6 +-- mava/systems/tf/maddpg/system.py | 6 +-- mava/systems/tf/maddpg/training.py | 18 ++++----- 17 files changed, 70 insertions(+), 61 deletions(-) rename examples/petting_zoo/{run_decentralised_feedforward_mad4pg_continous.py => run_decentralised_feedforward_mad4pg_continuous.py} (100%) rename examples/petting_zoo/{run_decentralised_feedforward_maddpg_continous.py => run_decentralised_feedforward_maddpg_continuous.py} (100%) diff --git a/examples/debugging_envs/run_centralised_feedforward_maddpg.py b/examples/debugging_envs/run_centralised_feedforward_maddpg.py index 4680230bc..e15a71a70 100644 --- a/examples/debugging_envs/run_centralised_feedforward_maddpg.py +++ b/examples/debugging_envs/run_centralised_feedforward_maddpg.py @@ -183,7 +183,7 @@ def main(_: Any) -> None: critic_optimizer=snt.optimizers.Adam(learning_rate=1e-4), checkpoint_subpath=checkpoint_dir, max_gradient_norm=40.0, - trainer_fn=maddpg.CentralisedMADDPGTrainer, + trainer_fn=maddpg.MADDPGCentralisedTrainer, shared_weights=False, ).build() diff --git a/examples/debugging_envs/run_decentralised_recurrent_mad4pg.py b/examples/debugging_envs/run_decentralised_recurrent_mad4pg.py index d90e3dc2b..c201588b2 100644 --- a/examples/debugging_envs/run_decentralised_recurrent_mad4pg.py +++ b/examples/debugging_envs/run_decentralised_recurrent_mad4pg.py @@ -32,7 +32,7 @@ from mava.components.tf.networks.mad4pg import DiscreteValuedHead from mava.systems.tf import mad4pg from mava.systems.tf.mad4pg.execution import MAD4PGRecurrentExecutor -from mava.systems.tf.mad4pg.training import DecentralisedRecurrentMAD4PGTrainer +from mava.systems.tf.mad4pg.training import MAD4PGDecentralisedRecurrentTrainer from mava.utils import lp_utils from mava.utils.environments import debugging_utils from mava.utils.loggers import logger_utils @@ -166,7 +166,7 @@ def main(_: Any) -> None: network_factory=network_factory, logger_factory=logger_factory, num_executors=2, - trainer_fn=DecentralisedRecurrentMAD4PGTrainer, + trainer_fn=MAD4PGDecentralisedRecurrentTrainer, executor_fn=MAD4PGRecurrentExecutor, checkpoint_subpath=checkpoint_dir, ).build() diff --git a/examples/debugging_envs/run_decentralised_recurrent_maddpg.py b/examples/debugging_envs/run_decentralised_recurrent_maddpg.py index b591fd67e..8d11e9dc3 100644 --- a/examples/debugging_envs/run_decentralised_recurrent_maddpg.py +++ b/examples/debugging_envs/run_decentralised_recurrent_maddpg.py @@ -30,7 +30,7 @@ from mava import specs as mava_specs from mava.systems.tf import maddpg from mava.systems.tf.maddpg.execution import MADDPGRecurrentExecutor -from mava.systems.tf.maddpg.training import DecentralisedRecurrentMADDPGTrainer +from mava.systems.tf.maddpg.training import MADDPGDecentralisedRecurrentTrainer from mava.utils import lp_utils from mava.utils.environments import debugging_utils from mava.utils.loggers import logger_utils @@ -161,7 +161,7 @@ def main(_: Any) -> None: network_factory=network_factory, logger_factory=logger_factory, num_executors=2, - trainer_fn=DecentralisedRecurrentMADDPGTrainer, + trainer_fn=MADDPGDecentralisedRecurrentTrainer, executor_fn=MADDPGRecurrentExecutor, checkpoint_subpath=checkpoint_dir, ).build() diff --git a/examples/debugging_envs/run_networked_feedforward_maddpg.py b/examples/debugging_envs/run_networked_feedforward_maddpg.py index ffb8ae343..303160d98 100644 --- a/examples/debugging_envs/run_networked_feedforward_maddpg.py +++ b/examples/debugging_envs/run_networked_feedforward_maddpg.py @@ -184,7 +184,7 @@ def main(_: Any) -> None: critic_optimizer=snt.optimizers.Adam(learning_rate=1e-4), checkpoint_subpath=checkpoint_dir, max_gradient_norm=40.0, - trainer_fn=maddpg.NetworkedMADDPGTrainer, + trainer_fn=maddpg.MADDPGNetworkedTrainer, connection_spec=fully_connected_network_spec, shared_weights=False, ).build() diff --git a/examples/debugging_envs/run_state_based_feedforward_maddpg.py b/examples/debugging_envs/run_state_based_feedforward_maddpg.py index c127de397..5728508ef 100644 --- a/examples/debugging_envs/run_state_based_feedforward_maddpg.py +++ b/examples/debugging_envs/run_state_based_feedforward_maddpg.py @@ -184,7 +184,7 @@ def main(_: Any) -> None: critic_optimizer=snt.optimizers.Adam(learning_rate=1e-4), checkpoint_subpath=checkpoint_dir, max_gradient_norm=40.0, - trainer_fn=maddpg.StateBasedMADDPGTrainer, + trainer_fn=maddpg.MADDPGStateBasedTrainer, shared_weights=False, ).build() diff --git a/examples/debugging_envs/run_state_based_recurrent_maddpg.py b/examples/debugging_envs/run_state_based_recurrent_maddpg.py index 4237dacd6..e987f0c81 100644 --- a/examples/debugging_envs/run_state_based_recurrent_maddpg.py +++ b/examples/debugging_envs/run_state_based_recurrent_maddpg.py @@ -31,7 +31,7 @@ from mava.components.tf.architectures import StateBasedQValueCritic from mava.systems.tf import maddpg from mava.systems.tf.maddpg.execution import MADDPGRecurrentExecutor -from mava.systems.tf.maddpg.training import StateBasedRecurrentMADDPGTrainer +from mava.systems.tf.maddpg.training import MADDPGStateBasedRecurrentTrainer from mava.utils import lp_utils from mava.utils.environments import debugging_utils from mava.utils.loggers import logger_utils @@ -164,7 +164,7 @@ def main(_: Any) -> None: logger_factory=logger_factory, num_executors=2, architecture=StateBasedQValueCritic, - trainer_fn=StateBasedRecurrentMADDPGTrainer, + trainer_fn=MADDPGStateBasedRecurrentTrainer, executor_fn=MADDPGRecurrentExecutor, checkpoint_subpath=checkpoint_dir, shared_weights=False, diff --git a/examples/petting_zoo/run_decentralised_feedforward_mad4pg_continous.py b/examples/petting_zoo/run_decentralised_feedforward_mad4pg_continuous.py similarity index 100% rename from examples/petting_zoo/run_decentralised_feedforward_mad4pg_continous.py rename to examples/petting_zoo/run_decentralised_feedforward_mad4pg_continuous.py diff --git a/examples/petting_zoo/run_decentralised_feedforward_maddpg_continous.py b/examples/petting_zoo/run_decentralised_feedforward_maddpg_continuous.py similarity index 100% rename from examples/petting_zoo/run_decentralised_feedforward_maddpg_continous.py rename to examples/petting_zoo/run_decentralised_feedforward_maddpg_continuous.py diff --git a/examples/petting_zoo/run_decentralised_recurrent_maddpg.py b/examples/petting_zoo/run_decentralised_recurrent_maddpg.py index 2f6e7f046..2d3158be4 100644 --- a/examples/petting_zoo/run_decentralised_recurrent_maddpg.py +++ b/examples/petting_zoo/run_decentralised_recurrent_maddpg.py @@ -31,7 +31,7 @@ from mava import specs as mava_specs from mava.systems.tf import maddpg from mava.systems.tf.maddpg.execution import MADDPGRecurrentExecutor -from mava.systems.tf.maddpg.training import DecentralisedRecurrentMADDPGTrainer +from mava.systems.tf.maddpg.training import MADDPGDecentralisedRecurrentTrainer from mava.utils import lp_utils from mava.utils.environments import pettingzoo_utils from mava.utils.loggers import logger_utils @@ -163,7 +163,7 @@ def main(_: Any) -> None: network_factory=network_factory, logger_factory=logger_factory, num_executors=2, - trainer_fn=DecentralisedRecurrentMADDPGTrainer, + trainer_fn=MADDPGDecentralisedRecurrentTrainer, executor_fn=MADDPGRecurrentExecutor, policy_optimizer=snt.optimizers.Adam(learning_rate=1e-4), critic_optimizer=snt.optimizers.Adam(learning_rate=1e-4), diff --git a/mava/systems/tf/mad4pg/__init__.py b/mava/systems/tf/mad4pg/__init__.py index ab020dea6..e540edebb 100644 --- a/mava/systems/tf/mad4pg/__init__.py +++ b/mava/systems/tf/mad4pg/__init__.py @@ -20,8 +20,12 @@ ) from mava.systems.tf.mad4pg.system import MAD4PG from mava.systems.tf.mad4pg.training import ( - BaseMAD4PGTrainer, - CentralisedMAD4PGTrainer, - DecentralisedMAD4PGTrainer, - StateBasedMAD4PGTrainer, + MAD4PGBaseRecurrentTrainer, + MAD4PGBaseTrainer, + MAD4PGCentralisedRecurrentTrainer, + MAD4PGCentralisedTrainer, + MAD4PGDecentralisedRecurrentTrainer, + MAD4PGDecentralisedTrainer, + MAD4PGStateBasedRecurrentTrainer, + MAD4PGStateBasedTrainer, ) diff --git a/mava/systems/tf/mad4pg/builder.py b/mava/systems/tf/mad4pg/builder.py index 052b68b3c..4f2ded222 100644 --- a/mava/systems/tf/mad4pg/builder.py +++ b/mava/systems/tf/mad4pg/builder.py @@ -14,7 +14,7 @@ # limitations under the License. """MAD4PG system implementation.""" -from typing import Any, Dict, Type +from typing import Any, Dict, Type, Union from mava import core from mava.systems.tf import executors @@ -35,9 +35,10 @@ class MAD4PGBuilder(MADDPGBuilder): def __init__( self, config: MADDPGConfig, - trainer_fn: Type[ - training.BaseMAD4PGTrainer - ] = training.DecentralisedMAD4PGTrainer, + trainer_fn: Union[ + Type[training.MAD4PGBaseTrainer], + Type[training.MAD4PGBaseRecurrentTrainer], + ] = training.MAD4PGDecentralisedTrainer, executor_fn: Type[core.Executor] = executors.FeedForwardExecutor, extra_specs: Dict[str, Any] = {}, ): diff --git a/mava/systems/tf/mad4pg/system.py b/mava/systems/tf/mad4pg/system.py index 8df5e5447..d399f1355 100644 --- a/mava/systems/tf/mad4pg/system.py +++ b/mava/systems/tf/mad4pg/system.py @@ -47,9 +47,9 @@ def __init__( DecentralisedQValueActorCritic ] = DecentralisedQValueActorCritic, trainer_fn: Union[ - Type[training.BaseMAD4PGTrainer], - Type[training.BaseRecurrentMAD4PGTrainer], - ] = training.DecentralisedMAD4PGTrainer, + Type[training.MAD4PGBaseTrainer], + Type[training.MAD4PGBaseRecurrentTrainer], + ] = training.MAD4PGDecentralisedTrainer, executor_fn: Type[core.Executor] = MADDPGFeedForwardExecutor, num_executors: int = 1, num_caches: int = 0, diff --git a/mava/systems/tf/mad4pg/training.py b/mava/systems/tf/mad4pg/training.py index aa31b8362..0507ef564 100644 --- a/mava/systems/tf/mad4pg/training.py +++ b/mava/systems/tf/mad4pg/training.py @@ -26,19 +26,19 @@ from mava.components.tf.losses.sequence import recurrent_n_step_critic_loss from mava.systems.tf.maddpg.training import ( - BaseMADDPGTrainer, - BaseRecurrentMADDPGTrainer, - CentralisedMADDPGTrainer, - CentralisedRecurrentMADDPGTrainer, - DecentralisedMADDPGTrainer, - DecentralisedRecurrentMADDPGTrainer, - StateBasedMADDPGTrainer, - StateBasedRecurrentMADDPGTrainer, + MADDPGBaseRecurrentTrainer, + MADDPGBaseTrainer, + MADDPGCentralisedRecurrentTrainer, + MADDPGCentralisedTrainer, + MADDPGDecentralisedRecurrentTrainer, + MADDPGDecentralisedTrainer, + MADDPGStateBasedRecurrentTrainer, + MADDPGStateBasedTrainer, ) from mava.utils import training_utils as train_utils -class BaseMAD4PGTrainer(BaseMADDPGTrainer): +class MAD4PGBaseTrainer(MADDPGBaseTrainer): """MAD4PG trainer. This is the trainer component of a MAD4PG system. IE it takes a dataset as input and implements update functionality to learn from this dataset. @@ -189,7 +189,7 @@ def _forward(self, inputs: Any) -> None: self.tape = tape -class DecentralisedMAD4PGTrainer(BaseMAD4PGTrainer, DecentralisedMADDPGTrainer): +class MAD4PGDecentralisedTrainer(MAD4PGBaseTrainer, MADDPGDecentralisedTrainer): """MAD4PG trainer. This is the trainer component of a MAD4PG system. IE it takes a dataset as input and implements update functionality to learn from this dataset. @@ -267,7 +267,7 @@ def __init__( ) -class CentralisedMAD4PGTrainer(BaseMAD4PGTrainer, CentralisedMADDPGTrainer): +class MAD4PGCentralisedTrainer(MAD4PGBaseTrainer, MADDPGCentralisedTrainer): """MAD4PG trainer. This is the trainer component of a MAD4PG system. IE it takes a dataset as input and implements update functionality to learn from this dataset. @@ -345,7 +345,7 @@ def __init__( ) -class StateBasedMAD4PGTrainer(BaseMAD4PGTrainer, StateBasedMADDPGTrainer): +class MAD4PGStateBasedTrainer(MAD4PGBaseTrainer, MADDPGStateBasedTrainer): """MAD4PG trainer. This is the trainer component of a MAD4PG system. IE it takes a dataset as input and implements update functionality to learn from this dataset. @@ -423,7 +423,7 @@ def __init__( ) -class BaseRecurrentMAD4PGTrainer(BaseRecurrentMADDPGTrainer): +class MAD4PGBaseRecurrentTrainer(MADDPGBaseRecurrentTrainer): """MAD4PG trainer. This is the trainer component of a MAD4PG system. IE it takes a dataset as input and implements update functionality to learn from this dataset. @@ -636,8 +636,8 @@ def _forward(self, inputs: Any) -> None: self.tape = tape -class DecentralisedRecurrentMAD4PGTrainer( - BaseRecurrentMAD4PGTrainer, DecentralisedRecurrentMADDPGTrainer +class MAD4PGDecentralisedRecurrentTrainer( + MAD4PGBaseRecurrentTrainer, MADDPGDecentralisedRecurrentTrainer ): """MAD4PG trainer. This is the trainer component of a MAD4PG system. IE it takes a dataset as input @@ -718,8 +718,8 @@ def __init__( ) -class CentralisedRecurrentMAD4PGTrainer( - BaseRecurrentMAD4PGTrainer, CentralisedRecurrentMADDPGTrainer +class MAD4PGCentralisedRecurrentTrainer( + MAD4PGBaseRecurrentTrainer, MADDPGCentralisedRecurrentTrainer ): """MAD4PG trainer. This is the trainer component of a MAD4PG system. IE it takes a dataset as input @@ -800,8 +800,8 @@ def __init__( ) -class StateBasedRecurrentMAD4PGTrainer( - BaseRecurrentMAD4PGTrainer, StateBasedRecurrentMADDPGTrainer +class MAD4PGStateBasedRecurrentTrainer( + MAD4PGBaseRecurrentTrainer, MADDPGStateBasedRecurrentTrainer ): """MAD4PG trainer. This is the trainer component of a MAD4PG system. IE it takes a dataset as input diff --git a/mava/systems/tf/maddpg/__init__.py b/mava/systems/tf/maddpg/__init__.py index 50841f280..2f823085d 100644 --- a/mava/systems/tf/maddpg/__init__.py +++ b/mava/systems/tf/maddpg/__init__.py @@ -21,9 +21,13 @@ ) from mava.systems.tf.maddpg.system import MADDPG from mava.systems.tf.maddpg.training import ( - BaseMADDPGTrainer, - CentralisedMADDPGTrainer, - DecentralisedMADDPGTrainer, - NetworkedMADDPGTrainer, - StateBasedMADDPGTrainer, + MADDPGBaseRecurrentTrainer, + MADDPGBaseTrainer, + MADDPGCentralisedRecurrentTrainer, + MADDPGCentralisedTrainer, + MADDPGDecentralisedRecurrentTrainer, + MADDPGDecentralisedTrainer, + MADDPGNetworkedTrainer, + MADDPGStateBasedRecurrentTrainer, + MADDPGStateBasedTrainer, ) diff --git a/mava/systems/tf/maddpg/builder.py b/mava/systems/tf/maddpg/builder.py index a40bb92eb..1388d3ffa 100644 --- a/mava/systems/tf/maddpg/builder.py +++ b/mava/systems/tf/maddpg/builder.py @@ -105,9 +105,9 @@ def __init__( self, config: MADDPGConfig, trainer_fn: Union[ - Type[training.BaseMADDPGTrainer], - Type[training.BaseRecurrentMADDPGTrainer], - ] = training.DecentralisedMADDPGTrainer, + Type[training.MADDPGBaseTrainer], + Type[training.MADDPGBaseRecurrentTrainer], + ] = training.MADDPGDecentralisedTrainer, executor_fn: Type[core.Executor] = MADDPGFeedForwardExecutor, extra_specs: Dict[str, Any] = {}, ): diff --git a/mava/systems/tf/maddpg/system.py b/mava/systems/tf/maddpg/system.py index 95f2aea46..aa44538fe 100644 --- a/mava/systems/tf/maddpg/system.py +++ b/mava/systems/tf/maddpg/system.py @@ -57,9 +57,9 @@ def __init__( DecentralisedQValueActorCritic ] = DecentralisedQValueActorCritic, trainer_fn: Union[ - Type[training.BaseMADDPGTrainer], - Type[training.BaseRecurrentMADDPGTrainer], - ] = training.DecentralisedMADDPGTrainer, + Type[training.MADDPGBaseTrainer], + Type[training.MADDPGBaseRecurrentTrainer], + ] = training.MADDPGDecentralisedTrainer, executor_fn: Type[core.Executor] = MADDPGFeedForwardExecutor, num_executors: int = 1, num_caches: int = 0, diff --git a/mava/systems/tf/maddpg/training.py b/mava/systems/tf/maddpg/training.py index 9e46cebe0..58ef9c29e 100644 --- a/mava/systems/tf/maddpg/training.py +++ b/mava/systems/tf/maddpg/training.py @@ -37,7 +37,7 @@ from mava.utils import training_utils as train_utils -class BaseMADDPGTrainer(mava.Trainer): +class MADDPGBaseTrainer(mava.Trainer): """MADDPG trainer. This is the trainer component of a MADDPG system. IE it takes a dataset as input and implements update functionality to learn from this dataset. @@ -454,7 +454,7 @@ def get_variables(self, names: Sequence[str]) -> Dict[str, Dict[str, np.ndarray] return variables -class DecentralisedMADDPGTrainer(BaseMADDPGTrainer): +class MADDPGDecentralisedTrainer(MADDPGBaseTrainer): """MADDPG trainer. This is the trainer component of a MADDPG system. IE it takes a dataset as input and implements update functionality to learn from this dataset. @@ -532,7 +532,7 @@ def __init__( ) -class CentralisedMADDPGTrainer(BaseMADDPGTrainer): +class MADDPGCentralisedTrainer(MADDPGBaseTrainer): """MADDPG trainer. This is the trainer component of a MADDPG system. IE it takes a dataset as input and implements update functionality to learn from this dataset. @@ -647,7 +647,7 @@ def _get_dpg_feed( return dpg_a_t_feed -class NetworkedMADDPGTrainer(BaseMADDPGTrainer): +class MADDPGNetworkedTrainer(MADDPGBaseTrainer): """MADDPG trainer. This is the trainer component of a MADDPG system. IE it takes a dataset as input and implements update functionality to learn from this dataset. @@ -775,7 +775,7 @@ def _get_dpg_feed( return dpg_a_t_feed -class StateBasedMADDPGTrainer(BaseMADDPGTrainer): +class MADDPGStateBasedTrainer(MADDPGBaseTrainer): """MADDPG trainer. This is the trainer component of a MADDPG system. IE it takes a dataset as input and implements update functionality to learn from this dataset. @@ -890,7 +890,7 @@ def _get_dpg_feed( return dpg_a_t_feed -class BaseRecurrentMADDPGTrainer(mava.Trainer): +class MADDPGBaseRecurrentTrainer(mava.Trainer): """MADDPG trainer. This is the trainer component of a MADDPG system. IE it takes a dataset as input and implements update functionality to learn from this dataset. @@ -1395,7 +1395,7 @@ def get_variables(self, names: Sequence[str]) -> Dict[str, Dict[str, np.ndarray] return variables -class DecentralisedRecurrentMADDPGTrainer(BaseRecurrentMADDPGTrainer): +class MADDPGDecentralisedRecurrentTrainer(MADDPGBaseRecurrentTrainer): """MADDPG trainer. This is the trainer component of a MADDPG system. IE it takes a dataset as input and implements update functionality to learn from this dataset. @@ -1475,7 +1475,7 @@ def __init__( ) -class CentralisedRecurrentMADDPGTrainer(BaseRecurrentMADDPGTrainer): +class MADDPGCentralisedRecurrentTrainer(MADDPGBaseRecurrentTrainer): """MADDPG trainer. This is the trainer component of a MADDPG system. IE it takes a dataset as input and implements update functionality to learn from this dataset. @@ -1593,7 +1593,7 @@ def _get_dpg_feed( return dpg_actions_feed -class StateBasedRecurrentMADDPGTrainer(BaseRecurrentMADDPGTrainer): +class MADDPGStateBasedRecurrentTrainer(MADDPGBaseRecurrentTrainer): """MADDPG trainer. This is the trainer component of a MADDPG system. IE it takes a dataset as input and implements update functionality to learn from this dataset. From afb194a28ac0272f2531f1fa797843ace3a62c1c Mon Sep 17 00:00:00 2001 From: Kale-ab Date: Wed, 26 May 2021 10:11:14 +0200 Subject: [PATCH 094/188] fix: Re-added SMACEnvWrapper wrapper. --- mava/wrappers/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mava/wrappers/__init__.py b/mava/wrappers/__init__.py index 66657ed37..02a95a511 100644 --- a/mava/wrappers/__init__.py +++ b/mava/wrappers/__init__.py @@ -26,7 +26,7 @@ ) # TODO only import smac if the user needs it. -# from mava.wrappers.smac import SMACEnvWrapper +from mava.wrappers.smac import SMACEnvWrapper from mava.wrappers.system_trainer_statistics import ( DetailedTrainerStatistics, DetailedTrainerStatisticsWithEpsilon, From e8693b8eb37d468ab4311fcd90c77f0b533a2958 Mon Sep 17 00:00:00 2001 From: Kale-ab Date: Wed, 26 May 2021 10:23:47 +0200 Subject: [PATCH 095/188] feat: Catch exceptions thrown by rendering. --- mava/wrappers/environment_loop_wrappers.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/mava/wrappers/environment_loop_wrappers.py b/mava/wrappers/environment_loop_wrappers.py index 6777e90ba..3c6e6ed85 100644 --- a/mava/wrappers/environment_loop_wrappers.py +++ b/mava/wrappers/environment_loop_wrappers.py @@ -261,12 +261,17 @@ def step(self, action: Dict[str, np.ndarray]) -> dm_env.TimeStep: return timestep def _retrieve_render(self) -> np.ndarray: - if self._format == "video": - render = self._environment.render(mode="rgb_array") - elif self._format == "gif": - render = np.transpose( - self._environment.render(mode="rgb_array"), axes=(1, 0, 2) - ) + render = None + try: + if self._format == "video": + render = self._environment.render(mode="rgb_array") + elif self._format == "gif": + render = np.transpose( + self._environment.render(mode="rgb_array"), axes=(1, 0, 2) + ) + except Exception as ex: + print(f"Render frames exception: {ex}") + pass return render def _append_frame(self) -> None: From 14eeba1e50117eb85119e8f15dc54e10383a6b12 Mon Sep 17 00:00:00 2001 From: St John Grimbly Date: Wed, 26 May 2021 13:08:59 +0200 Subject: [PATCH 096/188] fix: restore new clipping method. --- mava/systems/tf/qmix/system.py | 1 - mava/systems/tf/qmix/training.py | 16 +++------------- mava/systems/tf/vdn/training.py | 6 ------ 3 files changed, 3 insertions(+), 20 deletions(-) diff --git a/mava/systems/tf/qmix/system.py b/mava/systems/tf/qmix/system.py index 2a0df9a1b..3a98cd1bc 100644 --- a/mava/systems/tf/qmix/system.py +++ b/mava/systems/tf/qmix/system.py @@ -157,7 +157,6 @@ def __init__( n_step=n_step, sequence_length=sequence_length, period=period, - clipping=clipping, discount=discount, optimizer=optimizer, target_update_period=target_update_period, diff --git a/mava/systems/tf/qmix/training.py b/mava/systems/tf/qmix/training.py index c0c1c45e1..888eea66a 100644 --- a/mava/systems/tf/qmix/training.py +++ b/mava/systems/tf/qmix/training.py @@ -56,7 +56,6 @@ def __init__( shared_weights: bool, exploration_scheduler: LinearExplorationScheduler, communication_module: Optional[BaseCommunicationModule] = None, - clipping: bool = True, max_gradient_norm: float = None, counter: counting.Counter = None, fingerprint: bool = False, @@ -81,7 +80,6 @@ def __init__( shared_weights=shared_weights, exploration_scheduler=exploration_scheduler, communication_module=communication_module, - clipping=clipping, max_gradient_norm=max_gradient_norm, counter=counter, fingerprint=fingerprint, @@ -264,8 +262,7 @@ def _backward(self) -> None: # Update agent networks variables = [*self._q_networks[agent_key].trainable_variables] gradients = self.tape.gradient(self.loss, variables) - if self._clipping: - gradients = tf.clip_by_global_norm(gradients, 40.0)[0] + gradients = tf.clip_by_global_norm(gradients, self._max_gradient_norm)[0] self._optimizers[agent_key].apply(gradients, variables) # Update mixing network @@ -274,16 +271,9 @@ def _backward(self) -> None: # *self._mixing_network._hypernetworks.trainable_variables, ] gradients = self.tape.gradient(self.loss, variables) - if self._clipping: - gradients = tf.clip_by_global_norm(gradients, 40.0)[0] - self._optimizer.apply(gradients, variables) - trainable_variables += self._mixing_network.trainable_variables - - # Compute gradients. - gradients = self.tape.gradient(self.loss, trainable_variables) - - # Clip gradients. gradients = tf.clip_by_global_norm(gradients, self._max_gradient_norm)[0] + self._optimizer.apply(gradients, variables) + variables += self._mixing_network.trainable_variable train_utils.safe_del(self, "tape") diff --git a/mava/systems/tf/vdn/training.py b/mava/systems/tf/vdn/training.py index 47a2db3db..ce6098fb9 100644 --- a/mava/systems/tf/vdn/training.py +++ b/mava/systems/tf/vdn/training.py @@ -51,7 +51,6 @@ def __init__( shared_weights: bool, exploration_scheduler: LinearExplorationScheduler, communication_module: Optional[BaseCommunicationModule] = None, - clipping: bool = True, max_gradient_norm: float = None, counter: counting.Counter = None, fingerprint: bool = False, @@ -75,7 +74,6 @@ def __init__( shared_weights=shared_weights, exploration_scheduler=exploration_scheduler, communication_module=communication_module, - clipping=clipping, max_gradient_norm=max_gradient_norm, counter=counter, fingerprint=fingerprint, @@ -180,10 +178,6 @@ def _backward(self) -> None: # Compute gradients. gradients = self.tape.gradient(self.loss, trainable_variables) - # Maybe clip gradients. - if self._clipping: - gradients = tf.clip_by_global_norm(gradients, 40.0)[0] - # Clip gradients. gradients = tf.clip_by_global_norm(gradients, self._max_gradient_norm)[0] From 6c167d81a1024d2b88b7a93fb02443e844b3e2ca Mon Sep 17 00:00:00 2001 From: Dries Date: Wed, 26 May 2021 15:54:13 +0200 Subject: [PATCH 097/188] fix: Epsilon value in MADQNFeedForwardExecutor. --- examples/smac/run_feedforward_madqn.py | 168 +++++++++++++++++++++++++ mava/systems/tf/madqn/execution.py | 5 +- 2 files changed, 172 insertions(+), 1 deletion(-) create mode 100644 examples/smac/run_feedforward_madqn.py diff --git a/examples/smac/run_feedforward_madqn.py b/examples/smac/run_feedforward_madqn.py new file mode 100644 index 000000000..2c061fb5d --- /dev/null +++ b/examples/smac/run_feedforward_madqn.py @@ -0,0 +1,168 @@ +# python3 +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://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. + +"""Example running recurrent MADQN on multi-agent Starcraft 2 (SMAC) environment.""" + +import functools +from datetime import datetime +from typing import Any, Dict, Mapping, Optional, Sequence, Union + +import launchpad as lp +import sonnet as snt +import tensorflow as tf +from absl import app, flags +from acme import types +from acme.tf import networks +from launchpad.nodes.python.local_multi_processing import PythonProcess + +from mava import specs as mava_specs +from mava.components.tf.modules.exploration import LinearExplorationScheduler +from mava.components.tf.networks import epsilon_greedy_action_selector +from mava.systems.tf import madqn +from mava.utils import lp_utils +from mava.utils.environments import smac_utils +from mava.utils.loggers import logger_utils + +FLAGS = flags.FLAGS +flags.DEFINE_string( + "map_name", + "3m", + "Starcraft 2 micromanagement map name (str).", +) + +flags.DEFINE_string( + "mava_id", + str(datetime.now()), + "Experiment identifier that can be used to continue experiments.", +) +flags.DEFINE_string("base_dir", "~/mava/", "Base dir to store experiments.") + + +def make_networks( + environment_spec: mava_specs.MAEnvironmentSpec, + q_networks_layer_sizes: Union[Dict[str, Sequence], Sequence] = ( + 512, + 512, + 256, + ), + shared_weights: bool = True, +) -> Mapping[str, types.TensorTransformation]: + """Creates networks used by the agents.""" + + specs = environment_spec.get_agent_specs() + + # Create agent_type specs + if shared_weights: + type_specs = {key.split("_")[0]: specs[key] for key in specs.keys()} + specs = type_specs + + if isinstance(q_networks_layer_sizes, Sequence): + q_networks_layer_sizes = {key: q_networks_layer_sizes for key in specs.keys()} + + def action_selector_fn( + q_values: types.NestedTensor, + legal_actions: types.NestedTensor, + epsilon: Optional[tf.Variable] = None, + ) -> types.NestedTensor: + return epsilon_greedy_action_selector( + action_values=q_values, legal_actions_mask=legal_actions, epsilon=epsilon + ) + + q_networks = {} + action_selectors = {} + for key in specs.keys(): + + # Get total number of action dimensions from action spec. + num_dimensions = specs[key].actions.num_values + + # Create the policy network. + q_network = snt.Sequential( + [ + networks.LayerNormMLP( + q_networks_layer_sizes[key], activate_final=False + ), + networks.NearZeroInitializedLinear(num_dimensions), + ] + ) + + # epsilon greedy action selector + action_selector = action_selector_fn + + q_networks[key] = q_network + action_selectors[key] = action_selector + + return { + "q_networks": q_networks, + "action_selectors": action_selectors, + } + + +def main(_: Any) -> None: + + # environment + environment_factory = functools.partial( + smac_utils.make_environment, map_name=FLAGS.map_name + ) + + # networks + network_factory = lp_utils.partial_kwargs(make_networks) + + # Checkpointer appends "Checkpoints" to checkpoint_dir + checkpoint_dir = f"{FLAGS.base_dir}/{FLAGS.mava_id}" + + # loggers + log_every = 10 + logger_factory = functools.partial( + logger_utils.make_logger, + directory=FLAGS.base_dir, + to_terminal=True, + to_tensorboard=True, + time_stamp=FLAGS.mava_id, + time_delta=log_every, + ) + + # distributed program + program = madqn.MADQN( + environment_factory=environment_factory, + network_factory=network_factory, + logger_factory=logger_factory, + num_executors=2, + exploration_scheduler_fn=LinearExplorationScheduler, + epsilon_min=0.05, + epsilon_decay=5e-4, + optimizer=snt.optimizers.Adam(learning_rate=1e-4), + checkpoint_subpath=checkpoint_dir, + n_step=1, + batch_size=32, + ).build() + + # launch + gpu_id = -1 + env_vars = {"CUDA_VISIBLE_DEVICES": str(gpu_id)} + local_resources = { + "trainer": [], + "evaluator": PythonProcess(env=env_vars), + "executor": PythonProcess(env=env_vars), + } + lp.launch( + program, + lp.LaunchType.LOCAL_MULTI_PROCESSING, + terminal="current_terminal", + local_resources=local_resources, + ) + + +if __name__ == "__main__": + app.run(main) diff --git a/mava/systems/tf/madqn/execution.py b/mava/systems/tf/madqn/execution.py index 16c0f665d..3f072655f 100644 --- a/mava/systems/tf/madqn/execution.py +++ b/mava/systems/tf/madqn/execution.py @@ -154,7 +154,8 @@ def select_actions( if not self._evaluator: epsilon = self._trainer.get_epsilon() else: - epsilon = 0.0 + # Note (dries): For some reason 0 epsilon breaks on StarCraft + epsilon = 1e-10 epsilon = tf.convert_to_tensor(epsilon) @@ -176,6 +177,8 @@ def select_actions( actions[agent] = tf2_utils.to_numpy_squeeze(action) + print("actions: ", actions, ". Evaluator: ", self._evaluator) + # Return a numpy array with squeezed out batch dimension. return actions From 6822b0d84b050dc0bd0bb0d845dcc75d652422da Mon Sep 17 00:00:00 2001 From: Dries Date: Wed, 26 May 2021 15:59:47 +0200 Subject: [PATCH 098/188] fix: Remove print. --- mava/systems/tf/madqn/execution.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/mava/systems/tf/madqn/execution.py b/mava/systems/tf/madqn/execution.py index 3f072655f..5de845b59 100644 --- a/mava/systems/tf/madqn/execution.py +++ b/mava/systems/tf/madqn/execution.py @@ -177,8 +177,6 @@ def select_actions( actions[agent] = tf2_utils.to_numpy_squeeze(action) - print("actions: ", actions, ". Evaluator: ", self._evaluator) - # Return a numpy array with squeezed out batch dimension. return actions From 17d2d9d4bf013b6a8f080da7a6cd757462a46047 Mon Sep 17 00:00:00 2001 From: Dries Date: Wed, 26 May 2021 16:03:25 +0200 Subject: [PATCH 099/188] fix: Small fix. --- examples/README.md | 4 ++++ mava/systems/tf/madqn/execution.py | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/examples/README.md b/examples/README.md index 553ee3f7c..6ecb9c8d6 100644 --- a/examples/README.md +++ b/examples/README.md @@ -73,3 +73,7 @@ We also include a number of systems running on discrete action space environment a QMIX system on the two step custom environment. - [VDN](petting_zoo/run_feedforward_vdn.py): a VDN system on the two step custom environment. +- [MA-DQN (feedforward)](smac/run_feedforward_madqn.py): + an MA-DQN system running on the StarCraft 3m environment. +- [MA-DQN (recurrent)](smac/run_recurrent_madqn.py): + an MA-DQN system running on the StarCraft 3m environment. diff --git a/mava/systems/tf/madqn/execution.py b/mava/systems/tf/madqn/execution.py index 5de845b59..1e7fed0da 100644 --- a/mava/systems/tf/madqn/execution.py +++ b/mava/systems/tf/madqn/execution.py @@ -154,7 +154,7 @@ def select_actions( if not self._evaluator: epsilon = self._trainer.get_epsilon() else: - # Note (dries): For some reason 0 epsilon breaks on StarCraft + # Note (dries): For some reason 0 epsilon breaks on StarCraft. epsilon = 1e-10 epsilon = tf.convert_to_tensor(epsilon) From f64ccef87749c4e70bba6305666e0549498a4179 Mon Sep 17 00:00:00 2001 From: Kale-ab Date: Wed, 26 May 2021 23:20:06 +0200 Subject: [PATCH 100/188] fix: New version of acme breaks adders. Hardcoded acme version for now. --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index d24212070..8bc32a08a 100644 --- a/setup.py +++ b/setup.py @@ -91,7 +91,7 @@ keywords="multi-agent reinforcement-learning python machine learning", packages=find_packages(), install_requires=[ - "dm-acme", + "dm-acme==0.2.0", "absl-py", "dm_env", "dm-tree", From 071742c8aa70d2c71bb496dfef803c82d4dd4782 Mon Sep 17 00:00:00 2001 From: Kale-ab Date: Thu, 27 May 2021 09:21:18 +0200 Subject: [PATCH 101/188] feat: Example custom network spec. --- ...ntralised_feedforward_maddpg_continuous.py | 2 +- ...networked_feedforward_maddpg_continuous.py | 203 ++++++++++++++++++ 2 files changed, 204 insertions(+), 1 deletion(-) create mode 100644 examples/petting_zoo/run_networked_feedforward_maddpg_continuous.py diff --git a/examples/petting_zoo/run_decentralised_feedforward_maddpg_continuous.py b/examples/petting_zoo/run_decentralised_feedforward_maddpg_continuous.py index 23435eb9b..84a5f76e3 100644 --- a/examples/petting_zoo/run_decentralised_feedforward_maddpg_continuous.py +++ b/examples/petting_zoo/run_decentralised_feedforward_maddpg_continuous.py @@ -13,7 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -"""Example running continous MADDPG on pettinzoo MPE environments.""" +"""Example running continous MADDPG on pettinzoo SISL environments.""" import functools from datetime import datetime diff --git a/examples/petting_zoo/run_networked_feedforward_maddpg_continuous.py b/examples/petting_zoo/run_networked_feedforward_maddpg_continuous.py new file mode 100644 index 000000000..1f623e7df --- /dev/null +++ b/examples/petting_zoo/run_networked_feedforward_maddpg_continuous.py @@ -0,0 +1,203 @@ +# python3 +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://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. + +"""Example running continous,networked MADDPG on pettinzoo SISL environments.""" + +import functools +from datetime import datetime +from typing import Any, Dict, List, Mapping, Sequence, Union + +import launchpad as lp +import numpy as np +import sonnet as snt +from absl import app, flags +from acme import types +from acme.tf import networks +from acme.tf import utils as tf2_utils +from launchpad.nodes.python.local_multi_processing import PythonProcess + +from mava import specs as mava_specs +from mava.components.tf.architectures.networked import NetworkedQValueCritic +from mava.systems.tf import maddpg +from mava.utils import lp_utils +from mava.utils.environments import pettingzoo_utils +from mava.utils.loggers import logger_utils + +FLAGS = flags.FLAGS + +flags.DEFINE_string( + "env_class", + "sisl", + "Pettingzoo environment class, e.g. atari (str).", +) + +flags.DEFINE_string( + "env_name", + "multiwalker_v7", + "Pettingzoo environment name, e.g. pong (str).", +) +flags.DEFINE_string( + "mava_id", + str(datetime.now()), + "Experiment identifier that can be used to continue experiments.", +) +flags.DEFINE_string("base_dir", "~/mava/", "Base dir to store experiments.") + + +def make_networks( + environment_spec: mava_specs.MAEnvironmentSpec, + policy_networks_layer_sizes: Union[Dict[str, Sequence], Sequence] = ( + 256, + 256, + 256, + ), + critic_networks_layer_sizes: Union[Dict[str, Sequence], Sequence] = (512, 512, 256), + shared_weights: bool = True, + sigma: float = 0.3, +) -> Mapping[str, types.TensorTransformation]: + """Creates networks used by the agents.""" + specs = environment_spec.get_agent_specs() + + # Create agent_type specs + if shared_weights: + type_specs = {key.split("_")[0]: specs[key] for key in specs.keys()} + specs = type_specs + + if isinstance(policy_networks_layer_sizes, Sequence): + policy_networks_layer_sizes = { + key: policy_networks_layer_sizes for key in specs.keys() + } + if isinstance(critic_networks_layer_sizes, Sequence): + critic_networks_layer_sizes = { + key: critic_networks_layer_sizes for key in specs.keys() + } + + observation_networks = {} + policy_networks = {} + critic_networks = {} + for key in specs.keys(): + + # Get total number of action dimensions from action spec. + num_dimensions = np.prod(specs[key].actions.shape, dtype=int) + + # Create the shared observation network; here simply a state-less operation. + observation_network = tf2_utils.to_sonnet_module(tf2_utils.batch_concat) + + # Create the policy network. + policy_network = snt.Sequential( + [ + observation_network, + networks.LayerNormMLP( + policy_networks_layer_sizes[key], activate_final=True + ), + networks.NearZeroInitializedLinear(num_dimensions), + networks.TanhToSpec(specs[key].actions), + networks.ClippedGaussian(sigma), + networks.ClipToSpec(specs[key].actions), + ] + ) + + # Create the critic network. + critic_network = snt.Sequential( + [ + # The multiplexer concatenates the observations/actions. + networks.CriticMultiplexer(), + networks.LayerNormMLP( + critic_networks_layer_sizes[key], activate_final=False + ), + snt.Linear(1), + ] + ) + observation_networks[key] = observation_network + policy_networks[key] = policy_network + critic_networks[key] = critic_network + + return { + "policies": policy_networks, + "critics": critic_networks, + "observations": observation_networks, + } + + +def custom_connected_network_spec( + agents_by_type: Dict[str, List[str]] +) -> Dict[str, List[str]]: + del agents_by_type + + return { + "walker_0": ["walker_0", "walker_1"], + "walker_1": ["walker_1", "walker_0", "walker_2"], + "walker_2": ["walker_2", "walker_1"], + } + + +def main(_: Any) -> None: + + environment_factory = functools.partial( + pettingzoo_utils.make_environment, + env_class=FLAGS.env_class, + env_name=FLAGS.env_name, + remove_on_fall=False, + ) + + network_factory = lp_utils.partial_kwargs(make_networks) + + # Checkpointer appends "Checkpoints" to checkpoint_dir + checkpoint_dir = f"{FLAGS.base_dir}/{FLAGS.mava_id}" + + # loggers + log_every = 10 + logger_factory = functools.partial( + logger_utils.make_logger, + directory=FLAGS.base_dir, + to_terminal=True, + to_tensorboard=True, + time_stamp=FLAGS.mava_id, + time_delta=log_every, + ) + + program = maddpg.MADDPG( + environment_factory=environment_factory, + network_factory=network_factory, + logger_factory=logger_factory, + num_executors=2, + policy_optimizer=snt.optimizers.Adam(learning_rate=1e-4), + critic_optimizer=snt.optimizers.Adam(learning_rate=1e-4), + checkpoint_subpath=checkpoint_dir, + connection_spec=custom_connected_network_spec, + shared_weights=False, + architecture=NetworkedQValueCritic, + trainer_fn=maddpg.MADDPGNetworkedTrainer, + ).build() + + # Launch gpu config - let trainer use gpu. + gpu_id = -1 + env_vars = {"CUDA_VISIBLE_DEVICES": str(gpu_id)} + local_resources = { + "trainer": [], + "evaluator": PythonProcess(env=env_vars), + "executor": PythonProcess(env=env_vars), + } + + lp.launch( + program, + lp.LaunchType.LOCAL_MULTI_PROCESSING, + terminal="current_terminal", + local_resources=local_resources, + ) + + +if __name__ == "__main__": + app.run(main) From a0fd62965d6ff2accecb45a4b12c0c2e74414bf7 Mon Sep 17 00:00:00 2001 From: Dries Date: Thu, 27 May 2021 09:38:29 +0200 Subject: [PATCH 102/188] fix: Fix _get_dpg_feed inside MADDPGNetworkedTrainer. --- mava/systems/tf/maddpg/training.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/mava/systems/tf/maddpg/training.py b/mava/systems/tf/maddpg/training.py index 58ef9c29e..c05ada9f7 100644 --- a/mava/systems/tf/maddpg/training.py +++ b/mava/systems/tf/maddpg/training.py @@ -763,15 +763,16 @@ def _get_dpg_feed( dpg_a_t: np.ndarray, agent: str, ) -> tf.Tensor: - # Centralised and StateBased DPG - # Note (dries): Copy has to be made because the input - # variables cannot be changed. + # Networked based tree.map_structure(tf.stop_gradient, a_t) dpg_a_t_feed = copy.copy(a_t) dpg_a_t_feed[agent] = dpg_a_t - dpg_a_t_feed = tf.squeeze( - tf.stack([dpg_a_t_feed[agent] for agent in self._agents], 1) - ) + + connections = self._connection_spec[agent] + a_t_vals = [] + for connected_agent in connections: + a_t_vals.append(dpg_a_t_feed[connected_agent]) + dpg_a_t_feed = tf.squeeze(tf.stack(a_t_vals, 1)) return dpg_a_t_feed From 5123782e94c88f187cb641d3e36aee569f2984ed Mon Sep 17 00:00:00 2001 From: Dries Date: Thu, 27 May 2021 09:41:05 +0200 Subject: [PATCH 103/188] fix: Fix _get_dpg_feed inside MADDPGNetworkedTrainer. --- examples/README.md | 3 ++- ...ontinuous.py => run_networked_feedforward_maddpg_sparse.py} | 0 2 files changed, 2 insertions(+), 1 deletion(-) rename examples/petting_zoo/{run_networked_feedforward_maddpg_continuous.py => run_networked_feedforward_maddpg_sparse.py} (100%) diff --git a/examples/README.md b/examples/README.md index 6ecb9c8d6..909c8fb6b 100644 --- a/examples/README.md +++ b/examples/README.md @@ -41,7 +41,8 @@ We include a number of systems running on continuous control tasks. an MA-DDPG system on the continuous action space multiwalker_v7 PettingZoo environment. - [MA-DDPG (decentralised, feedforward)](petting_zoo/run_feedforward_maddpg_record_video.py): an MA-DDPG system (with video wrapping) on the continuous action space multiwalker_v7 PettingZoo environment. - +- [MA-DDPG (networked, feedforward)](petting_zoo/run_networked_feedforward_maddpg_sparse.py): + an MA-DDPG system oon the continuous action space multiwalker_v7 PettingZoo environm [petting_zoo]: https://github.com/PettingZoo-Team/PettingZoo ## Discrete control diff --git a/examples/petting_zoo/run_networked_feedforward_maddpg_continuous.py b/examples/petting_zoo/run_networked_feedforward_maddpg_sparse.py similarity index 100% rename from examples/petting_zoo/run_networked_feedforward_maddpg_continuous.py rename to examples/petting_zoo/run_networked_feedforward_maddpg_sparse.py From 8af2d45398fb164ea4285250e134b9eddb5af5ad Mon Sep 17 00:00:00 2001 From: Dries Date: Thu, 27 May 2021 09:47:08 +0200 Subject: [PATCH 104/188] feature: Add assert to test if networked architecture is setup correctly. --- mava/systems/tf/maddpg/training.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/mava/systems/tf/maddpg/training.py b/mava/systems/tf/maddpg/training.py index c05ada9f7..139fba243 100644 --- a/mava/systems/tf/maddpg/training.py +++ b/mava/systems/tf/maddpg/training.py @@ -745,6 +745,9 @@ def _get_critic_feed( a_tm1_vals = [] a_t_vals = [] + # The agent has to be in the connections for training to work + assert agent in connections + for connected_agent in connections: o_tm1_vals.append(o_tm1_trans[connected_agent]) o_t_vals.append(o_t_trans[connected_agent]) @@ -769,6 +772,10 @@ def _get_dpg_feed( dpg_a_t_feed[agent] = dpg_a_t connections = self._connection_spec[agent] + + # The agent has to be in the connections for training to work + assert agent in connections + a_t_vals = [] for connected_agent in connections: a_t_vals.append(dpg_a_t_feed[connected_agent]) From fba8c91621f9d89462427ef5d894d4be82e3131a Mon Sep 17 00:00:00 2001 From: St John Grimbly Date: Thu, 27 May 2021 10:48:33 +0200 Subject: [PATCH 105/188] fix: change trainer from VDN to QMIX --- mava/systems/tf/qmixV2/training.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mava/systems/tf/qmixV2/training.py b/mava/systems/tf/qmixV2/training.py index c54e7017b..7616b80d2 100644 --- a/mava/systems/tf/qmixV2/training.py +++ b/mava/systems/tf/qmixV2/training.py @@ -299,11 +299,11 @@ def _forward(self, inputs: Any) -> None: q_tot_mixed = self._mixer(q_acts, s_tm1) # [B, 1, 1] q_tot_target_mixed = self._target_mixer(q_targets, s_t) # [B, 1, 1] - q_tot_mixed = tf.reduce_sum(q_acts, axis=1) # [B, 1, 1] - q_tot_target_mixed = tf.reduce_sum(q_targets, axis=1) # [B, 1, 1] + # q_tot_mixed = tf.reduce_sum(q_acts, axis=1) # [B, 1, 1] + # q_tot_target_mixed = tf.reduce_sum(q_targets, axis=1) # [B, 1, 1] - # q_tot_mixed = tf.reshape(q_tot_mixed, (-1,)) - # q_tot_target_mixed = tf.reshape(q_tot_target_mixed, (-1,)) + q_tot_mixed = tf.reshape(q_tot_mixed, (-1,)) + q_tot_target_mixed = tf.reshape(q_tot_target_mixed, (-1,)) # Calculate Q loss. targets = rewards + pcont * q_tot_target_mixed From 2cb1346cd2116aba6ad894fcd9a622ed60d2a782 Mon Sep 17 00:00:00 2001 From: Dries Date: Mon, 31 May 2021 19:26:39 +0200 Subject: [PATCH 106/188] feature: Add robocup docker setup to Mava code. --- Dockerfile.robocup | 54 ++ Makefile | 4 + examples/robocup/run_robocup.py | 98 +++ .../environments/RoboCup_env/RoboCup2D_env.py | 445 +++++++++++ mava/utils/environments/RoboCup_env/helper.py | 51 ++ .../robocup_agents/custom_executor.py | 46 ++ .../RoboCup_env/robocup_agents/fixed_agent.py | 145 ++++ .../RoboCup_env/robocup_agents/nn_agent.py | 279 +++++++ .../environments/RoboCup_env/robocup_base.py | 107 +++ .../RoboCup_env/robocup_utils/__init__.py | 0 .../RoboCup_env/robocup_utils/agent.py | 306 ++++++++ .../robocup_utils/extract_policy.py | 53 ++ .../RoboCup_env/robocup_utils/game_object.py | 193 +++++ .../RoboCup_env/robocup_utils/handler.py | 706 +++++++++++++++++ .../RoboCup_env/robocup_utils/license.txt | 19 + .../robocup_utils/message_parser.py | 164 ++++ .../robocup_utils/player_world_model.py | 697 +++++++++++++++++ .../RoboCup_env/robocup_utils/sock.py | 46 ++ .../robocup_utils/sp_exceptions.py | 36 + .../RoboCup_env/robocup_utils/trainer.py | 379 ++++++++++ .../robocup_utils/trainer_world_model.py | 434 +++++++++++ .../robocup_utils/util_functions.py | 715 ++++++++++++++++++ 22 files changed, 4977 insertions(+) create mode 100755 Dockerfile.robocup create mode 100644 examples/robocup/run_robocup.py create mode 100755 mava/utils/environments/RoboCup_env/RoboCup2D_env.py create mode 100644 mava/utils/environments/RoboCup_env/helper.py create mode 100644 mava/utils/environments/RoboCup_env/robocup_agents/custom_executor.py create mode 100755 mava/utils/environments/RoboCup_env/robocup_agents/fixed_agent.py create mode 100755 mava/utils/environments/RoboCup_env/robocup_agents/nn_agent.py create mode 100644 mava/utils/environments/RoboCup_env/robocup_base.py create mode 100755 mava/utils/environments/RoboCup_env/robocup_utils/__init__.py create mode 100755 mava/utils/environments/RoboCup_env/robocup_utils/agent.py create mode 100644 mava/utils/environments/RoboCup_env/robocup_utils/extract_policy.py create mode 100755 mava/utils/environments/RoboCup_env/robocup_utils/game_object.py create mode 100755 mava/utils/environments/RoboCup_env/robocup_utils/handler.py create mode 100755 mava/utils/environments/RoboCup_env/robocup_utils/license.txt create mode 100755 mava/utils/environments/RoboCup_env/robocup_utils/message_parser.py create mode 100755 mava/utils/environments/RoboCup_env/robocup_utils/player_world_model.py create mode 100755 mava/utils/environments/RoboCup_env/robocup_utils/sock.py create mode 100755 mava/utils/environments/RoboCup_env/robocup_utils/sp_exceptions.py create mode 100755 mava/utils/environments/RoboCup_env/robocup_utils/trainer.py create mode 100755 mava/utils/environments/RoboCup_env/robocup_utils/trainer_world_model.py create mode 100644 mava/utils/environments/RoboCup_env/robocup_utils/util_functions.py diff --git a/Dockerfile.robocup b/Dockerfile.robocup new file mode 100755 index 000000000..78b49a3c3 --- /dev/null +++ b/Dockerfile.robocup @@ -0,0 +1,54 @@ +FROM mava:latest + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + apt-utils \ + build-essential \ + curl \ + xvfb \ + ffmpeg \ + xorg-dev \ + libsdl2-dev \ + swig \ + cmake \ + python-opengl + +# RoboCup +ARG VERSION=16.0.0 + +# fetch repo / ppa packages, etc +RUN apt-get -y update --fix-missing +# Install package, that hangs the operation, separately +RUN DEBIAN_FRONTEND=noninteractive apt install -y tzdata + +RUN apt update && \ + apt -y install autoconf bison clang flex libboost-dev libboost-all-dev libc6-dev make wget + +RUN apt -y install build-essential libboost-all-dev qt5-default libfontconfig1-dev libaudio-dev libxt-dev libglib2.0-dev libxi-dev libxrender-dev libboost-all-dev + +RUN wget https://github.com/rcsoccersim/rcssserver/archive/rcssserver-$VERSION.tar.gz && \ + tar xfz rcssserver-$VERSION.tar.gz && \ + cd rcssserver-rcssserver-$VERSION && \ + ./bootstrap && \ + ./configure && \ + make && \ + make install && \ + ldconfig + +RUN wget https://github.com/rcsoccersim/rcssmonitor/archive/rcssmonitor-$VERSION.tar.gz && \ + tar xfz rcssmonitor-$VERSION.tar.gz && \ + cd rcssmonitor-rcssmonitor-$VERSION && \ + ./bootstrap && \ + ./configure && \ + make && \ + make install && \ + ldconfig + +RUN ldconfig && \ + apt update && \ + apt install -y libboost-filesystem1.65.1 libboost-system1.65.1 libboost-program-options-dev tmux + +RUN apt-get install -y libqt5widgets5 +# RUN pip install hydra-core + +# ENV PYTHONPATH '/home' diff --git a/Makefile b/Makefile index b56c8a67a..2d87d5960 100755 --- a/Makefile +++ b/Makefile @@ -68,6 +68,10 @@ record: build: docker build --tag $(IMAGE) . +build_robocup: + docker build --tag $(IMAGE) -f ./Dockerfile.robocup . + # sudo rm -r ./*.rcl ./*.rcg ./rcssserver-16.0.0* ./rcssserver-rcssserver-16.0.0 ./rcssmonitor* + push: docker login -docker push $(IMAGE) diff --git a/examples/robocup/run_robocup.py b/examples/robocup/run_robocup.py new file mode 100644 index 000000000..16c78324c --- /dev/null +++ b/examples/robocup/run_robocup.py @@ -0,0 +1,98 @@ +# type: ignore +"""Run recurrent MA-D4PG on RoboCup.""" +import functools +from datetime import datetime +from typing import Any + +import dm_env +import launchpad as lp +from absl import app, flags +from launchpad.nodes.python.local_multi_processing import PythonProcess + +from mava.components.tf.architectures import StateBasedQValueCritic +from mava.systems.tf import mad4pg +from mava.systems.tf.mad4pg.execution import MAD4PGRecurrentExecutor +from mava.systems.tf.mad4pg.training import MAD4PGStateBasedRecurrentTrainer +from mava.utils import lp_utils +from mava.utils.environments.RoboCup_env.robocup_agents.nn_agent import ( + make_recurrent_networks as make_networks, +) +from mava.utils.environments.RoboCup_env.robocup_base import create_robocup_environment +from mava.utils.loggers import logger_utils + +FLAGS = flags.FLAGS +flags.DEFINE_string( + "mava_id", + str(datetime.now()), + "Experiment identifier that can be used to continue experiments.", +) + +flags.DEFINE_string("num_executors", "6", "The number of executors to run.") +flags.DEFINE_string("base_dir", "~/mava/", "Base dir to store experiments.") + + +def make_environment(**kwargs) -> dm_env.Environment: + """Creates a MPE environment.""" + + def environment_fn(**kwargs): + return create_robocup_environment(game_name="domain_randomisation", **kwargs) + + return environment_fn + + +def main(_: Any) -> None: + # Environment + # Create an environment, grab the spec, and use it to create networks. + environment_fn = make_environment() + + # Neural Networks + # Create the networks + environment_factory = lp_utils.partial_kwargs(environment_fn) + network_factory = lp_utils.partial_kwargs(make_networks) + + # Checkpointer appends "Checkpoints" to checkpoint_dir + checkpoint_dir = f"{FLAGS.base_dir}/robocup" + + # loggers + log_every = 10 + logger_factory = functools.partial( + logger_utils.make_logger, + directory=FLAGS.base_dir, + to_terminal=True, + to_tensorboard=True, + time_stamp=FLAGS.mava_id, + time_delta=log_every, + ) + + program = mad4pg.MAD4PG( + architecture=StateBasedQValueCritic, + environment_factory=environment_factory, + network_factory=network_factory, + logger_factory=logger_factory, + num_executors=int(FLAGS.num_executors), + samples_per_insert=None, + trainer_fn=MAD4PGStateBasedRecurrentTrainer, + executor_fn=MAD4PGRecurrentExecutor, + shared_weights=True, + checkpoint_subpath=checkpoint_dir, + batch_size=265, + ).build() + + # launch + gpu_id = -1 + env_vars = {"CUDA_VISIBLE_DEVICES": str(gpu_id)} + local_resources = { + "trainer": [], + "evaluator": PythonProcess(env=env_vars), + "executor": PythonProcess(env=env_vars), + } + lp.launch( + program, + lp.LaunchType.LOCAL_MULTI_PROCESSING, + terminal="current_terminal", + local_resources=local_resources, + ) + + +if __name__ == "__main__": + app.run(main) diff --git a/mava/utils/environments/RoboCup_env/RoboCup2D_env.py b/mava/utils/environments/RoboCup_env/RoboCup2D_env.py new file mode 100755 index 000000000..e0bb78594 --- /dev/null +++ b/mava/utils/environments/RoboCup_env/RoboCup2D_env.py @@ -0,0 +1,445 @@ +# type: ignore +import multiprocessing as mp +import os +import time +from typing import Dict + +import numpy as np + +from mava.utils.environments.RoboCup_env.robocup_utils.agent import Agent as basic_agent +from mava.utils.environments.RoboCup_env.robocup_utils.trainer import Trainer +from mava.utils.environments.RoboCup_env.robocup_utils.util_functions import ( + wait_for_next_observations, +) + + +# spawn an agent of team_name, with position +def spawn_agent(team_name, team_id, agent_id, num_players, port): + """ + Used to run an agent in a seperate physical process. + """ + # return type of agent by position, construct + a = basic_agent( + teamname=team_name, team_id=team_id, agent_id=agent_id, num_players=num_players + ) + a.connect("localhost", port) + return a + + +def run_server_thread(game_setting, include_wait, port): + # ./usr/local/bin/rcssmonitor + command = ( + "/usr/local/bin/rcssserver -server::coach_w_referee=on" + " -server::half_time=99999999 -server::game_logging=false" + " -server::game_log_dated=false" + " -server::keepaway_log_dated=false" + " -server::keepaway_logging=false" + " -server::text_log_dated=false" + " -server::port=" + + str(port) + + " -server::coach_port=" + + str(port + 1) + + " -server::olcoach_port=" + + str(port + 2) + ) + + if game_setting == "domain_randomisation" or game_setting == "fixed_opponent": + command += " -server::drop_ball_time=60000" + pass + elif game_setting == "reward_shaping": + pass + else: + raise NotImplementedError( + "Should drop_ball_time be included for this game_setting?" + ) + + if include_wait: + command += " -server::synch_mode=false" + else: + command += " -server::synch_mode=true" + os.system(command) + + +def start_trainer(port): + trainer = Trainer() + trainer.connect("localhost", port + 1) + return trainer + + +def run_monitor_thread(port): + # ./usr/local/bin/rcssmonitor + os.system("/usr/local/bin/rcssmonitor --server-port=" + str(port)) + + +def start_server(game_setting, include_wait, port): + # Wait for server to startup completely + # print("mode: ", mode) + at = mp.Process(target=run_server_thread, args=(game_setting, include_wait, port)) + at.daemon = True + at.start() + time.sleep(0.2) + + +def start_monitor(port): + # Wait for monitor process to complete + at = mp.Process(target=run_monitor_thread, args=(port,)) + at.daemon = True + at.start() + time.sleep(0.2) + + +def connect_agents(team_name, team_id, num_per_team, num_players, start_id, port): + # spawn all agents as seperate processes for maximum processing efficiency + agents = [] + for agent_id in range(start_id, start_id + num_per_team): + agents.append( + spawn_agent( + team_name=team_name, + team_id=team_id, + agent_id=agent_id, + num_players=num_players, + port=port, + ) + ) + time.sleep(0.01) + + print("Spawned %d agents." % len(agents)) + return agents + + +class RoboCup2D: + def __init__( + self, + game_setting="reward_shaping", + include_wait=False, + team_names=["Team1", "Team2"], + players_per_team=11, + render_game=False, + game_length=6000, + beta=0.1, + port=6000, + ): + + self.game_setting = game_setting + if type(players_per_team) is not list: + players_per_team = [players_per_team, players_per_team] + + self.players_per_team = players_per_team + self.num_players = players_per_team[0] + players_per_team[1] + + assert ( + type(players_per_team) == list + and 0 < players_per_team[0] <= 11 + and 0 <= players_per_team[1] <= 11 + ) + + if game_setting == "domain_randomisation": + self.game_diff = 0.0 + game_length = 100 + elif game_setting == "reward_shaping": + game_length = 6000 + elif game_setting == "fixed_opponent": + self.game_diff = 0.0 + game_length = 200 + else: + raise NotImplementedError( + "Game setting not implemented yet: ", game_setting + ) + + self.beta = 0.01 + + # max_dist = 200 + # self.alpha = 1/(max_dist*game_length*(1+beta)) + + # Start the server + start_server(game_setting, include_wait, port) + + self.team_names = team_names + + # Connect trainer which is used to control the RoboCup server + self.trainer = start_trainer(port) + + # Initial reset to move agent to correct position + if game_setting == "single_agent_score": + time.sleep(0.001) + self.trainer.reset_game( + players_per_team, team_names, game_setting, self.game_diff + ) + + self.game_length = game_length + self.game_step = 0 + self.game_scores = [0, 0] + + self.end_step = 0 + + self.tot_out_step = 0.0 + self.tot_in_step_no_wait = 0.0 + self.tot_server_wait = 0.0 + + # Render the game on a monitor + if render_game: + start_monitor(port) + + self.id_dict = {"l": 0, "r": 1} + + # Connect teams + self.agents = {} + # self.agent_ids = [] + self.previous_scores = [0, 0] + start_id = 0 + for t_i in range(2): + if players_per_team[t_i] > 0: + agents = connect_agents( + team_name=team_names[t_i], + team_id=t_i, + num_per_team=players_per_team[t_i], + num_players=self.num_players, + start_id=start_id, + port=port, + ) + for agent in agents: + self.agents["player_" + str(agent.agent_id)] = agent + start_id += players_per_team[t_i] + + def step(self, actions: Dict[str, str]): + # Do agent update + # start_step = time.time() + self.game_step += 1 + + # if self.game_step > 1: + # self.tot_out_step += start_step-self.end_step + + for agent_key, agent in self.agents.items(): + agent.do_action(actions[agent_key]) + + # Send done to show that trainer is done. + if self.trainer: + self.trainer.send_done() + + # if self.game_step > 1: + # inside_step_done = time.time() + # self.tot_in_step_no_wait += inside_step_done-start_step + + # Wait for the environment to step and provide the next observations + wait_for_next_observations([self.trainer]) + + # Check if done with game + done = self.game_step > self.game_length + + # if done: + # print("Time outside step: ", self.tot_out_step) + # print("Time inside step without wait: ", self.tot_in_step_no_wait) + # print("Time waiting for the server: ", self.tot_server_wait) + # + # self.tot_out_step = 0.0 + # self.tot_in_step_no_wait = 0.0 + # self.tot_server_wait = 0.0 + + # Calculate rewards + rewards = {} + score_add = [ + self.trainer.wm.score_l - self.previous_scores[0], + self.trainer.wm.score_r - self.previous_scores[1], + ] + self.previous_scores[0] = self.trainer.wm.score_l + self.previous_scores[1] = self.trainer.wm.score_r + self.game_scores[0] += score_add[0] + self.game_scores[1] += score_add[1] + + # Reset the game if a goal is scored + if ( + self.game_setting == "reward_shaping" + and score_add[0] != 0 + or score_add[1] != 0 + ): + self.trainer.reset_game( + self.players_per_team, + self.team_names, + self.game_setting, + reset_stamina=False, + ) + + wm = self.trainer.wm + for agent_key, agent in self.agents.items(): + agent.do_action(actions[agent_key]) + team_id = agent.team_id + opponent_id = (team_id + 1) % 2 + + # Calculate rewards + player = wm.players[agent.agent_id] + + if self.game_setting == "reward_shaping": + if player["teamname"] == "Team_A": + destination_coords = wm.goals[0]["coords"] + elif player["teamname"] == "Team_B": + destination_coords = wm.goals[1]["coords"] + else: + raise ValueError("Unknown team: ", player["teamname"]) + + ball_goal_dist = wm.euclidean_distance( + wm.ball["coords"], destination_coords + ) + next_x = float(wm.ball["coords"][0]) + float(wm.ball["delta_coords"][0]) + next_y = float(wm.ball["coords"][1]) + float(wm.ball["delta_coords"][1]) + ball_goal_delta_dist = wm.euclidean_distance( + (next_x, next_y), destination_coords + ) + ball_towards_goal = ball_goal_dist - ball_goal_delta_dist + + # player_ball_dist = wm.euclidean_distance( + # player["coords"], wm.ball["coords"] + # ) + next_x = float(player["coords"][0]) + float(player["delta_coords"][0]) + next_y = float(player["coords"][1]) + float(player["delta_coords"][1]) + # player_ball_delta_dist = wm.euclidean_distance( + # (next_x, next_y), wm.ball["coords"] + # ) + # player_towards_ball = player_ball_dist - player_ball_delta_dist + + scored = score_add[team_id] - score_add[opponent_id] + + # TODO: Change back + # if scored > 0.1: + # if self.beta < 0.001: + # self.beta = 0.0 + # print("Beta minimum reached.") + # else: + # self.beta *= 0.99 + # print("Beta: ", self.beta) + + self.beta = 0.01 + reward = ( + scored + ball_towards_goal * self.beta + ) # + player_towards_ball * self.beta + scored + elif self.game_setting == "domain_randomisation": + reward = score_add[team_id] - score_add[opponent_id] + + # # TODONE: Remove this. Masking zero rewards! + # if reward < 0: + # reward = 0 + + else: + raise NotImplementedError("Unknown game setting: ", self.game_setting) + + rewards[agent_key] = np.array(reward, np.float32) + + # self.end_step = time.time() + # if self.game_step > 1: + # self.tot_server_wait += self.end_step - inside_step_done + + # Return latest observations and states + + # obs = self.__get_latest_obs() + # state = self.__get_state() + + # if "estimated_coords" in obs["player_0"]: + # print("Coords: ", (obs["player_0"]["estimated_coords"].tolist(), + # state["players"][0]["coords"]), "Body angle: ", + # (obs["player_0"]["ang_offs"], state["players"][0]["body_angle"])) + # else: + # print("No location info.") + + return self.__get_latest_obs(), rewards, self.__get_state(), done + + def reset(self): + self.game_step = 0 + if self.game_setting == "domain_randomisation": + goal_diff = self.game_scores[0] - self.game_scores[1] + if goal_diff != 0: + if self.game_diff < 1.0: + self.game_diff += 0.01 + # print("Game difficulty increased: ", self.game_diff) + else: + self.game_diff = 1.0 + print("Max game difficulty surpassed!") + elif self.game_diff < 1.0: + if self.game_diff > 0.0: + self.game_diff -= 0.01 + + if self.game_diff < 0.0: + # Sometimes the game_diff can be slightly smaller than zero + # which causes problems. + self.game_diff = 0.0 + # print("Game difficulty decreased: ", self.game_diff) + + self.game_length = int(100 + self.game_diff * 900) + # print("Reset game length: ", self.game_length) + # TODO: Update alpha + # self.alpha = 1 / (max_dist * game_length * (1 + beta)) + + self.trainer.reset_game( + self.players_per_team, + self.team_names, + self.game_setting, + self.game_diff, + ) + elif self.game_setting == "reward_shaping": + self.trainer.reset_game( + self.players_per_team, self.team_names, self.game_setting + ) + else: + raise NotImplementedError("Unknown game setting: ", self.game_setting) + + self.game_scores = [0, 0] + + # print("Resetting.") + # Switch teams + # TODO: Add team switching for better training. Also maybe shuffle agents in a + # single team. Therefore change the agent each policy is controlling at every + # reset step. Make sure that the dictionary stuff does not break. + + # Only shuffle if teams are equal for now. + # if self.players_per_team[0] == self.players_per_team[1]: + # team1 = self.agents[0:self.players_per_team[0]] + # team2 = self.agents[self.players_per_team[0]:] + # + # random.shuffle(team1) + # random.shuffle(team2) + # + # self.agents = team2 + # self.agents.extend(team1) + rewards = [None] * len(self.agents) + + # Wait for the environment to step and provide the next observations + wait_for_next_observations([self.trainer]) + return self.__get_latest_obs(), rewards, self.__get_state() + + def __get_state(self): + # Return latest observations to agents + state_dict = self.trainer.get_state_dict() + # TODO: Return per agent states. The states should be mirrored. So a critic and + # policy can train on only one side but execute on both sides. + # state_dict + state_dict["game_step"] = self.game_step + state_dict["game_length"] = self.game_length + return state_dict + + def __get_latest_obs(self): + # Return latest observations to agents + obs = {} + for agent_key, agent in self.agents.items(): + obs_dict = agent.get_latest_observation() + if obs_dict: + obs_dict["game_step"] = self.game_step + obs_dict["game_length"] = self.game_length + + obs[agent_key] = obs_dict + + # TODO: Delete the if else below + # if len(obs) == 1: + # state = self.trainer.get_state_dict() + # + # if len(state["players"]) > 0: + # obs["player_0"]["estimated_coords"] = + # np.array(state["players"][0]["coords"]) + # obs["player_0"]["ang_offs"] = state["players"][0]["body_angle"] + # else: + # obs["player_0"]["estimated_coords"] = [0.0, 0.0] + # obs["player_0"]["ang_offs"] = 0.0 + # + # # print("Agent: ", obs["player_0"]) + # # print("Trainer: ", self.trainer.get_state_dict()) + # else: + # print("Remove this trainer overwrite this!!!") + # exit() + return obs diff --git a/mava/utils/environments/RoboCup_env/helper.py b/mava/utils/environments/RoboCup_env/helper.py new file mode 100644 index 000000000..f982c2917 --- /dev/null +++ b/mava/utils/environments/RoboCup_env/helper.py @@ -0,0 +1,51 @@ +# python3 +# Copyright 2018 DeepMind Technologies Limited. All rights reserved. +# +# 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 +# +# http://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. + +"""OpenAI Gym environment factory.""" + +import dm_env +import gym +from acme import wrappers + +TASKS = { + "debug": ["MountainCarContinuous-v0"], + "default": [ + "HalfCheetah-v2", + "Hopper-v2", + "InvertedDoublePendulum-v2", + "InvertedPendulum-v2", + "Reacher-v2", + "Swimmer-v2", + "Walker2d-v2", + ], +} + + +def make_environment( + evaluation: bool = False, task: str = "MountainCarContinuous-v0" +) -> dm_env.Environment: + """Creates an OpenAI Gym environment.""" + del evaluation + + # Load the gym environment. + environment = gym.make(task) + + # Make sure the environment obeys the dm_env.Environment interface. + environment = wrappers.GymWrapper(environment) + # Clip the action returned by the agent to the environment spec. + environment = wrappers.CanonicalSpecWrapper(environment, clip=True) + environment = wrappers.SinglePrecisionWrapper(environment) + + return environment diff --git a/mava/utils/environments/RoboCup_env/robocup_agents/custom_executor.py b/mava/utils/environments/RoboCup_env/robocup_agents/custom_executor.py new file mode 100644 index 000000000..912fbf774 --- /dev/null +++ b/mava/utils/environments/RoboCup_env/robocup_agents/custom_executor.py @@ -0,0 +1,46 @@ +# type: ignore +from typing import Dict, Optional + +import dm_env +from acme import types + +from mava.utils.environments.RoboCup_env.robocup_utils.game_object import Flag + +true_flag_coords = Flag.FLAG_COORDS + + +class CustomExecutor: + """A fixed executor to test in the environments are working.""" + + def __init__(self, agents): + # Convert action and observation specs. + self.agents = agents + + def observe_first( + self, + timestep: dm_env.TimeStep, + extras: Dict[str, types.NestedArray] = {"": ()}, + ) -> None: + pass + + def observe( + self, + actions: Dict[str, types.NestedArray], + next_timestep: dm_env.TimeStep, + next_extras: Optional[Dict[str, types.NestedArray]] = {}, + ) -> None: + pass + + def select_actions( + self, observations: Dict[str, types.NestedArray] + ) -> Dict[str, types.NestedArray]: + actions = {} + for agent, observation in observations.items(): + # Pass the observation through the policy network. + actions[agent] = self.agents[agent].get_action(observation.observation) + + # Return a numpy array with squeezed out batch dimension. + return actions + + def update(self, wait: bool = False) -> None: + pass diff --git a/mava/utils/environments/RoboCup_env/robocup_agents/fixed_agent.py b/mava/utils/environments/RoboCup_env/robocup_agents/fixed_agent.py new file mode 100755 index 000000000..8c431485a --- /dev/null +++ b/mava/utils/environments/RoboCup_env/robocup_agents/fixed_agent.py @@ -0,0 +1,145 @@ +# type: ignore +import numpy as np + +from mava.utils.environments.RoboCup_env.robocup_utils.util_functions import ( + SpecWrapper, + deg_rot_to_xy, +) + + +class NaiveBot(object): + def __init__(self, agent_type, num_players): + # Convert action and observation specs. + + spec_wrapper = SpecWrapper(num_players) + self.scaling = spec_wrapper.scaling + self.num_players = num_players + assert self.scaling == 200.0 + self.kicked = False + # self.obs_norm = 200.0 + # self.action_scaling = 180 + # self.obs_size = 17 + # self._action_size = 7 + + def reset_brain(self): + pass + + def get_action(self, observation): + obs_dict = { + "time_left": 0, + "side": 1, + "sense_self": 2, + "coords": (3, 5), + "body_dir": (5, 7), + "head_dir": (7, 9), + "width": (9, 12), + "quality": 12, + "stamina": 13, + "effort": 14, + "speed_amount": 15, + "speed_direction": (16, 18), + "neck_direction": (18, 20), + "see_ball": 20, + "ball_dist": 21, + "ball_dir": (22, 24), + "ball_dist_change": 24, + "ball_dir_change": 25, + "ball_speed": 26, + } + s, e = obs_dict["coords"] + p_loc = observation[s:e] * self.scaling + + s, e = obs_dict["body_dir"] + p_deg = np.arctan2(observation[e - 1], observation[s]) * 180 / np.pi + + # see_ball, ball_distance, ball_direction (x, y format), + see_ball = observation[obs_dict["see_ball"]] + b_dist = observation[obs_dict["ball_dist"]] * self.scaling + s, e = obs_dict["ball_dir"] + b_deg = np.arctan2(observation[e - 1], observation[s]) * 180 / np.pi + # Compute the policy, conditioned on the observation. + # dash (speed), turn (direction in x,y format), + # kick (direction in x,y format, power) + command = { + "do_dash": 0, + "do_kick": 1, + "do_change_view": 2, + "do_tackle": 3, + "do_turn": 4, + "do_turn_neck": 5, + "do_none": 6, + "dash_power": 7, + "dash_dir_x": 8, + "dash_dir_y": 9, + "turn_dir_x": 18, + "turn_dir_y": 19, + "kick_power": 10, + "kick_dir_x": 11, + "kick_dir_y": 12, + } + action = np.zeros(22) + if see_ball < 0.5: + # Search for the ball + # print("Searching..") + action[command["do_turn"]] = 1 + x, y = deg_rot_to_xy(20) + action[command["turn_dir_x"]] = x + action[command["turn_dir_y"]] = y + elif b_dist < 0.5: + if not self.kicked: + # Kick the ball + self.kicked = True + # goal_locs = np.array([np.random.randn()*20, np.random.randn()*20]) + goal_locs = np.array([52.5, 0]) + + x_diff, y_diff = goal_locs - p_loc + + kick_abs_dir = -np.arctan2(y_diff, x_diff) * 180 / np.pi + + kick_dir = p_deg - 90 + kick_abs_dir + + action[command["do_kick"]] = 1 + action[command["kick_power"]] = 50 / self.scaling + + x, y = deg_rot_to_xy(kick_dir) + action[command["kick_dir_x"]] = x + action[command["kick_dir_y"]] = y + else: + action[command["do_none"]] = 1 + # print("Waiting..") + elif np.abs(b_deg) > 10: + # Turn towards the ball + # print("Turning..") + action[command["do_turn"]] = 1 + x, y = deg_rot_to_xy(b_deg / 3) + action[command["turn_dir_x"]] = x + action[command["turn_dir_y"]] = y + else: + # Dash towards the ball + action[command["do_dash"]] = 1 + # print("Dashing..") + speed = 100 + + if b_dist < 5: + speed = 20 + + action[command["dash_power"]] = speed / self.scaling + x, y = deg_rot_to_xy(0) + action[command["dash_dir_x"]] = x + action[command["dash_dir_y"]] = y + + if b_dist > 5.0: + self.kicked = False + + return action + + +# class RotateBot(object): +# def __init__(self, num_actions=9): +# pass +# +# def reset_brain(self): +# pass +# +# def get_action(self, observations, last_action, reward=None): +# return "(turn 30)" diff --git a/mava/utils/environments/RoboCup_env/robocup_agents/nn_agent.py b/mava/utils/environments/RoboCup_env/robocup_agents/nn_agent.py new file mode 100755 index 000000000..4a736b7df --- /dev/null +++ b/mava/utils/environments/RoboCup_env/robocup_agents/nn_agent.py @@ -0,0 +1,279 @@ +# type: ignore +import os +from typing import Any, Dict, Mapping, MutableSequence, Sequence, Union + +import numpy as np +import sonnet as snt + +# import logging +import tensorflow as tf +import tensorflow_probability as tfp +from acme import types +from acme.tf import networks +from acme.tf import savers as tf2_savers +from acme.tf import utils as tf2_utils + +from mava import specs as mava_specs +from mava.components.tf.architectures import StateBasedQValueCritic +from mava.components.tf.networks.mad4pg import DiscreteValuedHead +from mava.utils.environments.RoboCup_env.robocup_utils.util_functions import SpecWrapper + +tfd = tfp.distributions +# log = logging.getLogger(__name__) + + +def set_gpu_affinity(gpus: Any) -> Any: + devices = tf.config.list_physical_devices("GPU") + + # process the requested gpus + if gpus is None or len(devices) == 0: + gpus = {} + elif isinstance(gpus, int): + gpus = set(devices if gpus == -1 else [devices[gpus]]) + elif isinstance(gpus, MutableSequence): + gpus = {devices[k] for k in gpus} + else: + raise ValueError( + f"Can't parse requested gpus, got {gpus} of type {type(gpus)}." + ) + + # set the visibility + # if the set is empty, the function will be called on an empty list + # so that no `LogicalDevice` will be created on the physical devices. + tf.config.set_visible_devices(list(gpus), "GPU") + os.environ["CUDA_VISIBLE_DEVICES"] = ",".join( + [gpu.name.split(":")[-1] for gpu in gpus] + ) + + # set memory growth + for gpu in gpus: + try: + tf.config.experimental.set_memory_growth(gpu, True) + except RuntimeError as e: + print(e) + + # log.info( + # f"Devices: {len(devices)} physical and " + # f"{len(tf.config.list_logical_devices('GPU'))} logical devices" + # ) + return gpus + + +def make_networks( + environment_spec: mava_specs.MAEnvironmentSpec, + policy_networks_layer_sizes: Union[Dict[str, Sequence], Sequence] = ( + 256, + 256, + 256, + ), + critic_networks_layer_sizes: Union[Dict[str, Sequence], Sequence] = (512, 512, 256), + shared_weights: bool = True, + sigma: float = 0.3, +) -> Mapping[str, types.TensorTransformation]: + """Creates networks used by the agents.""" + specs = environment_spec.get_agent_specs() + + # Create agent_type specs + if shared_weights: + type_specs = {key.split("_")[0]: specs[key] for key in specs.keys()} + specs = type_specs + + if isinstance(policy_networks_layer_sizes, Sequence): + policy_networks_layer_sizes = { + key: policy_networks_layer_sizes for key in specs.keys() + } + if isinstance(critic_networks_layer_sizes, Sequence): + critic_networks_layer_sizes = { + key: critic_networks_layer_sizes for key in specs.keys() + } + + observation_networks = {} + policy_networks = {} + critic_networks = {} + for key in specs.keys(): + + # Get total number of action dimensions from action spec. + num_dimensions = np.prod(specs[key].actions.shape, dtype=int) + + # Create the shared observation network; here simply a state-less operation. + observation_network = tf2_utils.to_sonnet_module(tf2_utils.batch_concat) + + # Create the policy network. + policy_network = snt.Sequential( + [ + observation_network, + networks.LayerNormMLP( + policy_networks_layer_sizes[key], activate_final=True + ), + networks.NearZeroInitializedLinear(num_dimensions), + networks.TanhToSpec(specs[key].actions), + networks.ClippedGaussian(sigma), + networks.ClipToSpec(specs[key].actions), + ] + ) + + # Create the critic network. + critic_network = snt.Sequential( + [ + # The multiplexer concatenates the observations/actions. + networks.CriticMultiplexer(), + networks.LayerNormMLP( + critic_networks_layer_sizes[key], activate_final=False + ), + snt.Linear(1), + ] + ) + observation_networks[key] = observation_network + policy_networks[key] = policy_network + critic_networks[key] = critic_network + + return { + "policies": policy_networks, + "critics": critic_networks, + "observations": observation_networks, + } + + +def make_recurrent_networks( + environment_spec: mava_specs.MAEnvironmentSpec, + policy_networks_layer_sizes: Union[Dict[str, Sequence], Sequence] = ( + 256, + 256, + 256, + ), + critic_networks_layer_sizes: Union[Dict[str, Sequence], Sequence] = (512, 512, 256), + shared_weights: bool = True, + sigma: float = 0.3, + vmin: float = -150.0, + vmax: float = 150.0, + num_atoms: int = 51, +) -> Mapping[str, types.TensorTransformation]: + """Creates networks used by the agents.""" + specs = environment_spec.get_agent_specs() + + # Create agent_type specs + if shared_weights: + type_specs = {key.split("_")[0]: specs[key] for key in specs.keys()} + specs = type_specs + + if isinstance(policy_networks_layer_sizes, Sequence): + policy_networks_layer_sizes = { + key: policy_networks_layer_sizes for key in specs.keys() + } + if isinstance(critic_networks_layer_sizes, Sequence): + critic_networks_layer_sizes = { + key: critic_networks_layer_sizes for key in specs.keys() + } + + observation_networks = {} + policy_networks = {} + critic_networks = {} + for key in specs.keys(): + + # Get total number of action dimensions from action spec. + num_dimensions = np.prod(specs[key].actions.shape, dtype=int) + + # Create the observation network. + observation_network = tf2_utils.to_sonnet_module(tf2_utils.batch_concat) + + # Create the policy network. + policy_network = snt.DeepRNN( + [ + observation_network, + snt.Flatten(), + snt.nets.MLP(policy_networks_layer_sizes[key]), + snt.LSTM(25), + snt.nets.MLP([128]), + networks.NearZeroInitializedLinear(num_dimensions), + networks.TanhToSpec(specs[key].actions), + networks.ClippedGaussian(sigma), + networks.ClipToSpec(specs[key].actions), + ] + ) + + # Create the critic network. + critic_network = snt.Sequential( + [ + # The multiplexer concatenates the observations/actions. + networks.CriticMultiplexer(), + networks.LayerNormMLP( + critic_networks_layer_sizes[key], activate_final=False + ), + DiscreteValuedHead(vmin, vmax, num_atoms), + ] + ) + + observation_networks[key] = observation_network + policy_networks[key] = policy_network + critic_networks[key] = critic_network + + return { + "observations": observation_networks, + "policies": policy_networks, + "critics": critic_networks, + } + + +class NNBot(object): + def __init__( + self, agent_type, num_players, checkpoint_subpath: str = "Checkpoints" + ): + # Convert action and observation specs. + spec_wrapper = SpecWrapper(num_players) + + # setup the resources + set_gpu_affinity(0) + + environment_spec = mava_specs.MAEnvironmentSpec(spec_wrapper) + + # Create networks + shared_weights = True + system_networks = make_networks( + environment_spec=environment_spec, shared_weights=shared_weights + ) + + architecture = StateBasedQValueCritic( + environment_spec=environment_spec, + policy_networks=system_networks["policies"], + critic_networks=system_networks["critics"], + observation_networks=system_networks["observations"], + shared_weights=shared_weights, + ) + + # Create the policy_networks + policy_networks = architecture.create_actor_variables() + before_sum = policy_networks["policies"][agent_type].variables[1].numpy().sum() + # print("Weights before: ", before_sum) + objects_to_save = { + "policy": policy_networks["policies"][agent_type], + "observation": policy_networks["observations"][agent_type], + } + + checkpointer_dir = os.path.join(checkpoint_subpath, agent_type) + tf2_savers.Checkpointer( + time_delta_minutes=1, + add_uid=False, + directory=checkpointer_dir, + objects_to_save=objects_to_save, + enable_checkpointing=True, + ) + after_sum = policy_networks["policies"][agent_type].variables[1].numpy().sum() + + assert before_sum != after_sum + + self.policy = policy_networks["policies"][agent_type] + self.num_players = num_players + + def reset_brain(self): + pass + + def get_action(self, observation): + # Add a dummy batch dimension and as a side effect convert numpy to TF. + batched_observation = tf2_utils.add_batch_dim(observation) + + # Compute the policy, conditioned on the observation. + policy = self.policy(batched_observation) + + # Sample from the policy if it is stochastic. + action = policy.sample() if isinstance(policy, tfd.Distribution) else policy + return action.numpy()[0] diff --git a/mava/utils/environments/RoboCup_env/robocup_base.py b/mava/utils/environments/RoboCup_env/robocup_base.py new file mode 100644 index 000000000..e3d185752 --- /dev/null +++ b/mava/utils/environments/RoboCup_env/robocup_base.py @@ -0,0 +1,107 @@ +# type: ignore +from typing import Tuple + +import dm_env +import gym +import numpy as np +from acme import types + +from mava.utils.environments.RoboCup_env.RoboCup2D_env import RoboCup2D +from mava.utils.environments.RoboCup_env.robocup_utils.util_functions import SpecWrapper + + +class RoboCupWrapper(SpecWrapper): + """Environment wrapper for 2D RoboCup environment.""" + + # Note: we don't inherit from base.EnvironmentWrapper because that class + # assumes that the wrapped environment is a dm_env.Environment. + + def __init__(self, environment: RoboCup2D): + self._environment = environment + self._reset_next_step = True + assert environment.game_setting in ["reward_shaping", "domain_randomisation"] + + super().__init__(environment.num_players) + + def reset(self) -> Tuple[dm_env.TimeStep, np.array]: + """Resets the episode.""" + self._reset_next_step = False + raw_obs, _, state = self._environment.reset() + proc_obs = self._proc_robocup_obs(observations=raw_obs, done=False) + proccessed_state = self._proc_robocup_state(state, proc_obs) + timestep = dm_env.restart(proc_obs) + return timestep, {"env_state": proccessed_state} + + def step(self, nn_actions: types.NestedArray) -> Tuple[dm_env.TimeStep, np.array]: + """Steps the environment.""" + if self._reset_next_step: + return self.reset() + + actions = self._proc_robocup_actions(nn_actions) + raw_obs, rewards, state, done = self._environment.step(actions) + self._reset_next_step = done + + proc_obs = self._proc_robocup_obs( + observations=raw_obs, done=done, nn_actions=nn_actions + ) + proccessed_state = self._proc_robocup_state(state, proc_obs) + + if done: + self._step_type = dm_env.StepType.LAST + else: + self._step_type = dm_env.StepType.MID + + return ( + dm_env.TimeStep( + observation=proc_obs, + reward=rewards, + discount=self._discount, + step_type=self._step_type, + ), + {"env_state": proccessed_state}, + ) + + @property + def environment(self) -> gym.Env: + """Returns the wrapped environment.""" + return self._environment + + def close(self): + self._environment.close() + + +def create_robocup_environment( + game_name: str, evaluation: bool = False +) -> dm_env.Environment: + """Wraps the Robocup environment with some basic preprocessing. + + Args: + game_name: str, the name of the Robocup game setting. + evaluation: bool, to change the behaviour during evaluation. + + Returns: + A Robocup environment with some standard preprocessing. + """ + + # Create environment + if game_name == "domain_randomisation": + players_per_team = [1, 0] + elif game_name == "reward_shaping": + players_per_team = [1, 0] + # elif game_name == "fixed_opponent": + # players_per_team = [2, 2] + else: + raise NotImplementedError("Game type not implemented: ", game_name) + + # TODO: Change this to better assign ports + rand_port = np.random.randint(6000, 60000) + robocup_env = RoboCup2D( + game_setting=game_name, + team_names=["Team_A", "Team_B"], + players_per_team=players_per_team, + render_game=True, + include_wait=False, + game_length=1000, + port=rand_port, + ) + return RoboCupWrapper(robocup_env) diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/__init__.py b/mava/utils/environments/RoboCup_env/robocup_utils/__init__.py new file mode 100755 index 000000000..e69de29bb diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/agent.py b/mava/utils/environments/RoboCup_env/robocup_utils/agent.py new file mode 100755 index 000000000..d7fc879fd --- /dev/null +++ b/mava/utils/environments/RoboCup_env/robocup_utils/agent.py @@ -0,0 +1,306 @@ +# type: ignore +# !/usr/bin/env python3 + +import threading +import time + +# import math +import numpy as np + +from mava.utils.environments.RoboCup_env.robocup_utils import ( + handler, + sock, + sp_exceptions, +) +from mava.utils.environments.RoboCup_env.robocup_utils.player_world_model import ( + WorldModel, +) +from mava.utils.environments.RoboCup_env.robocup_utils.util_functions import ( + SpecWrapper, + wait_for_next_observations, +) + +# import copy +# import os +# os.environ['PYGAME_HIDE_SUPPORT_PROMPT'] = "hide" +# import pygame + +# Define some colours +green = (0, 255, 50) +light_blue = (0, 255, 255) +blue = (0, 0, 255) +red = (255, 0, 0) +yellow = (255, 255, 0) +white = (255, 255, 255) + +# R G B +field_col = (0, 200, 50) +team_player = blue +opp_player = light_blue +own_goal = (255, 140, 0) +opp_goal = (128, 0, 128) + + +class Agent: + def __init__(self, teamname, team_id, agent_id, num_players, agent_controller=None): + # whether we're connected to a server yet or not + self.__connected = False + + self.teamname = teamname + self.agent_id = agent_id + self.team_id = team_id + self.agent_controller = agent_controller + + if self.agent_controller is not None: + self.specWrapper = SpecWrapper(num_players=num_players) + + # set all variables and important objects to appropriate values for + # pre-connect state. + + # the socket used to communicate with the server + self.__sock = None + + # models and the message handler for parsing and storing information + self.wm = None + self.msg_handler = None + + # parse thread and control variable + self.__parsing = False + self.__msg_thread = None + + self.__thinking = False # think thread and control variable + self.__think_thread = None + + # whether we should send commands + self.__send_commands = False + + # adding goal post markers + self.enemy_goal_pos = None + self.own_goal_pos = None + + def connect(self, host, port, version=11): + """ + Gives us a connection to the server as one player on a team. This + immediately connects the agent to the server and starts receiving and + parsing the information it sends. + """ + self.start_comm_threads(host, port, self.teamname, version) + + def start_comm_threads(self, host, port, teamname, version): + # if already connected, raise an error since user may have wanted to + # connect again to a different server. + if self.__connected: + msg = "Cannot connect while already connected, disconnect first." + raise sp_exceptions.AgentConnectionStateError(msg) + + # the pipe through which all of our communication takes place + # p rint("Start comms: ", port) + self.__sock = sock.Socket(host, port) + + # our models of the world and our body + self.wm = WorldModel(handler.ActionHandler(self.__sock)) + + # set the team name of the world model to the given name + self.wm.teamname = teamname + + # handles all messages received from the server + self.msg_handler = handler.MessageHandler(self.wm) + + # set up our threaded message receiving system + self.__parsing = True # tell thread that we're currently running + + init_address = self.__sock.address + # send the init message and allow the message handler to handle further + # responses. + init_msg = "(init %s (version %d))" + self.__sock.send(init_msg % (teamname, version)) + + self.__message_tread = threading.Thread( + target=self.__message_loop, name="message_loop" + ) + self.__message_tread.daemon = True + self.__message_tread.start() + # wait until the socket receives a response from the server and gets its + # assigned port. + # print("Agent init address: ", init_address) + while self.__sock.address == init_address: + time.sleep(0.0001) + + # print("Agent new address: ", self.__sock.address) + # exit() + # create our thinking thread. this will perform the actions necessary + # to play a game of robo-soccer. + self.__thinking = True + # self.__think_thread.daemon = True + + # set connected state. done last to prevent state inconsistency if + # something goes wrong beforehand. + self.__connected = True + + self.last_action = None + + # Move to random starting position + + x = np.random.randint(-52, 53) + y = np.random.randint(-34, 35) + + self.__sock.send("(move " + str(x) + " " + str(y) + ")") + self.__sock.send("(done)") + + if self.agent_controller is not None: + self.__think_thread = threading.Thread( + target=self.__think_loop, name="think_loop" + ) + self.__think_thread.daemon = True + self.__think_thread.start() + + # def disconnect(self): + # """ + # Tell the loop threads to stop and signal the server that we're + # disconnecting, then join the loop threads and destroy all our inner + # methods. + # + # Since the message loop thread can conceiveably block indefinitely while + # waiting for the server to respond, we only allow it (and the think loop + # for good measure) a short time to finish before simply giving up. + # + # Once an agent has been disconnected, it is 'dead' and cannot be used + # again. All of its methods get replaced by a method that raises an + # exception every time it is called. + # """ + # + # # don't do anything if not connected + # if not self.__connected: + # return + # + # # tell the loops to terminate + # self.__parsing = False + # self.__thinking = False + # + # # tell the server that we're quitting + # self.__sock.send("(bye)") + # + # # tell our threads to join, but only wait breifly for them to do so. + # # don't join them if they haven't been started (this can happen if + # # disconnect is called very quickly after connect). + # if self.__msg_thread.is_alive(): + # self.__msg_thread.join(0.01) + # + # # if self.__think_thread.is_alive(): + # # self.__think_thread.join(0.01) + # + # # reset all standard variables in this object. self.__connected gets + # # reset here, along with all other non-user defined internal variables. + # Agent.__init__(self) + + def __message_loop(self): + """ + Handles messages received from the server. + + This SHOULD NOT be called externally, since it's used as a threaded loop + internally by this object. Calling it externally is a BAD THING! + """ + + # loop until we're told to stop + while self.__parsing: + # receive message data from the server and pass it along to the + # world model as-is. the world model parses it and stores it within + # itself for perusal at our leisure. + raw_msg = self.__sock.recv() + + # if b'goal' in raw_msg: + # print("Agent message: '" , raw_msg, "'") + + msg_type = self.msg_handler.handle_message(raw_msg) + if msg_type is not None: + # we send commands all at once every cycle, ie. whenever a + # 'sense_body' command is received + if msg_type == handler.ActionHandler.CommandType.SENSE_BODY: + self.__send_commands = True + + def __think_loop(self): + """ + Performs world model analysis and sends appropriate commands to the + server to allow the agent to participate in the current game. + + Like the message loop, this SHOULD NOT be called externally. Use the + play method to start play, and the disconnect method to end it. + """ + + while self.__thinking: + # Get and process the latest observation + observation = self.specWrapper.proc_agent_env_obs( + env_agent_obs=self.get_latest_observation(), + last_action=self.last_action, + ) + + # Get the agent's action and covert it to a RoboCup environment command. + + self.last_action = self.agent_controller.get_action(observation) + action = self.specWrapper.proc_agent_action(self.last_action) + + # Send the action + self.__sock.send(action) + self.__sock.send("(done)") + + # Wait for a new timestep indicator + wait_for_next_observations([self]) + + def get_latest_observation(self): + # Generate new observation + obs_dict = {} + obs_dict["players"] = self.wm.players + + # Ball + obs_dict["ball"] = self.wm.ball + + # Team side + obs_dict["side"] = self.wm.side + + # Score + obs_dict["scores"] = [self.wm.score_l, self.wm.score_r] + + obs_dict["view_width"] = self.wm.view_width + obs_dict["view_quality"] = self.wm.view_quality + obs_dict["stamina"] = self.wm.stamina + obs_dict["effort"] = self.wm.effort + obs_dict["speed_amount"] = self.wm.speed_amount + + # TODO: Is these two measurements relative? I think they are. + obs_dict["speed_direction"] = self.wm.speed_direction + obs_dict["neck_direction"] = self.wm.neck_direction + + # self.wm.obs_updated = False + obs_dict["estimated_abs_coords"] = self.wm.abs_coords + obs_dict["estimated_abs_body_dir"] = self.wm.abs_body_dir + obs_dict["estimated_abs_neck_dir"] = self.wm.abs_neck_dir + + # Fix observations so that it is side almost agnostic. A agent can + # be trained on one side and still execute what it has learned on + # the other side of the field. + if obs_dict["side"] == "r": + if obs_dict["estimated_abs_coords"][0] is not None: + obs_dict["estimated_abs_coords"] = [ + -obs_dict["estimated_abs_coords"][0], + -obs_dict["estimated_abs_coords"][1], + ] + obs_dict["estimated_abs_neck_dir"] += 180 + obs_dict["estimated_abs_body_dir"] += 180 + + else: + assert obs_dict["side"] == "l" + + return obs_dict + + def do_action(self, action): + # tell the ActionHandler to send its enqueued messages if it is time + # only think if new data has arrived + if self.agent_controller: + action = self.agent_controller.get_action( + self.get_latest_observation(), None + ) + print("When is this actually used?") + exit() + + self.__sock.send(action) + self.__sock.send("(done)") diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/extract_policy.py b/mava/utils/environments/RoboCup_env/robocup_utils/extract_policy.py new file mode 100644 index 000000000..8bd16d250 --- /dev/null +++ b/mava/utils/environments/RoboCup_env/robocup_utils/extract_policy.py @@ -0,0 +1,53 @@ +# type: ignore +import os +import pickle + +from acme.tf import savers as tf2_savers + + +def save_policy_and_obs(architecture, agent_type, checkpoint_subpath, pickle_save_loc): + policy_networks = architecture.create_actor_variables() + before_sum = policy_networks["policies"][agent_type].variables[1].numpy().sum() + # print("Weights before: ", before_sum) + objects_to_save = { + "policy": policy_networks["policies"][agent_type], + "observation": policy_networks["observations"][agent_type], + } + + checkpointer_dir = os.path.join(checkpoint_subpath, agent_type) + tf2_savers.Checkpointer( + time_delta_minutes=1, + add_uid=False, + directory=checkpointer_dir, + objects_to_save=objects_to_save, + enable_checkpointing=True, + ) + after_sum = policy_networks["policies"][agent_type].variables[1].numpy().sum() + + assert before_sum != after_sum + + # Save policy variables + print(policy_networks["policies"][agent_type]) + exit() + policy = policy_networks["policies"][agent_type].set.variables + policy_file = open(os.path.join(pickle_save_loc, "policy.obj"), "wb") + pickle.dump(policy, policy_file) + policy_file.close() + + # So observation variables + observation = policy_networks["observations"][agent_type].variables + obs_file = open(os.path.join(pickle_save_loc, "observations.obj"), "wb") + pickle.dump(observation, obs_file) + obs_file.close() + + +def load_policy_and_obs(pickle_save_loc): + # Load policy variables + filehandler = open(os.path.join(pickle_save_loc, "policy.obj"), "rb") + policy_net = pickle.load(filehandler) + + # Load observation variables + filehandler = open(os.path.join(pickle_save_loc, "policy.obj"), "rb") + obs_net = pickle.load(filehandler) + + return policy_net, obs_net diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/game_object.py b/mava/utils/environments/RoboCup_env/robocup_utils/game_object.py new file mode 100755 index 000000000..5b6700664 --- /dev/null +++ b/mava/utils/environments/RoboCup_env/robocup_utils/game_object.py @@ -0,0 +1,193 @@ +# type: ignore +class GameObject: + """ + Root class for all percievable objects in the world model. + """ + + def __init__(self, distance, direction): + """ + All objects have a distance and direction to the player, at a minimum. + """ + + self.distance = distance + self.direction = direction + + +class Line(GameObject): + """ + Represents a line on the soccer field. + """ + + def __init__(self, distance, direction, line_id): + self.line_id = line_id + + GameObject.__init__(self, distance, direction) + + +class Goal(GameObject): + """ + Represents a goal object on the field. + """ + + def __init__(self, distance, direction, goal_id): + self.goal_id = goal_id + + GameObject.__init__(self, distance, direction) + + +class Flag(GameObject): + """ + A flag on the field. Can be used by the agent to determine its position. + """ + + # a dictionary mapping all flag_ids to their on-field (x, y) coordinates + # TODO: Add real values form code here and do not use estimates. + # TODO: these are educated guesses based on Figure 4.2 in the documentation. + # where would one find the actual coordinates, besides in the server + # code? + # Location: + # https://github.com/rcsoccersim/rcssserver/blob/master/src/landmarkreader.cpp + # https://rcsoccersim.github.io/manual/soccerserver.html Fig 4.2 + + pitch_x = 52.5 + pitch_y = 34.0 + outside_add = 5 + goal_y = 7.01 + pen_x = 36.0 + pen_y = 20.16 + + out_x = pitch_x + outside_add + out_y = pitch_y + outside_add + + FLAG_COORDS = { + # perimiter flags + # center flag + "c": (0, 0), + "ct": (0, pitch_y), + "cb": (0, -pitch_y), + # field boundary flags (on boundary lines) + "r": (pitch_x, 0), + "rt": (pitch_x, pitch_y), + "rb": (pitch_x, -pitch_y), + "l": (-pitch_x, 0), + "lt": (-pitch_x, pitch_y), + "lb": (-pitch_x, -pitch_y), + # goal flags ('t' and 'b' flags can change based on server parameter + # 'goal_width', but we leave their coords as the default values. + # TODO: make goal flag coords dynamic based on server_params + "grb": (pitch_x, -goal_y), + "gr": (pitch_x, 0), + "grt": (pitch_x, goal_y), + "glb": (-pitch_x, -goal_y), + "gl": (-pitch_x, 0), + "glt": (-pitch_x, goal_y), + # penalty flags + "prb": (pen_x, -pen_y), + "prc": (pen_x, 0), + "prt": (pen_x, pen_y), + "plb": (-pen_x, -pen_y), + "plc": (-pen_x, 0), + "plt": (-pen_x, pen_y), + "t0": (0, out_y), + "tr10": (10, out_y), + "tr20": (20, out_y), + "tr30": (30, out_y), + "tr40": (40, out_y), + "tr50": (50, out_y), + "tl10": (-10, out_y), + "tl20": (-20, out_y), + "tl30": (-30, out_y), + "tl40": (-40, out_y), + "tl50": (-50, out_y), + "b0": (0, -out_y), + "br10": (10, -out_y), + "br20": (20, -out_y), + "br30": (30, -out_y), + "br40": (40, -out_y), + "br50": (50, -out_y), + "bl10": (-10, -out_y), + "bl20": (-20, -out_y), + "bl30": (-30, -out_y), + "bl40": (-40, -out_y), + "bl50": (-50, -out_y), + "r0": (out_x, 0), + "rt10": (out_x, 10), + "rt20": (out_x, 20), + "rt30": (out_x, 30), + "rb10": (out_x, -10), + "rb20": (out_x, -20), + "rb30": (out_x, -30), + "l0": (-out_x, 0), + "lt10": (-out_x, 10), + "lt20": (-out_x, 20), + "lt30": (-out_x, 30), + "lb10": (-out_x, -10), + "lb20": (-out_x, -20), + "lb30": (-out_x, -30), + } + + def __init__(self, distance, direction, flag_id): + """ + Adds a flag id for this field object. Every flag has a unique id. + """ + + self.flag_id = flag_id + + GameObject.__init__(self, distance, direction) + + +class MobileObject(GameObject): + """ + Represents objects that can move. + """ + + def __init__(self, distance, direction, dist_change, dir_change, speed): + """ + Adds variables for distance and direction deltas. + """ + + self.dist_change = dist_change + self.dir_change = dir_change + self.speed = speed + + GameObject.__init__(self, distance, direction) + + +class Ball(MobileObject): + """ + A spcial instance of a mobile object representing the soccer ball. + """ + + def __init__(self, distance, direction, dist_change, dir_change, speed): + MobileObject.__init__(self, distance, direction, dist_change, dir_change, speed) + + +class Player(MobileObject): + """ + Represents a friendly or enemy player in the game. + """ + + def __init__( + self, + distance, + direction, + dist_change, + dir_change, + speed, + team, + side, + uniform_number, + body_direction, + neck_direction, + ): + """ + Adds player-specific information to a mobile object. + """ + + self.team = team + self.side = side + self.uniform_number = uniform_number + self.body_direction = body_direction + self.neck_direction = neck_direction + + MobileObject.__init__(self, distance, direction, dist_change, dir_change, speed) diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/handler.py b/mava/utils/environments/RoboCup_env/robocup_utils/handler.py new file mode 100755 index 000000000..052f0793f --- /dev/null +++ b/mava/utils/environments/RoboCup_env/robocup_utils/handler.py @@ -0,0 +1,706 @@ +# type: ignore +import collections +import queue + +from mava.utils.environments.RoboCup_env.robocup_utils import ( + game_object, + message_parser, + sp_exceptions, +) +from mava.utils.environments.RoboCup_env.robocup_utils.player_world_model import ( + WorldModel, +) + +# import time + + +# from multiprocessing import Queue as queue + + +# should we print messages received from the server? +PRINT_SERVER_MESSAGES = False + +# should we print commands sent to the server? +PRINT_SENT_COMMANDS = False + + +class MessageHandler: + """ + Handles all incoming messages from the server. Parses their data and puts + it into the given WorldModel. + + All '_handle_*' functions deal with their appropriate message types + as received from a server. This allows adding a message handler to be as + simple as adding a new '_handle_*' function to this object. + """ + + # an inner class used for creating named tuple 'hear' messages + Message = collections.namedtuple("Message", "time sender message") + + def __init__(self, world_model): + self.wm = world_model + + def handle_message(self, msg): + """ + Takes a raw message direct from the server, parses it, and stores its + data in the world and body model objects given at init. Returns the + type of message received. + """ + + # get all the expressions contained in the given message + parsed = message_parser.parse(msg) + + if parsed is not None: + if PRINT_SERVER_MESSAGES: + print(parsed[0] + ":", parsed[1:], "\n") + + # this is the name of the function that should be used to handle + # this message type. we pull it from this object dynamically to + # avoid having a huge if/elif/.../else statement. + + if parsed[0] != "ok" and parsed[0] != "think": + msg_func = "_handle_%s" % parsed[0] + + if hasattr(self, msg_func): + # call the appropriate function with this message + getattr(self, msg_func).__call__(parsed) + + # throw an exception if we don't know about the given message type + else: + m = "Can't handle message type '%s', function '%s' not found." + raise sp_exceptions.MessageTypeError(m % (parsed[0], msg_func)) + + # return the type of message received + return parsed[0] + else: + return parsed + + def _handle_see(self, msg): # noqa: C901 + """ + Parses visual information in a message and turns it into useful data. + + This comes to us as a list of lists. Each list contains another list as + its first element, the contents of which describe a particular object. + The other items of the list are data pertaining to the object. We parse + each list into its own game object, then insert those game objects into + the world model. + """ + + # the simulation cycle of the soccer server + # TODO: we should probably use this somewhere... + # sim_time = msg[1] + + # store new values before changing those in the world model. all new + # values replace those in the world model at the end of parsing. + new_ball = None + new_flags = [] + new_goals = [] + new_lines = [] + new_players = [] + + # iterate over all the objects given to us in the last see message + for obj in msg[2:]: + name = obj[0] + members = obj[1:] + + # get basic information from the object. different numbers of + # parameters (inconveniently) specify different types and + # arrangements of data received for the object. + + # default values for object data + distance = None + direction = None + dist_change = None + dir_change = None + body_dir = None + neck_dir = None + + # a single item object means only direction + if len(members) == 1: + direction = members[0] + + # objects with more items follow a regular pattern + elif len(members) >= 2: + distance = members[0] + direction = members[1] + + # include delta values if present + if len(members) >= 4: + dist_change = members[2] + dir_change = members[3] + + # include body/neck values if present + if len(members) >= 6: + body_dir = members[4] + neck_dir = members[5] + + # parse flags + if name[0] == "f": + # since the flag's name sometimes contains a number, the parser + # recognizes it as such and converts it into an int. it's + # always the last item when it's a number, so we stringify the + # last item of the name to convert any numbers back. + name[-1] = str(name[-1]) + + # the flag's id is its name's members following the f as a string + flag_id = "".join(name[1:]) + + new_flags.append(game_object.Flag(distance, direction, flag_id)) + + # parse players + elif name[0] == "p": + # extract any available information from the player object's name + teamname = None + uniform_number = None + + if len(name) >= 2: + teamname = name[1] + if len(name) >= 3: + uniform_number = name[2] + # if len(name) >= 4: + # position = name[3] + + # figure out the player's side + side = None + if teamname is not None: + # if they're on our team, they're on our side + if teamname == self.wm.teamname: + side = self.wm.side + # otherwise, set side to the other team's side + else: + if self.wm.side == WorldModel.SIDE_L: + side = WorldModel.SIDE_R + else: + side = WorldModel.SIDE_L + + # calculate player's speed + speed = None + # TODO: calculate player's speed! + + new_players.append( + game_object.Player( + distance, + direction, + dist_change, + dir_change, + speed, + teamname, + side, + uniform_number, + body_dir, + neck_dir, + ) + ) + + # parse goals + elif name[0] == "g": + # see if we know which side's goal this is + goal_id = None + if len(name) > 1: + goal_id = name[1] + + new_goals.append(game_object.Goal(distance, direction, goal_id)) + + # parse lines + elif name[0] == "l": + # see if we know which line this is + line_id = None + if len(name) > 1: + line_id = name[1] + + new_lines.append(game_object.Line(distance, direction, line_id)) + + # parse the ball + elif name[0] == "b": + # TODO: handle speed! + new_ball = game_object.Ball( + distance, direction, dist_change, dir_change, None + ) + + # object very near to but not viewable by the player are 'blank' + + # the out-of-view ball + elif name[0] == "B": + new_ball = game_object.Ball(None, None, None, None, None) + + # an out-of-view flag + elif name[0] == "F": + new_flags.append(game_object.Flag(None, None, None)) + + # an out-of-view goal + elif name[0] == "G": + new_goals.append(game_object.Goal(None, None, None)) + + # an out-of-view player + elif name[0] == "P": + new_players.append( + game_object.Player( + None, None, None, None, None, None, None, None, None, None + ) + ) + + # an unhandled object type + else: + raise ValueError("Unknown object: '" + str(obj) + "'") + + # tell the WorldModel to update any internal variables based on the + # newly gleaned information. + self.wm.process_new_info(new_ball, new_flags, new_goals, new_players, new_lines) + + def _handle_see_global(self, msg): + """ + Parses global visual information in a message and turns it into useful data. + + This comes to us as a list of lists. Each list contains another list as + its first element, the contents of which describe a particular object. + The other items of the list are data pertaining to the object. We parse + each list into its own game object, then insert those game objects into + the world model. + """ + + # the simulation cycle of the soccer server + # print("msg: ", msg) + # sim_time = msg[1] + + # store new values before changing those in the world model. all new + # values replace those in the world model at the end of parsing. + ball = None + goals = [] + players = [] + + # iterate over all the objects given to us in the last see message + for obj in msg[2:]: + name = obj[0] + info = obj[1:] + + # parse players + if name[0] == "p": + assert len(name) == 3 + teamname = name[1] + uniform_number = name[2] + + if len(info) == 6: + x, y, delta_x, delta_y, body_angle, neck_angle = info + elif len(info) == 7: + # TODO: Figure out what this extra is + x, y, delta_x, delta_y, body_angle, neck_angle, extra = info + assert extra == "t" + else: + raise NotImplementedError("Info size to large: ", len(info)) + + players.append( + { + "teamname": teamname, + "uniform_number": uniform_number, + "coords": (x, y), + "delta_coords": (delta_x, delta_y), + "body_angle": body_angle, + "neck_angle": neck_angle, + } + ) + + # parse goals + elif name[0] == "g": + assert len(name) == 2 + assert len(info) == 2 + + goal_side = name[1] + x, y = info + + goals.append({"side": goal_side, "coords": (x, y)}) + + # parse the ball + elif name[0] == "b": + assert len(name) == 1 + assert len(info) == 4 + + x, y, delta_x, delta_y = info + ball = {"coords": (x, y), "delta_coords": (delta_x, delta_y)} + else: + raise ValueError("Unknown object: '" + str(obj) + "'") + + # tell the WorldModel to update any internal variables based on the + # newly gleaned information. + self.wm.process_new_info(ball, goals, players) + self.wm.new_data = True + + def _handle_hear(self, msg): + """ + Parses audible information and turns it into useful information. + """ + + if str(msg[1]).isdigit(): + # Player + time_recvd = msg[1] # server cycle when message was heard + sender = msg[2] # name (or direction) of who sent the message + else: + # Trainer + time_recvd = msg[2] # server cycle when message was heard + sender = msg[1] # name (or direction) of who sent the message + + message = msg[3] # message string + # if message.startswith("goal_"): + # print("time_recvd: ", time_recvd) + # print("sender: ", sender) + # print("message: ", message) + + # ignore messages sent by self (NOTE: would anybody really want these?) + if sender == "self": + return + + # handle messages from the referee, to update game state + elif sender == "referee": + # change the name for convenience's sake + mode = message + + # deal first with messages that shouldn't be passed on to the agent + + # keep track of scores by setting them to the value reported. this + # precludes any possibility of getting out of sync with the server. + if mode.startswith(WorldModel.RefereeMessages.GOAL_L): + # split off the number, the part after the rightmost '_' + self.wm.score_l = int(mode.rsplit("_", 1)[1]) + return + elif mode.startswith(WorldModel.RefereeMessages.GOAL_R): + self.wm.score_r = int(mode.rsplit("_", 1)[1]) + return + + # ignore these messages, but pass them on to the agent. these don't + # change state but could still be useful. + elif ( + mode == WorldModel.RefereeMessages.FOUL_L + or mode == WorldModel.RefereeMessages.FOUL_R + or mode == WorldModel.RefereeMessages.GOALIE_CATCH_BALL_L + or mode == WorldModel.RefereeMessages.GOALIE_CATCH_BALL_R + or mode == WorldModel.RefereeMessages.TIME_UP_WITHOUT_A_TEAM + or mode == WorldModel.RefereeMessages.HALF_TIME + or mode == WorldModel.RefereeMessages.TIME_EXTENDED + ): + + # messages are named 3-tuples of (time, sender, message) + ref_msg = self.Message(time_recvd, sender, message) + + # pass this message on to the player and return + self.wm.last_message = ref_msg + return + + # deal with messages that indicate game mode, but that the agent + # doesn't need to know about specifically. + else: + # set the mode to the referee reported mode string + self.wm.play_mode = mode + return + + # all other messages are treated equally + else: + # update the model's last heard message + new_msg = MessageHandler.Message(time_recvd, sender, message) + self.wm.prev_message = new_msg + + def _handle_sense_body(self, msg): + """ + Deals with the agent's body model information. + """ + + # update the body model information when received. each piece of info is + # a list with the first item as the name of the data, and the rest as + # the values. + for info in msg[2:]: + name = info[0] + values = info[1:] + + if name == "view_mode": + self.wm.view_quality = values[0] + self.wm.view_width = values[1] + elif name == "stamina": + self.wm.stamina = values[0] + self.wm.effort = values[1] + elif name == "speed": + self.wm.speed_amount = values[0] + self.wm.speed_direction = values[1] + elif name == "head_angle": + self.wm.neck_direction = values[0] + + # these update the counts of the basic actions taken + elif name == "kick": + self.wm.kick_count = values[0] + elif name == "dash": + self.wm.dash_count = values[0] + elif name == "turn": + self.wm.turn_count = values[0] + elif name == "say": + self.wm.say_count = values[0] + elif name == "turn_neck": + self.wm.turn_neck_count = values[0] + elif name == "catch": + self.wm.catch_count = values[0] + elif name == "move": + self.wm.move_count = values[0] + elif name == "change_view": + self.wm.change_view_count = values[0] + + # we leave unknown values out of the equation + else: + pass + self.wm.new_data = True + + def _handle_change_player_type(self, msg): + """ + Handle player change messages. + """ + + def _handle_player_param(self, msg): + """ + Deals with player parameter information. + """ + + def _handle_player_type(self, msg): + """ + Handles player type information. + """ + + def _handle_server_param(self, msg): + """ + Stores server parameter information. + """ + + # each list is two items: a value name and its value. we add them all + # to the ServerParameters class inside WorldModel programmatically. + for param in msg[1:]: + # put all [param, value] pairs into the server settings object + # by setting the attribute programmatically. + if len(param) != 2: + continue + + # the parameter and its value + key = param[0] + value = param[1] + + # set the attribute if it was accounted for, otherwise alert the user + if hasattr(self.wm.server_parameters, key): + setattr(self.wm.server_parameters, key, value) + else: + raise AttributeError( + "Couldn't find a matching parameter in " + "ServerParameters class: '%s'" % key + ) + + def _handle_init(self, msg): + """ + Deals with initialization messages sent by the server. + """ + if len(msg) > 2: + # Player message + # set the player's uniform number, side, and the play mode as returned + # by the server directly after connecting. + side = msg[1] + uniform_number = msg[2] + play_mode = msg[3] + + self.wm.side = side + self.wm.uniform_number = uniform_number + self.wm.play_mode = play_mode + + def _handle_error(self, msg): + """ + Deals with error messages by raising them as exceptions. + """ + + m = "Server returned an error: '%s'" % msg[1] + raise sp_exceptions.SoccerServerError(m) + + def _handle_warning(self, msg): + """ + Deals with warnings issued by the server. + """ + + m = "Server issued a warning: '%s'" % msg[1] + print(sp_exceptions.SoccerServerWarning(m)) + + +class ActionHandler: + """ + Provides facilities for sending commands to the soccer server. Contains all + possible commands that can be sent, as well as everything needed to send + them. All basic command methods are aliases for placing that command in the + internal queue and sending it at the appropriate time. + """ + + class CommandType: + """ + A static class that defines all basic command types. + """ + + # whether the command can only be sent once per cycle or not + TYPE_PRIMARY = 0 + TYPE_SECONDARY = 1 + + # command types corresponding to valid commands to send to the server + CATCH = "catch" + CHANGE_VIEW = "change_view" + DASH = "dash" + KICK = "kick" + MOVE = "move" + SAY = "say" + SENSE_BODY = "sense_body" + TURN = "turn" + TURN_NECK = "turn_neck" + + def __init__(self): + raise NotImplementedError( + "Can't instantiate a CommandType, access " + "its members through ActionHandler instead." + ) + + # a command for our queue containing an id and command text + Command = collections.namedtuple("Command", "cmd_type text") + + def __init__(self, server_socket): + """ + Save the socket that connects us to the soccer server to allow us to + send it commands. + """ + + self.sock = server_socket + + # this contains all requested actions for the current and future cycles + self.q = queue.Queue() + + def send_commands(self): + """ + Sends all the enqueued commands. + """ + + # we only send the most recent primary command + primary_cmd = None + + # dequeue all enqueued commands and send them + while 1: + try: + cmd = self.q.get_nowait() + except queue.Empty: + break + + # save the most recent primary command and send it at the very end + if cmd.cmd_type == ActionHandler.CommandType.TYPE_PRIMARY: + primary_cmd = cmd + # send other commands immediately + else: + if PRINT_SENT_COMMANDS: + print("sent:", cmd.text, "\n") + + self.sock.send(cmd.text) + + # indicate that we finished processing a command + self.q.task_done() + + # send the saved primary command, if there was one + if primary_cmd is not None: + if PRINT_SENT_COMMANDS: + print("sent:", primary_cmd.text, "\n") + + self.sock.send(primary_cmd.text) + # self.__sock.send("(turn 30)\x00", append_null_terminator=False) + # time.sleep(0.01) + self.sock.send("(done)") + + def move(self, x, y): + """ + Teleport the player to some location on the field. Only works before + play begins, ie. pre-game, before starting again at half-time, and + post-goal. If an invalid location is specified, player is teleported to + a random location on their side of the field. + """ + + msg = "(move {:.10f} {:.10f})".format(x, y) + + # create the command object for insertion into the queue + cmd_type = ActionHandler.CommandType.TYPE_PRIMARY + cmd = ActionHandler.Command(cmd_type, msg) + + self.q.put(cmd) + + def turn(self, relative_degrees): + """ + Turns the player's body some number of degrees relative to its current + angle. + """ + + # disallow unreasonable turning + assert -180 <= relative_degrees <= 180 + + msg = "(turn %.10f)" % relative_degrees + + # create the command object for insertion into the queue + cmd_type = ActionHandler.CommandType.TYPE_PRIMARY + cmd = ActionHandler.Command(cmd_type, msg) + + self.q.put(cmd) + + def dash(self, power): + """ + Accelerate the player in the direction its body currently faces. + """ + + msg = "(dash %.10f)" % power + + # create the command object for insertion into the queue + cmd_type = ActionHandler.CommandType.TYPE_PRIMARY + cmd = ActionHandler.Command(cmd_type, msg) + + self.q.put(cmd) + + def kick(self, power, relative_direction): + """ + Accelerates the ball with the given power in the given direction, + relative to the current direction of the player's body. + """ + msg = "(kick {:.10f} {:.10f})".format(power, relative_direction) + + # create the command object for insertion into the queue + cmd_type = ActionHandler.CommandType.TYPE_PRIMARY + cmd = ActionHandler.Command(cmd_type, msg) + + self.q.put(cmd) + + def catch(self, relative_direction): + """ + Attempts to catch the ball and put it in the goalie's hand. The ball + remains there until the goalie kicks it away. + """ + + msg = "(catch %.10f)" % relative_direction + + # create the command object for insertion into the queue + cmd_type = ActionHandler.CommandType.TYPE_PRIMARY + cmd = ActionHandler.Command(cmd_type, msg) + + self.q.put(cmd) + + def say(self, message): + """ + Says something to other players on the field. Messages are restricted + in length, but that isn't enforced here. + """ + + msg = "(say %s)" % message + + # create the command object for insertion into the queue + cmd_type = ActionHandler.CommandType.TYPE_SECONDARY + cmd = ActionHandler.Command(cmd_type, msg) + + self.q.put(cmd) + + def turn_neck(self, relative_direction): + """ + Rotates the player's neck relative to its previous direction. Neck + angle is relative to body angle. + """ + + msg = "(turn_neck %.10f)" % relative_direction + + # create the command object for insertion into the queue + cmd_type = ActionHandler.CommandType.TYPE_SECONDARY + cmd = ActionHandler.Command(cmd_type, msg) + + self.q.put(cmd) diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/license.txt b/mava/utils/environments/RoboCup_env/robocup_utils/license.txt new file mode 100755 index 000000000..cc9a2a2f8 --- /dev/null +++ b/mava/utils/environments/RoboCup_env/robocup_utils/license.txt @@ -0,0 +1,19 @@ +Copyright (c) 2010 Jason T. Bradshaw (http://jasontbradshaw.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/message_parser.py b/mava/utils/environments/RoboCup_env/robocup_utils/message_parser.py new file mode 100755 index 000000000..c8eb24e20 --- /dev/null +++ b/mava/utils/environments/RoboCup_env/robocup_utils/message_parser.py @@ -0,0 +1,164 @@ +# type: ignore +import re + +# used to convert server value strings into actual python values +pattern_int = re.compile(r"^-?\d+$") +pattern_float = re.compile(r"^-?\d*[.]\d+$") + + +def parse(text): # noqa: C901 + """ + This is what amounts to a simple lisp parser for turning the server's + returned messages into an intermediate format that's easier to deal + with than the raw (often poorly formatted) text. + + This parses generally, taking any lisp-like string and turning it into a + list of nested lists, where each nesting indicates a parenthesized + expression. holding multiple top-level parenthesized expressions. Ex: "(baz + 0 (foo 1.5))" becomes ['baz', 0, ['foo', 1.5]]. + """ + + text = text.decode() # Added for python 3 + + # make sure all of our parenthesis match + if text.count("(") == text.count(")"): + # result acts as a stack that holds the strings grouped by nested parens. + # result will only ever contain one item, the first level of indenting + # encountered. this is because the server (hopefully!) only ever sends one + # message at a time. + # TODO: make sure that the server only ever sends one message at a time! + result = [] + + # the current level of indentation, used to append chars to correct level + indent = 0 + + # the non-indenting characters we find. these are kept in a buffer until + # we indent or dedent, and then are added to the current indent level all + # at once, for efficiency. + s = [] + + # whether we're currently in the middle of parsing a string + in_string = False + + # the last character seen, None to begin with + prev_c = None + + # raise ValueError("Message text has unmatching parenthesis: ", text) + for c in text: + # prevent parsing parens when inside a string (also ignores escaped + # '"'s as well). doesn't add the quotes so we don't have to recognize + # that value as a string via a regex. + if c == '"' and prev_c != "\\": + in_string = not in_string + + # we only indent/dedent if not in the middle of parsing a string + elif c == "(" and not in_string: + # recurse into current level of nesting + cur = result + for i in range(indent): + cur = cur[-1] + + # add our buffered string onto the previous level, then clear it + # for the next. + if len(s) > 0: + val = "".join(s) + + # try to convert our string into a value and append it to our + # list. failing that, simply append it as an attribute name. + if pattern_int.match(val): + cur.append(int(val)) + elif pattern_float.match(val): + cur.append(float(val)) + else: + cur.append(val) + + s = [] + + # append a new level of nesting to our list + cur.append([]) + + # increase the indent level so we can get back to this level later + indent += 1 + + elif c == ")" and not in_string: + # append remaining string buffer before dedenting + if len(s) > 0: + cur = result + for i in range(indent): + cur = cur[-1] + + val = "".join(s) + + # try to convert our string into a value and append it to our + # list. failing that, simply append it as an attribute name. + if pattern_int.match(val): + cur.append(int(val)) + elif pattern_float.match(val): + cur.append(float(val)) + else: + cur.append(val) + + s = [] + + # we finished with one level, so dedent back to the previous one + indent -= 1 + + # append non-space characters to the buffer list. spaces are delimiters + # for expressions, hence are special. + elif c != " ": + # append the current string character to the buffer list. + s.append(c) + + # we separate expressions by spaces + elif c == " " and len(s) > 0: + cur = result + for i in range(indent): + cur = cur[-1] + + val = "".join(s) + + # try to convert our string into a value and append it to our + # list. failing that, simply append it as an attribute name. + if pattern_int.match(val): + cur.append(int(val)) + elif pattern_float.match(val): + cur.append(float(val)) + else: + cur.append(val) + + s = [] + + # save the previous character. used to determine if c is escaped + prev_c = c + + # this returns the first and only message found. result is a list simply + # because it makes adding new levels of indentation simpler as it avoids + # the 'if result is None' corner case that would come up when trying to + # append the first '('. + return result[0] + else: + # print("Ignored messages because of unequal parenthesis") + return None + + +# if __name__ == "__main__": +# import sys + +# # interactive mode if any args were specified +# if len(sys.argv) > 2: +# from pprint import pprint + +# with open(sys.argv[1], "r") as f: +# for line in f: +# print("raw message:\n", line.strip()) +# print() +# print("parsed message:") +# pprint(parse(line.strip())) +# print("----") +# raw_input() +# print() +# else: +# # just parse the message file +# with open(sys.argv[1], "r") as f: +# for line in f: +# parse(line.strip()) diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/player_world_model.py b/mava/utils/environments/RoboCup_env/robocup_utils/player_world_model.py new file mode 100755 index 000000000..b6ac5942c --- /dev/null +++ b/mava/utils/environments/RoboCup_env/robocup_utils/player_world_model.py @@ -0,0 +1,697 @@ +# type: ignore +import math + +import numpy as np + +from mava.utils.environments.RoboCup_env.robocup_utils.game_object import Flag +from mava.utils.environments.RoboCup_env.robocup_utils.util_functions import ( + rad_rot_to_xy, +) + +true_flag_coords = Flag.FLAG_COORDS + + +def rotate(origin, point, angle): + """ + Rotate a point counterclockwise by a given angle around a given origin. + + The angle should be given in radians. + """ + + # print("origin: ", origin) + + ox, oy = origin + px, py = point + + qx = ox + math.cos(angle) * (px - ox) - math.sin(angle) * (py - oy) + qy = oy + math.sin(angle) * (px - ox) + math.cos(angle) * (py - oy) + return qx, qy + + +def rel_to_abs_coords(obj): + obj_x = obj.distance * math.sin(-obj.direction * math.pi / 180) + obj_y = -obj.distance * math.cos(-obj.direction * math.pi / 180) + return obj_x, obj_y + + +class WorldModel: + """ + Holds and updates the model of the world as known from current and past + data. + """ + + # constants for team sides + SIDE_L = "l" + SIDE_R = "r" + + class PlayModes: + """ + Acts as a static class containing variables for all valid play modes. + The string values correspond to what the referee calls the game modes. + """ + + BEFORE_KICK_OFF = "before_kick_off" + PLAY_ON = "play_on" + TIME_OVER = "time_over" + KICK_OFF_L = "kick_off_l" + KICK_OFF_R = "kick_off_r" + KICK_IN_L = "kick_in_l" + KICK_IN_R = "kick_in_r" + FREE_KICK_L = "free_kick_l" + FREE_KICK_R = "free_kick_r" + CORNER_KICK_L = "corner_kick_l" + CORNER_KICK_R = "corner_kick_r" + GOAL_KICK_L = "goal_kick_l" + GOAL_KICK_R = "goal_kick_r" + DROP_BALL = "drop_ball" + OFFSIDE_L = "offside_l" + OFFSIDE_R = "offside_r" + + def __init__(self): + raise NotImplementedError( + "Don't instantiate a PlayModes class," + " access it statically through WorldModel instead." + ) + + class RefereeMessages: + """ + Static class containing possible non-mode messages sent by a referee. + """ + + # these are referee messages, not play modes + FOUL_L = "foul_l" + FOUL_R = "foul_r" + GOALIE_CATCH_BALL_L = "goalie_catch_ball_l" + GOALIE_CATCH_BALL_R = "goalie_catch_ball_r" + TIME_UP_WITHOUT_A_TEAM = "time_up_without_a_team" + TIME_UP = "time_up" + HALF_TIME = "half_time" + TIME_EXTENDED = "time_extended" + + # these are special, as they are always followed by '_' and an int of + # the number of goals scored by that side so far. these won't match + # anything specifically, but goals WILL start with these. + GOAL_L = "goal_l_" + GOAL_R = "goal_r_" + + def __init__(self): + raise NotImplementedError( + "Don't instantiate a RefereeMessages class," + " access it statically through WorldModel instead." + ) + + def __init__(self, action_handler): + """ + Create the world model with default values and an ActionHandler class it + can use to complete requested actions. + """ + # we use the action handler to complete complex commands + self.ah = action_handler + + # these variables store all objects for any particular game step + self.ball = None + self.flags = [] + self.goals = [] + self.players = [] + self.lines = [] + + # the default position of this player, its home position + self.home_point = (None, None) + + # scores for each side + self.score_l = 0 + self.score_r = 0 + + # the name of the agent's team + self.teamname = None + + # handle player information, like uniform number and side + self.side = None + self.uniform_number = None + + # stores the most recent message heard + self.last_message = None + + # the mode the game is currently in (default to not playing yet) + self.play_mode = WorldModel.PlayModes.BEFORE_KICK_OFF + + # Obs updated + # self.obs_updated = False + + # body state + self.view_width = None + self.view_quality = None + self.stamina = None + self.effort = None + self.speed_amount = None + self.speed_direction = None + self.neck_direction = None + self.new_data = False + + # counts of actions taken so far + self.kick_count = None + self.dash_count = None + self.turn_count = None + self.say_count = None + self.turn_neck_count = None + self.catch_count = None + self.move_count = None + self.change_view_count = None + + # apparent absolute player coordinates and neck/body directions + self.abs_coords = (None, None) + self.abs_body_dir = None + self.abs_neck_dir = None + + # create a new server parameter object for holding all server params + self.server_parameters = ServerParameters() + + # def triangulate_direction(self, flags, flag_dict): + # """ + # Determines absolute view angle for the player given a list of visible + # flags. We find the absolute angle to each flag, then return the average + # of those angles. Returns 'None' if no angle could be determined. + # """ + # + # # average all flag angles together and save that as absolute angle + # abs_angles = [] + # for f in self.flags: + # # if the flag has useful data, consider it + # if f.distance is not None and f.flag_id in flag_dict: + # flag_point = flag_dict[f.flag_id] + # abs_dir = self.angle_between_points(self.abs_coords, flag_point) + # abs_angles.append(abs_dir) + # + # # return the average if available + # if len(abs_angles) > 0: + # return sum(abs_angles) / len(abs_angles) + # + # return None + + # def triangulate_position(self, flags, flag_dict, angle_step=36): + # """ + # Returns a best-guess position based on the triangulation via distances + # to all flags in the flag list given. 'angle_step' specifies the + # increments between angles for projecting points onto the circle + # surrounding a flag. + # """ + # + # points = [] + # for f in flags: + # # skip flags without distance information or without a specific id + # if f.distance is None or f.flag_id not in flag_dict: + # continue + # + # # generate points every 'angle_step' degrees around each flag, + # # discarding those off-field. + # for i in range(0, 360, angle_step): + # dy = f.distance * math.sin(math.radians(i)) + # dx = f.distance * math.cos(math.radians(i)) + # + # fcoords = flag_dict[f.flag_id] + # new_point = (fcoords[0] + dx, fcoords[1] + dy) + # + # # skip points with a coordinate outside the play boundaries + # if (new_point[0] > 60 or new_point[0] < -60 or + # new_point[1] < -40 or new_point[1] > 40): + # continue + # + # # add point to list of all points + # points.append(new_point) + # + # # get the dict of clusters mapped to centers + # clusters = self.cluster_points(points) + # + # # return the center that has the most points as an approximation to our + # # absolute position. + # center_with_most_points = (0, 0) + # max_points = 0 + # for c in clusters: + # if len(clusters[c]) > max_points: + # center_with_most_points = c + # max_points = len(clusters[c]) + # + # return center_with_most_points + + # def cluster_points(self, points, num_cluster_iterations=15): + # """ + # Cluster a set of points into a dict of centers mapped to point lists. + # Uses the k-means clustering algorithm with random initial centers and a + # fixed number of iterations to find clusters. + # """ + # + # # generate initial random centers, ignoring identical ones + # centers = set([]) + # for i in range(int(math.sqrt(len(points) / 2))): + # # a random coordinate somewhere within the field boundaries + # rand_center = (random.randint(-55, 55), random.randint(-35, 35)) + # centers.add(rand_center) + # + # # cluster for some iterations before the latest result + # latest = {} + # cur = {} + # for i in range(num_cluster_iterations): + # # initialze cluster lists + # for c in centers: + # cur[c] = [] + # + # # put every point into the list of its nearest cluster center + # for p in points: + # # get a list of (distance to center, center coords) tuples + # c_dists = map(lambda c: (self.euclidean_distance(c, p), c), + # centers) + # + # # find the smallest tuple's c (second item) + # nearest_center = min(c_dists)[1] + # + # # add point to this center's cluster + # cur[nearest_center].append(p) + # + # # recompute centers + # new_centers = set([]) + # for cluster in cur.values(): + # tot_x = 0 + # tot_y = 0 + # + # # remove empty clusters + # if len(cluster) == 0: + # continue + # + # # generate average center of cluster + # for p in cluster: + # tot_x += p[0] + # tot_y += p[1] + # + # # get average center and add to new centers set + # ave_center = (tot_x / len(cluster), tot_y / len(cluster)) + # new_centers.add(ave_center) + # + # # move on to next iteration + # centers = new_centers + # latest = cur + # cur = {} + # + # # return latest cluster iteration + # return latest + + # def euclidean_distance(self, point1, point2): + # """ + # Returns the Euclidean distance between two points on a plane. + # """ + # + # try: + # x1 = point1[0] + # y1 = point1[1] + # x2 = point2[0] + # y2 = point2[1] + # + # return math.sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2) + # except: + # return 200 + + # def angle_between_points(self, point1, point2): + # """ + # Returns the angle from the first point to the second, assuming that + # these points exist on a plane, and that the positive x-axis is 0 degrees + # and the positive y-axis is 90 degrees. All returned angles are positive + # and relative to the positive x-axis. + # """ + # + # try: + # x1 = point1[0] + # y1 = point1[1] + # x2 = point2[0] + # y2 = point2[1] + # + # # get components of vector between the points + # dx = x2 - x1 + # dy = y2 - y1 + # + # # return the angle in degrees + # a = math.degrees(math.atan2(dy, dx)) + # if a < 0: + # a = 360 + a + # + # return a + # except: + # return 0 + + def __calculate_abs_info(self): + if self.flags is not None: + rel_coords = [] + true_coords = [] + for flag in self.flags: + if ( + flag is not None + and flag.direction is not None + and flag.distance is not None + and flag.flag_id is not None + ): + obs_coords = rel_to_abs_coords(flag) + rel_coords.append(obs_coords) + true_coords.append(true_flag_coords[flag.flag_id]) + + for goal in self.goals: + if ( + goal is not None + and goal.direction is not None + and goal.distance is not None + and goal.goal_id is not None + ): + obs_coords = rel_to_abs_coords(goal) + rel_coords.append(obs_coords) + true_coords.append(true_flag_coords[goal.goal_id]) + + if len(true_coords) > 1 and len(rel_coords) > 1: + # Get means + rel_mean = np.mean(rel_coords, axis=0) + true_mean = np.mean(true_coords, axis=0) + + mean_off = rel_mean - true_mean + + # Get rotation + rel_de_mean = np.array(rel_coords) - rel_mean + true_de_mean = np.array(true_coords) - true_mean + + if len(true_de_mean) > 1: + ang_offs = np.arctan2( + true_de_mean[:, 1], true_de_mean[:, 0] + ) - np.arctan2(rel_de_mean[:, 1], rel_de_mean[:, 0]) + x, y = rad_rot_to_xy(ang_offs) + + x_mean = np.mean(x) + y_mean = np.mean(y) + + ang_offs = np.arctan2(y_mean, x_mean) + + true_agent_loc = rotate(rel_mean, (0, 0), ang_offs) - mean_off + self.abs_coords = true_agent_loc + self.abs_body_dir = (ang_offs / math.pi) * 180 + + # TODO: Is this correct? + self.abs_neck_dir = self.abs_body_dir + self.neck_direction + + def process_new_info(self, ball, flags, goals, players, lines): + """ + Update any internal variables based on the currently available + information. This also calculates information not available directly + from server-reported messages, such as player coordinates. + """ + + # update basic information + self.ball = ball + self.flags = flags + self.goals = goals + self.players = players + self.lines = lines + + self.__calculate_abs_info() + + def is_playon(self): + """ + Tells us whether it's play time + """ + return ( + self.play_mode == WorldModel.PlayModes.PLAY_ON + or self.play_mode == WorldModel.PlayModes.KICK_OFF_L + or self.play_mode == WorldModel.PlayModes.KICK_OFF_R + or self.play_mode == WorldModel.PlayModes.KICK_IN_L + or self.play_mode == WorldModel.PlayModes.KICK_IN_R + or self.play_mode == WorldModel.PlayModes.FREE_KICK_L + or self.play_mode == WorldModel.PlayModes.FREE_KICK_R + or self.play_mode == WorldModel.PlayModes.CORNER_KICK_L + or self.play_mode == WorldModel.PlayModes.CORNER_KICK_R + or self.play_mode == WorldModel.PlayModes.GOAL_KICK_L + or self.play_mode == WorldModel.PlayModes.GOAL_KICK_R + or self.play_mode == WorldModel.PlayModes.DROP_BALL + or self.play_mode == WorldModel.PlayModes.OFFSIDE_L + or self.play_mode == WorldModel.PlayModes.OFFSIDE_R + ) + + def is_before_kick_off(self): + """ + Tells us whether the game is in a pre-kickoff state. + """ + + return self.play_mode == WorldModel.PlayModes.BEFORE_KICK_OFF + + def is_kick_off_us(self): + """ + Tells us whether it's our turn to kick off. + """ + + ko_left = WorldModel.PlayModes.KICK_OFF_L + ko_right = WorldModel.PlayModes.KICK_OFF_R + + # print self.play_mode + + # return whether we're on the side that's kicking off + return ( + self.side == WorldModel.SIDE_L + and self.play_mode == ko_left + or self.side == WorldModel.SIDE_R + and self.play_mode == ko_right + ) + + def is_dead_ball_them(self): + """ + Returns whether the ball is in the other team's posession and it's a + free kick, corner kick, or kick in. + """ + + # shorthand for verbose constants + kil = WorldModel.PlayModes.KICK_IN_L + kir = WorldModel.PlayModes.KICK_IN_R + fkl = WorldModel.PlayModes.FREE_KICK_L + fkr = WorldModel.PlayModes.FREE_KICK_R + ckl = WorldModel.PlayModes.CORNER_KICK_L + ckr = WorldModel.PlayModes.CORNER_KICK_R + + # shorthand for whether left team or right team is free to act + pm = self.play_mode + free_left = pm == kil or pm == fkl or pm == ckl + free_right = pm == kir or pm == fkr or pm == ckr + + # return whether the opposing side is in a dead ball situation + if self.side == WorldModel.SIDE_L: + return free_right + else: + return free_left + + def is_ball_kickable(self): + """ + Tells us whether the ball is in reach of the current player. + """ + + # ball must be visible, not behind us, and within the kickable margin + return ( + self.ball is not None + and self.ball.distance is not None + and self.ball.distance <= self.server_parameters.kickable_margin + ) + + def get_ball_speed_max(self): + """ + Returns the maximum speed the ball can be kicked at. + """ + + return self.server_parameters.ball_speed_max + + def get_stamina(self): + """ + Returns the agent's current stamina amount. + """ + + return self.stamina + + def get_stamina_max(self): + """ + Returns the maximum amount of stamina a player can have. + """ + + return self.server_parameters.stamina_max + + def turn_body_to_object(self, obj): + """ + Turns the player's body to face a particular object. + """ + + self.ah.turn(obj.direction) + + +class ServerParameters: + """ + A storage container for all the settings of the soccer server. + """ + + def __init__(self): + """ + Initialize default parameters for a server. + """ + + self.audio_cut_dist = 50 + self.auto_mode = 0 + self.back_passes = 1 + self.ball_accel_max = 2.7 + self.ball_decay = 0.94 + self.ball_rand = 0.05 + self.ball_size = 0.085 + self.ball_speed_max = 2.7 + self.ball_stuck_area = 3 + self.ball_weight = 0.2 + self.catch_ban_cycle = 5 + self.catch_probability = 1 + self.catchable_area_l = 2 + self.catchable_area_w = 1 + self.ckick_margin = 1 + self.clang_advice_win = 1 + self.clang_define_win = 1 + self.clang_del_win = 1 + self.clang_info_win = 1 + self.clang_mess_delay = 50 + self.clang_mess_per_cycle = 1 + self.clang_meta_win = 1 + self.clang_rule_win = 1 + self.clang_win_size = 300 + self.coach = 0 + self.coach_port = 6001 + self.coach_w_referee = 0 + self.connect_wait = 300 + self.control_radius = 2 + self.dash_power_rate = 0.006 + self.drop_ball_time = 200 + self.effort_dec = 0.005 + self.effort_dec_thr = 0.3 + self.effort_inc = 0.01 + self.effort_inc_thr = 0.6 + self.effort_init = 1 + self.effort_min = 0.6 + self.forbid_kick_off_offside = 1 + self.free_kick_faults = 1 + self.freeform_send_period = 20 + self.freeform_wait_period = 600 + self.fullstate_l = 0 + self.fullstate_r = 0 + self.game_log_compression = 0 + self.game_log_dated = 1 + self.game_log_dir = "./" + self.game_log_fixed = 0 + self.game_log_fixed_name = "rcssserver" + self.game_log_version = 3 + self.game_logging = 1 + self.game_over_wait = 100 + self.goal_width = 14.02 + self.goalie_max_moves = 2 + self.half_time = 300 + self.hear_decay = 1 + self.hear_inc = 1 + self.hear_max = 1 + self.inertia_moment = 5 + self.keepaway = 0 + self.keepaway_length = 20 + self.keepaway_log_dated = 1 + self.keepaway_log_dir = "./" + self.keepaway_log_fixed = 0 + self.keepaway_log_fixed_name = "rcssserver" + self.keepaway_logging = 1 + self.keepaway_start = -1 + self.keepaway_width = 20 + self.kick_off_wait = 100 + self.kick_power_rate = 0.027 + self.kick_rand = 0 + self.kick_rand_factor_l = 1 + self.kick_rand_factor_r = 1 + self.kickable_margin = 0.7 + self.landmark_file = "~/.rcssserver-landmark.xml" + self.log_date_format = "%Y%m%d%H%M-" + self.log_times = 0 + self.max_goal_kicks = 3 + self.maxmoment = 180 + self.maxneckang = 90 + self.maxneckmoment = 180 + self.maxpower = 100 + self.minmoment = -180 + self.minneckang = -90 + self.minneckmoment = -180 + self.minpower = -100 + self.nr_extra_halfs = 2 + self.nr_normal_halfs = 2 + self.offside_active_area_size = 2.5 + self.offside_kick_margin = 9.15 + self.olcoach_port = 6002 + self.old_coach_hear = 0 + self.pen_allow_mult_kicks = 1 + self.pen_before_setup_wait = 30 + self.pen_coach_moves_players = 1 + self.pen_dist_x = 42.5 + self.pen_max_extra_kicks = 10 + self.pen_max_goalie_dist_x = 14 + self.pen_nr_kicks = 5 + self.pen_random_winner = 0 + self.pen_ready_wait = 50 + self.pen_setup_wait = 100 + self.pen_taken_wait = 200 + self.penalty_shoot_outs = 1 + self.player_accel_max = 1 + self.player_decay = 0.4 + self.player_rand = 0.1 + self.player_size = 0.3 + self.player_speed_max = 1.2 + self.player_weight = 60 + self.point_to_ban = 5 + self.point_to_duration = 20 + self.port = 6000 + self.prand_factor_l = 1 + self.prand_factor_r = 1 + self.profile = 0 + self.proper_goal_kicks = 0 + self.quantize_step = 0.1 + self.quantize_step_l = 0.01 + self.record_messages = 0 + self.recover_dec = 0.002 + self.recover_dec_thr = 0.3 + self.recover_init = 1 + self.recover_min = 0.5 + self.recv_step = 10 + self.say_coach_cnt_max = 128 + self.say_coach_msg_size = 128 + self.say_msg_size = 10 + self.send_comms = 0 + self.send_step = 150 + self.send_vi_step = 100 + self.sense_body_step = 100 + self.simulator_step = 100 + self.slow_down_factor = 1 + self.slowness_on_top_for_left_team = 1 + self.slowness_on_top_for_right_team = 1 + self.stamina_inc_max = 45 + self.stamina_max = 4000 + self.start_goal_l = 0 + self.start_goal_r = 0 + self.stopped_ball_vel = 0.01 + self.synch_micro_sleep = 1 + self.synch_mode = 0 + self.synch_offset = 60 + self.tackle_back_dist = 0.5 + self.tackle_cycles = 10 + self.tackle_dist = 2 + self.tackle_exponent = 6 + self.tackle_power_rate = 0.027 + self.tackle_width = 1 + self.team_actuator_noise = 0 + self.text_log_compression = 0 + self.text_log_dated = 1 + self.text_log_dir = "./" + self.text_log_fixed = 0 + self.text_log_fixed_name = "rcssserver" + self.text_logging = 1 + self.use_offside = 1 + self.verbose = 0 + self.visible_angle = 90 + self.visible_distance = 3 + self.wind_ang = 0 + self.wind_dir = 0 + self.wind_force = 0 + self.wind_none = 0 + self.wind_rand = 0 + self.wind_random = 0 diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/sock.py b/mava/utils/environments/RoboCup_env/robocup_utils/sock.py new file mode 100755 index 000000000..7a6f23c05 --- /dev/null +++ b/mava/utils/environments/RoboCup_env/robocup_utils/sock.py @@ -0,0 +1,46 @@ +# type: ignore +import socket + + +class Socket: + """ + Handles the barest level of UDP communication with a server in a slightly + simpler way (for our purposes) than the default socket library. + """ + + def __init__(self, host, port, bufsize=8192): + """ + host: hostname of the server we want to connect to + port: port of the server we want to connect to + """ + + self.address = (host, port) + self.bufsize = bufsize + + # the socket communication with the server takes place on (ipv4, udp) + self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + + def send(self, msg, append_null_terminator=True): + """ + Sends a message to the server. Appends a null terminator by default. + """ + + # append a null terminator if requested + if append_null_terminator: + msg = msg + "\0" + + self.sock.sendto(str.encode(msg), self.address) + + def recv(self, conform_address=True): + """ + Receives data from the given socket. Returns the data as a string. + If conform_address is True, the address the server sent its response + from replaces the address and port set at object creation. + """ + + data, address = self.sock.recvfrom(self.bufsize) + + if conform_address: + self.address = address + + return data diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/sp_exceptions.py b/mava/utils/environments/RoboCup_env/robocup_utils/sp_exceptions.py new file mode 100755 index 000000000..5d01b8eeb --- /dev/null +++ b/mava/utils/environments/RoboCup_env/robocup_utils/sp_exceptions.py @@ -0,0 +1,36 @@ +class SoccerServerError(Exception): + """ + Represents an error message returned by the soccer server. + """ + + +class SoccerServerWarning(Exception): + """ + Represents a warning message returned by the soccer server. + """ + + +class MessageTypeError(Exception): + """ + An exception for an unknown message type received from the soccer server. + """ + + +class AgentAlreadyPlayingError(Exception): + """ + Raised when a user calls an agent's play method after it has already started + playing. + """ + + +class ObjectTypeError(Exception): + """ + Raised when an unknown object type is encountered in a sense message. + """ + + +class AgentConnectionStateError(Exception): + """ + Raised when methods are called at an inappropriate time relative to the + connection state of the agent object. + """ diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/trainer.py b/mava/utils/environments/RoboCup_env/robocup_utils/trainer.py new file mode 100755 index 000000000..c086114c6 --- /dev/null +++ b/mava/utils/environments/RoboCup_env/robocup_utils/trainer.py @@ -0,0 +1,379 @@ +# type: ignore +# !/usr/bin/env python3 + +# import os +import random +import threading +import time + +import numpy as np + +from mava.utils.environments.RoboCup_env.robocup_utils import ( + handler, + sock, + sp_exceptions, +) +from mava.utils.environments.RoboCup_env.robocup_utils.game_object import Flag +from mava.utils.environments.RoboCup_env.robocup_utils.trainer_world_model import ( + WorldModel, +) + +max_x_rand = Flag.out_x +max_y_rand = Flag.out_y + +# Define some colours +green = (0, 255, 50) +light_blue = (0, 255, 255) +blue = (0, 0, 255) +red = (255, 0, 0) +yellow = (255, 255, 0) +white = (255, 255, 255) + +# R G B +field_col = (0, 200, 50) +team_player = blue +opp_player = light_blue +own_goal = (255, 140, 0) +opp_goal = (128, 0, 128) + + +class Trainer: + def __init__(self): + # whether we're connected to a server yet or not + self.__connected = False + + # set all variables and important objects to appropriate values for + # pre-connect state. + + # the socket used to communicate with the server + self.__sock = None + + # models and the message handler for parsing and storing information + self.wm = None + self.msg_handler = None + + # parse thread and control variable + self.__parsing = False + self.__msg_thread = None + + self.__thinking = False # think thread and control variable + self.__think_thread = None + + # whether we should run the think method + self.__should_think_on_data = False + + # whether we should send commands + self.__send_commands = True + + # adding goal post markers + self.enemy_goal_pos = None + self.own_goal_pos = None + + def connect(self, host, port, version=11): + """ + Gives us a connection to the server as one player on a team. This + immediately connects the agent to the server and starts receiving and + parsing the information it sends. + """ + + # if already connected, raise an error since user may have wanted to + # connect again to a different server. + if self.__connected: + msg = "Cannot connect while already connected, disconnect first." + raise sp_exceptions.AgentConnectionStateError(msg) + + # the pipe through which all of our communication takes place + self.__sock = sock.Socket(host, port) + + # our models of the world and our body + self.wm = WorldModel(handler.ActionHandler(self.__sock)) + + # handles all messages received from the server + self.msg_handler = handler.MessageHandler(self.wm) + + # set up our threaded message receiving system + self.__parsing = True # tell thread that we're currently running + self.__msg_thread = threading.Thread( + target=self.__message_loop, name="message_loop" + ) + self.__msg_thread.daemon = True # dies when parent thread dies + + # start processing received messages. this will catch the initial server + # response and all subsequent communication. + self.__msg_thread.start() + + # send the init message and allow the message handler to handle further + # responses. + # init_address = self.__sock.address + # teamname = "John" + init_msg = "(init (version %d))" + self.__sock.send(init_msg % (version)) + + # # wait until the socket receives a response from the server and gets its + # # assigned port. + # while self.__sock.address == init_address: + # time.sleep(0.0001) + + # create our thinking thread. this will perform the actions necessary + # to play a game of robo-soccer. + self.__thinking = False + # self.__think_thread = threading.Thread(target=self.__think_loop, + # name="think_loop") + # self.__think_thread.daemon = True + + # set connected state. done last to prevent state inconsistency if + # something goes wrong beforehand. + self.__connected = True + time.sleep(1) + self.__sock.send("(eye on)") + self.__sock.send("(ear on)") + + def run(self): + """ + Kicks off the thread that does the agent's thinking, allowing it to play + during the game. Throws an exception if called while the agent is + already playing. + """ + + # ensure we're connected before doing anything + if not self.__connected: + msg = "Must be connected to a server to begin play." + raise sp_exceptions.AgentConnectionStateError(msg) + + # throw exception if called while thread is already running + if self.__thinking: + raise sp_exceptions.AgentAlreadyPlayingError("Agent is already playing.") + + # run the method that sets up the agent's persistant variables + self.setup_environment() + + # tell the thread that it should be running, then start it + self.__thinking = True + self.__should_think_on_data = True + self.__think_loop() + + # def disconnect(self): + # """ + # Tell the loop threads to stop and signal the server that we're + # disconnecting, then join the loop threads and destroy all our inner + # methods. + + # Since the message loop thread can conceiveably block indefinitely while + # waiting for the server to respond, we only allow it (and the think loop + # for good measure) a short time to finish before simply giving up. + + # Once an agent has been disconnected, it is 'dead' and cannot be used + # again. All of its methods get replaced by a method that raises an + # exception every time it is called. + # """ + + # # don't do anything if not connected + # if not self.__connected: + # return + + # # tell the loops to terminate + # self.__parsing = False + # self.__thinking = False + + # # tell the server that we're quitting + # self.__sock.send("(bye)") + + # # tell our threads to join, but only wait breifly for them to do so. + # # don't join them if they haven't been started (this can happen if + # # disconnect is called very quickly after connect). + # if self.__msg_thread.is_alive(): + # self.__msg_thread.join(0.01) + + # # if self.__think_thread.is_alive(): + # # self.__think_thread.join(0.01) + + # # reset all standard variables in this object. self.__connected gets + # # reset here, along with all other non-user defined internal variables. + # Agent.__init__(self) + + def __message_loop(self): + """ + Handles messages received from the server. + + This SHOULD NOT be called externally, since it's used as a threaded loop + internally by this object. Calling it externally is a BAD THING! + """ + + # loop until we're told to stop + while self.__parsing: + # receive message data from the server and pass it along to the + # world model as-is. the world model parses it and stores it within + # itself for perusal at our leisure. + raw_msg = self.__sock.recv() + + msg_type = self.msg_handler.handle_message(raw_msg) + + # if b'goal_l' in raw_msg or b'goal_r' in raw_msg: + # print("Trainer message: '" , raw_msg, + # ". Scores: ", self.wm.score_l, self.wm.score_r) + # exit() + + # if msg_type is not None: + # print(type(raw_msg)) + + # we send commands all at once every cycle, ie. whenever a + # 'sense_body' command is received + if msg_type == handler.ActionHandler.CommandType.SENSE_BODY: + self.__send_commands = True + + # flag new data as needing the think loop's attention + self.__should_think_on_data = True + + # def __think_loop(self): + # """ + # Performs world model analysis and sends appropriate commands to the + # server to allow the agent to participate in the current game. + # + # Like the message loop, this SHOULD NOT be called externally. Use the + # play method to start play, and the disconnect method to end it. + # """ + # + # while self.__thinking: + # # tell the ActionHandler to send its enqueued messages if it is time + # if self.__send_commands: + # self.__send_commands = False + # self.wm.ah.send_commands() + # + # # only think if new data has arrived + # if self.__should_think_on_data: + # # flag that data has been processed. this shouldn't be a race + # # condition, since the only change would be to make it True + # # before changing it to False again, and we're already going to + # # process data, so it doesn't make any difference. + # self.__should_think_on_data = False + # + # self.think() + # else: + # # prevent from burning up all the cpu time while waiting for data + # time.sleep(0.0001) + + def setup_environment(self): + """ + Called before the think loop starts, this allows the user to store any + variables/objects they'll want access to across subsequent calls to the + think method. + """ + + self.in_kick_off_formation = False + + def send_done(self): + self.__sock.send("(done)") + + def reset_game( + self, + players_per_team, + team_names, + game_setting, + game_diff=None, + reset_stamina=True, + ): + self.__sock.send("(change_mode before_kick_off)") + if reset_stamina: + self.__sock.send("(recover)") + # github.com/rcsoccersim/rcssserver/blob/master/src/coach.cpp + + # game_easy = 1 - game_diff + if game_setting == "domain_randomisation": + # print("game_diff: ", game_diff) + assert game_diff is not None + + # Move the ball + + if players_per_team[0] > 0 and players_per_team[1] > 0: + rand_side = random.randint(0, 1) * 2 - 1 + elif players_per_team[0] > 0: + rand_side = 1 + else: + rand_side = 0 + s_x = 52 + # TODONE: Change this back to the harder setting! + x = str( + np.random.randint( + s_x - (s_x + max_x_rand) * game_diff, + s_x - (s_x - max_x_rand) * game_diff + 1, + ) + * rand_side + ) + # str(np.random.randint(s_x - (s_x + max_x_rand)*game_diff, + # s_x - (s_x - max_x_rand)*game_diff + 1)*rand_side) + # str(s_x*rand_side) + y = str( + np.random.randint(-max_y_rand * game_diff, 1 + max_y_rand * game_diff) + ) + # str(np.random.randint(-max_y_rand*game_diff, 1 + max_y_rand*game_diff)) + # str(0) # + self.__sock.send("(move (ball) " + x + " " + y + ")") + for t_i in range(len(players_per_team)): + for p_i in range(1, players_per_team[t_i] + 1): + s_x = 51 + x = str( + np.random.randint( + s_x - (s_x + max_x_rand) * game_diff, + s_x - (s_x - max_x_rand) * game_diff + 1, + ) + * (1 - t_i * 2) + ) + y = str( + np.random.randint( + -max_y_rand * game_diff, 1 + max_y_rand * game_diff + ) + ) + ang = str(np.random.randint(-180 * game_diff, 1 + 180 * game_diff)) + + command = ( + "(move (player " + + team_names[t_i] + + " " + + str(p_i) + + ") " + + str(x) + + " " + + str(y) + + " " + + str(ang) + + " 0 0)" + ) + self.__sock.send(command) + elif game_setting == "reward_shaping": + # Move the ball + x = str(np.random.randint(-max_x_rand, max_x_rand + 1)) + y = str(np.random.randint(-max_y_rand, max_y_rand + 1)) + self.__sock.send("(move (ball) " + x + " " + y + ")") + + for t, team_name in enumerate(team_names): + omt = 1 - t + for p_i in range(1, players_per_team[0] + 1): + x = str(np.random.randint(-51 * omt, 51 * t + 1)) + y = str(np.random.randint(-max_y_rand, max_y_rand + 1)) + ang = str(np.random.randint(-180, 180 + 1)) + + command = ( + "(move (player " + + team_name + + " " + + str(p_i) + + ") " + + str(x) + + " " + + str(y) + + " " + + str(ang) + + " 0 0)" + ) + self.__sock.send(command) + + else: + raise NotImplementedError( + "Game setting not implemented in trainer: ", game_setting + ) + self.__sock.send("(change_mode play_on)") + self.__sock.send("(start)") + self.__sock.send("(done)") + + def get_state_dict(self): + return self.wm.get_state() diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/trainer_world_model.py b/mava/utils/environments/RoboCup_env/robocup_utils/trainer_world_model.py new file mode 100755 index 000000000..a4e3f6ad2 --- /dev/null +++ b/mava/utils/environments/RoboCup_env/robocup_utils/trainer_world_model.py @@ -0,0 +1,434 @@ +# type: ignore +# import math + +# import random + +# from mava.utils.environments.RoboCup_env.robocup_utils import ( +# game_object, +# message_parser, +# sp_exceptions, +# ) + + +class WorldModel: + """ + Holds and updates the model of the world as known from current and past + data. + """ + + class PlayModes: + """ + Acts as a static class containing variables for all valid play modes. + The string values correspond to what the referee calls the game modes. + """ + + BEFORE_KICK_OFF = "before_kick_off" + PLAY_ON = "play_on" + TIME_OVER = "time_over" + KICK_OFF_L = "kick_off_l" + KICK_OFF_R = "kick_off_r" + KICK_IN_L = "kick_in_l" + KICK_IN_R = "kick_in_r" + FREE_KICK_L = "free_kick_l" + FREE_KICK_R = "free_kick_r" + CORNER_KICK_L = "corner_kick_l" + CORNER_KICK_R = "corner_kick_r" + GOAL_KICK_L = "goal_kick_l" + GOAL_KICK_R = "goal_kick_r" + DROP_BALL = "drop_ball" + OFFSIDE_L = "offside_l" + OFFSIDE_R = "offside_r" + + def __init__(self): + raise NotImplementedError( + "Don't instantiate a PlayModes class," + " access it statically through WorldModel instead." + ) + + class RefereeMessages: + """ + Static class containing possible non-mode messages sent by a referee. + """ + + # these are referee messages, not play modes + FOUL_L = "foul_l" + FOUL_R = "foul_r" + GOALIE_CATCH_BALL_L = "goalie_catch_ball_l" + GOALIE_CATCH_BALL_R = "goalie_catch_ball_r" + TIME_UP_WITHOUT_A_TEAM = "time_up_without_a_team" + TIME_UP = "time_up" + HALF_TIME = "half_time" + TIME_EXTENDED = "time_extended" + + # these are special, as they are always followed by '_' and an int of + # the number of goals scored by that side so far. these won't match + # anything specifically, but goals WILL start with these. + GOAL_L = "goal_l_" + GOAL_R = "goal_r_" + + def __init__(self): + raise NotImplementedError( + "Don't instantiate a RefereeMessages class," + " access it statically through WorldModel instead." + ) + + def __init__(self, action_handler): + """ + Create the world model with default values and an ActionHandler class it + can use to complete requested actions. + """ + # we use the action handler to complete complex commands + self.ah = action_handler + + # these variables store all objects for any particular game step + self.ball = None + self.goals = [] + self.players = [] + + # scores for each side + self.score_l = 0 + self.score_r = 0 + + # the name of the agent's team + self.teamnames = [None, None] + + # stores the most recent message heard + self.last_message = None + + self.new_global_data = False + + # the mode the game is currently in (default to not playing yet) + self.play_mode = WorldModel.PlayModes.BEFORE_KICK_OFF + + # create a new server parameter object for holding all server params + self.server_parameters = ServerParameters() + + # def euclidean_distance(self, point1, point2): + # """ + # Returns the Euclidean distance between two points on a plane. + # """ + + # if point1 is not None and point1[0] is not None and + # point1[1] is not None + # and point2 is not None and point2[0] is not None and + # point2[1] is not None: + # x1 = point1[0] + # y1 = point1[1] + # x2 = point2[0] + # y2 = point2[1] + + # return math.sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2) + # except: + # return 200 + + def process_new_info(self, ball, goals, players): + """ + Update any internal variables based on the currently available + information. This also calculates information not available directly + from server-reported messages, such as player coordinates. + """ + + # update basic information + # Fix state + # TODO: Fix state offset problems. Why is the state values different? + + # Correct ball y coords + ball["coords"] = (float(ball["coords"][0]), -float(ball["coords"][1])) + ball["delta_coords"] = ( + float(ball["delta_coords"][0]), + -float(ball["delta_coords"][1]), + ) + for i in range(len(players)): + # Correct y coords + players[i]["coords"] = ( + float(players[i]["coords"][0]), + -float(players[i]["coords"][1]), + ) + players[i]["delta_coords"] = ( + float(players[i]["delta_coords"][0]), + -float(players[i]["delta_coords"][1]), + ) + # Correct body angle + players[i]["body_angle"] = -float(players[i]["body_angle"]) + 90 + + # Correct neck angle + players[i]["neck_angle"] = -float(players[i]["neck_angle"]) + 90 + + # Get side + team_to_id = {"Team_A": 0, "Team_B": 1} + players[i]["side"] = team_to_id[players[i]["teamname"]] + + self.ball = ball + self.goals = goals + self.players = players + + def get_state(self): + return {"ball": self.ball, "players": self.players} + + def is_playon(self): + """ + Tells us whether it's play time + """ + return ( + self.play_mode == WorldModel.PlayModes.PLAY_ON + or self.play_mode == WorldModel.PlayModes.KICK_OFF_L + or self.play_mode == WorldModel.PlayModes.KICK_OFF_R + or self.play_mode == WorldModel.PlayModes.KICK_IN_L + or self.play_mode == WorldModel.PlayModes.KICK_IN_R + or self.play_mode == WorldModel.PlayModes.FREE_KICK_L + or self.play_mode == WorldModel.PlayModes.FREE_KICK_R + or self.play_mode == WorldModel.PlayModes.CORNER_KICK_L + or self.play_mode == WorldModel.PlayModes.CORNER_KICK_R + or self.play_mode == WorldModel.PlayModes.GOAL_KICK_L + or self.play_mode == WorldModel.PlayModes.GOAL_KICK_R + or self.play_mode == WorldModel.PlayModes.DROP_BALL + or self.play_mode == WorldModel.PlayModes.OFFSIDE_L + or self.play_mode == WorldModel.PlayModes.OFFSIDE_R + ) + + def is_before_kick_off(self): + """ + Tells us whether the game is in a pre-kickoff state. + """ + print("is_before_kick_off!") + return self.play_mode == WorldModel.PlayModes.BEFORE_KICK_OFF + + def is_kick_off_us(self): + """ + Tells us whether it's our turn to kick off. + """ + print("is_kick_off_us!") + ko_left = WorldModel.PlayModes.KICK_OFF_L + ko_right = WorldModel.PlayModes.KICK_OFF_R + + # print self.play_mode + + # return whether we're on the side that's kicking off + return ( + self.side == WorldModel.SIDE_L + and self.play_mode == ko_left + or self.side == WorldModel.SIDE_R + and self.play_mode == ko_right + ) + + def is_dead_ball_them(self): + """ + Returns whether the ball is in the other team's posession and it's a + free kick, corner kick, or kick in. + """ + + # shorthand for verbose constants + kil = WorldModel.PlayModes.KICK_IN_L + kir = WorldModel.PlayModes.KICK_IN_R + fkl = WorldModel.PlayModes.FREE_KICK_L + fkr = WorldModel.PlayModes.FREE_KICK_R + ckl = WorldModel.PlayModes.CORNER_KICK_L + ckr = WorldModel.PlayModes.CORNER_KICK_R + + # shorthand for whether left team or right team is free to act + pm = self.play_mode + free_left = pm == kil or pm == fkl or pm == ckl + free_right = pm == kir or pm == fkr or pm == ckr + + # return whether the opposing side is in a dead ball situation + if self.side == WorldModel.SIDE_L: + return free_right + else: + return free_left + + def is_ball_kickable(self): + """ + Tells us whether the ball is in reach of the current player. + """ + + # ball must be visible, not behind us, and within the kickable margin + return ( + self.ball is not None + and self.ball.distance is not None + and self.ball.distance <= self.server_parameters.kickable_margin + ) + + def get_ball_speed_max(self): + """ + Returns the maximum speed the ball can be kicked at. + """ + + return self.server_parameters.ball_speed_max + + +class ServerParameters: + """ + A storage container for all the settings of the soccer server. + """ + + def __init__(self): + """ + Initialize default parameters for a server. + """ + + self.audio_cut_dist = 50 + self.auto_mode = 0 + self.back_passes = 1 + self.ball_accel_max = 2.7 + self.ball_decay = 0.94 + self.ball_rand = 0.05 + self.ball_size = 0.085 + self.ball_speed_max = 2.7 + self.ball_stuck_area = 3 + self.ball_weight = 0.2 + self.catch_ban_cycle = 5 + self.catch_probability = 1 + self.catchable_area_l = 2 + self.catchable_area_w = 1 + self.ckick_margin = 1 + self.clang_advice_win = 1 + self.clang_define_win = 1 + self.clang_del_win = 1 + self.clang_info_win = 1 + self.clang_mess_delay = 50 + self.clang_mess_per_cycle = 1 + self.clang_meta_win = 1 + self.clang_rule_win = 1 + self.clang_win_size = 300 + self.coach = 0 + self.coach_port = 6001 + self.coach_w_referee = 0 + self.connect_wait = 300 + self.control_radius = 2 + self.dash_power_rate = 0.006 + self.drop_ball_time = 200 + self.effort_dec = 0.005 + self.effort_dec_thr = 0.3 + self.effort_inc = 0.01 + self.effort_inc_thr = 0.6 + self.effort_init = 1 + self.effort_min = 0.6 + self.forbid_kick_off_offside = 1 + self.free_kick_faults = 1 + self.freeform_send_period = 20 + self.freeform_wait_period = 600 + self.fullstate_l = 0 + self.fullstate_r = 0 + self.game_log_compression = 0 + self.game_log_dated = 1 + self.game_log_dir = "./" + self.game_log_fixed = 0 + self.game_log_fixed_name = "rcssserver" + self.game_log_version = 3 + self.game_logging = 1 + self.game_over_wait = 100 + self.goal_width = 14.02 + self.goalie_max_moves = 2 + self.half_time = 300 + self.hear_decay = 1 + self.hear_inc = 1 + self.hear_max = 1 + self.inertia_moment = 5 + self.keepaway = 0 + self.keepaway_length = 20 + self.keepaway_log_dated = 1 + self.keepaway_log_dir = "./" + self.keepaway_log_fixed = 0 + self.keepaway_log_fixed_name = "rcssserver" + self.keepaway_logging = 1 + self.keepaway_start = -1 + self.keepaway_width = 20 + self.kick_off_wait = 100 + self.kick_power_rate = 0.027 + self.kick_rand = 0 + self.kick_rand_factor_l = 1 + self.kick_rand_factor_r = 1 + self.kickable_margin = 0.7 + self.landmark_file = "~/.rcssserver-landmark.xml" + self.log_date_format = "%Y%m%d%H%M-" + self.log_times = 0 + self.max_goal_kicks = 3 + self.maxmoment = 180 + self.maxneckang = 90 + self.maxneckmoment = 180 + self.maxpower = 100 + self.minmoment = -180 + self.minneckang = -90 + self.minneckmoment = -180 + self.minpower = -100 + self.nr_extra_halfs = 2 + self.nr_normal_halfs = 2 + self.offside_active_area_size = 2.5 + self.offside_kick_margin = 9.15 + self.olcoach_port = 6002 + self.old_coach_hear = 0 + self.pen_allow_mult_kicks = 1 + self.pen_before_setup_wait = 30 + self.pen_coach_moves_players = 1 + self.pen_dist_x = 42.5 + self.pen_max_extra_kicks = 10 + self.pen_max_goalie_dist_x = 14 + self.pen_nr_kicks = 5 + self.pen_random_winner = 0 + self.pen_ready_wait = 50 + self.pen_setup_wait = 100 + self.pen_taken_wait = 200 + self.penalty_shoot_outs = 1 + self.player_accel_max = 1 + self.player_decay = 0.4 + self.player_rand = 0.1 + self.player_size = 0.3 + self.player_speed_max = 1.2 + self.player_weight = 60 + self.point_to_ban = 5 + self.point_to_duration = 20 + self.port = 6000 + self.prand_factor_l = 1 + self.prand_factor_r = 1 + self.profile = 0 + self.proper_goal_kicks = 0 + self.quantize_step = 0.1 + self.quantize_step_l = 0.01 + self.record_messages = 0 + self.recover_dec = 0.002 + self.recover_dec_thr = 0.3 + self.recover_init = 1 + self.recover_min = 0.5 + self.recv_step = 10 + self.say_coach_cnt_max = 128 + self.say_coach_msg_size = 128 + self.say_msg_size = 10 + self.send_comms = 0 + self.send_step = 150 + self.send_vi_step = 100 + self.sense_body_step = 100 + self.simulator_step = 100 + self.slow_down_factor = 1 + self.slowness_on_top_for_left_team = 1 + self.slowness_on_top_for_right_team = 1 + self.stamina_inc_max = 45 + self.stamina_max = 4000 + self.start_goal_l = 0 + self.start_goal_r = 0 + self.stopped_ball_vel = 0.01 + self.synch_micro_sleep = 1 + self.synch_mode = 0 + self.synch_offset = 60 + self.tackle_back_dist = 0.5 + self.tackle_cycles = 10 + self.tackle_dist = 2 + self.tackle_exponent = 6 + self.tackle_power_rate = 0.027 + self.tackle_width = 1 + self.team_actuator_noise = 0 + self.text_log_compression = 0 + self.text_log_dated = 1 + self.text_log_dir = "./" + self.text_log_fixed = 0 + self.text_log_fixed_name = "rcssserver" + self.text_logging = 1 + self.use_offside = 1 + self.verbose = 0 + self.visible_angle = 90 + self.visible_distance = 3 + self.wind_ang = 0 + self.wind_dir = 0 + self.wind_force = 0 + self.wind_none = 0 + self.wind_rand = 0 + self.wind_random = 0 diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/util_functions.py b/mava/utils/environments/RoboCup_env/robocup_utils/util_functions.py new file mode 100644 index 000000000..ecbd26846 --- /dev/null +++ b/mava/utils/environments/RoboCup_env/robocup_utils/util_functions.py @@ -0,0 +1,715 @@ +# type: ignore +import time +from typing import Dict, NamedTuple + +import dm_env +import gym +import numpy as np +from acme import specs, types + + +def rad_rot_to_xy(rad_rot): + return np.cos(rad_rot), np.sin(rad_rot) + + +def deg_rot_to_xy(deg_rot): + return np.cos(deg_rot * np.pi / 180), np.sin(deg_rot * np.pi / 180) + + +def should_wait(wait_list): + should_wait = False + for entity in wait_list: + if not entity.wm.new_data: + should_wait = True + break + return should_wait + + +def wait_for_next_observations(obs_to_wait_for): + """ + Wait for next observation before agents should think again. + """ + # Wait for new data + waiting = should_wait(obs_to_wait_for) + + # start = time.time() + while waiting: + waiting = should_wait(obs_to_wait_for) + time.sleep(0.0001) + # end = time.time() + # print("Wait time: ", end-start) + + # Set new data false + for entity in obs_to_wait_for: + entity.wm.new_data = False + + +# Dummy class to get the observation in the correct format +class OLT(NamedTuple): + """Container for (observation, legal_actions, terminal) tuples.""" + + observation: types.Nest + legal_actions: types.Nest + terminal: types.Nest + + +class SpecWrapper(dm_env.Environment): + """Spec wrapper for 2D RoboCup environment.""" + + # Note: we don't inherit from base.EnvironmentWrapper because that class + # assumes that the wrapped environment is a dm_env.Environment. + + def __init__(self, num_players: int): + self._reset_next_step = True + + self.scaling = 200.0 + + # Chose action + act_min = [0.0] * 7 # 6 + No action + act_max = [1.0] * 7 # 6 + No action + + # Action continuous component + # All directions are in x, y format + act_min.extend( + [ + -100 / self.scaling, + -1, + -1, # dash (power, direction) + 0, + -1, + -1, # kick (power, direction) + 0, + 0, # change_view (width, quality) + -1, + -1, + 0, # tackle (direction, foul) + -1, + -1, # turn (direction) + -1, + -1, + ] + ) # turn_neck(direction) + + act_max.extend([100 / self.scaling, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]) + + assert len(act_min) == len(act_max) + action_spec = specs.BoundedArray( + shape=(len(act_min),), + dtype="float32", + name="action", + minimum=act_min, + maximum=act_max, + ) + + self.action_size = action_spec.shape[0] + + # obs_dict = {"time_left": 0, "side": 1, "sense_self": 2, + # "coords": (3, 5), "body_dir": (5, 7), + # "head_dir": (7, 9), "width": (9, 12), + # "quality": 13, "stamina": 14, "effort": 15, + # "speed_amount": 16, "speed_direction": (17, 19), + # "neck_direction": (19, 21), + # "see_ball": 21, "ball_dist": 22, + # "ball_dir": (23, 25), "ball_dist_change": 25, + # "ball_dir_change": 26, "ball_speed": 27, + # "last_action": (28, 28 + self.action_size), + # } + + # TODO: Check if all bounds are correct + obs_min = [ + 0.0, # time_left + 0.0, # side + 0.0, # sense_self + -100 / self.scaling, + -50 / self.scaling, # coords + -1, + -1, # body_dir + -1, + -1, # head_dir + 0, + 0, + 0, # width + 0, # quality + 0, # stamina + 0, # effort + 0, # speed_amount + -1, + -1, # speed_direction + -1, + -1, # neck_direction + 0, # see_ball + 0, # ball_dist + -1, + -1, # ball_dir + -100 / self.scaling, # ball_dist_change + -180 / self.scaling, # ball_dir_change + 0, # ball_speed + ] + + obs_max = [ + 1.0, # time_left + 1.0, # side + 1.0, # sense_self + 100 / self.scaling, + 50 / self.scaling, # coords + 1, + 1, # body_dir + 1, + 1, # head_dir + 1, + 1, + 1, # width + 1, # quality + 1, # stamina + 1, # effort + 100 / self.scaling, # speed_amount + 1, + 1, # speed_direction + 1, + 1, # neck_direction + 1, # see_ball + 100 / self.scaling, # ball_dist + 1, + 1, # ball_dir + 100 / self.scaling, # ball_dist_change + 180 / self.scaling, # ball_dir_change + 100 / self.scaling, # ball_speed + ] + + # Last action + obs_min.extend(action_spec.minimum) + obs_max.extend(action_spec.maximum) + + # [see_player, is_on_team, player_distance, + # player_direction] for num_agents-1 + self.num_agents = num_players + + # TODO: Add this in again. + # for i in range(21): + # # [see_player, is_on_team, player_distance, + # player_direction (x, y format)] + # obs_min.extend([0, 0, -200 / self.scaling, -1, -1]) + # obs_max.extend([1, 1, +200 / self.scaling, 1, 1]) + + assert len(obs_min) == len(obs_max) + self.obs_size = len(obs_min) + + self.agents = ["player_" + str(r) for r in range(num_players)] + + self._observation_specs = {} + self._action_specs = {} + + obs_spec = specs.BoundedArray( + shape=(self.obs_size,), + dtype="float32", + name="observation", + minimum=obs_min, + maximum=obs_max, + ) + + # Time_left, ball coords, ball delta_coords + state_min = [0, -100 / self.scaling, -100 / self.scaling, -10, -10] + state_max = [1, 100 / self.scaling, 100 / self.scaling, 10, 10] + + # First player is the critic player + # Players sides, coords, delta_coords, body_angle (x, y format), + # head_angle (x, y format) + for i in range(num_players): + state_min.extend( + [ + 0.0, + -100 / self.scaling, + -100 / self.scaling, + -10, + -10, + -1, + -1, + -1, + -1, + ] + ) + state_max.extend( + [1.0, +100 / self.scaling, +100 / self.scaling, +10, +10, 1, 1, 1, 1] + ) + + # Add all observations to state info + for i in range(num_players): + state_min.extend(obs_min) + state_max.extend(obs_max) + + assert len(state_min) == len(state_max) + self._state_spec = specs.BoundedArray( + shape=(len(state_min),), + dtype="float32", + name="state", + minimum=state_min, + maximum=state_max, + ) + + self._discount = dict(zip(self.agents, [np.float32(1.0)] * len(self.agents))) + + # TODO: Delete this + # self.previous_act = {"player_0": None} + + for agent in self.agents: + # TODO: Why is the action spec in two places? + self._observation_specs[agent] = OLT( + observation=obs_spec, + legal_actions=action_spec, + terminal=specs.Array((1,), np.float32), + ) + + self._action_specs[agent] = action_spec + # Obs: BoundedArray(shape=(4,), dtype=dtype('float32'), name='observation', + # minimum=[-4.8000002e+00 -3.4028235e+38 -4.1887903e-01 -3.4028235e+38], + # maximum=[4.8000002e+00 3.4028235e+38 4.1887903e-01 3.4028235e+38]) + # Actions: DiscreteArray(shape=(), dtype=int64, name=action, minimum=0, + # maximum=1, num_values=2) + + def reset(self): + pass + + def step(self): + pass + + def observation_spec(self) -> types.NestedSpec: + return self._observation_specs + + def action_spec(self) -> types.NestedSpec: + return self._action_specs + + def reward_spec(self) -> Dict[str, specs.Array]: + reward_specs = {} + for agent in self.agents: + reward_specs[agent] = specs.Array((), np.float32) + return reward_specs + + def discount_spec(self) -> Dict[str, specs.BoundedArray]: + discount_specs = {} + for agent in self.agents: + discount_specs[agent] = specs.BoundedArray( + (), np.float32, minimum=0, maximum=1.0 + ) + return discount_specs + + def extra_spec(self) -> Dict[str, specs.BoundedArray]: + return {"s_t": self._state_spec} + + def _proc_robocup_obs( + self, observations: Dict, done: bool, nn_actions: Dict = None + ) -> Dict: + # TODO: Try to automatically normalise by min max boundries + processed_obs_dict = {} + for obs_i, agent_key in enumerate(self.agents): + env_agent_obs = observations[agent_key] + + if nn_actions: + last_action = nn_actions[agent_key] + else: + last_action = None + + proc_agent_obs = self.proc_agent_env_obs(env_agent_obs, last_action) + + observation = OLT( + observation=proc_agent_obs, + legal_actions=np.ones(self.action_size, dtype=np.float32), + terminal=np.asarray([done], dtype=np.float32), + ) + processed_obs_dict[agent_key] = observation + return processed_obs_dict + + def proc_agent_env_obs(self, env_agent_obs, last_action): # noqa: C901 + # All angles is in x,y format + proc_agent_obs = np.zeros(self.obs_size, dtype=np.float32) + obs_dict = { + "time_left": 0, + "side": 1, + "sense_self": 2, + "coords": (3, 5), + "body_dir": (5, 7), + "head_dir": (7, 9), + "width": (9, 12), + "quality": 12, + "stamina": 13, + "effort": 14, + "speed_amount": 15, + "speed_direction": (16, 18), + "neck_direction": (18, 20), + "see_ball": 20, + "ball_dist": 21, + "ball_dir": (22, 24), + "ball_dist_change": 24, + "ball_dir_change": 25, + "ball_speed": 26, + "last_action": (27, 27 + self.action_size), + } + + # TODO: Fix this when there is other players + assert self.obs_size == 27 + self.action_size + + # Time left obs + if "game_step" in env_agent_obs and "game_length" in env_agent_obs: + # Time left + proc_agent_obs[obs_dict["time_left"]] = ( + 1 - env_agent_obs["game_step"] / env_agent_obs["game_length"] + ) + + # Team side obs + side_to_id = {"l": 0.0, "r": 1.0} + proc_agent_obs[1] = side_to_id[env_agent_obs["side"]] + + if ( + "estimated_abs_coords" in env_agent_obs + and env_agent_obs["estimated_abs_coords"][0] is not None + ): + # see_own_stats + proc_agent_obs[obs_dict["sense_self"]] = 1.0 + + # coords + coords = env_agent_obs["estimated_abs_coords"] + s, e = obs_dict["coords"] + proc_agent_obs[s] = float(coords[0]) / self.scaling + proc_agent_obs[e - 1] = float(coords[1]) / self.scaling + + # body_angle + s, e = obs_dict["body_dir"] + proc_agent_obs[s:e] = deg_rot_to_xy(env_agent_obs["estimated_abs_body_dir"]) + + # head_angle + s, e = obs_dict["head_dir"] + proc_agent_obs[s:e] = deg_rot_to_xy(env_agent_obs["estimated_abs_neck_dir"]) + + # view_width + w_to_int = {"narrow": 0, "normal": 1, "wide": 2} + onehot = np.zeros(3) + onehot[w_to_int[env_agent_obs["view_width"]]] = 1 + s, e = obs_dict["width"] + proc_agent_obs[s:e] = onehot + + # view_quality + q_to_int = {"high": 0, "low": 1} + proc_agent_obs[obs_dict["quality"]] = q_to_int[ + env_agent_obs["view_quality"] + ] + + # stamina + proc_agent_obs[obs_dict["stamina"]] = env_agent_obs["stamina"] / 8000 + + # effort + proc_agent_obs[obs_dict["effort"]] = env_agent_obs["effort"] + + # speed_amount + proc_agent_obs[obs_dict["speed_amount"]] = ( + env_agent_obs["speed_amount"] / self.scaling + ) + + # speed_dir + s, e = obs_dict["speed_direction"] + proc_agent_obs[s:e] = deg_rot_to_xy(env_agent_obs["speed_direction"]) + + # Relative neck dir + s, e = obs_dict["neck_direction"] + proc_agent_obs[s:e] = deg_rot_to_xy(env_agent_obs["neck_direction"]) + + # See_ball, ball_distance, ball_direction, dist_change, dir_change, speed + if "ball" in env_agent_obs and env_agent_obs["ball"] is not None: + # Has ball flag + proc_agent_obs[obs_dict["see_ball"]] = 1.0 + + if env_agent_obs["ball"].distance is not None: + proc_agent_obs[obs_dict["ball_dist"]] = ( + env_agent_obs["ball"].distance / self.scaling + ) + + if env_agent_obs["ball"].direction is not None: + s, e = obs_dict["ball_dir"] + proc_agent_obs[s:e] = deg_rot_to_xy(env_agent_obs["ball"].direction) + + if env_agent_obs["ball"].dist_change is not None: + proc_agent_obs[obs_dict["ball_dist_change"]] = ( + env_agent_obs["ball"].dist_change / self.scaling + ) + + if env_agent_obs["ball"].dir_change is not None: + proc_agent_obs[obs_dict["ball_dir_change"]] = ( + env_agent_obs["ball"].dir_change / self.scaling + ) + + if env_agent_obs["ball"].speed is not None: + proc_agent_obs[obs_dict["ball_speed"]] = ( + env_agent_obs["ball"].speed / self.scaling + ) + + # Last player actions + if last_action is not None: + s, e = obs_dict["last_action"] + proc_agent_obs[s:e] = last_action + + # [see_player, is_on_team, distance, direction, dist_change, + # dir_change, speed, body_direction, neck_direction] + if "players" in env_agent_obs and len(env_agent_obs["players"]) > 0: + raise NotImplementedError( + "Obs for more than one player not implemented yet." + ) + # ["opponent", player.distance, player.direction (x, y format)] + num_see_players = len(env_agent_obs["players"]) + + # Place the players on the closest available spot + players = env_agent_obs["players"] + + # TODO: Get better sorting algorithm. This one is good, + # but also allows for player degrees not to + # always be assending. This is because a player can be + # selected for a slot and then the player with a + # bigger positive degree might be selected for a lower + # slot. Therefore this might happend: + # player[i].degree > player[i+1].degree. + + player_ids = list(range(num_see_players)) + spots = [[d_i, (d_i / 20) * 180 - 90] for d_i in range(21)] + player_spots = [-1] * num_see_players + for _ in range(num_see_players): + best_p_i = None + beset_spot = None + best_s_count = None + best_p_count = None + beset_dist = np.inf + + # All remaining players select the closest available spot + for p_count, p_i in enumerate(player_ids): + player_type, player_dist, player_dir = players[p_i] + + # Go through all the spots and get the closest one to the player + for s_count, spot in enumerate(spots): + s_i, s_dir = spot + + dist_to_spot = abs(s_dir - player_dir) + + if dist_to_spot < beset_dist: + beset_dist = dist_to_spot + best_p_i = p_i + beset_spot = s_i + best_p_count = p_count + best_s_count = s_count + + # Give the closest player its spot. + player_ids.pop(best_p_count) + spots.pop(best_s_count) + player_spots[best_p_i] = beset_spot + + assert len(player_ids) == 0 + # Calculate all the available slots to put player in + slots = [ + [11 + self.action_size + s_i * 5, 11 + self.action_size + s_i * 5 + 5] + for s_i in player_spots + ] + # slots = [i, i + 5] for i in + # slots = [all_slots[p_spot] for p_spot in player_spots] + + assert len(slots) == num_see_players + player_type_dict = {"opponent": 0.0, "team": 1.0} + + for p_i, player in enumerate(players): + player_type, player_dist, player_dir = player + + # pop a random element from the slots list + start_i, end_i = slots[p_i] + + # see_player, is_on_team, player_distance, + # player_direction (x, y format) + dir_x, dir_y = deg_rot_to_xy(player_dir) + + proc_agent_obs[start_i:end_i] = [ + 1.0, + player_type_dict[player_type], + player_dist / self.scaling, + dir_x, + dir_y, + ] + + # if not env_agent_obs["obs_updated"]: + # proc_agent_obs[2] = 0.0 + + return proc_agent_obs + + def _proc_robocup_state(self, state: Dict, proc_obs: Dict) -> np.array: + state_dict = { + "time_left": 0, + "ball_coords": (1, 3), + "ball_delta": (3, 5), + "player_offset": 5, + "p_obs_size": 9, + "p_side": 0, + "p_coords": (1, 3), + "p_delta": (3, 5), + "p_b_dir": (5, 7), + "p_n_dir": (7, 9), + } + offset = state_dict["player_offset"] + + proc_agent_state = np.zeros( + offset + self.num_agents * (9 + self.obs_size), dtype=np.float32 + ) + + # Time left + proc_agent_state[state_dict["time_left"]] = ( + 1 - state["game_step"] / state["game_length"] + ) + + # Ball: + ball = state["ball"] + s, e = state_dict["ball_coords"] + proc_agent_state[s:e] = [ + float(ball["coords"][0]) / self.scaling, + float(ball["coords"][1]) / self.scaling, + ] + s, e = state_dict["ball_delta"] + proc_agent_state[s:e] = [ + float(ball["delta_coords"][0]), + float(ball["delta_coords"][1]), + ] # TODO: Should delta coords have a normaliser? + + # TODO: Add check to see if players are in the correct order + # TODO: Include onehot indicating which player should be focussed on. + # Also use dictionary of states. Players should not be reordered as this + # messes with the action order provided to the Q value critic. + players = state["players"] + p_size = state_dict["p_obs_size"] + if players: + for i in range(self.num_agents): + if len(players) > i: + player = players[i] + # 'side': 0, 'coords': (52.6498, 0.54963), + # 'delta_coords': (0.000227909, 0.00371977), 'body_angle': 163, + # 'neck_angle': 0} + proc_agent_state[ + i * p_size + offset + state_dict["p_side"] + ] = player["side"] + s, e = state_dict["p_coords"] + proc_agent_state[ + i * p_size + offset + s : i * p_size + offset + e + ] = [ + player["coords"][0] / self.scaling, + player["coords"][1] / self.scaling, + ] + s, e = state_dict["p_delta"] + proc_agent_state[ + i * p_size + offset + s : i * p_size + offset + e + ] = player[ + "delta_coords" + ] # TODO: Should delta coords have a normaliser? + s, e = state_dict["p_b_dir"] + proc_agent_state[ + i * p_size + offset + s : i * p_size + offset + e + ] = deg_rot_to_xy(player["body_angle"]) + s, e = state_dict["p_n_dir"] + proc_agent_state[ + i * p_size + offset + s : i * p_size + offset + e + ] = deg_rot_to_xy(player["neck_angle"]) + + else: + break + + # Add agent observations + start_i = offset + self.num_agents * p_size + for agent_i, agent_key in enumerate(self.agents): + obs = proc_obs[agent_key].observation + proc_agent_state[ + start_i + + agent_i * self.obs_size : start_i + + (agent_i + 1) * self.obs_size + ] = obs + + return proc_agent_state + + def _proc_robocup_actions(self, actions: Dict) -> Dict: + # dash (speed), turn (direction), kick (power, direction) + processed_action_dict = {} + + for agent_key in actions.keys(): + action = actions[agent_key] + assert len(action) == self.action_size + processed_action_dict[agent_key] = self.proc_agent_action(action) + + return processed_action_dict + + def proc_agent_action(self, action): + # TODO: Add catch, tackle, move, pointto, attentionto and say commands as well. + int_to_command = [ + "dash", + "kick", + "change_view", + "tackle", + "turn", + "turn_neck", + "none", + ] + + # Remove change_view and turn_neck action + # TODONE: Remove this + # action[2] = 0 + # action[5] = 0 + + command = int_to_command[np.argmax(action[0 : len(int_to_command)])] + + # Do the command + assert len(int_to_command) == 7 + + act_dict = { + "dash_pow": 7, + "dash_dir": (8, 10), + "kick_pow": 10, + "kick_dir": (11, 13), + "width": 13, + "quality": 14, + "tackle_dir": (15, 17), + "tackle_foul": 17, + "turn": (18, 20), + "neck": (20, 22), + } + + if command == "dash": + power = action[act_dict["dash_pow"]] * self.scaling + s, e = act_dict["dash_dir"] + dir_x, dir_y = action[s:e] + dir = np.arctan2(dir_y, dir_x) * 180 / np.pi + robocup_action = "(dash " + str(power) + " " + str(dir) + ")" + elif command == "kick": + power = action[act_dict["kick_pow"]] * self.scaling + s, e = act_dict["kick_dir"] + dir_x, dir_y = action[s:e] + dir = np.arctan2(dir_y, dir_x) * 180 / np.pi + robocup_action = "(kick " + str(power) + " " + str(dir) + ")" + elif command == "change_view": + w_to_text = ["narrow", "normal", "wide"] + width = w_to_text[int(action[act_dict["width"]] * 2.99)] + q_to_text = ["high", "low"] + quality = q_to_text[int(action[act_dict["quality"]] * 1.99)] + robocup_action = "(change_view " + width + " " + quality + ")" + elif command == "tackle": + s, e = act_dict["tackle_dir"] + dir_x, dir_y = action[s:e] + dir = np.arctan2(dir_y, dir_x) * 180 / np.pi + f_to_text = ["true", "false"] + foul = f_to_text[int(action[act_dict["tackle_foul"]] * 1.99)] + robocup_action = "(tackle " + str(dir) + " " + foul + ")" + elif command == "turn": + s, e = act_dict["turn"] + dir_x, dir_y = action[s:e] + dir = np.arctan2(dir_y, dir_x) * 180 / np.pi + robocup_action = "(turn " + str(dir) + ")" + elif command == "turn_neck": + s, e = act_dict["neck"] + x, y = action[s:e] + turn_neck_dir = np.arctan2(y, x) * 180 / np.pi + robocup_action = "(turn_neck " + str(turn_neck_dir) + ")" + elif command == "none": + robocup_action = "(done)" + else: + raise NotImplementedError("Command not implemented: ", command) + return robocup_action + + @property + def possible_agents(self) -> gym.Env: + """Returns the number of possible agents.""" + return self.agents From f9061d667346925c6e1cb5b04ea0d647e09fa363 Mon Sep 17 00:00:00 2001 From: Dries Date: Tue, 1 Jun 2021 06:39:05 +0200 Subject: [PATCH 107/188] fix: In all trainers set Tensorflow to dynamically grow the gpu memory size. --- mava/systems/tf/dial/training.py | 3 +++ mava/systems/tf/mad4pg/training.py | 2 ++ mava/systems/tf/maddpg/training.py | 2 ++ mava/systems/tf/madqn/training.py | 2 ++ mava/systems/tf/mappo/training.py | 2 ++ mava/systems/tf/qmix/training.py | 2 ++ mava/systems/tf/vdn/training.py | 2 ++ mava/utils/training_utils.py | 9 +++++++++ 8 files changed, 24 insertions(+) diff --git a/mava/systems/tf/dial/training.py b/mava/systems/tf/dial/training.py index 080650edc..df967807d 100644 --- a/mava/systems/tf/dial/training.py +++ b/mava/systems/tf/dial/training.py @@ -31,6 +31,9 @@ LinearExplorationScheduler, ) from mava.systems.tf.madqn.training import MADQNRecurrentCommTrainer +from mava.utils import training_utils as train_utils + +train_utils.set_growing_gpu_memory() class DIALSwitchTrainer(MADQNRecurrentCommTrainer): diff --git a/mava/systems/tf/mad4pg/training.py b/mava/systems/tf/mad4pg/training.py index 0507ef564..b3364c3d3 100644 --- a/mava/systems/tf/mad4pg/training.py +++ b/mava/systems/tf/mad4pg/training.py @@ -37,6 +37,8 @@ ) from mava.utils import training_utils as train_utils +train_utils.set_growing_gpu_memory() + class MAD4PGBaseTrainer(MADDPGBaseTrainer): """MAD4PG trainer. diff --git a/mava/systems/tf/maddpg/training.py b/mava/systems/tf/maddpg/training.py index 139fba243..db57ce31a 100644 --- a/mava/systems/tf/maddpg/training.py +++ b/mava/systems/tf/maddpg/training.py @@ -36,6 +36,8 @@ from mava.systems.tf import savers as tf2_savers from mava.utils import training_utils as train_utils +train_utils.set_growing_gpu_memory() + class MADDPGBaseTrainer(mava.Trainer): """MADDPG trainer. diff --git a/mava/systems/tf/madqn/training.py b/mava/systems/tf/madqn/training.py index ab971894b..64d5a15aa 100644 --- a/mava/systems/tf/madqn/training.py +++ b/mava/systems/tf/madqn/training.py @@ -34,6 +34,8 @@ from mava.systems.tf import savers as tf2_savers from mava.utils import training_utils as train_utils +train_utils.set_growing_gpu_memory() + class MADQNTrainer(mava.Trainer): """MADQN trainer. diff --git a/mava/systems/tf/mappo/training.py b/mava/systems/tf/mappo/training.py index 793600218..d30458138 100644 --- a/mava/systems/tf/mappo/training.py +++ b/mava/systems/tf/mappo/training.py @@ -31,6 +31,8 @@ from mava.systems.tf import savers as tf2_savers from mava.utils import training_utils as train_utils +train_utils.set_growing_gpu_memory() + tfd = tfp.distributions diff --git a/mava/systems/tf/qmix/training.py b/mava/systems/tf/qmix/training.py index c06e0024b..f3319ac3e 100644 --- a/mava/systems/tf/qmix/training.py +++ b/mava/systems/tf/qmix/training.py @@ -32,6 +32,8 @@ from mava.systems.tf.madqn.training import MADQNTrainer from mava.utils import training_utils as train_utils +train_utils.set_growing_gpu_memory() + class QMIXTrainer(MADQNTrainer): """QMIX trainer. diff --git a/mava/systems/tf/vdn/training.py b/mava/systems/tf/vdn/training.py index 232468f68..9b1a8127b 100644 --- a/mava/systems/tf/vdn/training.py +++ b/mava/systems/tf/vdn/training.py @@ -28,6 +28,8 @@ from mava.systems.tf.madqn.training import MADQNTrainer from mava.utils import training_utils as train_utils +train_utils.set_growing_gpu_memory() + class VDNTrainer(MADQNTrainer): """VDN trainer. diff --git a/mava/utils/training_utils.py b/mava/utils/training_utils.py index adb9bb994..7cc8b9a14 100644 --- a/mava/utils/training_utils.py +++ b/mava/utils/training_utils.py @@ -1,3 +1,4 @@ +import os from typing import Any, Dict, Iterable, Sequence import sonnet as snt @@ -13,6 +14,14 @@ def checkpoint_networks(system_checkpointer: Dict) -> None: checkpointer.save() +def set_growing_gpu_memory() -> None: + # Solve gpu mem issues. + os.environ["TF_FORCE_GPU_ALLOW_GROWTH"] = "true" + physical_devices = tf.config.list_physical_devices("GPU") + if physical_devices: + tf.config.experimental.set_memory_growth(physical_devices[0], True) + + # Map critic and polic losses to dict, grouped by agent. def map_losses_per_agent_ac(critic_losses: Dict, policy_losses: Dict) -> Dict: assert len(policy_losses) > 0 and ( From c38cb60860814c18eaab7511d087552cb6041658 Mon Sep 17 00:00:00 2001 From: Dries Date: Tue, 1 Jun 2021 07:01:31 +0200 Subject: [PATCH 108/188] fix: Set render_game to False. --- mava/utils/environments/RoboCup_env/robocup_base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mava/utils/environments/RoboCup_env/robocup_base.py b/mava/utils/environments/RoboCup_env/robocup_base.py index e3d185752..86f35ea27 100644 --- a/mava/utils/environments/RoboCup_env/robocup_base.py +++ b/mava/utils/environments/RoboCup_env/robocup_base.py @@ -99,7 +99,7 @@ def create_robocup_environment( game_setting=game_name, team_names=["Team_A", "Team_B"], players_per_team=players_per_team, - render_game=True, + render_game=False, include_wait=False, game_length=1000, port=rand_port, From 7b50ae16e504aa1fff64fce95060338ea3990e60 Mon Sep 17 00:00:00 2001 From: Dries Date: Tue, 1 Jun 2021 09:54:48 +0200 Subject: [PATCH 109/188] Fix: Updated fixed agent. --- .../environments/RoboCup_env/robocup_agents/fixed_agent.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mava/utils/environments/RoboCup_env/robocup_agents/fixed_agent.py b/mava/utils/environments/RoboCup_env/robocup_agents/fixed_agent.py index 8c431485a..8165718b3 100755 --- a/mava/utils/environments/RoboCup_env/robocup_agents/fixed_agent.py +++ b/mava/utils/environments/RoboCup_env/robocup_agents/fixed_agent.py @@ -22,7 +22,7 @@ def __init__(self, agent_type, num_players): # self._action_size = 7 def reset_brain(self): - pass + self.kicked = False def get_action(self, observation): obs_dict = { From ed614965f64a30b5e53d881ed491412fe4ccdd7a Mon Sep 17 00:00:00 2001 From: Dries Date: Tue, 1 Jun 2021 12:15:33 +0200 Subject: [PATCH 110/188] fix: Update set_growing_gpu_memory to loop over all GPU devices. --- mava/utils/training_utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mava/utils/training_utils.py b/mava/utils/training_utils.py index 7cc8b9a14..01d57dcc7 100644 --- a/mava/utils/training_utils.py +++ b/mava/utils/training_utils.py @@ -19,7 +19,8 @@ def set_growing_gpu_memory() -> None: os.environ["TF_FORCE_GPU_ALLOW_GROWTH"] = "true" physical_devices = tf.config.list_physical_devices("GPU") if physical_devices: - tf.config.experimental.set_memory_growth(physical_devices[0], True) + for device in physical_devices: + tf.config.experimental.set_memory_growth(device, True) # Map critic and polic losses to dict, grouped by agent. From 6342c9af75e50768b3625101ae3335fab273df79 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Tue, 1 Jun 2021 16:01:29 +0200 Subject: [PATCH 111/188] add new logo image --- docs/images/mava.png | Bin 0 -> 40368 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/images/mava.png diff --git a/docs/images/mava.png b/docs/images/mava.png new file mode 100644 index 0000000000000000000000000000000000000000..63c9fca3acb500e83025f8a6a53a4bc39e5f0a20 GIT binary patch literal 40368 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[Kg`+8y&(LQT=csG0NDN|FS$ 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 E0oZaGUH||9 literal 0 HcmV?d00001 From f988a4bbefecc10de72b4066cb5fb6854aecbde4 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Tue, 1 Jun 2021 16:03:03 +0200 Subject: [PATCH 112/188] readme overview updated --- README.md | 57 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 30 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index a0a2ddc8a..f4d550b32 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ - + # Mava: a research framework for multi-agent reinforcement learning @@ -8,34 +8,34 @@ ![pytest](https://github.com/arnupretorius/mava/workflows/format_and_test/badge.svg) -Mava is a library for building multi-agent reinforcement learning (MARL) systems. Mava builds off of Acme and in a similar way strives to expose simple, efficient, and readable components, as well as examples that serve both as reference implementations of popular algorithms and as strong +Mava is a library for building multi-agent reinforcement learning (MARL) systems. Mava builds off of [Acme][Acme] and in a similar way strives to expose simple, efficient, and readable components, as well as examples that serve both as reference implementations of popular algorithms and as strong baselines, while still providing enough flexibility to do novel research. +## Overview +### Systems and the Executor-Trainer paradigm +At the core of the Mava framework is the concept of a `system`. A system refers to a full multi-agent reinforcement learning algorithm consisting of the following specific components: an `Executor`, a `Trainer` and a `Dataset`. -## Overview +

+ +         + +

-If you just want to get started using Mava quickly, the main thing to know about -the library is that we expose a number of system implementations and an -`EnvironmentLoop` primitive similar to Acme that can be used as follows: +The `Executor` is the part of the system that interacts with the environment, takes actions for each agent and observes the next state as a collection of observations, one for each agent in the system. Essentially, executors are the multi-agent version of the Actor class in Acme and are themselves constructed through feeding to the executor a dictionary of policy networks. The `Trainer` is responsible for sampling data from the Dataset originally collected from the executor and updating the parameters for every agent in the system. Trainers are therefore the multi-agent version of the Learner class in Acme. The `Dataset` stores all of the information collected by the executors in the form of a collection of dictionaries for the actions, observations and rewards with keys corresponding to the individual agent ids. +Several examples of system implementations can be viewed [here][Systems]. -```python -loop = mava.EnvironmentLoop(environment, system) -loop.run() -``` +### Distributed system training -This will run a simple loop in which the given multi-agent system interacts with its -environment and and each agent learns from this interaction. This assumes a `system` instance -(implementations of which you can find [here][Systems]) and a multi-agent `environment` -instance which implements the [DeepMind Environment API][dm_env]. +Mava shares much of the design philosophy of Acme for the same reason: to allow a high level of composability for novel research (i.e. building new systems) as well as making it possible to scale systems in a simple way, using the same underlying multi-agent RL system code. In the latter case, the system executor (which is responsible for data collection) is distributed across multiple processes each with a copy of the environment. Each process collects and stores data which the Trainer uses to update the parameters of the actor networks used within each executor. -For a deeper dive, take a look at the detailed working code -examples found in our [examples] subdirectory which show how to instantiate a few MARL systems and environments. +### Supported environments and the system-environment loop -> :information_source: Mava heavily relies on Acme, therefore as is the case with Acme, we make the same statement regarding reliability: mava is a framework for MARL research written by -> researchers, for researchers. We will make every attempt to keep everything in good -> working order, but things may break occasionally. If they do, we will make our best -> effort to fix them as quickly as possible! +A given multi-agent system interacts with its environment via an `EnvironmentLoop`. This loop takes as input a `system` instance and a multi-agent `environment` +instance which implements the [DeepMind Environment API][dm_env]. Mava currently supports multi-agent environment loops and environment wrappers for the following environments and environment suites: [PettingZoo][pettingzoo], [SMAC][smac], [Flatland][flatland] and [2D RoboCup][robocup]. +### Examples +For a deeper dive, take a look at the detailed working code +examples found in our [examples] subdirectory which show how to instantiate a few MARL systems and environments. ## Installation We have tested `mava` on Python 3.6, 3.7 and 3.8. @@ -53,20 +53,16 @@ We have tested `mava` on Python 3.6, 3.7 and 3.8. ``` For example, `make run EXAMPLE=examples/petting_zoo/run_decentralised_feedforward_maddpg_continous.py`. - Alternatively, you can also run a specific system that is defined in the `Makefile`: - ```bash - make run-maddpg - ``` - Or run bash inside a docker container with mava installed, `make bash`, and from there examples can be run as follows: `python dir/to/example/example.py`. + Alternatively, run bash inside a docker container with mava installed, `make bash`, and from there examples can be run as follows: `python dir/to/example/example.py`. - For viewing results through tensorboard, you can run + To run an example with tensorboard viewing enabled, you can run ```bash make run-tensorboard EXAMPLE=dir/to/example/example.py ``` and navigate to `http://127.0.0.1:6006/`. 3. Install multi-agent Starcraft 2 environment [Optional]: - To install the environment, please run the provided bash script. + To install the environment, please run the provided bash script, which is a slightly modified version of the script found [here][pymarl]. ```bash ./install_sc2.sh @@ -140,6 +136,9 @@ We have tested `mava` on Python 3.6, 3.7 and 3.8. We also have a list of [optional installs](OPTIONAL_INSTALL.md) for extra functionality such as the use of Atari environments, environment wrappers, gpu support and agent episode recording. +## Debugging + +Simple spread debugging environment. ## Contributing Please read our [contributing docs](./CONTRIBUTING.md) for details on how to submit pull requests, our Contributor License Agreement and community guidelines. @@ -148,6 +147,7 @@ Please read our [contributing docs](./CONTRIBUTING.md) for details on how to sub Please read our [troubleshooting and FAQs guide](./TROUBLESHOOTING.md). +[Acme]: https://github.com/deepmind/acme [Systems]: mava/systems/ [Examples]: examples/ [Tutorial]: https://arxiv.org @@ -155,6 +155,9 @@ Please read our [troubleshooting and FAQs guide](./TROUBLESHOOTING.md). [Documentation]: www.mava.rl [Paper]: https://arxiv.org [pettingzoo]: https://github.com/PettingZoo-Team/PettingZoo +[smac]: https://github.com/oxwhirl/smac [openspiel]: https://github.com/deepmind/open_spiel [flatland]: https://gitlab.aicrowd.com/flatland/flatland +[robocup]: https://github.com/rcsoccersim/rcssserver [dm_env]: https://github.com/deepmind/dm_env +[pymarl]: https://github.com/oxwhirl/pymarl From 4284061930811d60138f18a91644983215fe6b20 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Wed, 2 Jun 2021 11:08:46 +0200 Subject: [PATCH 113/188] add simpe spread debug env image --- docs/images/simple_spread.png | Bin 0 -> 42349 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/images/simple_spread.png diff --git a/docs/images/simple_spread.png b/docs/images/simple_spread.png new file mode 100644 index 0000000000000000000000000000000000000000..dd64c00e9c15a29bd578c390d3f436d3d81482dc GIT binary patch literal 42349 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 Date: Wed, 2 Jun 2021 11:09:07 +0200 Subject: [PATCH 114/188] feat: try out live polling in readme. --- README.md | 97 +++++++++++++++++++++++++++---------------------------- 1 file changed, 47 insertions(+), 50 deletions(-) diff --git a/README.md b/README.md index f4d550b32..26f4bbd6b 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# Mava: a research framework for multi-agent reinforcement learning +# Mava: a research framework for distributed multi-agent reinforcement learning **[Overview](#overview)** | **[Installation](#installation)** | **[Systems]** | **[Examples]** | @@ -51,9 +51,7 @@ We have tested `mava` on Python 3.6, 3.7 and 3.8. ```bash make run EXAMPLE=dir/to/example/example.py ``` - For example, `make run EXAMPLE=examples/petting_zoo/run_decentralised_feedforward_maddpg_continous.py`. - - Alternatively, run bash inside a docker container with mava installed, `make bash`, and from there examples can be run as follows: `python dir/to/example/example.py`. + For example, `make run EXAMPLE=examples/petting_zoo/run_decentralised_feedforward_maddpg_continous.py`. Alternatively, run bash inside a docker container with mava installed, `make bash`, and from there examples can be run as follows: `python dir/to/example/example.py`. To run an example with tensorboard viewing enabled, you can run ```bash @@ -70,7 +68,7 @@ We have tested `mava` on Python 3.6, 3.7 and 3.8. 1. If not using docker, we strongly recommend using a [Python virtual environment](https://docs.python.org/3/tutorial/venv.html) - to manage your dependencies in order to avoid version conflicts: + to manage your dependencies in order to avoid version conflicts. Please note that since Launchpad only supports Linux based OSes, using a python virtual environment will only work in these cases: ```bash python3 -m venv mava @@ -78,57 +76,25 @@ We have tested `mava` on Python 3.6, 3.7 and 3.8. pip install --upgrade pip setuptools ``` -2. To install the core libraries (including [Reverb], our storage backend): +2. To install the core libraries with dependencies from source (from root directory): ```bash - pip install id-mava + pip install -e ".[tf,envs,reverb,launchpad]" ``` - or install from source (from root directory): + Note that the dependencies may be installed selectively by adding and removing their identifiers. Additional optional dependencies include `record_episode` for installing packages required to make video recordings of evaluation runs and `testing_formatting` for running tests and code formatting checks. Extra information on optional installs are given below. + +3. **NB**: Flatland and SMAC installations have to be done separately. Flatland can be installed using: + ```bash - pip install . + pip install .[flatland] ``` - - -3. To install Acme dependencies for [TensorFlow]-based Acme agents: - - ``` - pip install id-mava[reverb] - pip install id-mava[tf] - ``` - - or from source: - - ```bash - pip install .[reverb] - pip install .[tf] - ``` - -4. To install a few example environments (including [pettingzoo], - [openspiel], and [flatland]): - - ```bash - pip install id-mava[envs] - ``` - - or from source: - ```bash - pip install .[envs] - ``` - - NB: For flatland installation, It has to be installed separately using: - ```bash - pip install id-mava[flatland] - ``` - or from source - ```bash - pip install .[flatland] - ``` - - NB: For StarCraft II installation, this must be installed separately according to your operating system. - To install the StarCraft II ML environment and associated packages, please follow the instructions on [PySC2](https://github.com/deepmind/pysc2) to install the StarCraft II game files. - Please ensure you have the required game maps (for both PySC2 and SMAC) extracted in the StarCraft II maps directory. - Once this is done you can install the packages for the single agent case (PySC2) and the multi-agent case (SMAC). + + For StarCraft II installation, this must be installed separately according to your operating system. + To install the StarCraft II ML environment and associated packages, please follow the instructions on [PySC2](https://github.com/deepmind/pysc2) to install the StarCraft II game files. + Please ensure you have the required game maps (for both PySC2 and SMAC) extracted in the StarCraft II maps directory. + Once this is done you can install the packages for the single agent case (PySC2) and the multi-agent case (SMAC). + ```bash pip install pysc2 pip install git+https://github.com/oxwhirl/smac.git @@ -139,6 +105,22 @@ We also have a list of [optional installs](OPTIONAL_INSTALL.md) for extra functi ## Debugging Simple spread debugging environment. + +

+ +

+ +## Roadmap + +[![](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Sequential%20environment%20support%20including%20OpenSpiel)](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Sequential%20environment%20support%20including%20OpenSpiel/vote) +[![](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Population%20based%20training)](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Population%20based%20training/vote) +[![](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Dynamic%20networked%20architectures)](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Dynamic%20networked%20architectures/vote) + + +* Improved testing and verification of system implementations. +* Sequential environment support including OpenSpiel. +* Population based training. +* Additional systems and modules. ## Contributing Please read our [contributing docs](./CONTRIBUTING.md) for details on how to submit pull requests, our Contributor License Agreement and community guidelines. @@ -147,6 +129,21 @@ Please read our [contributing docs](./CONTRIBUTING.md) for details on how to sub Please read our [troubleshooting and FAQs guide](./TROUBLESHOOTING.md). +## Citing Mava + +If you use Mava in your work, please cite the accompanying +[technical report][Paper]: + +```bibtex +@article{anon2021mava, + title={Mava: A Research Framework for Distributed Multi-Agent Reinforcement Learning}, + author={Anonymous authors}, + year={2021}, + journal={arXiv preprint}, + url={}, +} +``` + [Acme]: https://github.com/deepmind/acme [Systems]: mava/systems/ [Examples]: examples/ From 1c34217c7f3726156eea69c7539d65313c379432 Mon Sep 17 00:00:00 2001 From: Arnu Pretorius Date: Wed, 2 Jun 2021 11:54:18 +0200 Subject: [PATCH 115/188] Update README.md --- README.md | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 26f4bbd6b..1c931a032 100644 --- a/README.md +++ b/README.md @@ -16,9 +16,9 @@ baselines, while still providing enough flexibility to do novel research. At the core of the Mava framework is the concept of a `system`. A system refers to a full multi-agent reinforcement learning algorithm consisting of the following specific components: an `Executor`, a `Trainer` and a `Dataset`.

- +          - +

The `Executor` is the part of the system that interacts with the environment, takes actions for each agent and observes the next state as a collection of observations, one for each agent in the system. Essentially, executors are the multi-agent version of the Actor class in Acme and are themselves constructed through feeding to the executor a dictionary of policy networks. The `Trainer` is responsible for sampling data from the Dataset originally collected from the executor and updating the parameters for every agent in the system. Trainers are therefore the multi-agent version of the Learner class in Acme. The `Dataset` stores all of the information collected by the executors in the form of a collection of dictionaries for the actions, observations and rewards with keys corresponding to the individual agent ids. @@ -32,7 +32,7 @@ Mava shares much of the design philosophy of Acme for the same reason: to allow A given multi-agent system interacts with its environment via an `EnvironmentLoop`. This loop takes as input a `system` instance and a multi-agent `environment` instance which implements the [DeepMind Environment API][dm_env]. Mava currently supports multi-agent environment loops and environment wrappers for the following environments and environment suites: [PettingZoo][pettingzoo], [SMAC][smac], [Flatland][flatland] and [2D RoboCup][robocup]. -### Examples +## Examples For a deeper dive, take a look at the detailed working code examples found in our [examples] subdirectory which show how to instantiate a few MARL systems and environments. @@ -107,20 +107,15 @@ We also have a list of [optional installs](OPTIONAL_INSTALL.md) for extra functi Simple spread debugging environment.

- +

## Roadmap -[![](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Sequential%20environment%20support%20including%20OpenSpiel)](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Sequential%20environment%20support%20including%20OpenSpiel/vote) -[![](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Population%20based%20training)](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Population%20based%20training/vote) +[![](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Sequential%20environment%20support%20including%20OpenSpiel)](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Sequential%20environment%20support%20including%20OpenSpiel/vote)
+[![](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Population%20based%20training)](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Population%20based%20training/vote)
[![](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Dynamic%20networked%20architectures)](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Dynamic%20networked%20architectures/vote) - -* Improved testing and verification of system implementations. -* Sequential environment support including OpenSpiel. -* Population based training. -* Additional systems and modules. ## Contributing Please read our [contributing docs](./CONTRIBUTING.md) for details on how to submit pull requests, our Contributor License Agreement and community guidelines. @@ -129,6 +124,9 @@ Please read our [contributing docs](./CONTRIBUTING.md) for details on how to sub Please read our [troubleshooting and FAQs guide](./TROUBLESHOOTING.md). +### Purple GitLab Tanuki +{: #tanuki-purple} + ## Citing Mava If you use Mava in your work, please cite the accompanying From 10683da225e762bf87c7f7918d3260d9f3082c20 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Wed, 2 Jun 2021 11:55:54 +0200 Subject: [PATCH 116/188] added progress images --- README.md | 4 ++-- docs/images/green.png | Bin 0 -> 3467 bytes docs/images/orange.png | Bin 0 -> 3286 bytes docs/images/red.png | Bin 0 -> 3818 bytes 4 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 docs/images/green.png create mode 100644 docs/images/orange.png create mode 100644 docs/images/red.png diff --git a/README.md b/README.md index 26f4bbd6b..003399db7 100644 --- a/README.md +++ b/README.md @@ -112,8 +112,8 @@ Simple spread debugging environment. ## Roadmap -[![](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Sequential%20environment%20support%20including%20OpenSpiel)](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Sequential%20environment%20support%20including%20OpenSpiel/vote) -[![](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Population%20based%20training)](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Population%20based%20training/vote) +[![](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Sequential%20environment%20support%20including%20OpenSpiel)](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Sequential%20environment%20support%20including%20OpenSpiel/vote)
+[![](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Population%20based%20training)](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Population%20based%20training/vote)
[![](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Dynamic%20networked%20architectures)](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Dynamic%20networked%20architectures/vote) diff --git a/docs/images/green.png b/docs/images/green.png new file mode 100644 index 0000000000000000000000000000000000000000..5aea31c051ab961a6f8bd0637de1ab0df087b045 GIT binary patch literal 3467 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 literal 0 HcmV?d00001 diff --git a/docs/images/orange.png b/docs/images/orange.png new file mode 100644 index 0000000000000000000000000000000000000000..dd659f962275c6fc398a55b26b15b93a0b2aa278 GIT binary patch literal 3286 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 UVGkU<+5i9m07*qoM6N<$f|qjw;Q#;t literal 0 HcmV?d00001 diff --git a/docs/images/red.png b/docs/images/red.png new file mode 100644 index 0000000000000000000000000000000000000000..72e0925a316a5749dfb227f3b14091f8bb018e4f GIT binary patch literal 3818 zcmVqA%-$%)*q%3%F8Ji<5!$A0W<7E+{Ht zU|`GuvX#qA3P9{0AX_9U8_Zq+Viy4&2xM;ovC|>!6JRwE_8qXAkRWFu`vZ{8mjq@r zf$ZW-hp+`eY^c2;An2HqpOmTq^1X(krKN=?iGCmmN>VFIK(upyL1j^9dPa$YBQT^= z6+H8j^>h@B42%pJ7(n3;QT;g(9G;9~XAoitfDoG_!NB0Zl!1Ze4?@hOmw{n{4g&-K zRD_rs&~yQP28Mlel1q!qpvEvV88a{t;sXE|{7O-GBEOXY001~;SV?A0O#mtY000O8 z0f%V-1ONa40RR918UO$Q0007@0ssU600031002Iq0{{d700031002G!00006>j=RB z01Y}xL_t(&1?5}kb5z$A|7mxn-PKn0h6?HkfhaZxjEx&EV@%w@c8FtRV}r*@CS{WR z0m+BtLnfc%0xsCjxZB_cAR^rlmnezcjrb z=~>w@(C9H|;j)FBm7TZA=W zd3O$7)&u*Y2u{f|&9pM>7bCl_8m7S(s8gjyigkP(t$SWT{jYx$HvH`3 zR3L!UfBzfu6;^2dGPFD-P43wu%QRChTX_Y}d~%TV{e{S1Tt91|h?m<~S0@Hee2?<0 zuA0>`9HAh6yK>v3u&K=9Xi?di=Ev}72Vw8(7U5_9>Hp+Y1p7OnO_OHYADF_Vu>e&M zJ~*?h=s(*4RcqFwW#7B-x}2gq{v*pcZ}FD*_Mw=xF(t|CXi%_j9aP1YnDk0pxe8J) z^v*%F?S594l+Woz$4f83G-a1#f@$;yRJozn_(tPukGWHL#XMeEaSc3 zd;_H-1)0Sq(~Tn)Qb?p!ZGQ~5H2Db`G%1)k(}dyU$0bR1z4JCw$1fmFCB51n{}ck* zB`DjpNwU8bvY52Wq2|+IsT2;9jPq)D9r_$ai{rC`a#pN>wx%8v9_dx*flb~~v_AU` zf@Ft>gNyX<{`dC6taOK?MP;ip166!e$Dp8uIqB-hCq_>?jv8Kptd&DCa$NMR9W-N)o^&Ew<{AfPdU)}${zR}Kgj9vbLTL2^h=o3 zLCLZBCE7K)s3nmZk0BBw#;cxNUXGr|qaoDn%WYzK2p;l&7<2Qc8^v3weE4BZ=<*Ph zS@l$93ev_c=zRMvVQ28xH@b&pnX-A6$Xt6Z_@yQaStQd3NU@nBy`Ev#igRUVadD#b zg?@&T669Qa1MD7otIecx%0o%b!(@ zg?HaAOCz2NV_qIc&$kO*M2uT|dtu1Q0n6lMK>6m)aFdqB+EyZ9RhUq*Z97!y>4|io z)kjZ;(j-}Kyucz3`C?NiX%HSY&16E!J)2<*%A1F?W_JnUA`MVgR*j`*k(8R#?buFe@v^Ea%~gE2fRM0)M_!~?2P9KNwUF70l$l%9)vM1I&D^6 zeVu1vIea+T(-7z}e{9x@R$NUo&QIRSWJCK)d!Tb(1g~f;U=G@F{)Ok@pN#GwkA+@% z8z0?cYP~_sxGpCblXhEpyE&I_?dLIm>?n*fCa2T@?152@^r36-Ua9Ii;XD*_N+-9K zXvKB8IpB(9LL04|!6k2U%8g}KPNMJKw=hYzLo&fbemzbw5HW5nEW!kZiIN4Q6xDDx zpOiH@BaI_iZ{(5TW0EZJk^JVZo}QU0X55gMFQjE~gSi5$oo%~!!RQ?!2ZJ;k4D5ebET}~N?|x4n7I}w-p2VBGy%_^Xj)V^pcbQ#I<0Mw|>wk!<%wjyZ zb`d58-(A0C1=tVIP=4=bGF^+n9v3O# zc${*$7d;<*C{-O3ZltFhMOR!o-F6n^T(j`n^%y+g2G-rF(B-3s z0s|pn4@<>EkHDsoH;GLtPV~I-Dm)Z?j2B#1D_rC`E?TyHx~nAP268QDl$Fz}cTP8q zrNDmj?l)coPf`wSUKR3gycveFGEtKSH{B?ldAZmd>-bu`1?{iABI*~*pMlnMD5Lxs zHc3Mu$v9V5Qznt+?Af@^de`1}ptcRj8Y1j_bDIiLx%C&J@u#2cX{p)q1fBhC^0iN+ zMFozy4#g004ew+p5yn}PrK{G2qs8JZyoP0ZA;p;cPM;1(%a%EVq5u7TFsbA(AlsA< zrCT0=nvwveAba^T7#dbm>`khcf&eVuT!R#Qds@1|3@qysJ(Ltwx9LtHUpBm2cE!0- z)lD1VAU6#s)J21i*I%dD*Pv|di@h&_oD!67+!&Em&Eq@h4v>$+aKzQwd;&w?eixAr zS6V1Wpr>SDsT9zNjHha}Xt@99==}B=yb&xVHajgJ?}s|YFT}_BoX-4>!iY)=C`OBP z>M4qozu{I`J*l&3glHPPV`%#8Unt@#Z|3r1jgUUF*0t2a(XWo49KlA1m3Lh_#GOzTh0|!ul_q`FBX4)~YcxWQWp4&xA#29L? zzd^_-4B>z3C+D=DJ$wkIv?DpEJsQN#IE#ogB(KLQ_*QY%>ZC_rqD@$;-a24GH)U~D z-*!8SNd(6NaWftw+Dn&R+kuZzLe^YXNofduS)ZJ|YiVi57$x>J-1h)7$)t`I5@wtS zaFE@8^0ilyLbo<2(Iz|Y7KsVAwm5auL|IvU|D?qk?3@$hJTcCY>Z8=K^W;7@la9~1 zGjbv%5+kwJImnqXK*4=4nW%MS&gRIZnMR{GXU0PVaQ0viCCvAHeH12&v2%W$iIVH& z^k4iX;)1S;raEh4=j+~|mfPI#N7F&-l7r*FynDS>aG>9`Pw&Y&0= z2juxB#F9WCqBCi?3##%2smwO|UM;h{5=C@z&He zd1ZX&fWn7#WX16d3DC!NK93tgj%8`og7w5-6|%FRzc!3#cg!3omj9QP@mMBwx!T06 gvR#d$TC)YybcN07*qoM6N<$f|G_D{r~^~ literal 0 HcmV?d00001 From 7371e60b3393b3fce68b53c22b0baee7aadaa9d1 Mon Sep 17 00:00:00 2001 From: Arnu Pretorius Date: Wed, 2 Jun 2021 17:53:09 +0200 Subject: [PATCH 117/188] Update README.md --- README.md | 43 +++++++++++++++++++++++++++++++++++++++---- 1 file changed, 39 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 1c931a032..a9a1fc079 100644 --- a/README.md +++ b/README.md @@ -31,9 +31,47 @@ Mava shares much of the design philosophy of Acme for the same reason: to allow ### Supported environments and the system-environment loop A given multi-agent system interacts with its environment via an `EnvironmentLoop`. This loop takes as input a `system` instance and a multi-agent `environment` -instance which implements the [DeepMind Environment API][dm_env]. Mava currently supports multi-agent environment loops and environment wrappers for the following environments and environment suites: [PettingZoo][pettingzoo], [SMAC][smac], [Flatland][flatland] and [2D RoboCup][robocup]. +instance which implements the [DeepMind Environment API][dm_env]. Mava currently supports multi-agent environment loops and environment wrappers for the following environments and environment suites: +* [PettingZoo][pettingzoo] +* [SMAC][smac] +* [Flatland][flatland] +* [2D RoboCup][robocup] + +## Implementations + +* 🟩 - Multi-Agent Deep Q-Networks (MADQN). +* 🟩 - Multi-Agent Deep Deterministic Policy Gradient (MADDPG). +* 🟩 - Multi-Agent Distributed Distributional Deep Deterministic Policy Gradient (MAD4PG). +* 🟨 - Multi-Agent Proximal Policy Optimisation (MAPPO). +* 🟥 - Value Decomposition Networks (VDN). +* 🟥 - Monotonic value function factorisation (QMIX). + ## Examples +```python +# Mava imports +from mava.systems.tf import madqn +from mava.components.tf.architectures import DecentralisedPolicyActor +from mava.systems.tf.system.helpers import environment_factory, network_factory + +# Launchpad imports +import launchpad + +# Distributed program +program = madqn.MADQN( + environment_factory=environment_factory, + network_factory=network_factory, + architecture=DecentralisedPolicyActor, + num_executors=2, + ).build() + +# Launch +launchpad.launch( + program, + launchpad.LaunchType.LOCAL_MULTI_PROCESSING, + ) +``` + For a deeper dive, take a look at the detailed working code examples found in our [examples] subdirectory which show how to instantiate a few MARL systems and environments. ## Installation @@ -124,9 +162,6 @@ Please read our [contributing docs](./CONTRIBUTING.md) for details on how to sub Please read our [troubleshooting and FAQs guide](./TROUBLESHOOTING.md). -### Purple GitLab Tanuki -{: #tanuki-purple} - ## Citing Mava If you use Mava in your work, please cite the accompanying From 514aa9e9ccf936eb19f740ba56e956d0d450d56e Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Wed, 2 Jun 2021 17:53:35 +0200 Subject: [PATCH 118/188] minor edits to readme --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index 1c931a032..c7f1829c6 100644 --- a/README.md +++ b/README.md @@ -123,10 +123,6 @@ Please read our [contributing docs](./CONTRIBUTING.md) for details on how to sub ## Troubleshooting and FAQs Please read our [troubleshooting and FAQs guide](./TROUBLESHOOTING.md). - -### Purple GitLab Tanuki -{: #tanuki-purple} - ## Citing Mava If you use Mava in your work, please cite the accompanying From 211a65473ff876c9e7d1698f782afbb8a2d68507 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Wed, 2 Jun 2021 17:55:19 +0200 Subject: [PATCH 119/188] add debugging env results for discrete and cont. using ff nets. --- docs/images/continuous.png | Bin 0 -> 78877 bytes docs/images/discrete.png | Bin 0 -> 63365 bytes docs/images/green.png | Bin 3467 -> 0 bytes docs/images/orange.png | Bin 3286 -> 0 bytes docs/images/red.png | Bin 3818 -> 0 bytes 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/images/continuous.png create mode 100644 docs/images/discrete.png delete mode 100644 docs/images/green.png delete mode 100644 docs/images/orange.png delete mode 100644 docs/images/red.png diff --git a/docs/images/continuous.png b/docs/images/continuous.png new file mode 100644 index 0000000000000000000000000000000000000000..18c4577b2c475584d9b4ec5e05d90126001a7901 GIT binary patch literal 78877 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

41#j$(aQu= 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 literal 0 HcmV?d00001 diff --git a/docs/images/green.png b/docs/images/green.png deleted file mode 100644 index 5aea31c051ab961a6f8bd0637de1ab0df087b045..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3467 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 diff --git a/docs/images/orange.png b/docs/images/orange.png deleted file mode 100644 index dd659f962275c6fc398a55b26b15b93a0b2aa278..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3286 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 UVGkU<+5i9m07*qoM6N<$f|qjw;Q#;t diff --git a/docs/images/red.png b/docs/images/red.png deleted file mode 100644 index 72e0925a316a5749dfb227f3b14091f8bb018e4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3818 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 gvR#d$TC)YybcN07*qoM6N<$f|G_D{r~^~ From fb757431dcf4ce8214ff7fbc75c06983e910eac2 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Wed, 2 Jun 2021 17:56:10 +0200 Subject: [PATCH 120/188] add pz multi-walker gif --- docs/images/animation.gif | Bin 0 -> 2974868 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/images/animation.gif diff --git a/docs/images/animation.gif b/docs/images/animation.gif new file mode 100644 index 0000000000000000000000000000000000000000..5ec934a0f5c3951a57e47b9afa115a20fe7ddfe8 GIT binary patch literal 2974868 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


vR8`P^6qK8IvBMNEI zXqH*05UB2JHa^O*m% zr#{h(@z{*IFhgv;d~)1`x*S{k!97f3xPzkJ2pS&y1enF)nG3F34Of&zT^ zFwxauSHFfZhGg}bVYfDjJ@jPy3GkF_5$W;@9`|$dG2pu|k(mT5^U5qHLr$lVkXPxL z=P}~1liYu1G0sO*HDsXNr~oVS765hi1&+FHMen`)70?R& z^|fo?J4J>8avZB_mSx490>sSZ8IO>%m{ikC4RNnd%ijbFTK)O-=G>{ok5zwFpAWFt z17GkG6nP2o=Rpwii)7+X;OxUcsa&{(jZxlegC7ZMYQj@FH0DEknW9E3w6!gT`mRE8x&hXWi$JbC3_5y6Z` zx0!|@v4J~F%u;R#@IDN5;jLDn_gsTRf2?M;o7qbBeS&rBmfnV8HujMnbB>-7*GT%6 zN6f;}42!KnU*9)Z1$*bV1^j+`w7YeDnTWp?!y@gjAg&f=kSXuAeNu5N$h^$F#{J25 z$0Ly1z@rdy-K}cB#cR6Mi*LSZ6;kW5&|)dflPsiN34Z@T#dpP>g?{Irl!Z@3*TwfJ z-DEyxRHl=)mr`HZ;l9ZCx3+-Iwb`w!G3?`mI2tJ`cnj`-63XWnXS@!=Fy z9ncEzOBG?oR?g*IZr;~?O`fzi9ZH{E+ z(KyzI*%kSgYBVMGT6K>Rrg`QFiMdvaN!8)SagEA0(hDcvw$iyV8mZSORCJMURft)R zXWnBHHn?k|;H*=>OQOZt-qK&ml-MX2%)IjM@ybiyzO>W~Uk!bSMD}@WXDRDJ`9Y5Q z)&|jJMe{4nQJ(E9W?T=dZ;i4`xY3$Pv5rur+84w}a@>m1rsjH59F<`#^2Vu==hmBE z$ZYujSTX0dvD*eZTn@3C(OhprdbQciZ~N|s>^uWkb3H<7QZ-HL7)G%TMlegY%*BHt zoaQ3uUUiO`!*}x3xKNpPijVE^j&Bm8Nmtjy%`ZLMp9|gZJgJqB21$km`fxlV+J4~z zJqmvt`ir6SYR{>Q(!*!go&`}H*^cONTCQp=e{dB>9wJH2n@H$;CEjUp(f^ad=+elQ zH-OwI9=#&ZL6K>*{@69mJ z3AGnHR}3;gdDOXV_E0k3RQ{{HmbgPuW}GrmrDjHe1b?mNh5qel9f}u-3W<#Y8?=6V=(81=0s)K`kF>s&zlTkGocj&G)x9%0Qx5zExabm%0dRy?~_xFV_ z>RgXx8M}U9*Qqa<8ADH0@kideYRlh}pLel7_>L*-Sp2YWO=$tid|esh8XM{d)745@6UR=hI8P9}2GcwVy?&6 zC)%A9a!zyUC{Fn%J;D@m#u2rJ!sKYIOo1JWE5qP6hNsb%Od7alAqN;^_p}!&yWp?lx@~%C@@YwGqKt4FjDXQHjl~7iLs7GLt#CqGMomBj z>)0oQiE;Ui5|I)q?oX7&Cr6pRzt^sY$Gv;2?vPdDxv?5Vh_p~K$*4*!UJYWxAkWM* zW_NoP@3a}4n;hZlPd=|zw&|O=%V#vsgfo$TwL0ne`6W*0(j*`;_cWGM5zxzwD|2l! zmfO$FQFl1RbqGh82sJj3DCtB&vpD(Hm_vl^!f&B0A8Sh1a+0=d>*PR0?kaa$>X_ta zWcjLg0WOWIk9Sg8M>IDz(YIQdcQRI2Il?#DsOPbXSNpUGqAKAZJ`wX5@#$Lf84sop zgjfqJsl>z`Dz&YPxKj@-@U?Q4_J1VEr6gUMy8(!IHnI`S#mXw#loz)a4Qj# zU(#cK34xAwt9p0#>WAx+NOIln`UX3V+&4!f${p=%IQC@JHxJADd22QKmxQ42E6DE# zvqDl}8sDZXoF9fUsw){#V>|_W;_Lhqg6#bdWa^o&4Y`XEVykYgk$kDioM0((› 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

-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
P?g_>(3a4-QHF9gg`OTKqfw`Zw|&k-{FAeA*;y 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%0Aliom@*GMxLecNZ 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

    pfwl z@Y3lxXY~HT_>0jAKU1y2!)c$TBFmh*kz}69d*4EPr^C0NWntBGX2qz9TZiOgML6{s zL`O(#e_m*^efn08d5yLy5>g|Tj`UI`Hcz1_3p=U(I9zFQx0x;S!uU8B0XoJbped~@ zA5&uLK6z$tQP4F0<28qGj*0<=7TX`aKxhFK(}Vad?Yjm0_jsFMF5TnhDR83A!bFNq z@spNuq{|%Umy^lq@B#^96)Jq$eD{xV8yJTqA`1P&{62y$Qy*IAm7u0@aw(%Mj5_Bn zxg@0;8NG9$u@t5Glo7|hVw$CVi%0iZp}ko~ufql&5aub}?8cHxxl06Ps<0RzWNBGN zsrL;btTf1}k|VzuIcdtoWyznzB`u|{C>qxl@L8qERnlqq(;bs$9m%A=z@5lF?j7uD z*z8W3cg8;BLy@YOvEn!NA%30R&HVDEbsoC_N>b7!Q_(2)78;f2(_lX6eE9NwR+^hC zkG;#@ms6itniB8)OQqi-qf0Rf=LHszQvC=Kr}VRCFdw7jS2k}500tPu zLjdV*Jcr_$Dbsq2B;##O_#P1v)vV(Yu}}bWOpTgs)v7V5x3vZ+|IO`|({{-znX&N5gK!wqh5 z8~0gXu%~&SXz68FXxLMpI~*m~W7;4XY<>?byX%zm08;bQA<4JY(o&0Ucl zYa7Cxb&Am9`J{l;J11mfQdx}HD_Z7`^k!fp|GWfTMu|13l<=VF1T zDnw?tEZfD%9>fSyfhYigMEQ;^yI4Yrll9ccuswXQAHaen4fP%N{fl2k#92BfsS3aon5Z$$xLVA70szs$k9pj&Apca3ba#DA z#jEC2sGdC`{uUO`qEtByyH}e@30_H#yT3A2e&<#%{>%unAyz{K0FdOIh;0EgW|>xB z2sV$)C|uxn1HOT1ahDg&3|VgNJJLKREwh$HB%5S{XaoUh#o}PIzPWOiY0DveVGN3N z0t+I?XejNze~Z@3ZEx`NbgJ}_9&23iA;jG-zh6cc^bB&}paiWrm4sZk+kI6R)u{Jc zK%Zg?`-&c>5vhC$rHkWe>l;0lahgIAk=(DKtr?Qo6>b0WH=qZ6m=utbR|H@HuziM` zc*BMl6E_@bAf*V%bRCdRp&ZN9hL#Yb*o2tDXf7o+_{;#wF6(%M?xa4#Viy)4yh}k; z7!AezU+<%p=!TRHJ}c}};@qr)N@CMnc(z$KIc;1Z9+a1z*kV_oE#esqjP(+%WCVmn zei-2v8YR+HN&i#1#`eJrh|iBfF|IQJs~EIogKeC@YJ4AukX>bx+V39*2TtmL!-5eQ z6hs|KXu`%*az~7e(&GW1O$Ulp+aZ}IT9u$Xlq5c@N7;WpW_oxVOTdi*c|ME9CL7dc zd{)@zq&J*5|Jy3s?zsn9M-oa*j1OD&kNDX?SYQhE;B!YLi=aU?r4#Xr@Hd-ZV|IbG z3kW{}3ZRn-;~U@B>$=Kbk4R|ukYQA#&eZ!Dd?&<0Tmq8xC}qOX)|#FD2{uuK2t}Un zNH2Bc&!;&QW4w=dXX-GR@%B`d%ro)>aI6?b%2tAMv)tSUn$~r&GyB#ZGy1(x$R~1Q zeeJe}pb^j>8lJfH&B4kK-;G3qXD&&MR!TcAxim}y7PSoR2E~LkC>V= z7}1LALm&tOky)0D#XFJvQb8BBd8`qh86bWxC8r2#6&mHSxiFz$W;9J3)>u^o#8BXZ zEIW~LVI|aOhm@DNR_u^39y=NR`U({~HZ1ko+Nc5c&WC&m zp9QOrF8`}m_po2UI)gV9fCT6l4d{#*rz2p1682qxh^t5Pi$A@;v^7|0KV1glRZ-(J z#xvdY2?`8=)~gDym2`oF7Xf#{zcXWb2d|gq z6PwYI5PSj*fD`}}UPc<`OVAmiqUklG@4C@5{F6HPc zw68soNgLqms6dhlpv4lB%pk7zu$3=|h=3~BYRY^|Z3!}c7kAM>LA0?E5{d;-$TX&8 z*Wc3FqY_cX8XQA^A_&QLk>nsCZdjUjJ>H}gWe8C)#VFA6_8xBv=d8!mVF8XH)NKTd zHSD!Ov1-CPmcM~ndn-ebW@z+vk+W%qj8&3&QGyKs=QVW@b*X(X2jZCl>97enPr5gz zJyEum!wHBViiARd3JpkF3Ib&b0u#sxb++nn-TXh+K&}SBN(*w}CDO${OS?i*_+QsT_>Mv#m z1ckPQgxfkE+#L#^!R0VW5QdcmHh`AkHijrLLBRgJLw8eob3-*;r@(~*JUDO&XUPcb z0`LLAjVmn&M<5*sdP%%LxA5g?QoavOKNm|aC?Dyv%k8SCm`bCZMxx?>G@<|db*P|9 z6EWJjMh*863Z6X_3t~chV%xFZO!m@VfmM|a0%3ya%BKMQd?dN*WQuG>=Xy`aQ?N$FhB5+z_Qll-yp!1@aB|!<2?^@9 z1&J;eGKIuj*9#!)CnhrC{4cxbSO`Gyd*Um|z}Em`B;Xc5b1=FBl`9SoS&}SpDoYc~ zwp*T@7Z|6Yn1E&?N!IV|r_QW&O-#md^@$IzU25mzwodXB++dTqEQ{c%>A8TAid8v8 z8~J?&KnxfOT7E&3J*^?vN7V)nfPjr}6d+y58wugfJuzbYd&UgCOc;WI(w7`X_jb$2 z{Vlsm5P%v%ee!$;qC{2N=DE}2l(Q8BvZUGAEo~4l)l5ah@GlN7BcwKYRH0isbTMz&|nM_A;lQCUa8^7O}kCBi~Me&WTXsB%y$VT zq=jkVV}{8S4T-B(ak;os={BtR07CPjMh zJv2d@RO!7)@4ZRyB?$zOUZg9c^d36WReD!MQIOt2dK1v>_f>J0r z2QKijSZU(|-XFy1o_lE+Al}6kND0$yJ~b-pR?#0p!T7tyd+6Z5$8K9v3{~dl^^D*3 zD?b%~N>MfZ5c!xpTvwD3nC37VT?<6Cpl&Q*dK)~o4v)L%Q9_YCO=SAytQ0^9z@xJK zh_Reuf=iQC7-UFFo2JmI7Fi;+H{p8PD5uJ)6ZLO)C&_yZ5FNjXNYuG@sj|t8-`Q@&S*a7>k~jEH1R6D*(fg zI6|LZ>ssIgzIZM#_QEX42`%aYnxTmP2N6{8lLOG!>PK+v`}R4p@aOjeOuu7u^f@U> zLKG$m>Sjav-wP&33W*es&MWPV6SHK$f0T;%4?$pIgXav`OHW>&9xt-6<^gn`!n~F} zQ#LQfY(Z~vMjNVB#V}+!tr`OdQR8`rV7(id%2r9QAEoZ}e3O=orFmg!^C!k1z2HUv zbA@tgRV9VvBN&&WN4`l`>Lqp70ABFv?8*0^{v&aom2vxZaeH-32ZKxQ#b9^RI2$z_ zF|`;m?wB)y7}0Ay_x`1$K%2|Kr9CgpuCnEuvgJ)hXpSsD3V-SJ{vr`#f&BgV`o-ms z()ZWA-e_4syiDW4K`T~jD$&_Z`g!1&(#^BNwktSR1IF~Y^+XXP5ThMw_CPfvW?8?G z_+Zj$;|Y}Se0;ELsZik7o4cAxqA9W`$i zfCk&{psW+{1QJl(Uy-~y_SPY5*4#E?EB505+A~PO6_DUOQbaBWW43}V2|0*up&l05 zTUFZKw%XifL;kcXAdM|Cf0hwQI=kcb$HZ~A%wYSFWySJ11!Bj?4>oWl;r8gIec26# zzt;9@j&@M6UAp7tq~n#!hWzEm(JyPYARFDkjtY#9ih>(D#8^s%qzXZR;hUd%i5iHVNe8hw7FTh?j-saWLX~IAY8(Vz3x&k%t?O#C~AJ z>o7GO5$2erC=eGllEnv!WhpP}LA=Ev?rS7=hQKMM+o=k+vtkb;b`V-|6N2vu1NMZ| zUB#$lU?w)U51pKdofYfB9wTx7uJN)Q_t2snrCbtd-h&{*J_Byvb+lalyAKDae?Q$o8`l1d* zr#x+8U=Lec$d+IroYUVF$c}nwTLU23d0#DK8IwvKuNRMJ4Y5r?i3rAsLHC4@k@Q&G zvjSvTLEO|IF;+ff9zp#13S{sBWy$RVBz7@}2*#bGKTnQvw}CuxkWd1$=yLbc`xz`1 zDIByf0QfaJbs#Dk!+nWoGlOTG*9|WH~_~uHHdyR80$G&~S5q*Na+cHC`RocU`!YQ~5!nH84xc{CJz?+j(})K>j1S3I;(qLc6mAAx| z|F=sormMj1OaI`jU?C)c3CW8-;hgqYqzV*GKZR|%=1w7_seSLG3PDFle+7?Yjt~rb zA*jdKH-gs~r0zAtHR8GIH7NL+J|rZj;X1MXD0TTdB|0Qc_nI*sncxy~SM=;=3-SE* zHA={bOa3~28v$BIq;Xv*H(aA0|1Qi8Em#Kf0B$l>Lz!m~*AK(qegnQ<{>_;1>^k-6 zw@C;~2#DqSSsqi^pSUCXj-wcon>gLy@lS6GAiv|UfK2isuby7#A00Jej`Cp4$AU+{Co@)ey>#c`wuwO8?mlos|edVni94PVUOYjv7EI9PB8`pJ2HgtadIPI^i!rZ^e!o6Kn}i`O`rUYUC);XNz%KX@H) z>)sc3GRlWNiN)h&7Da)b>ywNG-4yQFgAn|!39UTRyUs@k8%^r`kF6`S-3&j!RSyP_hn={M zFn9R0_k~?Z$dTb(7{0jxO-? z9}`=1IS~OL$lRQ7r!+o$#+WB0VA14LHNB}xC3MrHw)!cOUB!xHV_spHCWQW}HVrqa zGsK{bl-z~p&48QdZXin>)(f%NphB-%5)k4E%s#|Ho5ijsp(xr!fzE5z#fAG9DW$!gDHj+vWbWj!r?``Ly9(0z! zF>!KYD-P$parK$RtFkD0K*SOoB87TBVDQT&1rv3xnj ziUbZGhM_7v-l^~6TnqhfZurmvOON;y&L%$Q726jj7&kRzy-?-<2a57$NmWCLQ?vox4-&{9R16g$~Wq=C_N*Yd^w;dVkB&9=4M0-5!~4klhHq z-Kq|UeF(r`5d0WjmZgI{`Re-1_zV;wJVfI`zwR~^+9fAIrFm=;TdMx9j918=0n2*_uL;nW#E`#|arh>4pI*z8JZ7-- z<-hc}swF>_uK5y6MsoY>#_=j`Mm?Zq7b~4PVao%@4MaTypC3Cf?|GMX@(_M7p zVW|oUujCSn?r*JIEn{!TQiQbk(;rdaMuR>lS^V=tkFAu+z>ojF`;ghL`RH3gVU*Nf z)wA(;+r?dfO*Y;}t99zj%=i&OBV`#Kwrk-gS_`mE>Z`vSIivs%+9cYBqp`}cH9w^tUk_-i5h@!#b` zV$AmGG?VXN5O+VYb0_j{p%A0kB2rhH1}BbK`9l~Y-)tv@xL3=BD_W^=tnPy}s42z> zs&x=$qGJd4iy`4)#ow~iv4RnAe(B|X$gG=*5Qt?V_78bPGev4AKCwg;$UVT4m=Z5* z^o^vDN|_bwg)~Li?tjWwUIEqz=ybC_2yW}+u7)9+7p!}lxQB%82@@^P=O~=ol|`Bw zQ>H}LY1XlWVd_4m1a+4jno|wOgq|eve`I6EdDJLyn2{Dq$T*NWBd;LRl+niO$TBOg zI{JJjBd5F6n3-nOmLU_y+QQ1IH2Or+n@lO|+=5c2YD_+}=|vdkQQ42ZjxjUq#_alm zd;B$=n&zi|32ogR8&bP6u%^n~q1rM|#Pf%C1Y23fGMr)(*P2d;sQe$AdRK3&wCQ!S z3VcV)=E&ZScxBEaex7q4)Z*u9u@JO}Sj zq2#YepR>#BOY3EJcMNWHb3VWD9ZlZmljTjb`r1OHoORlksy1(W_BEGNzQ(B7A7hNK2(j zs%0l3!>eIRtE5h^>`1Ss%C2I@pkz<1%*5&voxqAO| zIf4INPMfcFx3l?xvEju3=5jupn(vxgYA>=f3?9<=C&-psIZ0(Ei9*LGUlp zIInuKvHDn@qlMKuaZmNrER7R&6$^EhGK|%7Z7eb^4YD1~ zb6uat`}$>u2Nn8xWEv}%n5k7-=`=Z-mN=PK+UmC0>2$e0?esQp3U=)b^r-VP`-r7E z9>$Z{f={5sc!bA9u+#AWq&XoDvr#_7Vb<$WP8$*bDfmRXZ0DK9U};X3W%6^ExB{o7 zT)(VR$J8prZz4VZ>6}>i-9*3j;AT|B*QD_8@nPf7 zBUTbJ(D4}wP0g9jZDsGWGv5qmcEruUi2stBbextmU5+jIV0BLUzk*LsE2h2jwBhY$ zV{Y0|>C5Ss+Tq&Lug&$dEj3%sHQN)-*oe={`*()}o#)#vKmLp6w4RJ~efl&!v^048 zb>#Z<@W<^RUk@e*uV*K(7k*qUe7*TGy1hNRyZ-a<{?gs{_w&oen}eBOKX=cUw*D^c zTz)#*{zr5E9{xX5KAV3xcK`l&%IEO!-Om3?`CMH6*+03!qMY0R74a$ke}i(k|F5E) z@wcxugIN~4LeBPnj$f55cEUehGH7+6S3g=}z}Cr>jqAhdY?_z*|107H>mJKhV*2%8 zDCcpKwe0Nw&4|zG=Ng;8y}f^~PPQBRru+J?j&Fcl%Wzz&TpM^BW#tO88<@as{!W;C zHMWf5+Sc{HLFH;(x>?9-2z?wks~vGv|KSwx|SI6PbGXw zk-4NcN|mDBTu)bC!*xs-qpaG<+AVQ^R=~0SN+!&7+c@NsrlctRaA*7fHxZvd|6fFWjOH9f zWv{UN*Rp*%G6I$onvVXm=N}BQ5ucOhX&J3ya^3%m_~`wM_=FP49?Pm8Wqp}CU({+< zQjXWY_@Yw1$U1Y?64@dz-99P)V}Uj@?OUM0`vOfrjC6Xd$HlbXv# zrzD9eF^AibhRUNmYhAtHSBSI~1C)o?rOf+Z&0+h_`>9U*C&kZxYhJm&0yL1PVXB_< zj7b0Z6vf3bF!{^V#{LzC(3B#I^e6Qz+2P?!N@fv_Nv~$ zxTMhZbKb|omvzCnK5X5!xg_|{1(*UO)^|4~vzf~EIGpHcWwsiX37$+R9c0+Dt{SUt zRo&+>Qrh5zG%5YbhA>LfJ2m%jjmqT=IFpo?G85Ynvd?qq%Rf_2bb@ z$;&CR3vL%B3*%m1+J@{kb_*Hb2P4nphN5&uE#^td)7-+or2gF)6XJp1mwmWV#MP6G zXSnyEDp0KajeVJgiMxE$=1~miV3q3@VobCbFGqsXy*TKJVfFEOG%enqoOgxM!WVRv z;Tvn?_7TYrnK?gNV^*bhTKclcRFv!H5{2EBgj!-9V+5OrPNPP4Ow*T;c+G0dW%fsm zmnrphz*XzqAI2T?tre29mU<9P{eEl5gyf&(h7!Cv4b~~IGE!)!4c^X8^zI@<8*5!u z!wV;KHr#aS`P_ugwTCq}(KRVv8#+z$-!X5EqJj~1UcrSDvrz-iPYRizWf;jdZmP6@ z)D|=ea{jdZL#t!#l|D~O64l0&t4`6~O*Nf_pUjhAUP%9{4`DE$Pn8eq7HG0rRZLpC z{7{q*VH+t(#`gU4xJ3!|PN0!GI246(UH(FIg_4bH%dU zHfcJ(*LalO_t_El`bG9&_{;c7&-}I1JWP)#<3Zf2)P!V>>Zk))Gyj*T&OPsrsfY)< z>FTsQ)j_R+hJs=qsoeRpd<8k)^$=brug-VcL!Vygu)omG+tEsjb9uIPuUvL=V9qY* z%NP&4H;bsdk-y%v`kX0=E=mt~L9fZya!t6~t9|RP;LeegR`hUq+I?{N{D_HQWrNC` zqjWgBaO%t=;_|>SXjP?7WTEeW| zXN}#toQ2N~=>^8UdFJM24|O!|))5%iy=s*unHN;JEjLq1!&Xt*C7nPb7@e2ohY@*ucBTKG&+P|0a z*hwt}dsElZF~TOCWRwdku2n@_B~zpCECq!^-_YoM?rkpm=~nC5H_drg@c5pquf6W_ zU+rHfpZW66fJbkifiJ4QjrB#6>CUfSqlA__5YstH zIhv7S%y#b)eS1IV$m}|(7dBfFh0#y^^XFx3>S|mT-5>P$=4p)0T^YlzT`FW}K6CjG zYg{z>CJSbCJ_}W{t&_V=zgiIu13EP6yL=@#?0*6WLmh`%vau8&iU94({2TM~#1e>0fVysF?tgD>@%umK{FfvC! z47U`8txxhG6WsaLL~oKG1=D;P}&l)`c1FovFgApGwt zljc7%_Hi@5uDowz68ynXRfkG2ZzOq|ozg%_+)X7p_99tK)a!c)RWP;i56aYDgio^~ zwV^}eM@hc9gj9z1gkw;u;rr*WO4!u7(})z)Htf^912ri>rIyY<%7KP1jHGpaO8x;% z7dMW1I1-y|=R{CNw>OU!BUJGTl2s+92;m6Icj<4`=&fC4##NKXo%~tw>8S9ZU%WTD zbWCiePUCw{D?r0bgW081Hk2yP$rArgNyx(>N5g;GA3c1X^+_aC4V&+||6)w|g%-Ym z4iCK^P4<{yR=h#Bi5b5s4Y&Eb?EcT$;iuWQ@AwR9=pD^++E{Y}GjrVW`CLNjynp9Z zf5>?zk{h7T8OybcQSYito_sH2IVnO2zdpxjyTqry z{!QT}PBx;dqMHBOurb%+^J^V_;!T*&5_vI5su=f%0{nvmnkc_gOhBFZrn8uEtoUAM z`Wt52x2!kNG7(ECRDHdy#V7-QzdC9}D5=o5`B>F!n=cYuSwp3B7 zRQaaF!|&}x0rv-R+? zm4qA^zKuKn3+$2Sz3PS^)g1*jot-t^KWcibYii7EvW|gFq@W>MkS`XW(1HfcYlnCt zGu5@zv~?_`bziX^AKtp}Sd`OQH?L90g5ASm2K`sWhZR=8(^-Fj8@xnUXkzKc z;_NVb4GpS%T8g#)s;m`kriTD@kKnZ)8hlFtEkqO4pzGlH#QSK_ExMSr8p?O?K^L03 zu<;(Z>R!++ z##bSC+bmDlqDa>g(GLmmX~F6lwXPP`dv#icEgH8idbcgYQqW~M>b+mpY*T~6Kvnh% ze!guJI2_F#-UMABAX-2JrO`!bG*wa~!)>E)5}N+DG3b_n{uaMc4-E=$zh}{wXWL%9 z(oV3@PAlEf0Bpzv?Tf%5}61! zi5N6}IcVNJXt_9OrPY_t+z+Jh&#}b^-j(G_ziX};$}XFmJ{{`&0{Z{?-nMe?k4_4d}JnPyP;pZp_%EEKe{J>)Zzybjs$x) zt;kG8$W+H9V|V}2DG?(>boX{9rjG7LGA3H3G8+69rd7p3;WJPpss3bJC<JVuC9@PZ zpOPdJ5x@9Fl=F+|#m|}9W1=+x@iH3A2Z)4kz@jM-{>UHvL?yl}Z>MIyzxeZGWrhg- zljzOl%nCDchX8TT0aWgwMZc!y>)uCAK1kq7i<;)*g88Cq__zw+Oux)T`%8%G!a(6T zL@K%E8KA{!ui2ZnBm?8g;2T+tZM+0|LF;GQcOske((wy?`d`2&fIkNk^oTc7dQ%xF zWX_(tIs0H0PuTICzRdiy^l~wa@^Me7k1e#Jy8I#CV72_R0nX|tZrM#z;s;Ty)J3bb zy{q)StGNdQE(PUn^b=2Rp(}dCuTs`J{t!*UKm)X22F>dw80yt~YQ?;3djP}^c}mxd z53clxS#6=&wrxvv=r;vr6}0%>()jwx^DD>e!fIl?-^o`2RljElAMux@6%*7SLwk5@ zohCZ6W*`xyC2|wBHS#2s)|*#)n^$|}_kIwDu53m})}+Y))X|;|wB2GVhQuCktj^4D z&SV)n5MR_4Cty-{e%@cAkXkAvfaIo6?aFi;6+pw`5co0S7d_&E^)0*m#8)$fOr-d| zbk%_q@8kKg<4Ss=h4^{!HcUi$Bq;>0x3B`Y5L9kpHhs8)CX8EwqR~sGVbw-q_%Di~ zQb`A5HO@++Pf-OLxqgke}ZBe?sVzx&M|K`LyJ2@YZZvt@LDj|qTJPw(gp@5+}R3_ONNb`!P>s>ltJPagwQVE7HBBVn(qjc&S%s;ko$q3~k} zOFD#ok~z8lEv=te6e;Aut0TGgmqSv!i}bw_?}70dLafx{V0wUU17)t@GaMW`)btlI z-)q1epBB$7jd%~nz=-TbH>LGSW{-i%KKMld0$|r6*ZApi_i)k7l8+DcVHaWD;ySPR zFMnkcI4Puow5?dL9lxuce)&BkhM-`EU<1q703~B+!k;tqR`-b~nL(NI=uF}s^@ge4 z$q^j7>Y6=lKnpU-yh-SrA_pXr7dk)cZF5RGU#&e?t;aW!DM9FU;)tA7)vy#3L;V0p z`98ySfTqCxsYH70xEy>d4g86Ef*JXxj2jB$jY~GttB_|Og3>w!WY8OQka6^l>G@Ie z3c+f`aKiEjCEfFgpV%7-O+^!udNXZ@vKUN1fWsjL#{|4dZN%O0L0#`B?oAV8_{!>G z_z76ov_y1w{8fAP(xDP}_ z=zq4jRb_H&Qp@dz0W{;q0>3A2U`@mpBekm_~to} zX`_AoWx!^&agCZ@BUacSh`Ebq49Y^us62HpiDhyPwb;d#F}i#l)Rq#LZZ)E zIUK?zdpDX@(YC;F@%z}0^26HNAB--K=roueEk7xbGt=R7qvXo4MmDimz4oE1B3~Z# z$szW>G89Nc@;G3iyyXk6zQBTfJ_&`E%q|bPmgO#6>?mn0>02j7cx+}{Wr=rY%TDKL zhI(hSa>b$dO-u~Q3A#j`YaiZ3Oezmmps8_pJmVKYK?lJNe6%@2Gf;2EB&N1_MuSpCEg#cU5&pOPVx#mm9mU2Iz<42B3*)W z(7`~GqAE3G*VSW_%M7=$flKS*cO?>kXo_n-3H2vmDUC!iM-n;bvcNRiB^diRi)A#M zfg0wR^1jVIR%I$5!V6KRu%h=ksfq-nbLncX>u!yMKKuA+-6V~(3UP9eaWbWI(=7#~ zX-cAL*>6tmrE;IF+}=mzy~)kDYI$SG;<&mgWD`c%TFn?SAv}zOZ*UB-BQ`Mo{P78` z`o^jSNN-jr)bvcH&)w7-a@eIbCaDZiex|NxMS>j;DlY zqr%wl{lqC2W&q$Tr$VlE*!QyS=&FIHehe^(QdY1r}ZlB3Ao{FL=>4tb3eC}d15JYWR<#i-oXT?SR{$hpS^!S?| zdMod5gFa7R__F&+TgI4V40F8s#rGj1Y%^1ZFzl7zHiJR1=k7w;?eDnSL>B?U3`kk(c2O>V^6_lnRlUHiTwB2w(oYwX*le2n`{)o`KD7|?|VldV4_67VLT2epFJ zNve7=@c=e+pa{CZ(|>R43VWo!pJIb~UWsC-8xz(tMK{45iz5S5B=M0~579GVI2GlW zXJ);haGlZtelNT~cg%8{XHEREO@VI8i}8nt0+IU+l9Ina0egI&3|}6^=^n%QXJ@sK z%s%^SP$-JDAMnTsf_}$RN1yj7$qAF-toFi1NOWuvX2 zv%}X)hr#u+&R&o))75bxg^4K`MI_^O$eUVhuDm+^0Qt;8!(4`$)*|#i+ z8@FN{>JWMS5q%PWQz!8i7iynCV z;#i&ruJQ`#OcM?s0glJNJS`x6Qzr188fa9?3g$N5s_G2U{W^!kxC6rjanAtbbl{*; z+pR@vYS@qG4h}7BJ8bRmK21A*Nxm4d1{k4%{)q-&#PE2D^X*T>)t_G-e*y4}tm@Zp zh$7pyRCpCxV#r^X+9H8s~BJ1eK zdyxnypAcnrR35Qj*kh`3o@>N7dU*670^wNZgWDJrAM*fdnzN*o&ETT|5!3_TqX=r` z^|i&L=Kax8v_??^RpB;(rAih(V7X3sg3qo8EOYJ$5iqMr?Epy@mYN&WR1Tj|SV+_? zIskAp-omx0(^+7vpm6ZUU04c$@&#kzz$8Nsg1|2D^YF)&kTa3TP@$lL_MB|vERa^vp8zIKmOIAOu@S1qcJ5;;zXyH zn}h+(IQK&u3Bf-}MO;>fHY%S$6dTtKi;)!EJ1WIMO0$6Tw;sXK*dcx=yALI#O9c7rtOI_M3W%~xBCko ztr~o?oZx^~HvcOf>S5;|!h;e*4NU2k2l0}|7`*JST0MM&mPjWKJF*9hQme!&`GQPV z9Fj8XAX1pm`UFsR<~nCVd9jg?zfwbQ7k$I=n!_B!;0rNG~=)F zem%2-6VSW>evy`;Ih(gfjW3}^!(%8;UN5N)$NEV!D5JP zyi)ulQ7{1RCpt?{Ee{u-Ja8&60Yo2Iw2V%_zh|Fg1*BuHm(z(NpqgL?3rixn-)0cM zq@-ftp6^eg^SX@PSNi3_MIo~|rQhMe6X4$mgX=27jQ4&H3i~+Ve?B=OJ?t^yQ!nkF9QLg%d?Y?%{*nJod{hEhUmk%!-%NytC+`F5 z`4IBd)RoOb&u04lcTgZT05-mIl@Ewei+6>g=nMIBl0^ObX;@0C!)74X=|FdBQKEi0 zyAtr($|LNMa!72)Y=QhCPW5D1dKXYEUFE1sHt3>2r$D!Ag&3HT@!kxh#;d@)+(*aI_8PU6AhO^=tTe= zL^x?DK8D{88o4%O=a`x~iXb!jD-`jZOPL+2;V(tw`$~pr8;39+^o5@M0~)3B*pUjp zGjUQBgCH0H^%+18wS)!p4c+N@K*UtvmzK<9+5|Y=HbX@ zIJTkG?=Ji>3@%y=a9#wEGvgWNb-$KUdz9GcpC^i-lZ;D-&k)o#MF1e8KpJ_Jj*}a0z`Yr1l8*p`-Fz)qK4)MZ$q*IzMgs#6@)MZ4L53jt;*UK9FRBqoPal?U(?zakC0mFo{!j7fOcRKkcMqHP&_h zU1##!tq=WhHi$T#W?=KXt3?2vGQvtS-s^U1461wbvUFxqO-VT3pBdHt5e`k)CrF$Y z@khM#t78)bny4{U(B?g7)$NhQzZAhUwpU$oESoce6F^Z`@+j&&L=>$W%{+>Ljhf&W zOI0UCIuRVJ0Km(`!kb}H2USM#NBk*mm;@XH<`iX$GDgZ@V_OE0poF+)K7hRjUNfEC zx4o7iX$090%9R;1)hLe##xVp0NvMg04Gut!JWsmVTMHWYSC|2xz>&)HxWbv zT6{;)S3pB7*&>Gl3G?8fez?^NDuLj0LSChdh2ir8?!Y|5Ak$g#GR=o|P_dK*^1xY8 z=-fDL`ag*Jp@1?4(|#!mk>*l98JF)6Ax7(1(SrmZYCCv}735)=anVT1l(;Ad<<28M8-iC>^M$t@n%VaM~WRUm{JuX$?XRepX|I1?HOt+}qUQc0&_ zFoEHo8f#)r!Hk~5=TO5u&L;c=C!Cxm=2$yP1>X&MjE zGhjwtJ+B}-Mw84JHVc5tlp9qT^!&pSuilp7Wmhur65 zS^;x{F|TYPL$**su(d0IQV#)k1vFExlC*(|%2zsDs|drxq6@2o<-1>l`-zlD+b5Mp352Ft+s&u5st3#6MdlF@d~ZrDq)ZpD(&aB@O?QjWZbPIIed}tCQl#X>gOQjE%3)}Fv2Em@_ zb?nk-(1=3~x`xK|^SuxRbRG+Y2Y>u9&lTSwG-n7pj%yf1MFR z1=zQR=zrkJIKSTm25|v42Z)jSjGNf*P4Ch^UApJ!Uqnw4(mV$#)Zrwe7h^T$F?qQp zIPdD;>wcEKRa}n>)>+23lssLXT{tN$@!~{bI9ThlK#YU6E*S0*Weg}q)i*%V1Y{whD@LLb5s4n_2weqMTSU3$S_ zI48Yc;@mi*At2^TBv-=GQmNQDo!mcvsCq8|Zn79AQfdP7v7@k$~q8GX)8o~?fM(meFum-AiJ z@m<o*htPfax&R8Uol8-@b z%%DdSphrST87{06@n<_edwk{p=rM?M3)P;f2g(20Y^%2kp;%Ud^#0&u0K`!4vxnP*TFxtMb$9OQzdob((opOU*nSvaS z_WPe)xG-Jz<^-BaT)4gtdipGgG31iR_CoVD$U*4J@9~uv)umrMf)4xAd4(`<_Z=F# z?8^!KPy}Ld|a zd;Iv1tPryA>G^y`q{`JDW}GUZChcZH0{MhwlU~TFixKqDCxAO0`xt|U>Ot5dla}?S zZTjC`p*RP?+5Yg~CfO|*iT@i6-mZ)FuFJxK(*o=mdEJIB5BZM^owJRcb*n~x`4*w3?z_o8PvL-*bjuAKlD4; zIbj<~XO;arUgkKO$*Ph}f4}mSV}eyRwfm(RE(bX$9zN~!-80UyVnyQzVu~Bw884NR zNIid_xlQIlRi!hhl}rqGCo%r zZih@e`m_!PpO$(Jgj*hWThx20%LSXS?#(4q^+o;pbags66g}M>b@=OO_I1T{)>X91 zNvs9@jB+lm zgNW|ikv`g(F(pCKhPjd$9`}DFc|32cRFd>SD$kauKCmL`I=^buTddcOS%LU)e%(ZQ zRl?X@h4&qAO`XVZ_F7iA79Cj+G2yK6{gmAbxXcOnM!i3QG=JlVGP7EQHEY*_)!A=z zChY-V^DXr71BqWv->a#L&6JA^US`xKN*`u67SI{UUd&(z204PIIa_Wvs|9*4K3rAx z{C1~1c)2+AoUPzGGqkoB4`*?|N{Lrh@FS5+fZzZ_S(i82m^DDgK=>rUx&__-Xa3)Sbx3h9{nf1Fa^>zncCyC5w#8+}?@K2s3gEgi5Z5oc60h z1Zu}%aW1jdFiqLR3DIxeLzCQRU1Hy?!hbb?vPr7*nk`_RJN@F;Y#uo9)Mc_}$RbTv z;%DINDx3MB{hqpLXC_qJ4+ImB=z>mX&(En3TRjr%Dbm(O$*hkLL%w6O@j6!Wb1gz@ z<8dsG*0Pf1I=}T5QAzFEKTU;g6?Ey`UwtW|F1%Ou59PeuUn%z zY8w@gA7lPpEHEwI{8GZm-7$?uKL+4%_iqrfMBm`pV4PhSS|BcR5 zX;o>Aw!&qjopr??>-2SZie09e;~svLn401h`<-s^sf^TVV_KH~8pBD);EBLYTAYmI zPXLWt{HAYM_#zoA8;^Psk6(r`U8x#l)q8cnrYwH;w;ZFWQ7yrlup$`_USG-gdWjw{ zPB45;1|wwvWcGP7NemTQ;j{AIXpxp>v0lH-!-S>{#cLIvlaZ^Btt& z#QQw|r9Y=wGmpAkeP)4Llk=*Gsg_q}R$9>cmWc1}eP1lf$;6@@NX1mD-Q?qD_rKVPPd@hy!o0LtG|NtrjbI2RLJ@Q}P%Ow%{fYNO^IP1W zohQVdpEAnPC5&F&YP&23nN0yP6tX873aL zylAQ7(aTEgeM#KPM4U3Oky~1`;zi~^1qC=RXKA^c! zXpi_y=a-N5K_3eR4x4zH{|{Lm2oUc+9+40bNKDK|PR1ocDbCHyYmASp{y^H0LPm?| zp)(&Zy9cinzqSUwk{RtkzT?ZJqt5>1DTlfRzk!*!sV2<8kzL#MUtGt`UCbijKV==G zNAB35PKcy~n~d8NWs9eVI>!2*+R72ysv+32j-fgh^!zL97^*l2E4zi5hCI{o@^UcM z(NTKEM>Q`_j1;ksm2^tb2#7NdOVtc|?%`FZ!Y9)x^k0HUvqt7g?IWdT3B3v#qgU9V zj*3B&&VLCWxBmon-2OYLqwkWd=aph=R{Gy|$EXEscZ{@~)Evq*u}vL^CSC6oCoJFb zOL2de;p+6x9V>XeTEaX!gMFKVEnBg19b@AOJ?BwVk1tlP-^{(fnw#&Kxo%*>Zl|CBY2+ctE3odB^#-uuzbhdFdoZy zbd<96m9tDVUp!UM|A%-Cv+XQ09nJEcOjEFqC)oF;uWN>h%3CuHY-Oj}Osni4W6k z&c2djZ2&Op7rPZe+eF-uk+CG^|$Gh7$0lu?d@gHTKzUIC0rtyh^zNOKznSTV&%|!2y?YZfr>5+f&oteLj zb2n4{C%Z!j{~>tx<}R)l?@q=~miI4Kcm6EwT~8kG0fJ}i_x}GZc((p-?%)5H;Mw^f z$~ya~{}w#|&g$g;XIAIG1y5zqx(E}Z=aR`TwUrqW5@1mVDQd=>jc8bd4 zxIUBC_IbmaLYRF$W~gn&`xW~1^`@gUey*nfU4rMg_}#w+&#{4kDj;}neg^+myc;Pv z2hcJJpR_cX_F~$kWXat4-GgoXlrTeG&6Eb=G10_%NH%|hcIE*2ysRMYxH!mf*>&z` zH%7eJTa1+RN#&~te1T=_{-ZKoy@ptqS*+tE)l~};1J9|5N~VTY)5qzT;r9I5s#`d} zYT`FsF#g&sW<_7!?0;D$Q5AFlK@vZQpYA6RkZM9fz6ei!lC&EYeX@`A0uK_N7VZ9a zov(fxU~)_th7~_?*Xc|8N`!rtbt{jc((hF(ciZjJ1#i5m?u}u+>Si)FA@{{}|LE_t zpiSKABh}g8?oRRz1ccM=svob!ZmdoIke)Sp)y6%!+f)(5E@mps9d`n0j?G$JJ@>SW z3!GZiJ2P#_#4<-162vTs4_(pqvL3tLA5I)3lXnr?SUM_d=ucT}NW4apru?jzpilN~&i?Y`|2k$l`pN-fbdh zXzlu2Iq-v`_n3@Bv7Y&>`}uEAa!ArCpbG*}g;cSWoevn6dr66xr>9stAUgp90xo4KUwFA-kFZwSl=~ilcc<&l=C_HN*~|q%g1%pMPbyGunMN zS*V>*5EVPOK@>eRK>zXS)kw4k=kWa6)@C}R7qx}x;&Xo<{o_w$ z$}SV@&OI#rd||L`HE-;*Nciih*73W&V|aARY7nO9A!EhoG4RqF+f|blukrlrGle~s zbH`D)GPeewWN45@i0^iVx2B*$MbuR*FYkeDKBe(_#jl2W`{57EJ}X~8r_vLBbF?!k z)w{pdp?i5OCnkHhik5K3)6EH#>mtNrU^-n-Mas;G@yxb!xC1HD%|rbT({3De>+TRt z{x|)Lgqz&$_x!(HxR>U_&Uy3MjALDCrPnDu1Ohl62E-R^-w#TC`YL{6A5o;3Knzaj z?>j~%*xO3}q4FBcf5vTLgJ+4zcu9|H3=b<6d%CmZ$^B%)^&J5g50hI%hNPF@O@?wfn|=pkj=_ANlMdq&Nlt;d5u z6=2k8j`Da<2GrWl^F@A~`b>$;PAL|CI=HEZTQwHkRQvr^V}p8SGuOzQvC_eGKKXHP zE}N8#a*uM8ix0BCtpozRr@zEBljPI)Sr)6!BS?(&!Yo6tI z>@YUW|+iA2^rTq#ocn0y+(GY!Y13 zipYB+CY;vHi%!(XMn4q9s(y{o!Bgok4QJ$Gau)}GV=qZ!e0af!C2B!jUp=b2#IP(n z_Xm6rD@p&eQcaC*s^w3^;K@&Jufn!p3J%50+B!$?ZcZWcoW~xWe~4w_+e*W_wGEMQ zz2B;5Fjy3NLw%(})LZ_zGxuG;bBRCzL;GTqIt>pX%kxQYplAIA-#6 z{5f{H7_-E9b8$KACVkaB>W2!^vi3lJ^pG=+n~_g-wfDLBX83^C7>D{ZfZNYnlYs3w8yUd8!MCPm8W+P75Ed z7GFy>3B-o}>^(X+!}yCD4><~!+DfV^>AL7BygvyagbNoab8?SX4_LVr1qR&g5?%{#&3cTE! zynCDP!4j=QE6)-f&qQDSTfpGM^S-2@G2T#S7JH?Er-MIUA!}f%=wW69{tDLQmzWIH zuCnygF1EG71Qaqdx`91fK9(CHbk@|birmI0f=9cF+~2=cs^QBQ^gibg3O0A2c)$pH zrb}uMQP6S~`{|gGs;v-<1&pCW1sZB=c6y@Pi{c} ztRKl^_>tQ9<}-#yV&01si+%17UM$w>DL2(Afs-i?!rW$qRL;VwN1#+6=Ty&+Ty9NN zzVoST`KfNiX+ce#Ava86UTHIDsrglDF*h7>lvHra^uZVDsqfNLXAe?* z`5p&|nhfELX7!A~PZ`B}>?Kf&viXe4{Ag|B%<6Qu+8f4tugrqPOu1?xtHat($p~b1 z(#)f3)U*18SqE6*!|A-E9}~wTd4CM@Ov&@k2s6w^X6rU(LzA*O^RreS_LPVQFV7XfsoTrwrDy4=WgCUS4B&RVVHnq;4cydXYRjnZLzM5C*6cp0A;5UuA8+hQPmuIQ^5=QMvu9 zM)gho_G=SQyx{F~5ga(F0_`>oR(x%gF-(v z2;d&P;6;JRq99a}9~C4(q&Rq}DA2n&f~wf7xj6bEqc{)__8Tfr6#1Tlb7Cic;a31h; zqO#{eN=6dIC|TBHQ#L>a26V<4Ab6Gq^+D6#<<6$%bIs+mY-LQqvIiWrAyNSd zo=qFjDo({g6llM>;&7p2&8Ff+r1D(9@=_lZw)T(aq2(>OAm=c+rP=0zc$-2q5zrbq z0(u9^QBeagR8?P4RbS|;=?q@_lzw8nc4EV)?oTC`TipjOtWR<5NGpgbaGgC@S9{}DJ1;i)bU85G_qagSaEXV;M~u zElpVlpdqw~!-0aLJ=zT?FwiNA&umObG?y7v``k4ns9UNwcBX!3w+}4i6*2~fs8=sCYpK63!OH*k_8*V2Eul48- zNH0K{bMd6CsVemz=QopIz;T(>Kz;gk?!fjx8pIRPHHHHTXok?ybkmD|x1M6Y+2iy8DroGWe{PD=pUgs(}H)VHoZ~l=Y}A^|0Sn z?c-K!`u0AJ?j3AtIHSf%LF+U3WnWx;vg|Z6kTn8WpJjj`At39EgTljwK5O7;x*yR< zupa_4#)H2KADM^a_tT7RiH)r<;cqPAPa?*Smc~y0jGe z2}EL7M#cf&vjH*EfxVnSSVm=&B1p`(vL2jrOl1%ga{M`RoYV-|+XDet86HJ}JUWqk zI1^p^b<~EFOh%InzLTEtNj9TN%CaucHE<+RVd6s!M6z^LXc;V+J(YG?#&ti*gAWNr zo1*dUlFIG^I#)rapkb#z<7Z!d=H(tq@v-EB6L=b{MB3v!ArWX0zqQ&=h|!?jqUS^e z=RENm*-9Hugd1!44);HuXlEVo@i%$!-Th`){@{Cy6L^>7IRgV}qH;9*GEy3_v*}z= zEO?5Dzj#ih$<;4{#FhuyPgA^1Qb4F@3N~DeycN#v6i5 zWBXlT{eFnrR9i5i-`r>vI0JXkji}raxkwA}NIEb}Zs$+*nb7Za6t{|(rhMC`pa>L> z1ukw4QDenjkCa_aB@S4k6ztKA_ws>_fVisjO&`&^+#{xvcg9)-Be`9aBa^}j2{Ud;&jKIJ-_F$LXQ5OWHvJ)pk zvXoz`Gyw+oMU{bKD_7U>-o?#743QkPfsGtWf#{GQVp8%D%+85KQk69k5oC-KZ99oE z5&U|rgU~k^FWx@Ad_kWIwkKFLQ*c)@EFlf zelAz1BdaUm&`Qb1njwfkyo<3DXB3I=t2u&U{t`w9u3)bs7p*oFJ82j`s&P8B)CZ4u z;;pL@sy_TB8*u_2u&{s$R&BZ1RlkPo3bcs?kNo(Z&3wkRgFM!y0s!s;(D165B5~{`O=^wk05D+~A!< zoxe<;5sbhbQE+n~H+`#C=p7@{_*nT;-vs*05gvVdxDWjz|m?j)3GC zK>%}vk$?Q8`I(ILHo%s0i5exjtC7Q({$KVhy${E;a93e%>Q%4S;8$5_EscvUjXt*n zK8Rpd&@fDT%n79OfOt#OrtN!CsQ^tZ+a5#h-mR^l{<=UXzKlaZbC+z4M4>X_n-ve8 z9X6-K#&*5nVW>FGE+f41l~rC%zp>VCrbUBcQOP#SWUgjS;N<2u^W z&=01V)pB20MqxtX*;0W$69o-~{}MbvR_EV>=MP2Ys$Al8<(z*D9;3oCu=tn4T@A+>`}Wo+R$=E-jjm9mU@gA6|8PZoZ+ zd=*Jd#x~7dmxsyaMm9Sm)tnjziY1j#gnqbc^sb|H(SM>)xzU{%HFvbpYxB)vBP8+> zjg%+eXCH_zAb14dv}4i&f@dN?^owkE^I?Oi-^TfR!Q1$Ur!o49)fuDvD@m-K>qMl&xSM@)^ zX(KL@COsQ?4<}aR=?WoHNiK*J`GZtU459bxt;qLQEMZ;GI>1aINzQcoQJKct)uOzW z!A_zQ;=N7Q8Z@N%OyZzZnt-(^nSp?KOLF}O5&rs%$BvV~C-S{}SbIX`nrptc90{#k zd=G+UZcFG|HjxDZLQVJMw&pbu;$`p*&7k6Opuf zv1BN@Bs>=lSLNAmmZD%aYQpO?iB-CxbKg7>$%6vjGlJ61&ftW&XHA@f`G(3vWyN+Q zTaP@S4WTUS>`NY-G^}#Tuhu0Hprf^5pydV{UjD?Q*_n)%Kaqc20YQ0>@fHPv{IM56 z+9SN-WP^J0XJm4hD27&PVtLGXk?u!gNbigU3+KVl>0+s$CR?Vn3>k}aL&@3Tl0oFI z!bPTdyX_IeR(b*TIgYyXqK~zc-!T!7>zx0HAEoY!C01y)OsZNPlJN0ZX*eymZ|vw0 zbUk4e=?9?`z@FV>V46OlJ$5iPJM|q4eEY}iq4_+^oAe!h8-w)ZT@YEGL1Ou{Bxq>bBQMx^gaiBf^$;@*YppYqM^}<`HoO6i z!W5GYA|<#t5&uk`kqKU~43SjKG_rM#o%-52aDyB z7UoLvArqc-Ul22_NSgiQdZ5-1rWj9=otXOYIGo7>>5Xeyp^h#&X;+xc^F-MX8T%tm zpC*$|U5Qv4!0|*hXy8JQ=XeAN39Sle%=z5#)j8H~aydE-O2jrMaqdW5XJR(RjU`Wb zQy19Kl(ghpl53JhmE;!dNv8}N*6kHKjxHLR>5C=I4$3$Jaa?=C?Hti{VGU^4H2paq z3?f8_roAv)gl!!r-il7(G?)D3BV#zGK%hYoUFiFiVqbSU-Vi_ z`l9pg%hzleluj@Vh;E>O?B3f55JAaiQur%t5uH>gSBLXj>N^ljklYjFNkCn{$!f+E zS2;8g

    (rcV5YsZod2njc?Xk2Jdjlr%h=L?Kw^%)Ui+sJ`CzLG%O;?+IWl0^3h0k zBdt>6DJHy1Olw%!&#Jf&?$(HoWEhA(SIUsMytHUp4vRaji_i%L($)%P)n1#f19{M2 z!(^qn(ew#S>Cidk-roBk8j=*c*R94gY;nFST+1#NPI4h?j9<69@)*(>E zK)i+OH1;*75TB1ym~)T2C}1#r&A=t{G?4QnrgdT0i6BhIG>j*6oz~-z2*0u7_1XUB z3T5Y5A%g4pykdG-=f?N##}$Ktp2=3r%GsF^SadeOL>#bbN<~rSKI+?#l*K1@La*7- z1#t|>o=}lnHsYjr)2Gaau2-q-QdJ;GP%vy^V6XaX@F-#Rilf;q+wl0~T0Jf3$_p$GajoC%O2gmPAVbsoF|u=6OA@p| zpUj(yo4tkwraz9J5@Krk4*U`$??(T6t)XLGcShg&5xRCZBfA~YMJDs2sgSv(RQ)Af z7Jok>^7FAMJUi=gl>Agu2c!eEs0g|(qkyIv~K?3d#udJMjyuwWW~L7p41 zP%c(@{JDfTSD>zsQqM)_ zG{D*(3bn+cX@3c5kwWvJHf$Lf4jtH!r;8+{gVdK9V~L2o^;L2ST@SC2Yed)sIT8(u z=r(VL;dY|oq@nG)6n3(L|BAMkDuUJ3+Tl@c;5`9}8uWrGA*1(!i-WZIhH*Y{Vb?V< zt`dxz<24=&8g!3=_q;nQ;uVh=y|N+Ei`G{=Fq(mnVdO$sP&7#}Tmt_Zh7W5d+{8Ku zRjmCAbB59EnWHa!m$99MJ)?O^g+Sk0sH8+mpfGwd^(dm`!!^{`oai0VOfV1G!5 z@_B;FxeQ9a5A#v4Xc=AlOMY@BOv@EU?b>@cBtXN?gtr!IGo zhxi-#h6)J3pwKiLSqxiB$R$IEOTf!b<)s)*_(VNc=P0lV|c=YWYMq|W+24;~LoJPZ=VD%qC+rH}u=b~#k3B{1+d#61Ow#6PR-~;Y6w-0W9 z*4jliS9xC@NGKGFoD#P>kn&dRTv)HMtu8FW&A_=%WEmO2nwN`{p}%zzQ(lPjhJ{(@ zX1gTIVzzL*S(IS0cSD`fpmbPEdh8ilnOt)#EnRQ9}Y$auu4ASn50> z)_Y(enDvTH!W$J<@Pgkp7u$$ukVtb-XQa?MCVM8Yw^RvUHa&z|AA)1jyhgx4z@d~= zFIi`mm_~bh%n#rjlY0&WPOS7jL*@pUET0zBv=>_j@j%JK7iRkwpQtael?_)6%LXWT zOLm$lQuzsm50I9FbDLf>6f8)?%GiXGH%IV)jg0e=#@i9VV+w-PyQf@xHARc@OohUd zWbx9_sEPv@pMmeADSj;hP5>Ms33e_<2Tp_L?#if#VNm!FFy!@A0XkJ` zitqy7l8E##*2qv$Y4PADGMSVUT8zFV3_dwhImH~0!yA3}f<~EDNWrDI2S*KJ+Gx)% zbMrM&!$}ZNsUV_?^*#jR%oAdh(WbA1#X8v9%zxY%q8oMJh zj2zO9D>sU-8)(M{gBGLFJP(hJ>JO1;9qHCosv~lPYrW>L?C_c~z|Ye9OxJQdCJ;*W zM+yIIx(u2Kc1vS|vQ!<_u!+|NlIfzKG5|RnaQd+3$%Lx=HJGdafh|7H!fDYWNK*XBJ>Hi*00c-SXdq+q6#2=D_Gbr&z$abg;8ThJx(5JmnWL z14J&UFgw%0Smg>TB$|3|m@A@PJqv2cKcBC~pePJ>l*j@r2r{ESo%V*$y%QiZuu<1KnVLwMAaEVD4)WH!6q&2-P5iPJw7F?JDXbRDUiM zSmJNrUakGLC@iAaMQb?8vIHE4JFJD7sjXp2gkeiyx6}c$C(JC(6vy8b;Hsu`*bY1f zU;zVYg(>vX6jFh0E`&`aunxS%RKGDJJY~%?!4VUBAdcU`E2VLCCd^qisrYvIZvKfXZ&LX|GfGo02-1Isos; zbnhRdLLZupHb}77SyI-SKbSMbnNf0unG<1~sVxGY3SbcyYGy*(Yt`HOZ_0 z@mQQ#SQIsMhASUwb#c%aB6E!^wM>Dy&vvqzkXHO>#|c$yWJbt0x!6276eBXjX=hRbx{$kXjJe9>~Fem9O!GU47`) z_RdKgmZQTisx8z$ZudHS*S*ln(|Nhf)r+rLZW+3ZHjQ^Jc*+s6hvcW3>fgV}4sZ zx)f_Sdh$Q99p}Ot)5|~_6gsWi;SfAQrXNbF5%fSv!I2pf3bAr=k0{V><=|EBcTy)5b7cWSDizj!fQ; zKH%Yqf|2AHNP=Kh0ej}OARZ!nUJ49epnns z!SUpdy=so-M8)wexx-4~@dEbo(%(Q<*tTjRh;7fFPv~TmAQ)f`+t|l1t&e$uf)GWp z%8tX@6MJ5y{mReH1?p|X`_)T_D}qyQ3I}Gjc+gzjsh-0LQUaJS zVW6cR>;1K#_~5)b>ByRUGS7tZ0?iTl%5_@7zqCzQ)<70KzeFmq zpUs&)BMLGues3ljW&_#!dO43yV!SpA+*)N|OMxv?xXEW7#E}MKaSCEeb6}OUWCA8o zKoE%~h&kMunH$6!e#Z9Y3~1kQG@NmAgPyAeae#mGJO#DLT0R^Uo=gik&A1;gsQhNO z4(bgHV%-CIAdeudYXK;%=SbT+ZQHg>m$tYdTF80Z&hOW!=(Nbgr`Lh6W^JFW1xk+x zzMe&||KKY7#kT&$MK(T2YSvb1*G1vWp~97m(p4ZckDG?h`5V=9O`VH+2itd6uJVGe zx~nb{0k*oU=PIvU^}d{|Rk|AQy6CS4z9u|+V!f?->1OoQUH($)LAOn^?>Q0ae#3bq`$V4v8T@|3)*!I?7y^B@qw|W%= zpX?itY>IboEHNPAC>Epx9m=uA*qN)tne(kDuj3h;YS2TtY7m>%b!4Txj<)N^r*2XY zm%^35P3k`TTw}3&UNeuMCG4Jsy}eG>xnT~!W<)us#5?m|Idcnog<5$<=-lv_I47HU zu{hpj6*+%#yoreS3Sqvbx4z*yy@SY35FW&Vke(aqH zc0oAat~cB#KlLxu0j>7mK9l3F}gdY^pd%-dnhGUjg84OfQTAFc?oJp_MQI0cx%R&)CTdjAGFa6hmVqv+5ejB- McnLq1E)S4bt_9yn*6en#?{Db{8tZ>mV+8F6eB!c05Nq>`X3?cKA9N|`7n zBLklGIePUS^@P{k6(oGt?WpV*&y~`+tpS!M(1fpaF}y6!<0 ztTQntjo4r0$GlT$%8k{!#LNq!dC~OzA=SwH=9{d^efUA6t>5y2tPcN|(zBt3`lA=(mk8;q zQ7K$;z9j11k<&4*J3PJ#Wzl=rP}!&DT;tVUN-w7MY}@!b|l_q{L>ou_Qxb4aYP+bS8BxXUSPkk~$~i&GXo zZS(nfcl>ULz~-o(I>0xo6Z~`&^@Thh$m%#+-<;t{5ZnwDDRziop{bjQ2hCo&){QJ@ z2DHn5JjMMRvvFE`wZ1pp;rFn7SVQ>!ca#Kxd3I(4UY#rzkxcbg24Ej$pP@x?pznkL z)3vor;$lfQUKA5S2px7ja~IU1G)T~_e_SZF>(P)yFinX3U*ft~#MMX_Cb2w4b)ljo zGDN6A@*=L;05PTh$56pPd8^LF(n4M+OFm3`;z!Iq&+1dPR$f`Skvh>}Or=QQ|(XLLqI%B}&|H#kp zU7frI+J?Si6;RKp{>&Ox^OVUWO-{SHIwiNof zey~FC#c|qLvgV7=^ND70s&Q?;Oajqiic0E9%uypuLS3XIPq20j(66bSmQI=lr)zWh~M5qLU3hQ09n3w9e^VqOplCp*t2AX9m*MMCud z!c#ENvCz>;C^0ZO(9uOGgvD`r8CZD~@c8A(Mbt^fwI7SB;|nO!i<^*9i8H{v_1QIa1@#oT0i>ezkzMnj*bJYZ%L_vvJ|i6w+mE7F-a_x~ zgdDXs?386a|J9pu2W*P2mb>a(8!LG$4_R9eZ8uldPbP-?^xCu;Y$Wr%c!4jCLj*0u z72U#he8c5FMVY-9ujY|1=T|Nimn|1oED@6{6_TzNP%9FBmmzGFC99sM{67X}lq@o2 zZBpJ@rMz*AHz-o9_vv@BHyV2Wd$)rUsge|2TNoT}aR%dPbKv@{1* zEcNVMDSN@Zhu_=GA{KHnK*To3%D7}D3 zakm)w$D>#R9%TveC;?8x|BA|N`db_T7{$wYGfh7v!XPm1Lp0n8{`Gxq@yDbphm2sK zvSORhL9RnEs}&$B6YTU8_F)Ss$^_Z$gt_i^e#-N#4)+`k@mUD*nTrgVOYqwWPl~BR zz^f_>+hWrb0hJOtoe+H%mx3&+=x@$EF8vRc^6jps=5Jfg-}-OoWhrsJ-?Ap#+GeWC z#+ng3Bh`~VEqe#8TZ=`=`p%w)pCdp~rs?5F>)+wVv*FSHrM|n_{;R3M-tF1x)A`xM zsgc{o#f!z6zsrk%eokIa3?JD#9Y5Ud{8w7$@)}6X+#mc{{n69{1ZJ-OD=?G%|0OU3`9Beu z8UC-p45H z85h6ty-$?L4p$c1ELk|J+x_jfqPmyezd3eT*&*#cuWxH3+-`C); z{7US5{At-N3ID>^#mCp7W=)$H>sGAU?nNyH?YqC0P7B7xeL7rRe}7w1Io3%HUEUX; zPFlQQKlpw1Cs>M?`$Fu5G{8Ut(ebw-1>y5ntky~*WV#>#aX2Q5!@`?qc>3vfiU4(h zExBJ8ANX>jAM>Uxz_OX|0f1sGqM)5IL zf>09Tb^N^RTqJ9pOFnz1@lrx>Rs`JTahBHJ!K3(JgHEp}H|Z%q4KyQXetEw)drxTp zx}G;E#zXAA+6-MozuLt+FPlg7*zf51GTVO8{+cVe_&b|3`wNjU6||+xI4G&05}S~F zzJg8rn$X*~|8ud@H=5J|GIeq!V+twVu0vvc4Ko(?kT8>}QgKr^4c53k~1vOXRR}P%P?u9w%O) zh&ABCTW$vU>_G?D-Su3@A=kq+>d;i;hCr=yZ4p!Bb7A=~F@nlCnq5NX@T4sC`V6%; zTocM`kri5Ui+sZm`cFlfN{v5rTE?aUY?`}rL%krYT*G{jYGJaFtD4a({FSmO6aFoq zcUi2x({%3~b;4d4sz4tAb&kVLi1ljAJSA6<( zw}iVd{mu8IgIj|E={Ej31NoK%+)#10)k3>a#u%ZVjdy zapsZ6{#d<-(Xv2Ci%C4-ik%ns8^KQ5y-9s{{;uPm{58_mczeUB*>R^lmpm!2<$@GV zn4__)b)%S-yx>gxk6PD*F+++swi%(fjp;bw@AhYw^j_w0xuIA3ynJ0M!jm^flOKI+ z1d| ztc;3|+Wsglt~szqB?KQkWf~Ow3Esq(no^EIE4>2#UFrVC|*$sN== zZK+`M$pg0+f5Fm}eInJ?%ea&wjJly{;_`Kriie$q#P6>?OT9vb4Y!QOX^dBYUQdh; zj4nNLwO{oVkbUJ1<7$6Y`73y1p8UpEozqRjK$Ov|r@5woh`PdKIsAEE__O2X%@vvZ zqoGfn3J$lYY_~hdPLJ!$RA0w~Y8Eqkx_nj`!e0fG=(;G+)=svcTy~`|y*E6QWw-3cbACrwt)LWdwi7Do3X^bE zH6iq&wEc@BLI3*cF3s~?y-hIpR9u}P!nu$X-`-LB{hsz0N)F z#$Elxq{OFpmCE1JV#vX;U1{!J_d(a133f-Ws z=k$iZ&DjMVL36>bRT?impMECQ@p&28fbKQ(DTJUA#;q=+Wo^irXt&xGim7WamM_Y8 zEo7M_|NC9Yl37@DuZnJjp}aMdK!LlWn_Fo@Fw30m-vVJ*SKFm2@mnl=e|jz8UPrfQ z<{}Sslwx!2rj0(fLIORr!cb3L=kRcjw~yH7-s&U}#$3@R2(iEG(_j$fNB{czOR?$QfvPf5?P7|CpEFQhSL%DwC|*Yw~O+qS0H509(dmY;+B_=?j`sj_P z#vVLf3SMLmk4O*~n2W>y6-+TtN3>6!#ivumr<``Dy;S`%{WFl+&__*={~%C_km^QL3{Zhoc^|yH{#w zVya_xs_*{GH1mbKX;bTIq2J>YBVWLqsABcf3!KyQfxyf> zYZfIH5SU3zjOGLaGs3KeAL)U>Ok8!wQy?&t&VulI1_Wk;)uXT?GoKV>QV(X*Ze|)n zvnVw(&!w{{-e*C8z>IL(NF>h?B^?l$u_eyF<;|YfW9p_%nNR0g{Ft&F2?S=Ksq6AQ zKZTzHff=iftOH^0JTJ=q`J8uWIVq36cm*a=KTOebRKj;IWis4k>gPV(44v02P z1+?|OH5mwIt!SPtJWm%PTUG;kc0v-IN)mXWCCw!zQ6&|(B?zk0sv$@$fH!~)2pSj& z%rGKL84;z;2c_LOWzIZcPp7hhjIw?a@Q4D~0ab?72R%mvcuM&sTlsWU`MiGll1TZ| zZTZ?l`E#d#2WIv%0G?7Y*<7&;G-jwO&qOMBGe9h+xLH&sR6la2fzl2foL~w~K|nDL z5SYU_kYS)NgTPxv5Zob3VF<3X>ufIK+Q1Qp2ZMX!)Q}D8ODQWKbivSo80|jA9M2;r?w6|JsY{i_P;}Dzar% zB~Xre1_W(ztF-SB#D@q9+p6!9Rb+>CI@I;0YEY9!gaK~7`5h2+sn3MhJKWV1W#W9# z#Yv@uy0e#hMmM;(H25wy`1q9gQ#S^QHij59hANgaI^m^yvkNq5F25sGvxO$pAwHV| zZHuO~;d+3lJZV8_Dc0puH|J9~V=2~Qi#8W$HkY(C7f@H_9yXUnBk1m`vJ6_Pd|Dba zTdE8Y$tXx<^vj0s%JE;dXzUH;a2${#BCQl!2LxvBTEV!@-c+D2omeWH0%ThA!vA=n14FJhMnOENRc-V@lpe^FHRUcG+7e*xV6hCvx_pOE99_? z%CM2%u7TbT%AnZ9;80YLav8W$q*v3h7YNK~we~2|6zcne<^S}W(f}F+?8yTOMs-BM z`##3>*(~+_!&7MbBP1cNN)Ts`ez&ZCcd>pq-~Nww{qa1|kTpmMO-H2UKt$F+)I;k) zyc3l7&j4KPhfr(lsN$gLQFlg5>-V*mb6eU=T#D;E(iIr~01SV`X{aa$zc6N~*l_4; z3?3o|Z`f(b4TbGZ2jOkO_HqK-BEGdP4f{udeN7=loxmR^{u~-Xi6Q<>?$B5a{z&V{ z=+Vds91kE_4F3wuEG><${25&<8)Y^HZ5e`qk=msG*iOvYb7U!#Q#opBtOEz^sy2Rs z2X0pYpV)y|JI9%kl zWe#X%!T1%u8KsR2-&$IGG>&@B{$RVH^^HW0JE_e%nNB8&&zt!6T;lazih(<9X*a*8 zVpV^|aC^x_2PxudOF`l!vm>fG7e6~eljv$1X$t!fz`TC>*(`kK(u4L1;R#GFj)RF;*6^3$D+g^W zN6RY*$M|P-1buXnq+CcaPod>PuLs?95dwc8dm6QjKku}%;*^gSmk)_s+s$6XeG<;C zOsD!D6zqh637jK ze+K{hEB0ly!T0-5IR}r1e0d2M)j%PVP}=DBvC^tU7(~Gk-0PdKeSt4?Vt|=}$BKe{ zhc!L-siKUoDq?S;%fuYCzn(X~w z2FpQCtF2<-dKiAH_X_8-JfQ^LZzT9R5A=gWJ8fwd9)jb|AwuT%HilHTZ@CQZ|P+NSTv>&e`dOPwp#QF?eF;n3Ga-&TNzg-nk{)=>*$ zc9h@tycK^H+5k;B{CwU_4K{^4NpYhlqu-VdmMwKQI}sX?T{(E@V*)f4F@?c*mwjSt zzRIPh`|^!UtFOiB2;9&b3}5+2*GhQpke=?v#COU93@nEpmNE^ka3sA7)Y~!N$l4%i z0<08Ha5QdxZ$BU~b^3_5t)pxx=MZYL3>`tQTAI^+LsJVKLJy?c{8P7urU>usVZ~X4 z*%&C5G~Fh*wzl+c(2st`%vT+bUmhY!$r)IOFGO+nsooPyAMchf;m{v0FnOg4t;z{*Kl9 z32GQjBS1r@A!@z5JYSg8rSo`aA)zv`Li7e^sf%rSrxp$4u-~KR_^Ii4nRbPN2*GKq zUo!bTr52tZm0W&x?IrAa)82T-Kc6$|RUI3O93f?UQAc>{&_ifFvbCh;m?H8kAkZ+U zLh0e}GX`PP741YCF3tZ5%s35){rs%?zXCHPp2DOey+I1hI1a>r4KjnN#U8A(Y5S?=9eRwe1BkyUNtTEOdP==E}CDlw+2(6 zRYLaOV{h#Y$NUZb_0Y1GdvRz2TFQ9aCO-QgzU9Gu5+Jw`6shO2dK zfO4g|xe`Hs&0rz+nzl)msyo9EozhmmfDuNWY^#{q$uWH)1~;1CZPi%=P3m)o(fCbs zukv^+kjzB#K{ljBD@fHct4s(>-fOJj?ao+trD*8aYAxqh-TGY7n~;6e=;w%{n)Hj4 zVP>VRkoPRITutl_IfL$2O`9srb7?-0-*7EzZajP4xP30fOD_fBy-Tm@#hZm>Pj;nM zK7_MmDj5*@d(NmolFqkn#5qD|%ys$+kyjA7w-g8a%?L4nd}42U^^7t){HFRJ1KWGwzr zqEa-bvQx`ev_YeCGJT6)i+ONq49{X}#E3I?erNF*qV&_{6&;VL>yZ3t3T^0R-xczrKFAh&OO#5CdY<`$FOa0fRWc>`X(U%>cy@-J$jZv-MAcv<(6A^d75l zAeE27-I0Vjm7?I(&bbj5W*Gt|&O!GK(@nRIcctUGJ{Xg&x9X~sW68%>l^yQGxEyvY z7z+tJ{eZi?NK%ebPh{o3kH?Mzch6#(EQqf!lRdZ~yHEmlW(-coY@??lRdLPhJd^kN zZ>#-1Y#;4jGZ__uC~TFLc6A>*g_W$+KN3M=X_JWYtY<{I-10QnGiN$9VZz~rkaUZ) zf*xlxT&3Cl3RiWXv@B%vCrpHn1%QarS6|Ah$?zFGwI* z`4*Nzw1jCw@ioL$2FP4`6LJj?M7FOoeuC1oNxNi5N^F3bR}s*YS|AlBmXmUrLNTkH z+5^tdmVSmo$B;qj$9~3XlDi0KY#AhV6O#-|pI!>!v;b)cj$8+WiJ_ZV8n-|)HVj7I z0%9aXDdJvdH>&popG%9DAB;Uf?@@xjQHz)C(2Dtqd1AxJi3Qr7G$w zaGq7MOVu_jWFDKZGh(z=o>7(EQVez%2G5C+(V`BU^1=HK-^bsBy)aBIXTy{^KXub$ zgv2*(^r$5880s*5xlz;28++#JqaGoZxw_5zGUKvt-6_1Kr?+pqAJ0-^P!zn~DCk@B z1}j8%4PHu%ED)0dL3gz(RV*-zmFWo*L*C8`qCsNF=HYJ&w{FA75^WoD6rGBC zsEAzubjL!{j;nZ-GtH=x{jgC0jowc?>IOIy+TC4a)H#JYjc>sA#2-u#@Rm=F(97#o z(3gFuvaQl@*} z@9wZG$F;Cd9twjPXbT?CJm{(&e5G3sfGV_;aS;JzN3t2|uNpSEA$+4STr2?YT5xNU z5_}L9lHY~Eeq6louUw+QHO4vSQ*~3t$=RQsm6Pe-`)&5$xg_81j|c zulOLyoU|jd-adMB!Os@l`Pa&|9@VWc-fYy9oe}O;NkPr(0fi&ug0eu93WwzPY_q6I z2e`OxVXrAEGkjiX<$4jZH@IkbNHyVX7U>TQq}W`!NqIs9TJnETq)t0!y? zsumG+5u0(Gv(1PXPwj%u7Kx0H0)Qg<42rGT2i)aeSSMWukd-H%j2+o8+ASHWHZ$<+ zWA5+O+P`VbbPK?$?3+`!Z|wb0STNB{(Z!Xj4zAOlQN z13>*KUV{T{2}ocDfG?kmMW)D=GypNP7;qs1O2ClgG4?iEze*VXiF|30qV>2)%k`CL zzGzPr5oZR#o*AiF#RAAlogxuje$il(VN$$TQ4kULm0~(+Wq#a9ZpM%%gy-id1DQZ9vm4dAX3AshC053tpA@0(SNOV{Zo8 zS%x51oEtF@stj=7z>uXV)1Jk9hztc{)Q#3D?h_e;x^ez};J`ruH5|}O%7H5PUMoc? zj>`!80$101q86|9{Gndr#jz7G+76YK$D)o@xS-K&m8hF)7u`$p>PGCZl+BX?VmP!7 z1!WR|90M@h!+ie+ASGk~eiV^1L!rHrLVh(rj4)tj01c{MTwIVtX0UStVOfhMRTs?g zI+g3?BPrFDZIBglh<6E5{u_XPSBH5OK#c})4ZfDByXC0Esh*ZU)SxBj0uMZE^sA*{ z-eu=M7X3U^Nt-2{?3;Myfgh#|5y*q%7|;L^90RQd4B6??O!EbO$0!>2z}{laCEl>h z;DQJYcX>4@2N?lFP43e=a8~Mb^wU}I{M7GQhmIt|CW=4 z0e3OZrU(*jljs2jJC-2s_Yd*JVJPufGXz&umR_2K=7u=Vr3wI(sa8Ce0& z0D7dxl^LLxUF5a9vdX*iDiJDPR6UU#&a2?k$?Z1DY=b4wDd?6rKx!LJG!~AvKYo^5 z$-xV8=uQy3bpv+T#N;avuEmg{0F;0Pdl}OAW)nFh-0$I5w_SGdk}w@Y3w$OO94^fc zAhL^eOLKx*y1^c+lWd02plO_amI^uPBDrd|+BZZ=B9nLwQU=V>FuBHCxlviQH)m>U zJI%&Bs=>)A`o|!Blk^lgAns!Ijon}fVS=;?)M%UNR-5S0 z53%U(5jl-F^TN8@P)KnYr`o&+2{1&4;i6<9j}RFDcC3`fJhjaAmez!Q4hUz_RMJFuvf6)ciymQV0N~8yL>S;UjR)N8lfne)aiKQpaX9a>()&b;gd_%k)`oCV z2n*?J-L5=MFa??(*E-7?kn^$H@qI$A*|R*`)Epcvb_lNlIMu;KhhnGz@xl1o_`E{8 zVQXIkg?Cn>H)6>fPI3(-lCp$41Ix?Ak#3~3?{bJZIgvzf8T*0IrI)()ZLjAC1xa<& z##-IH>T1@MGJ(kY!8ERpq|cN`?SxaCfE=`5}1S^%=c{YU`LrRc3BCe6Zi5Yo3aQZ zb#lZBpr7gBe8NR_!a)MqMj1B*Uj41UTx8-<vb?Sgsiod8XjWu4WHI$7D{{t7Osf&xvI_!=! z_2eoFy(&bp#u&5e45089p}3C5UUA55I1tvU0$lhq*1U)=R0}SOBQ9`7d-wo~b2~xa z=8N zr;n3|$4RY%gk{_C#gK((1{h8o}=97>ZrF{Fkjg<=xrrop!GouGvT zx$anT`g=cL#M*ST%^<25EjozLOTg}z7{p#D-rT6eBvE7`K92%JN1co+%xc_g#?>Ju>1g) zl%mP{yCPS6FWq$a=yWCYuT$}YSIOj;Y$2})ir?`0;9l!5R{38-JUr`u?Kqx+eYz7v zm2tr~kO0<(_ut>LV`hcOo;;A$aHSbpj7;iw!uc*HNMzlUVkL8z zAUA1qDPV8JBi1&<-DYx6Bq?@$1v|mw&$);d!Nj^qZA&BlUjGIClK_$|yq7n*`&jYI zQ5iU70A#ZWzVgC+?_Ti;FlD%(L4zjgki*ywO;WXG%hDsj@&L5?D^~g}c6ZyEI}2o) z2ojNTmkJBm$T;|_d0-I`V7cJFs~NBn5G(8zaQYzjNb&y0gIE#P`@&fuN2!2~k^6Fm zKcvvH2Z;d}zd*vMAKM29U-JXLnr@vR-2d_SzFbx;P#FC~6HR7zc)qX&dwTfG`jATN zP<9biNb#={ITiZpAVek;_5*MiErmjFQjjs-MGG&20Cx|BpdkM4pQ44admaZ4BZt!X zC0XOhgf#MRpSQ z@_Y39z48-8k`M7p%@ zaeD1>9Rh7KV!7d=Q;MgfLjLAjq@v8}sA8zC^r-`G&;DiT*t0#6RjkMv5cMY1UjLU< zrXLUb*BkCox2aQi&tKyt$b^322zlUpf6uce)Y~)k{udxg_wcgDa$`;{No5+XP^Xq( zT!@DuHNU(+_}Nf^gbw|jaHqa6_Y@HOsD)VZtb5}0o{o6XbsNx)RVPd*ND`B9<%FTQ zhe=G%{O-^pSvwyTYh4#y80Lddytlg>oER$vKNrqAeY>)E+lNSXC)R3ldUr z{iN{evF^*j(gJs(Gpy^QhiEzvQmaUOG{nRVg)E1Jg(V8wfRu3O8a3xiPtTRiVg6a81GQ;vdJnN$y-vL8mbx;-o>Yo%@!Pe)2E3 zoL6FHmC2j{m(ySDJ5G;g@7e2^E;$3v9Rbmq+h9l1E+9Nka`lHO;b$oi=!(>+QRe{- zc7+QZMtA%Zeaj4_>2YD|mA!SO*d-hJsXTMVR7nZm5VFvzXq@2(^dj^)Dm3zC^St z#oU5K9_|EpO$C=cjOo&chJsklkfEd_3(&)j`qL*BfUyI+PxYy?sQB3P=C8f zRdO`s>-sQLtI?CN_`t2V#Y(}7#tgxpExEVMxXZ#u>1T7QeFA)}*NMD3Nvv!x45wMm z){+!O>r1dhDYsES(Sg^=xl)eZrLr3r;l^@~RqBIYpH=4x&er$#{Zz%jC$k9ahbaGa z9!$IzXV5fzAa!wev@R@GfO(!3gIrj?E+T1|ELpJFV4YU&jKG&F{>-4l;-5Z+Nj)c|Nlx3RNVF^?DUl=7oz? zW=9Bl``=>vU0xcp(j!`P``}y@bu#+i^BM==xKMRneXm$U(M>xi(m&?KpGwOS#`(58U7Hin>tXtLhd-Ke%Q{RdLu}I0zj}beSou7lo_MWdj z5R>ew{B7aWu@KQG)wlRN%%kt82Ss!D=|Y`vPejErb#D@%IO#({x?ZRs#Ig5`q2p7Z zOwQT%pUr{G&hsCG%=Q!`sM|M)?_Cj_8vFjjMhIdsztA;5?CfO7`VHdH?A6wG{sS#lxyVSB{0>A5wP{LtH2+*h+4^MEK5IXYm?=s>3NI8uUByBF{w2pRTsDU z8wIso9ALlzX(Y$)OhGQgmgOg zr;|(tc&jV6pYxJhNUr0?ZI^?}0y9+)xk_&dTfW&M)3$1b=PI4<*WMRrHdHCT zVw3jyJ5y53D69(BGgT`-)|@8s6vmE8#ZF7?&;FXOZNrfW3;L&jtrqBtUlEIQs=P3hpO!r_1IbwLzro5kizZX%N2TRVivm5Rw>u!*9sr;U+;5cf_dtvU}`}d&wl!awjs)C^W^x=iM#1Mw{$^n=AiyEk+HBI?t6X>eTH@ z)f~(8tdfu<*W#O_=USrYmT&BnZ{l8PM2fF?=Oeuek?0&#n`e3sowpr&P409U*!NhQ zH5a_ z6jR+i3*CQd%U#1_l526W_&2rUYE$T8lNRKgb4Rzr-l)#Wq|45v%EP9XBwCzJUwYl` z^0aIY_NsZ{)f?>H=xX{3Z9g96_d3ew{}C-K|0%4@MWKgc+&BKstNcf__*hOC*v6;X z#U{BXl2A)-@Z&1?^g8d{W^{34zc0m8vb^) zUA<`k+g1Csxn`=qh}2mroNaHI?rqx|DI0p%Iy2Vyb+d1UWLbLuzUep|Z(SHAL6*_e zxrx_%V{>bxD_fuDNTZ4S?_U3!8^2hdzanv##rczuV_Vy!U$@@xlSIq@%Ek7_)8pko zXNzY?WBbcHCo5l1mv;Wl?C+CA%m16RZ2jH*PiN(5^Xg*b>S+J(pYQ)mw49z@e%n7@ z8v0D)Ea(3xaF(V2AI|dpe+y@UpfDlKwX3oHTuH08J+dNe@zq=Z;Jp|uYS$98Y{Q(r zI1@!&oM~f{J|>AgV=YKts@q*pU2KK&r70}1S|`i#xo>2sQzW=%=$(peW+`7n1x$2= z>f8+VxQiBYka|7lk4=XJw(@LDb=>o$+`n!W*asC&7q~gGJu8Id)otf^R(O9XM*pfU zF7bHny_3N``*E=>YM`*@iQ%cJSIQ%h>L+|s(4r7NS|sOOmCsf~`<)um;*M<}e52~OZ@z(DDd*n_ zFTfLmt)r7H;w_Yd-}ihc_mRlEeFwC{KVBR!EQt+VG>1xMT~ahIyi}p|ld&P62s<1~9;^9LNUcxJ{NmKe zFVK>yFY@Pzrlz|18~Bf0nN;3_()Xi0L%v6L$7jW@?P4wJ^Xdu{mYJFtyOvWe(#A`7 zCM5NBg5MoY20u6cGhBHxdkb=je2-L17aZqVVeXjwMjNeQp*mqHKS%4x)sbU$uXbVD z=|klMjkCSV%t@bnO-(cQ@3%5%eRm`k7c}y(F7Y0_n&@&X1wlsB^$jGrcs|+AG)J* zz#qABrd+1Fe%i{7viT{|Jg<2+Z26~JZ^N|a;19Gaa>J-3zsWVyou)RwW=#@hY7rpyy9V-l@h@lkE@!C)`^zPE9lgP(-WP?Jo8 zKWG2+(t2mrb_e>#^T=h8;j1BzqbhGFj`HKH(z))DcN-x@4u&0SdSCiqvJ z>`N6RLiL+IGIKm9)VL0Twi*w*{*B`!gUpT-LV{4w%JgB)=%y?|qnfIck0ybxQ@t%d zJKm1(by7dfs407EW>W|_e?vbdTL5cW&G+IiT?F2OyK^%`jlO$4qGLACH@otcW)$hOpMF5S>u};#>^^Q$ zZdZy^ThTT{YMS``e-Bp56zKfM3_W}&p82HDjSDa@^S2~E6g$S7u zbQoiu|EyCu3%_3_rYAlu*H?-h7b{-hdPervTV>5)4ie5JE$d%jXjF8)>YH>8G*2wm zBWb8v>Rp7v#V36;z6EC=>pN!ejCHGv6fsYjt*YnBX#=m#cikDQ^m6VE& zP+F=d)mCik-l+BeVo=ilVEEGiz`SL`u~_6m@z{QIgpEDxSV~vl@4|r4pMg&B*KxgD z{w+~dN5<*OS#`(mGY_fcmoLOV)RvSP9CLrWw^ns3b18|wpGjq#C&qg7^hR1ZPpREs zHYNfSEq!=Rq4VxDB_jPt_b|1$vzL5@!>>(R$hN!{Rw``N7&L#T-cQX;WNd+1Ise9n$b`a^S`I=U*`_(KaoEJ; z8(Y6qc3fm2!hKFcxAWd{PV=k9U$y!@q4SOFE4cCIV~Kvi$LJq^o2Tw0lTioNe%W5~ zAV_ben(=V~o#gwf8Nax+J7&fzWV;4;Tcedb+tG!_-X^zB0)C1-uVK^o3P@Ld%B^rx z2i%x(oDG-RvF~U+{iR zpyAuut}C`pX%dM+_bIv_X8Za2+6Vn){hahtgYie`lHI0hqqZ4F_JYfR zJ2|<*r=~{f?u`3U_nE`kPnAqA>LsufM&Y2z_Cbbg2eH!2$XRB&IjgdRJ=Kdf`S}Cg zgrvYY_0A7m-?~e*Q?s*DN_kSQ6yN2TO>SktbJj^}{61*{@N~G4e?#%tySp~Q@bJvf ze1YHlLZ3OUSoQ8SockM!>EHKw9HpqBAAzw$x}M$o|lY zl`y-n9Ete+v{?DBe*e<{7i~dY@yw5^*Oz{LEs<4o8!y6(B-cG3eO@ugoxOhJk;B8N zyj1^JWjgckZJnoVW!z5>(!m#3#~nQE!aouVJUhGKPg3_;2dH6n^9)=e_{M zGIVS8ZE~k{>J)BB@$6upWk+)v(6_nAZezoW-xyWxaEcVhf*3FyAcTUvsz^Lmq8j@_ zHcm7tRG~su$3VWLhSO`C3$ch@Uf{>#EFg0V>a}M5Be6BD@m@g@0dX$*9YS5tA9Z4* zwg$0nIdLJD>H*{$X%C$o6-Bg9^)9aCgif69oUyx&ishWBk?BPa-@x8$GiAO>cRyF3 zRr$eoAnw_$ZbV^Rb+8Wql|mAJgU&L{l;;l4qAjZCO}G?;maaZ`5>!kPo9xRUVv_Kv z?npPFDp|!fxfScXo~@}Gul0EGZlj1u?Wp2|O8T#y}~`$@TH^&!fkK47u8MQes6(`l7jpFfqNJ+|}9K z#G_nfkEBjGhm~#Kd{ACzcAnk2gu@s+skSo4mxm$MRtzOP>V!$P6?OT?0k#>=J?#E$ z1wC>F73KvG48_A#_#=zbqgA*ckxo^r6bdpH=9d>Fs)!|xv8MDCmc=Hx92I6Ii{^|8 z=GqoL4l1(FDJuRdQuoU-6`1gVC_kyT;FbM!B@7}BbDC6 z`k|)`Ia`Lk`dPNhrlMy1IAZQs# z2)fFkxXP%v>b4lf^jnp{VU>kywUu490J_>-wc6IM+N!tuPD-`;w`zw^)n*aZj=j~W z;%X646@|^{Gbqkc3)Dos}BQ@0z=IwMit-@^5X$ zt|skwjnFi7LB{6YU}fl9rQ=UXlnm@K8rDLf#P?Db$kbQa)jx}dpj$mcI8TPY$tnzP!;>^nXB zI!Uz^vXXX?ZwKsq`&k6xBBhdps)RV?~C8{UB-R?kP0tL?dim}m-cn{zH@$oL;16wF-27iqCkRK zgV!5t;*kB31V|M9P!t|Qs;vn6LHI84bmNeZ5mn5MgRCU)Qas3qe5DxmO1bovYX2*B z2~ccxc4@(}+t z^b5S-r2NfeLvEs=AwzlgF#;3~ht>PmzY-hsjG}Z`pml$p)cowJ#*A6dCe5=`nhjEL zVjPm|*N;Z^zp;lVBVf4%%3L&zJsOsq1%2()7>U7?!W|nJx)nsGjA3SKchc!9jSSa& z8A-a0t1M~~gh)j~--*qBriRoIY0gk@<@ZTK<-Ni_jY9F9QP~{HLCN^1Jbm+YvvtnO zgh5%ARw!%gk6LeKYBR4mtSDXneQ>pw(q3W0x+*H`oMbm>I#bK($5v2CX5V4Vz z6lyLYyuuUqzp&H;W(q~S+E9}`;|zqQx*QfA}dM-w0+S=5v8X^=^V`I^=Vo?4X9pGtt{ zVqh)5n;)b$cuh20`nFv8z&Q73Uc7+vszWE>PZ?XO`2ny3LSI8fePP!7x5ka=D33RS^>H-6i6$Q@XE0(#C{d@{iVUx!AuB-djBnx!gFe5 zz#4$6BT=faiHeHz1!c~^IWGuib*t<%kFZp+s3~Mzax=`HF!G{{;>l-{^vJ|)2yip2 z9q%wVclu3kkM2J&Mz7V>Q&#qVz5SPI0s+Y;P##3L- zpdne1$yE|BqYg*!jWzE{|J}PHp&=3J~SQ$c?5vo7^fG%j4O}kzHtM}PlN^%=53yy+V8gnmUL3k5$dKP;j1*7 zyG*AtBx-#W|M$5C)y8?o`xj;XI3yJAFcSKtsfR$Lc6_4hO!K6fl1N%1(>&{&Y>CZi zZ{*m^nLgA{0j*5SMcw0Kx`MNq{R&&7iIZ8_?8h5^f@Y#AGx6OOFS}W(>T7;e67b6< zC|Dh0hu>^P>n7bXhALqd>Znowt-iS`WhQ+eNbtmsZ@5GvUjBX_}bM9c5|1Ow(*kLl3V0 z9{%_nMgWFHH;(vjpwaKYM-Nn(5le_!xl?oK%Uc5}GM((_fsMm|t`PQMnJohZV! z-|hWa$hg=+Bl^^;-pbTk#e23YFt17v6EIeJ{m!~+oBO*bx+M#1YBBzw2NF2$9ys)d z?ytO7`v-3~5Y4gfn>dsp=iZ&myxjNU$NF;$F11dT7N<4(YufS1K$T&7w71dw~) zTm&en2W&88>k7#JxOQ@R;UO;T;|`_WL=BP)}^#1e{9Hd&f@m8Qe4Tg95?Cv`Dw76!F7Pk z^i7Hy_riyXY*z|M1R(k}w4A##GsZyf_6-7tf{MM6m>c{SROs8j$FQ?bCo_G9VbNiD z^8`JgFZDD?FB=b}{(FFmg=ov_b9y$~da&gOs{rYL9I>utsvn^ft@@><#l0$&b}pKl zWbcZ6tuBfAv;w5Jw)z77JGSjQ&2{t}Kq-gkC2O+}+YS}wvQP5wl093+P}|wuER8x? zxRi(-cisk(7hV!kusbq4+|G4XL8XP=UlTbz0lZi%k;lS3yzkWXAMH+sDtQ&$46gm; zLqa8}82fKyBPD*v`#n_y{TlNUNC#vk4T(RwnGsS&hINxQ zkhektub^Id3btD8v0fl;RBjw^f7~MY^5MWq$F#%uNXI{btXiEqQ;wf#oZ4#kE#?R5 zCPG8HRdqk6sA(&z;Ar6Y6it%#gIw{O`TQ2N3=E8$`@K_2lB#?HQ$Q`Nf+SJBC z339+Bn}!gDH3wroyd<-&nQ)Q;^uPpnI2r3S2BN<4 z`S4^sqX6(VLhSl}aACoTo>V@#ANz^O^vq@uZgg((t7wBw2{kAzc8CDFAkc3`a4`Mi z{=lHQy1=!sQx0sHtlr={3Y9lxatRicZ~#ORRj4sKIMwj?7MMoaX5<=z%re&{rJl)@mFk4SNa{%UdW!(0u^9ml2%5$g}$^V#e=Pp<5@+{pykCD7IoTi+SLaL3@yAlaKANkc=)c{yVH4yy38D1tzx?p z601V^;FL9E&ArV08rva4Ow+&sH;_J2na@^En{x&?B3d4C9WOp+?*J-_=*sUi*wCcz zaf+c3o(x2+S^NT1l^0NTe2vpflVXTrWRRR4Ic27e0j{C0S`%-MtkFLI`D&d~HloHg zvr+rb=!C;fs^MaXlZ9KHrJtE8MmyhH;4^cBmX)`H}AV7bi%1{Zsv-h2# zdxgtx*VlV2EH6`Xz6+V%8!#Ca7fHA^ICxJhm`0T%@J+!?y{NDDD#g5X^P4FG}PHrVQ+mN^!%RR)AfrB zkfmD@%Qfm0dZU4vXarU=zn4HQs*gO>n}~iZ#PNx~git?&-UObR~Iy7B&66CS>YOP<*UE^(eDl}%jPl*Un;zfl} zATT<7JSt-vr3ZjzK7Yy^P|bsEx)2#MCYdi`L)>0u-b!(tbTuwFYoq9*JxY|t5jWmK zCL7&30KgCJgTnoNAm&{@j-ZYQWq+%FJ&FQBZsY?%)R++JlYQXZQT@%qCyc?VpU2#k z{^%OcKkm-h;O<4<`B2pTGu@R)u@*)_TA{cah}h)kSx-V73c`UPP7HuWm!b(b z-Riaw)XqJxJ|uNV5FyT@kif7+PgElFAtE8XL?#sggVUl5GpLG(Ka{^xT`sl0$h0-C zS}4Eih{mp?FzL1xUFRk4YP}o)uq8b%SO&+dF!CDB8X=Mt?1hC@V%ckfG-wRrMF1;Q0cdRWK^VZQ9ng{< zOuGu^v=Jif!y>a3eV%J3M5SW`Uk0Nn%+Ufn;>yLbC8R^}WZggm2}u=dHC+3xBtOAl z8yw_WfY>Ew4m^+&4FEa-&8HJQm2r{u4VM!VId6F%lK6vHqOUf95~XN4olp`%5xgoD z)-P&!go$vVbv_#VFwLHA$mcN%WQ(WQ7eRJL?t#Fy zDd5O-C-@_%Cypea%1!^XG!jKjU_oLz4yERc1z6z5du~$?iaD}^alOiwvx5{a zon(uXXfG{d+7vn4ly$j@z5LYivi`Qiln?tx;z}|OnfMb7TH0f0G9qJ9I1YB)p|I0z<{1XQ=bVyD-fmT_)a$R?G6f7GH;d3;gj#WLbqVP#d zG{~FNPp2?Qr|=?L-R4SEM3I@glPMXHDUm`PtQ3anbGP5k8AMw>K;hU!=kMMy3&TK; z+pE=I-;Nu73}-Ip<$BkK(9?@H|I11h{hi*Ov5hJWu+smW@@ST_9$z+U!P+s81X{{m zT1daB43)9G<4$_l;0$|P&CW2)s6|73Q8*a=SzqV@9uye*x zw3=8OUfL0K?Vd_fu!>+hB>}953D0QkDruHlw>}w{*}JTMe8ELg_Rikw-BM+fotKO? z5o|v&Z~Kz@Q+f4LU9}zQ2@GC-s?fE^3sOjiVL8Kqtc$Uhr=N&my9#%QaT@yxNxK;? z`zo%)dtU$6T;!l}vS;8ju){dlvbDc;Xm@4nVcV5CbV80Xff)rP?;C{B|6lCgMNnM* zqwag?hVI5C1Pc%d!JXic1PcxUf)m^|1ot%ExHj&Dgy8NHASAfEyGw8n1UTz`|M%9} zyJ`>aPJCX%XiPAT~K8<~HEGID(BC%x?{TOTDZ@jbuSHI(`fm6aw=# zEd8!E+0@c za-yL%XwKkWB6MhVaY<(lb&z|IKeYI#~^&i8BWzz977Ym&>+sX)xZM~VXH9? z1XAax&k?#xk`-jQvic0NMtg{0v|L3QfB}?1YlsXfUDLTsl%F$;Obcm zzCiG2uQ6U?+Mpoz+2-~YIoMTU)79uW3_-gjiXW{5V1ywao=~`fhL`c%U^%Em8^j$I zEV6~*b^@cd8uHBq=wG7Kte`(#v3QCGGQIJtoKQ}V4b^F0%Yugj3sw5#; z;X6E@R^EqJ<5-Q+2&)G3=df9sN^ z?MwkA@Zd058?nKxr7xE<4tIG8k-R-iAbc>Z4%jT)&I|@I?Lm-@{C?&MZsLS|uhXz8 z(6BYu)aD`S7BwLVxTc#q+~0BpZq(6Mz;DZ= z%U2(+$`Gth9}K59_of^VERWvH99fed(QzOBJv=nr3b%cS^0fHhh9uBFkf3HVdN^6-%M+G4#f3qJ04}}hA&zdnB@ZS!IO$x+COScl9PyTYB zeULyQ$^85M3ct9ybQZ$&Fu?Sc<)Fa9!+71nEaYI6#$n$7U`WR0g^`1R5ojUlgd*9| zqRf#L5Dh7a>sOAEcc3lD!yEHN?}lI|PXwbi@O~RK<$oqCc*cM_crFK$`{eSb`&=o; zfx*c^A>UO-+m+A5RguYUXv%(20HN^NL2%nup6gil_+>#X4!1MJc``Ak2=m7mLPD*CL_(1@)9!JLiAzDF>78WkTd0b0p4$u62& zlm9yCBh!_U)12&^E7!Lknz<8-wZD-ULC)ny;SS&#Jn(hmrLYl*-qV$l8!;8_BK*T4 z;K2=kbv~EpIn^bUM}7Oka{AAdqY-5Yf|c3Qh73_m1_CyYuVpqi%9hJNfEl5|l}tWWR;SgnJ`7hu z%v(B9rMv4}C$y*!MY2YNDu}^DkC15}1oQ?z?US_ZGp*&qXbgO^2$>%T@1{YK!=7{u zq~1cVL(wh@pKeSAFXPEP2d8{~)c^gGe5SB{)kfxrkVT9>y#op><8M7jU%USx`y2M) zJI!@D`Sfnq!*Af|{9)qh%}?0_dRoMHK?EJ)J>AG(24>%mJcY zLD6u??5D(0PkLL0D|Y3qhB|zr=alDdtk~oDMg9KyBr5 zICazseP@X4_|P}yIez_-Vvi#M-lur^)mCAPB7P6OS^Kc zD-19@I=mD0oSc67n^bw4&gyW!z4~hZNsHv_#MPyy&-PMw;n`p+p`M10V$XXm53u>f#dK7j7STzHa?G6?sIz=uNI!1BSCm@O`oJo z%=r8v8I`EBfnZe-W=ysC+SB1>S)}_U@j1iC+@z1T6sE}%AfczqxO=sXpZ#vIw7ouI z&rt?{;H>d>jnJM~~v-zae4x@Hw?nz41Z<#5_tkauY zuC~@OyTg{9t>PoIzo(Sk?RcWi8*P)M_6I*i;T>^%6&e+JZ6{G5kGp7g)?wQw)SH?ExjzGk%Q zS!ww%6@9;p_Duz<+OO}*_4%hvBJj$m-akF4av{GG1vty=e*2G>icyz!;}UxUOJ4cd zS5wZz@>eLvvQoj-pj)ikWoPeFj+tQ5`|FfYrhCDaIDUNLt<>+#e>QYDqxUz{B3|7f zGCU5=Hus5jS$9jn-)HXTe@bcEEbjj+a@d$p`hA~v>@fFWY44TTN&3l>sQ>3_g{tFD z(Fb3NZu-~1kFeMjAB~LIaotq-z5VQa5zUfuce(j`>Fz2k=atxUB%>0=vUtj8T*`$#^FNSLhk z*ZGr*P`ak|3f4|_#c66{he|)d~&4iSizmqfW#K=g) zg#50$lecPAmqlsKS-PQ1V60O6L*V+yF`*)!smhp5=b)=)ts>(FgjCcN z+|(7l)nt7&-nnb3d+SKsdcLvs((?SEXzyv^W8k3jR$DNg_3<1(euD%{pokTc$1p_E zHB{3lO4&V9&p@n_hY|krzseKYB0;HY0kwQl?M$Kf8E*h~VxB5vk*s8!r1T$iVx1&w z`!74Oj#Jjoee)l7qEjcY*QlvnE@Syk$)ZuyvQiCTCvK6pE}rQKG&!$GIp)nLfSq21TM&)urm*J9kqcFfm&0Z6F0 zn@;$<{PHne2P!K5HtT-od;ZqDhKj$!^aGOh0#nVyV;!S&%%Tcy6H1&@kzREr_Q?VE zGlA~?aEq-#+kX-&LDmOhuIp~Kfqs*bJ~JU6gTY=05pfaKm9dqHS*h)*-+_2a&~!rV zL`vi_Drux3^Qh!M@svCup7H?1QyOy4ON-`fl43e*ONJUNw(~OjrsI^@zv(e@-lMV56~w6C7u%a|0SNXqw=LcncJ){Bg`pxFkQ%HZ=tt3fB3UF zvdmt-x?nU%4vKBiS5r8iubQKf=^bx9R;*Lan%h@fJY8*es^_Mf@h_*LnXUro=eJS2H%#SmUZ&I`qTCvwJ6s8(ydf)d!WJl#%ajwrBQwR z&|Xpfnefy{J3anZ0~XFEwcL4wm_g%q5y7|{j88YyX0p_EBN*!bCI@&eFRtIq)yMB0 ze1W{Ze$_Y}?lHmyQ2TJMA^-SQO#Zpwqnray7-(eITBj`EM-@8oBGc8fNplqXPwv4VXM3txdR@P8-A+DxNk`mPAfU--oc@UbB%%Y8< zj(GAVQAm*B@Pye_;e7SZ@VX%nkC12o_{&>K?HK0PU031>T4Y974X471WV=-65+wc& z9Gp?(M+G^WDZAx z60LlVd$s#U395FXTP&Qk|A=u1K)p;KX}0VijwteGB9>6w!CCF|1@>lK#t-q^Og zv9uSfsq?1YPfAmXGOBrV_0i;eW5kIv zpH$L|oP_^m-IZ;Hu!9hyEqE4Gsp<7*l{ZOMs8 zofyeWb-rlcIQhr_NZf2c7by?Z=u?3hO(%McPu?GPd6Xgwi9 z=lq!lZ{x3|V2qEzg#brqze@QHBi+_!?yeb3JhgA~Pcvb#^-G&81gl!fmyY=6chZp`(mR}S@~m&=HmiKfetxrI$FqbJ{b9xgb!N^?sctK%jI zE}iSXJH%q##?7x#CNm1UF&zo`ETE;v#QLx}y5tuV(y2^6do#}FR(qzgv&T>~kH;n9 zdlL%}zmiLB){+p}`#gQFd)C09qLEf~^$gpI>hVD_VxG~4!YYHW4Ru#V*0IvCZ4GoOa8;;!~X+0l2(taO1> z@W(>lVUz0Z>@=mv_um`)GQ*;5MXwB-jvN#pouw@ENVwZK;T>a2HMV1h$cI@-9S4r< zcoVUhmE!oXSPTDEP0ND);!+`$zWk_5RsL?c116X*!M%a`FniRd_A1XM{?RkZYL6Z; zxkhlcZy1d{bDv^MI{WfM3E@>}K~7YSwoBLc>+%XYXT}dU@yUXfDk665zOnlPezQZD z$`iRXl!P(nh3@GdQ9eU%d~w3h50Bj%g>|XECExkem)E_)y*V<{&Jc9`Bx*D2N9+|i zH*W~c4qvEPH*Wi`MRU5Ud{OZ{X`VS=OgOD-WLGa0e1)K2#yV0ZIK_1& zS>CD^;*67(CI^25#_-kxdJd*La9AHVFLQsjTB zt@>G}ax-~E9B?JGtz26EcXycl_R13eh0m3*!{xU7(`yW`YB~Z3GeK=_{#6-jq!s+d ziT47J_!(R{Z(WKN8bB;ZmO4!nR_$e*pso2xW|}B~dWU$T&Snc;=gV`E3@OexA@IIr zgrx-hiKJ$LJM-HM>a%17`SWMxXZrH=@V*lb5*@gJkdH+Ev!ye6Hzw*Mcb}mXByp&m zGC94&rn2O^;usmZt}Kn#HKW(00DUmh7$liG4!1nf-3mYqO1{pnNL9v5$adhDfo)ON zf+_8~Pvlq(g9S5z(Xa^`vlKSAFG#O;1u-|pjw&y^_3*}&D6W$Ll3ChC9Tjaxl>cVz z5P4j`X>2JX7WPJfPCA5_D4bQ;iQOyu*~2peTS3FhKsA0F7ru?S#Z~;%75s$jcv7+i zxyFPaJaI~m30Q^Hl7A9ze#M0FCThrYX;Cl(@sxwAL?0lY;>D@PLJh=IRzXQ_&Pmq2 z92SLCKs;sYYtjeeWM?c6*HlIzp3--k^s6%2SC`$Nf(lNN(#D%oua*+r$QGJP8_^gQ zB}^S7|01@LGF&*dLOu2C$JCTU)-(#rjM>z0ap6S_X-raS2E=K3vn&NR3`LD;DPw7G zPtz)dSpq#{YiD`tXX6@EdA^6mx5)EUv2g!n$!O5YfW63&kWBB{W$G)WADGSXJk5AP zoH@qA^kX(=I*fbPD{)?)d$Bih`9YX_V)ogTaF)esYVyadoj(kFHWd4_S-PiLkwl+Q zg&EEp$uGS=tHmYf_I|Fa{A{=SxezP6dNmZ{96x81T@fHzzm_mfM=*~@u(eJI*^Jj< z!5516Wh+crB!V%HfV@#quMrT3Du_AlD{IqN_PMW|H($B>K)fP3e0n(o-Z?^PIU-Ft zVskmKZgRxKbAVYfKHIO1b2%K@IkJ@Bl!|g#M_@C?sNvYp0d(1BCs0prD6%3~zX@u1 zlWRq2zuF|NK>wi#>TZm~K0}4Em$vi~_6gXQ2LdI4HlfAJx+%=2Ecz<)uQp-D z%IGUhYbq+4`)}H$uCFM=yQqn>sPLw+@TM4uC;SpA>Ch_yv`PF3ET-s7Y*P&OUglyY z%!d#QnA1;p!b%3>Ch*dQxzZ&do$~R|aU4f8r@kW&1!m<)-X7yexye{9Ld6 zA8le=p5;`YHBx?mQ;zne0wh`i{*4Xsskrm5z>cW6Z>lI8DUXCh>)O7E&q`{sl8z~q zLgull<|}D#D`}rpJpYTf(Z`a1&ZnGN+Ffu4%~ z@PO6#9_5bH|Ibovjr zwpMa`=;8Oa!(u2_36z=e*PQ-OK$|f7{$kGf#f)l2azkC(+Wc1v*x;aLoYqPGb{18T zurG*3{1-oNE9T#pdmm68AwCoA%LEDjN=1j#LWfFo#~NX$Iy?RfA;AJXcRT$btn$A3 z=K@f>K*L|+?lK#|vy8->aq6;;>>8}-TFu4-;wjEz-LCJu-R-+qQQfN}c)kmG#u>Oq zN?pEUU5m8%y=X926lm$;$uGTyR+kFc5*of5d)FXsmpN7M3aa~Ub8p5%Z`MM`8aMu0 zHm-{}%zvbfz#ht$4ec}T4cy0@S;6yLz?-S)_Gj;}_w6;???W_qq}X>n4(*sm*LGk~ zhdh_KK*MJihla!Jha#~`((;1$+9vh^2Lz3x#s5x^|B;CgT;oMzM@**Rah#1ONz!>j z+dH`O^T`0zR~+hN3=38T4##5^iDM->4Hv0m0V|Ex*m?e{&^;XdV>Em( ze02OiTG(|7cEBF=@crmX1T^ZHZ{UXTbM+`#J&TdJ#e}Ex`N1fagL6POG~;H#v%kpq zdtuvN;h{a0`5_xrN89M!sYfF-F=(KkfmM=%e*-h!Z2v$NHEb15v=qFYbZZ8~fMI8V5 zp$&hDn!wpXDw+eUxB|N^t#q*uE7`a-L%d>&bv~JJE(L8atq40we32;|cYX2E2@01L z4XbDbiwe+V;`14(dS{%uMpmpyr#at>U)>dpt8ndggM|;w1GtE3=8EZ?rt({b^1HNZ zvHqoGZmh&Mm{!C@Z#M1%;gG0_YL62rbp(sxH}+Z4EQ4dY2+f*sas5z9eVQ$_JNwIB z>7xe+C}^lMGrK(fuKY9M=4YoW?{ut~wl?W#+&KHOEA+9a&&Gnk@PC4X0R8diw)|E9 z`Y;|qO>njbVZNx`rz5bsY~0!m%9lu7R@HT(tZEUTa*?5G`mA;F=z2+fEcb^t*dQue z{vMXSh^=f`E^Svn(+3L~fqIUB+#EXu$HxxO21w zg##+oc*LM=75fy=GYXp8Hs;d5a72B8fBPFcRGmD6h4BHZsT3ssz(cTVj01qH^S;Aa z`~$(;v3LMkVoyblbW%owEK6}$;rL2K_%p}opU~!t+DbDhh$HaQJry>a;9-J@(bfa3=6fLA~1sc^@7r=inm6u?XMpD7T(n zhnJ=m!A{>_0q2=UDF7x{ei%mDLAZcZ6~f;tPT= zCr%CscrT+Lri{u-p`C;QPN3=LPEWL{8iFZ&m0NuLqC~VgU!1|RA}s$3ko(iebxM6Hm#Cw6Y_hSE|rk+&`}zlg&ax zIKD|)4P_AcLEL{s@G~0X*i%~rDK%M}J&zO6^;|>Ww!eIZ;})5)tDditF;HcC(Ko4A zS0>gHWJfxls~JamSBd#{$;HKcDB_ONv#AV5kV}ayB_QTKhtaccT8~%V^=HX3v>R4kq%KgyBn5 zf2a_xp+vdzMeLeI9qj1P^KbEQd(_`Nmbn(s{pLEN$R&xzq|{r{%h|y#g~!hqBT1kf z9zq31Bg~dY2URk>u_)TBXeVHaWa{$T3F{7m7(V$4!jcis%kXR#2DZk6%`qNpM4OmD z24qPm>AK-x#TuaFgApVAw{5ImN~D1UW#z;belx#HhB)Sl)qRX|(_M)oFTo4W)p-CW7$*pm8;LY_qp$kE5V5~fO07HB_ zKArTa?Y7@UrovID;IbcQE?I>qAN2(!z)mOI7zBc$p`lT72Lv|X)DAS08*QS6=sudE zg}9goUN>Bd#|!0>uNQ`7@bIV#VBipD!zn&~iwc>GR@9HlvXK#o>wkC+6HGN%ZNwvZ zUBc&qk|L%s=ahulKx$JzzZx?1d&tl8=Jo&L&LZOi(piB#X@%TE-r5NXnV>1PrBz%Q z9-u*~c-zP!R%8BrGM2y;8ip>9XB)`!YhvtS|5_!}6Eb!u+F4xb262SyK2JV{eVh#= zg}J)WD#qje5&AFtD_-hOqd9R+w&QQ#?(dD7+$7tT|EvozR_)hnKsVRAvU9+g>q1BB zdB89|2o#^?XOL47q6ZRk%Vi@}^H{hnSHU?U8TzbpXkc7%LK85KA#F&rlMFtT>O=Et zm+$iVPVoBfvTUL2#CE=(+d}P9f(8gpT*rhMT~)@pH5UI`;*AIO4jPmbSd&L97t>%_ zSt(E#BUf6%e9|Kh;pRqvz~#=NVu)DLkgJQtwm$|@iLYW3i-$XFe4trIi}m{TC1WH= z)$?!#dgofebz6%62^}{1^HLUJQ-P#DM9GTGn6#HPVrvPlz`?{LZDhts8bb507Cl7B z{Qxu!s+l%)X6-?D zELn~Nss{}s-X-=c0N+(;@OktGy#nK!POY+7=)@S z?)%u8)nKJm&f!dRh$to+6Fk7>N}D;a-cEi>;OmRBlf%FHuPl-bbLvt0FZbw zO>gI%bE^LMl_YLcw({ZI(ul>TG*f5*cejv+?h4^h4i%{<9Oeo)#5`^*<3c$p^#??f zg_@G&33cKSqm1rM(ZohU+!GjL#(wJLrXsaWmS!3XEvX4VbJ0%mRZIvrS~b0oD;~Hp zd7DdMVk6cP5bo(eH8G$N2Ib|(zu2xnry4K!6|MU`2La$+qq_c8|DJmnaqI= z{P*IzWVGkZG|iDZA>1;P-!XBiB21|>_;h<&8E~t9+9(kOQ>QsPlA4`Iy?v+e$rE>s z!ANVv;t2m%?6||hesEwrI+x?~2ZDQXjpx@eL3O(CR{jXJ7@W2C9g~`(>cOMJ{#~Fr ziOBHWyiv9!?u-^x4E6?Bvox&ylenvRi@d{~8Ch#Dks`cgk_KJ#{CdVV)B7eA1 zDba-p55(GI;?7O8@?En?|1?miMa~3$&?p`KiO=AOq>^sUn&UryfP;^-kW?MUljibXksM*SEK9Ww<^G(v+*7(fO?C+dOMuksTK3C;Jh zT^77n8hz|w+)9pC))kizrfmz4%eNbAJ+MnSJbOhQ-bO(5x-_Ejf;?o6CB%Xmjsu5x zd`!nzr^P|1hI1>nKVwW2rj8YREP^K32d8pMr+;3C+W?0dH|<3fiKo;(5I5ao z2|Y7|P^$_=sG%vYC4v4%gRaFAz&{CyeiCJTCay_}kox)H)0AWn4*G1(9m)B zUJ|YZhz&5S^#r^9mU!|tgd8qqv<}A|3!wK+$C#jHQGhdw!qLpRTtbrwrP{Fq2;&Mv zY>Xk6s=#rOY+Ti(@VS?;Q1lceRE|=LnMLY_Sf;``s^s^#BIcN%iVP**=rG{WJ?u@y zUKZZh)_DZFdMK&7St+n};{yu>kq1y2cj5L((9FQY1Jd79{SqjGAHy)rnPo^nz8T0S zeL0rn8wzzGe5tK2nnPc7-baI%B86RnM%M6EqeD#VZ>v9|Q$;V{vmnd40u%4}HU3zI zsx*aS+ShkNK^DhNK0U?Rzh!`79k0FsTu>*s0{r29Bz!C!4ez)jQY5G^p8JZoE1#}_ zun_8?6D%Hz9+g&Z8<&IA2DkW$hDRQN4NnSAkoDAg<6ZJ}NMDMP75`&4G>AP!pFC() zisg<~+DIC{M~?}#akERHKD5o2RUtmdaFAy{c;?rwf;938rW!n;qD0spyI10CtTQ*g zOAn^HHLaQs|Ku4@0uj1;8X8V0x_M}bZ$q!wg#1lq@40Hb4m(Y{6r59%j%o&N>q{x{ zYv>aKtGBH_dVgES_#mQ3;M3mt11`YJSP)6KS)Lw;!dcn-cuA{$4#3f zVK@(Ww@m^$DP8TQEN%?Dj#X#RN4N+qP$g z^K+;^3ZCI5KuF$}n~rA54Xq*Ra~478nV&LgZ_K~F+e3rf=aKy}80VJ#EY z0jCit-t+c%V+(3hV1{w>J!Sc?Y7e}*YDqm%cUT}KRK9+fzak#4UqBzH7Iyn0n_XFo z|Kc5`W{CLX3GtSo@7@76DZv0zu{EBM!JEKzz~bLzd(Dr9emBmT_}s52h}=3~Myg5N zP6Wsc%Ol%uJUQx}9~F+g^>l)I5RQlk1?wbg+GT6%Mon6^O3V9+0;YcB4q>vL> z5DlUq6#V|plvSvv-s2HVw<)W~BU*_RFIqJ2s8TsE)a8kWY^Wn2l}zy&jJN4bz8<7> z=MEwFM8oUJJ`WFYe#Y+%3wa?KruRY$hln z3X>-^DDg2e`7u~;2GanjR-iD2Rwe~Qk-W5EUNkTeF6MzDQ!;1MYIV~!XLYzC))sS? ziCQuNI!lp6_JdmZg`|3z!6lP(CDg$ta#QAb!NxuRfDxy8V1HJOjNfX$7 z1Kxbu;G}-%q%mB-5fAd7f68o7vt@DKDn-BP%~V;UzDe8UQ*Ja$q34j406S~_cFcvg zH(GU33nnvqrX%l7X&34p<|_vEn*AX4wfe&cdd7tMrIQOi{EN+)2FBLiGD z{6}QR5fFsdm}3SJlehcX(K@3H!2-7lD+BI1n2*pVP5^v!XPue{;^^5) z^54l1-n+@%OS0U_+O$b5+e;F#yPdSdB82(&>-1D<{u{PMo_y>@X+tr>FOvr)00UA;~8c+Q-h9 zTOUbJSh!E`yDVJ~ov@Z>dD{^0hSoGx%nixG55rra_bZr&PT*`eBzIPT4L8Ir1!8M` zp!i&SN^PV?Jj6By2p0vLTw@xf=n4vLN_KQ})4^Xvnq=lLe00^gmbp;i?z{V(xL&?RH}< zxG>nh(7tlqTLR#Yn-28yy`Vdj9D;r2eBJU~H~E~A`_el3(q{QkC*NH*!T_@zw z@XF1!-rfH5`R>x?PPD7iC&vx{i;o1xXhWc`BytYoyT>B4*M^&c$#C^T7bkGvh#0h}ni0Xa==;T9A1hFP$4b^>DJf+Vj6e zS$UX3y=0iYj*=V|rZ0_#uNhS@Idwubv@dK;+_a&8?6f`frw<*j+>IVCjR@QimM${5 zJY|p0PV?r|( zi??q5(SOq>;aJ_s?f*xclqn7ND+gc?XIb?Bd9gF{RW_dUps}VW)seqxL3osNz9wz; zt3adH+U{J_u(whHic@)6Ug(+4Y3I?}Mqly^qooGk^PMqjqoGLDrS<;zdY7X^Khgdp zeC>G>p=mMuNvL4Nha>;>i{+|R7?UHF*V*5jD=z<6cdy~c8ry*%YO!QT0*+Yz(Iz6+ zvG41>q?eG7Tl41v&n7X6$gWSW=tBSgA)^gT^5RiLe9I;O>`vNr{VbBllEhF#sMpiX zgS_t>odK0M`7@LRtJbqvM!ot)%k+yt`gmoLU1P__m%ZLc{E1CDd)&2H^=Gk`R(4pYrPaGrE;rDb(Q8DXxuf)#k$v*t`Z~08=wl=6A zb6WwHBKUS5tN!Ef#p;W!yN>za(|3h!5kFq7d!-MHp7xF}T|8{>&l}a>9zA{f!U z&bP6KE@4PRcyKB2G(O?Y8jEL zxGaP@ltEZtQm-mr`PXwyeqm}A@2UhI&?e{&MKyO?RicLGGb38eS@Gev(S-dMx-iBn}KA0^2}dG z>zcyXj+8brD`HF@9jTw;X#ayW!31NIf-s>FLRK(XghYUzp5p}*4+Rf_JejD*j)O-9(2`K}SeOgG<%yxso-ThR45Y6PFk7z4;BCS(Q~q z?0iJcJ%r6HMJ<(O0a4bNOS{QT_os?(hlbja%6|eU*3)|SLppl9I#yeTw$tX$(`Fy~ z-2iC<1Wxou%|m{=tGtX+f1RWJ<{xRI_75|O)Km=CR}WW~N>i6g(2&m1QA{#;m#C|r zXsVTJsU7yw1_gK%b?Gm<3i*aAwT4Pf2C82ywDJLRVxv>P_iq53%LgkP{|Sj0@#S; zw2IamE48}$Q`maTIWnYJKRz_w`6Px*`^;%j=hdlepJ>n0QO?_iGP@ry-}<$WyAEwe zB=PMPd^d7W%C8CGAf|n?l6DWyE~A zIvYf1)8WJvIG|pa8d*;W{)u_ROmh$leGn2NYv+gxoJj`=W&=SU`CtH<_rfZ+&^N*{ zCmym$s^JHv7gD5E1orm7jgnUwg=xO-c)iw$#+R^;X~&E82aDl~ew}$VFj}UW9-+U@ zeBN3Yz!{F-WboL7vA$!`BI0$kJcUh&6n7QT$0rJz#G~ZT{UaS+&*Z*5X$Q$t<^|g8 z71K9GGDobvRP?~i>dP58$9 zXpLWy@=RDTV~aO^SBcXZ!`AZeH-SQmdg?S)0r1~kj&2HO4d-#TAU;#s8OUpQ#!cTX z-)+l{*atZumEzcK5=F5Wjj_+e$3OGUW-M%cR34g%q`nm25m??)jxaxnBn~1xRxqoH z6tJVwbzNp)ql~@ziTp@o5JhfblY*63qdU;i|6)?G4)gTIQ>Y({@z8cn?d}UF+}J#o ztBu;`0SzC1hbOR;%AqgeG9eDlI8yUT@A6+^dB`vnE~eQ|&Wq!7NgmjyEfgl_P{srR zXGC;z<7>#8YP}KWnR`lz7qh7!OTVn`8bb6W(npEPL%cHxgRaM80v}fx5U(5NgsOEc z;S@9dTri=&{g!yxS&}eV;uKCfTd%2E&4_Jo#EmmIW(e_RR?D*K-Wd9Y?OIz=i)Y0z zJUjDHXYJ^qU*h0_(;*YQ;b*&ffOMu%4adG}u$K62M;9l(ad}A1K8RzKsc4YaLHxY8 z-!3I4`%Xj!p0y$Ikc!UrQ!aiz~h?lB)ir=`W=hEd_7uwS`KAuf|n^U zPh)itj(q**WB0K=8#XNZT?zKzTLRxoFU*gFEPYaL6&h-)gShmNKC4jtQ6ADmZi^Pu zv2Z@^4g%iyi1{jGl60*fB>#)Ozlv(B0UJ192!#X*4#gYXiWe>JQXGoAySoK<2=4A~ z#ih7=ad(FTEfh*yChzynIdgH&n(Mik`>d?2wRf_z_kMoQpOQAxz@GG{Soz3@*{kOr z6A?U_4`ZN^D>G*d^I=~_7@o~$Vk}t~kucrxr?t(KB`hpH-Ck;G;{`7VK$fQiSk z7c>8O7k3<5h0@y0b%4M$P3eTX)~YYW-@8~F`c@huw+*4$CmzE}k1Rie1+-6**C!J^ z@kRXYqvT#TvRZ%G1V&stD!7;FCt$SqDmps2>aHCpWUl(>-4vJN@*FyP!7>#mHzvCo z9*GJg=#j4dg0M?1Jv!zoD;u%?$>{jj$8Mw^Xq2bJ%nq1)gZ>U7^Hb+Bl+ z>UEok<99G;+OgERHT)-@=NqNd#RS&xn~Zjb6T_9>89C)|0agh|LWu;LZ^`I?{<%GZ zc^`}hu0KRJ2wd`#`wl9Hl{t|bB)QByf2$4rCCmR?9mdeJ1~jsgZ*UZLt@AzF9i8yX zG9XxuGNR-?eOf6%ef{y1O5wCX=xgjQ_-W`}$`=WgTy4Yag1nZ%$FHSNevBn*;5cnR z(e__iszHx3iX$!-3s#OU(&Pa6t~gasTNx3Extqw5FG3|T`Z)AWlJC}l#!DfWp^Svp z=iuZ!FCuIFn=$gAZt6ilB~DMsXtYBPGW>QZ`E=d*+JJ0(bRj8sA?%g>vM6#0JYsRw z0Re@6a;G!bi zbeV9@rEuK^T_!5a+E6_vcWA7blK_!V+yftgGIFWR!P1nAcLWPMPV&qnuNuZxsV?w` zT413hvYb1}`;}Ak86hh9DOlD-z-^UWkdH-(R!f3UpkhpK=NBy(Jy;yhaV*RaDFN9gg`_?4&tP)WKy;Z~AS+^$D5{IN51ZsVseXmzA7e#@bJDv? zGG!gIn>|cA&9s4#6hq?luZZakiz=q5F6KVzhE>Ua$!WGWEcQC|j?d}yxEW5I8SYi@ zwHV2~voc0ZGi(+!0?)Z@_%m@(GtHpfxArDGgGn;DZFb^<(k!& zl$FiTl*>04)@8XQqL~l&#IPVtR*I?f6h)kh?V8c`BKHuMoiO@l@r#S zBe0m$cTV5WPd&(=>s=hv>zX^xNI%KX43{SM_qla&X<|b+BFDWN&9R=vvnj{1{Y<&? z`kbeWoBx(G|0tUF>nFkQ6}#g`g1Nrcu_$h}w?dsm2!MjdZM3$L3nxfUrW7m>u^3fPd5`R2T1B6X7@ z$0Z@6*uYAsv;_)gEO88xwpbLV@gOUZRQb;Pi zRe&9$0Vs>9x8fz@IG`YSCIN0w3Q@B~;d31SKhngvrX#y1xv{2aqo(h74SdCXH&g9^ ze05KD%{Ws{N@MMGS8esie_fNQ-=J)!lEN-L9+KQG6RwzfU@iiB6Lx*m9$Nh^+KGJq zv2A?=wEkkF{#3sHhNR(6zCQmJEx#Z2$7KC|SHtsU!%cSmKa$34w8m%oMu1=a%OomV z_kUdzxDEmPHQ-#L;_EdL`u$JWB(@2-*>ob`l;{lXP)Qj}&z>2m+d->8Kx?>|Y(~S}mxX{{sM1zA-zbgV^q(}DLe0BvbG~eI_y}(Y zw0m~9Wx-IrUK)LJ+K(pD0^kB=zCBE@Bf_sEn7JeKwk^c2I^m@QM%tPDU)Q8Fow+m7 z7?^|BCa~Y?G0-VQ*=BCnhLzLi*WK<++Meg!1@D^F=Cn7UcZVs|`=F!38bNJ2-SEZ; zT$*%|qV$iM!I|E(R(K@dsh5<*K&F{6zX#9$nzE6 z7QRm5K_GzQ-@p@e&>8&eW7p?9-*>awck%)}j|F-e1AUyodc(eY7xtZze*Jg()%*4< z{5kp?{r)>r5Gc1FO~3Eo)K|=_uOR!rXc*`ur=MU8`1b`^e9;$F2)ugfBf|g%7lPo@ zBnG|_TMz(Y2fTj|cwakscsWQ70etv0#HByPBRC`wHzc?KcY@H(g6jp78Nj`lZPMxek*+S`X6TEX$)i& z1b8%#I_Hks#SJ^#13jF_y#2>)^nq5nV-~evt!u~Z{6|Cmfj<7@QPX2VuRY^Ix#J1B zqj13?p+781HsR3^467aWfJ+nqQUBWs|J!nZcA%3WAO;5h|8`C4uO_#!r<&hS9rT08 z*n!dTm+1qk3xOT|;0^5Q4TS0SLNL6Vve^h;hfR;ZpPs#%Zu&DlBsjG-58mD{K*a6) zNQt?oGP6AohVQ=I6`VbMk9qPQ6VB3Tayw!!D;<8%-u{{GiUS6#%-r72?979A8t49O z&Hei`hcGj@#y+qNj0m1b`3v5J%nam$qy9`d$pgdtL1ntAsVb;(ji6{1P&nG8 zzw_8oEts{M_sa)OBQEWvp_EWs`Cqm0_6;bm9~Axy136v*1K?T+yWi&)bl2Frf`Q|E zip?nxS*v}w(Sz4O6w%xgt(Y>K06`6{>4;INUa(!BtwxPU0C~WG9teQR{+Va&CF~^3 z+kTZlN6Acey!C6sm;)+uo^y{7%xY}V`Bh&i28fRwlz_cFB43@}U){TbmQV=7`!o>T zkLarc=(C?OXTgUX4l3h?8Ya{L^5)+;K&JNqAv6HxEqLW>32=9oh5~ z#t6@y^VeEo3yPW!{mGNMONLvZ)8t}UtZF1TZa~3*tfs?P;TRf#(Nyexln~lynsCmYyBy~NVEW;j+UlU>A z?Z#FS7ED%~bORfTDwd2tMP4%+&OU{}ILrw2TEB_6OM_5rZ;Yub)ZR+i) zc|on|KFoun*6tky_twM|4#>m-Ct(Wz?b~hE=qUJmAWMQL; zlYwL$XOUf(ek3iK-f;%OyA~wf?aKiNP72it?1RD1UqfLShPhc7t@{@BjWttU@Rew2 zel1RyC+XOz9?lrWz4#xLPDN(Xyp&q2^fu$!k9;7Y4k&z+^gCsWOfp=oU}IqG-wVvx zdfC_p-j83qhDk#4_tr6s|0!)BnpqHlZik)4UoJ9(s5A=PpR=ARX zsh62L$%XBulQ%>%ujEr55SgDn3JkI>M^ zZyHa3H`3N0<{DRTGYy&;EL8-|&~-zCM1OvF{IweY^WyjU3QJSN{CUl0d-gog7lLU% zi7)7e5w3y?6#iw)+!VG6if~?whD>JKj~gTa6IEsc&cP1vK&+U*;G3*vow|w)5AInz z#4$m?m_dvGe(776JBuZB9uq1EgCNjyZy21zJWlWanQ>ZAE=29S*sr@iWTChTfB;f= zv87&n@kiYs5>$SM`gI)TEli7CT1^l7viAvY^ijev4vc4#A666=z-urd^)x80@%80< zhXzXr0%B|$vsMEJg{1fVw?U;mZ4*-sS!Ia*kE4mu4An#F1ahIkH^gd3vdOfH5%%rM z|07NM!id#RK4o*8jDE~gKUIPULIz$Qxk^-W1>-5gy;RNG#eztXLoOc>AQjVkZb&`*DdkI4C}n$e4pK@Cb&I zae2P?$>lgzoNdV*O~J{4C8>FWk0kar23gTCycCK4UYe*WjNr5QVJsf8RcaF@v5s39 zmgbr~a0nyl&0^^`l)71#+6RwyeDmNA1%VzJ>WZyjE{Re>lcvv^?{lyKKe0oKcIyc-^vGb7&~JXaVSgXZ=VR6h!94&itnIdG5pDiO!@_xNR|@(>4Z3i$GxP zQibxWI5IRzVYu?|o5E6*$QUJ8@~w~C%{sQ$xy_S8e>`cq0*DY$(oC#_5i^KE2vCGK zQP4MdC`}bd?W4qFy7sM#g-9fyo9OlP66H~{%xkAW%^e@4ECIk*LFg(HK|Elo?)wSqQPQuI7rGv~m%uT*mnaf-xFL5D=<5*>ZF?*o$1SUJ(SGrmRJa$Q|n5m-4>vh9y}3 zw}_Y`J?$6MA0}JWX2&;KB}vpURl|(X$a>Ng^33Ai= zaYR{J&o|Tn{RlMnJ?IpMBLG7LYV5sHqlx6cLrzqw zh5}IGfgA5k#5bt`GXJAezH9nH-IZ^2%c;3fT_<=xR|?d&Ar_>R>IwLg2uOD1^ zCt52sX&g47HpK0wWPr0PZ27F|u#7|MQsE6+qVv)RiaFDB5!wy)H{J+t#6-5>xEM5& zQsa`3t(JQvDyt5{7jKvvZI$YDax8L<@m~`?ph(yP@_;{SwXBMEmU;l~Jh6y!WbaFh zk7}O^HZ)NP&#DbogJV=H`|*DwytSf4eUB%K<3R1%Hx}jrB!y)P?BL zkMv{oQ&O(S@W{3-*}La#a?Eutce)hG*tCS}V#FQbS9q7B$#Tr>CVP;Liy{EpHlEu-%JBi+VlbW8j{y=WeSk6CGhvfvnqm^aF6TMfvK{juLu_ zMjvaN8muwQy9R5J_@zf!r4f%y07=AHf1RxBelwsOyCaoKO3BYq8exlDQtUyH!THYy zr0!g9MDe14{(U3X*r_R_dW%d4?i0ef60))pLR*C<^c9ka%6GC-{G*f`#lt03Kj+6d zv0(_LwU_`jA}J$cA-xIfDvIgM0kiAaU5W2X0PvGbNy&q??3C(aN`#E!l((_VS_wsF zUnxL5FNXeY8h){;G(RR8mLIGH{u!X=?K+4+geF7(o0hU9F(fgWPLxf1I%zf?9e4B` z;VT9n-9!WCT!xSJ2O9DMuWPuNe(Yud+(sz4wiZD>6=}7MND7?5w2zqF%5Vje5uA3x zaz4UDB5dquU{Q&|%RDd)Zgpo}10QQH8RK`~?)x^7!4KEaPT!zcpGntu`G;XqV3G4K{?)s$m2`E}!%(3uIQ^A!~!>Du;^Mg=}xHDw)K zy3OY~aPz&{6aQbK7%y$%$EmXZ6W#{RSr0?y{L_h3(Tuac2#Q3%)KL8WbSTiWe_w;0 znt(z3$7fYotkYIW*<0VsmY>1#(BlyN4n+h26*D5TBoyUutIWc03KpMKB;w-v>TbKe zMAaB!M1ufP)|-UaUxMcW-@oYhCht^V?RgP?!Z9C3&FAw)4eQ1)_P$DSfQ9JC4c)V7 zrtnXj#N6jX5OLO=P=s#~ki+!xcV_t}PhIR(MYk)t*Qhu>B6k@gB;NHjq<#;2H+Fzz z^Ca^9tMy%l<2aDr1_cuy2|Q!kQiCppzJrhJt80g=X9nZ1A=_3pDyiX_QHA64AtE{F zfkdG&2}D>60-zCr06W~ZFp>pT^!)^%ld}+s3SzV#auqyTSVY259qCNO{bvaG@8(w= zU$Ng$BK>&uw1-))dkARW2xy>Ax&yj*i#5eDJ&#l2&Z2|s_dKq9efTQD#G>Wni+K){ z2rvmc0K99ZxtOe*Q)gNn>B|sl0YN4uLME<+&Qx(#iy`7a!8^WCyr{@=L~&Z2LCVs6 zs<;Gd4N1sdMgCbt9C`};|7A@Rv^4bXQZj;-F0yh?FfltaV@w@JZLvEDXnxj@$AEWB zD&{?qi-*T=K8Z}I!Ni=!miHUQvQUDcazI@c0eM^^E`|xi8y^h;F0vzNnTP!(B+c+D z=QhLv077-@jzc7%GausWGvm%WIqYQw6V~5Lg-k#c79UdAa!F$^8!T3dNGgjUDNshl zSC76&1#gIO4TS4{p)6a&W@`ej0U|A)BuU3xF*}5|b;yNFhf&#sYi))trlTb6M|*w7 zU-ykA!Er!25}>6qiaPu!$(fv7l7+LDOWCaMoGTo}FXL`sQqUive=7`vLcIlP)j7+I zej=zw;kz0S%p+2cP|>N#hvONytFATHPa+Vn<#G8_p+aFU+D$R~($TrHNlEfs9plu4 zs3FXecAqd&K|-we)h>Qx0&bnfrgdoe;Rf0$%Pk|?A#uL_;YM3fZ~Y>{=^=RF4d1)L z7a>LWQlze`J();gEk?o>l&=AA$YlnTK$=kW$*1=lPf8Hf=7n6Nq@&D7t84RX^l`22 zfx&=ui(5e)4bj6cW~W*xCf}5LA`6__nk??7rB^rrG&{dB( zjjgFtg2=(!Ln%i+cQ1(hy%wV&HuC2eN|p&^yh12yKQvJb#GSR_7eYhT`0gY)-kiyjK*GQOt|v97v3x=yeDm$}mPl?{9ga=#9=^H3G<5=i zHtf*9R8V;ANL>gRAQx%)u>4uz9kb2y0-CDHHs~{WAz_@)buFCReWpa0MT4j;H0JFe zH3a>qh&Z#|Z(5{7WuW50Aw)o2;WuURw@vZ$y#57IgHOgW+(Rx0yFjD_%fo@X5 z?^8G{GLZcZ+ml4F1$$&UHBeYn^FnRy?Q#ZQ-g2f;q}P1-PjSrg{>WVLN**$qeE3oY zsWV65(vHaCkta z2{{xlCkzXbbvwfKyhGdKk>GBH13Q%U48Y#Fsk687r7T=mcC$VWK4ZMr&!QcMtQ)SV z#5Rx?v7J_fuWjPIHRiDe-^LR3S8IX*Wde+1;v9j505w5a^MrdA5XwTU{y2CWJ}l(v z5iviaKMgkUI@W@Etge)8FFb4oSr}~OMVM#@zarfl5E=(luWiGbi4}GPwRSK8Ux-nr z!A!vFlEL=3aDCH4LsP!(&4;Z^hwatB`pdnB;~x4Ky*pmLhKn=$CLn`LA%mc0!-PCY}53RY8t*Q9k&9be9I)jO0!^ilY#Rp_Ql~7(tDAOLYY2nsSsa+FxEf<1SyfSdx zV1(6j4XPk=l?38NcQEqa9x6O@0Uhw* zhG^)2=^X1&4u%j49(ZISgd!dAz7fDggv7-c$^%8>8{g;l4uxYDu1b@RvI9;ABzi*= zZs!AD2BeNMU$Ev3=YW_vhT)uo$8YNU1^H_Gr zoVW2<=k`$Y1eq5BNt)H1oo`bz-^{$toQ-|c^q-k7wx!;`V*%++`L-ho#}k3_a0Lp> z-d^PYlvY$IYdrwoez2gk6gUYtf}#WyXzM&IKgC2^6e9L^8Ix89lfq{FI)I-ZfUee& zIoaS_!OjFepgs1Q5e)eiE@%8^4mkURV{d}v{sqVXL!?+ciyb|qfX|yF98eG*B&7o= z_JZS3Y+x&Akd6>yIwa<{131%hw>&kV+mv`bRN2upEIexZyJ@XrrsJ^(zkSWaS|r~D z$0(s(&=H|y{IVpE zmrU?WEbGv&2-|MB;b^pNPB7^@xv0v&;2B3G?+5he1Bg$8c|=XgVWC}?p*)aKqIy8b z3S1Oiel53UJh>bazM^rw?j$z+jG;;9avk*&6ET3vHt=2(+z7aMO zGkYl2&Lt}>gbEfy!vKJ%S0IKVZ?pik)*-YA2Pn$7@JC;$k+*PT0*nj+t=@uzZr`=R z&qL=Fp7WE@kUo^_DdC&;KHJU+y==>UcxS21P`~^n1Of`7XuKo+9vuJK26F2HA+kxE zJ);ELywf^Q{d`ViWRp(e8vps8{@2+%>-)IR_Ymd#gcIw82v>$(>vR+wivHkttHCrt zz$@izFeMS--D@yp{GKK8o^JJy!r3kD=ALo)o_YK}ZuX9JEI7f_O=#Cm_}32>;7>?@ zFh&0v&DRhqt$RABAN=3X_$u!CE8Hl5SyRj-QfuE(&AU@8-^URGC_By|4599A2NUIb zUGTuso-T_vBFj9oi0}#fS%?vPgx;8kZ^YgZ?YHl#-{T6uyG2D%Wq5*(ZqdFvqtD%fPao}roUvs9IN$f*vHhTFzmpMhWqd-ktgy+x z2_edGF|0~;gN4K6D|pwVqWfwSY77f9)3g0UF zRrl*vvmjriGqZZ9O&_UiqR|jUxXg)qgwA=jh&V_6dTjH0Y5)3Y=j0P{>O~{_((ZL@ z9~9zX^a4}{(9DN;M0xqlrPx;f^3%EvxAKk?d4|e7gG8Rf5}ij*y&?o{N+Q1)2j)n6Si4u3Un5y=0xI~oNqWDq zr@oN>VN*K7L&oA}-K3N+5=9nSW#nr-fVYzq-Y*)UVMElsZ=dc$1$}=C`MyC7DG9)S zJlgGx|Hw{b(8X25c9qrQqZA-Uza=G)&!cU!KyF!RDucSTW{D#Y@0#FyekO?^ww0YB ze78VIuIx>KTpaYe{dp^ze)177+O=x@o$BmEs(uVxF+*xJEza6IXMr7at=NTg9!P>n zb!Bew^h3KYEO5C)%SCXI0WYTgI#WgA1d6!o5FQLg(@cxhDPOQwnHfR5ADKZx16N~7Qlsv_T*Gp!6sl+C{7vR8)6}q~nyNz;{?B0v+?_pn2Uf8UM)U+V^uLtM;$%2q|W^9W~L) zN}l4Zsq>t17#i9yi@M*U{$l=pwN+U=qx)AOw7i4%Th+?ULt2Uad)Iv8%ig=?3p7Q~ zXfNKW`;{@Z+2chcpl@Y+HqS5HAd9zG#fml!0l)kHbqUdL$*M5hl>~mJxEcJ!Yx6Q5 z^Y8Rxi(>AkHZA{q{nMc_X@T3F*0;Xr;|Q%R|5Ndg&o8r!AHP>F49RTVO$u&=C7)Nu zelNeM8C&-)8>6nf+i5Mx3HXf?Bv1W%U>2#+d!1>e+q@@0ipDzpC?i0NxAu|48~_+)?&KP-`kzLWF42QNRB|44v&81fP3o029p) zefWa(#dS#>Uz$Fu8f^!V=FxMU#B9p_rsP3Vn~$3gBle$JNhJ)}qk7&LuODMVG{rae z3zfr5H`TCv!(;5)ATbWj#S|ZpQHp7jk^KA#vILN!eYA;>U^v<&rR5Wa2s5R4=B^za zy=@>k$NJQrbAD^fyp{l!=0vJa)@k0-MKf_9r)O%;NXnw37E4KJ*KslK z#Lpkm9v68)owaYy(MJ6$GsPy&oT}5Z`?^OUuj1+y$DFJ6-o<9d$<;A;cUTe6=Ul-E zz?GR#Oh*&jUMHB37o3P>K`+-at;xe$kh@i}b@U{!;EU(w9a1iw7C8gmShODNp*b@( zFU4KqDt;?Ah}&E^>%r8VcN11YAapM8H<}bD#+834o3_YWeh+QF`X=wyQJ<>op8o6G z%D|#GHK+}(Jl%dzFrcIM>p*Pm1M~UBne{B^#cWQ2f~+*}=NjcQ2Qu&vTB*Pf$=i6AZOKkNH&QODMd#&S zikBSe%s4LAc6~H852jP>S{QCrld?yt^X)U0Ry>GqD_fu=|E54QdgzetlbvKwEst0CS`GWc zxW(qrX1Cr_7jwafSJD~P^wxCyWm2nHLWS-s0(Ig*W+?^#(my*b{Tif=<6q46308i! zi%Ahp=3hu4#AI?4NwG!ZRcSMYq-xU>7;~CLZ&0>;sYtqZPaCaQA zmpd`s-VIxhMd$TTUS?}>H;=2C;I5TH=U2kf`@N^L>mD1wG!$^2+A53o*54!iPi@zcK@(PbON+#pL3X8<%?gWm3ZVL|B}8K|R^Ld?{^xKFf3 zBitzao;Tp{#XhWd!>YrKwnRU~wwOX|d_M@D|BTxcFhz$JBIU5*%1Ly}d;C;T=I2&0 zSF_K~#;1YBe1Dg;<$q`HEy;LkOE$#OA81b<*K&RRr!V7Tfc5u0wt=}-cK6j)8=s_$ z?pVzf;TcIm*So}7?mT<%^8>rz7Z65$?*@T}rP3z`^-n)sbyAjHk({dS@=nleR;~~0 zJSun@j~XLhTTj(wT2*JrE=Rd?x1)Alwyy&Pdb$R}#qxo0qu$O?bRq*e`604z$HN9s$v%nvU|8~#1JV)?* zXw}NrzSnK7%8jk#P$1x4XQ%ok9>Fn|;(yk_#V$zjBml2L&@>OBG4`r|_!_M<8v$$rp^r|lZ##&cUOq>(6)=@f5$KcN=GeI zz^*Ai4Vt|_Q9s5no9sDSql8Iu8k=!vBaM>s(=8xOPVMn8E7MZ)@fgykt-RVN)d^9R zo#Wyw9m{{F%@cgL=0n4DUw})fvyNCszfA)rz(+J)A;Q#Ws$cmSamX83WI;t2L-4vd zJh3U*2g#n%KvWCU_JBuOykOOR9dybD1Y#W zKSdI;%$bQUQSn>U-JbK$GMi*9V}SzOu9Jgt@&eSY%-|DU)pFhVRkGik?)8*&@rTMN zZ(aV;dGrw&hFCc#7q+zKteKa6<0FLQHrIMo1wgFZ&N@-=wl)g5RDU;+vYf_Y#bQM> z=z%_>HD@+FOARsa!Mku4dC`g`@irKyPf^M^L;HgP!b)gHq`A8hZ6IEHTcXLmQF{rg?3&W!2+!PfeQoavNTOp(wA9WT?W6A2l=<4P(A&G+*|Vw~66utmxx z92?ibgD54CZ8=?_Cz-N?x#y0y-tSp^C38|9n)v#8mQGsS?Q-~4gL{bXbrNG*QJ&;z zp}Hl3G!=bIs%47wcnVWa5WxY5MZxxXWwvFNcJDiV#|l|#W4^roOBQhDIE^kv#z5<- zkS#6YJ)`vFJ2@)zQfYc4&huPH={(2aq4Dk5g(*ZpiDY_e!S5wrCc_iWyuaEya-(K0 zYHL*s`U28w`pK4EP(fn#A7gw`!7}?lWjp9^#;stQ;G*_|Pc1poMY7MTkdZ^1oh65nnbrN;lg^ ziBg3((31I|TX>aMge#TKr!j8eSkOff(<5HQT~OUsQEQmexos2V-qZ{y=NWqxl_(h$ zrIT(;E%#6{+v=J~a8!CMmJe2+XJ;L;v*KB}GP@5@SsRudzcI~VDI8U+c4f(RAu*f0 zDVyq}sBy6(X*RQqvK}*)?!8%YyMNcduZw_|yy}iu#Z)(okz9qDzQI8^v%wIAX?=Dy zi!rLz&Pgdk&LAUxN#j8nCqBEOXgiH)A~9*TU^u$a{8r;}JK3T72k^vQaD?W#1S7UwlLca+7--`;P%PP>?l zmc(EcaW`st?rA;woxnz6z3J>5o4w}P_Q_p2OfAJhN6^K^=VM1T+-xUKi)(wh)5jm6Lx2H&(1vHhIaL^_GdF zO-$R*pQZ0iLF0iKV185d6Ej@8%8!6V6eQbr7TX7pYv`luWMJdDsWtfCyuQgPqWawg zTJGE6%FEw&{$dOTVrk_(?B;^E9+Wa48758aSy8> zbgYXIuSaO@0YUK5r$!S;yAWYLS59_JyoOVOX>3G_d;#syd(y<1Z?`OWDvyR%JGIQ& zpP!oY=P7TH|FP{WZD1#|jTEzN<6OTLiNK`Kslc3O{sn5 z2l^S%nk9$cJ0<_S6y;uf#XQOGA}6W7qSUISm!>?$ytiJn`OaSFVd2VqaZ^D z&3>x<&w5j;`C#=zvnN{Xw@NN;x-DZu(TCrKXc^at?f7Q-n$%`&j_<|#KKx+waonb| z-;Ay${pdnj?6w}FYd>H@Wku)(_E;R=XN&w1GTD-G<9ejpG%e32&PpKd(aMJW=Kr60 zM@At8Aflt=V&Y@L**iZWA0sol9GFM;f6Tio2CqIPDbr{2k90D^6k>X0QlClw3oM%d zC*S`IENXFTno}#FQgT4!cvYLRC?MKsq4<_ycX8+-LUQ>NZYeg9^HF+;} z4NomKUuAha8(AAK8GBzvS062JCv_JSeN6?K519~*V|L&yKUN5*VJN>vgrt3xf=8sL zZ;G04oUuidG>vd8*T*K7&v}9pb=->OLeh2o3e|$}sG?e#utYPrK`tD*|1Wh{ut`_^ z-=d;Trlie(MMYKTJT1=*P3r_z?NZ7A?J9oml-KFhRH~OVX;ZT7Qn#v5`md`PZ{rHH zHt4pn>ahD?_HGMj@6DcY@UAhdY%#8Fx1?{grsue*t8<}kb!=d_V(z+P=Cbe~cy~Fm z*ITxTX$gd9`;>&@G=z&3rNfmZW0d5g)a1kA@?AqdRzogIS2aOPElyD)M^z$KO)^*K zQ<}bdsp%DaQtqj)M%^S@gIJ-t8mmA z^|KrLU-|B3G3IZx1efpd#-fk;a-hqwuMxblc<66^5NL4@Z!8)q3}oqq!R33Iesq%& zEZQP6(>x~CJ*~_^Ym%{_Wb|OydV90Ie5K? zoA--NjIl*))1m*9`Hp*g{cbU_xqyHDnB^FN#M<^-tQ1b+)pi`sK9uW!A3; z?&T96u4$A70|O4H2o~echukXW-wE`7=ftxX3=tXV{ViD7EZuc})qfb6UPf;excg^X zIq2_>jm)pg<-WqS*+9EZBV+gS&YFN|a(+@{HFqAtDjXRoZdi(P@gwH3&^U#Hgu#ZR zOsV&K#bDxG)Nh}kcn~I0LK(?s)eb1TAr=V^sxd$`GjD=XZp_H?U=xg2pXT%F_>*~fE#8!S>xXex_It*Sppl#? zRj+S3>1QWNJ$E)|Hxm=ktCy*%`9|ucP^}prr6>X8NIMf z@#HN>>#Kfh;t_gr^gj9&AOF&Xs}4eW%lTxjmPiIvDq;5gv80+S0uh9B0(E(38lI`0 z2hX=tp;3wC_pl=`CE%1{n{B#N(=mc7u{^`g`%L&X4Q2fLi1+*ERGll?C0tp>lJ|Aa z**_Hjo~RBv@-RC&;T&PN@=Lo>Nxid{tZ+OMQ}UWzNU>A3qUB0{{d&6ov5hUt zPcidqY&_qNL@eaw+s}TazC|VB_vuvW3d4Lyz;A8%M`uB29m$R)FNU*Q2Isfxmy%+a zLbLuzwZsdH(g3$8lh_@tWxeBJr-W09g^=t4fWO9IGP zl@9o}iaE9mFyHVh4aJnzN5HqtWj3GV>5Is-j=^S5#SEUB-CGUUFCwOzwFbCGMifk9 zIf?}J7bawULEh~l)kk&St&8fv#8(lOxEgw?<0Fd5SYo zTerd18`IuSCVDbxmv3z~2U@P1jalnV-wZdQUI!a}0G_^fNkmL#ZQFkmFy~aBCNuaKbU11P>ZRy4I;lRabKSzsBW!4-n3Zi_g(Ebq&@d1zcQuI znC>fYZOU*^+LYTcn6zyBq9u1i=QV2eZMIE_8k}Qf=g0jq_OTsRe0N5ObmK50BQ84o z<`{KjYuNGEm!nD8w{XoJIrtvS#(1Y+2VFaIH(shS-S1t{|M0v|VaUf~ZE<@yx{0wG z(?<^w)0F;0`dz-<^fBI^jFGz!3wnnbuQp@73Vn$))n2>rzb^*S4=yGv z5FeNMxK1aX;Y3?@ZHs$85qLRD0NiMfMkzR)1Qp#E@U<2nYPJT%w8_eOw>i}e^JF*H zZxTslPPM**mz4oxp-wuxtMKyD5T>JD%A51b$KR{#6ovn0o@ng+#@a=)J$GvJZqnCV z<{8y~lwuij!uN_hA}6M>zxAt`mg_lax>wK57`Aj8%KGUEf6VT-abJ=2=O`t4hpj=< zLG;b}%oP(?3;nNowy%3<;Vt@wnIr{scm_#aTVxA!eGFcVpwc>TG=9~X@ci69psy!EnDesHa-9M;J zTvoZ3E4O3V_eYUI*3n-{Re2w}R__9TYhk~kSJE^O`X(;3O$kL}!2Wqc?jHu_Z1-Kg z^8&AttZ9+`bn}-YkU$tGC-e?xzY9KX^39Y{+FJ^ak_?70gt!d^T#G3XjL96~+C*xR zVDLft$|-fZREt8?kCH-9WW*fDAQ|SO%rwCW;mU|-Asw1wl&)db>fRt%Q zv|v0=am-W&4F>WMPYUr$Rsrb{2;yVre~|G-!g|KTT5X9^`=z57_0eZ6 zIGzu?p3)zkNF!rJ>j*z)`-4fpYlxSb3$V!j6w&3NNlHY+f?$NFw1at9MoEOutIRY; zsfd4T_+w#F7#&sYzMAiYSnLKR0aRVc;`o!a4A&@CoWuTye?T@Y>-f^LeP)c)j;`adfeay;ue<`13?Ih&4nzVd8KJ<}u6)=hk*u%Im z<)FIYp%y)=8-$qZhCSu;&tyX46rR_tl-s?y#iA79&J-QO=DB%oar8F>6Xv$4T;HY zJJW^mQk~D^9ehZg_%r&|GEhS@K9pp98^~Zi%&2k6fZ8yJWT}Nmb4C)Agk@zms6~h^ zW+r4Y!K$c}`LjyYvbbEcGS?Zi*Qwxj#Z27jI^67He#TOp)QV`1s?O9JIgSD!o(6u7 zCPx02bM{sr%5tBa(BvGf=A52&`o3sLKXIljymVPz(?AZV&7~63%)E-k&#}b15*uEi_gw+(E$F$Hv6J0MGs(to`>t z6%PFW{~yOV1IMvt9wWOPvR6k%b|)iSM^Q#3D&{YJQmMUbX)GR$t^#8ZN-bi+&Ja=x2&AX zynxCKG~_>B(Y2z;x~j|?;){T=>*L!}Q)fr{RuB*@3PJ$T=ing)$&dmvq>1=n^Zx(T z6-RPv#yV@>lWHc$lD5v%m3OzZiuH0c<(`R3`=Dbj4r;)6Fg@^fUVW*nf&Cmp(G>+2>JVy;0)f@wuIjd`I?1j^>4iqAE(k?eM1E_OkArw! z?9{L9tcR z%m309?E;&qn!C=!zZ-<>7?ZFm#(A<;G~d)zzl$CAux( zyba6K9*%6MH1FO9ZT`9K!BSw#M1czrIJgR&fCq=5OWf4jUsizvi0yd`?VeI?;Y4r( zxjb1498PY3>DgXBUS1a1jyve6r*8`)w1p8tLB#gwZe96tU5Pdz5hPF;1q?xg{NVoy z27S5R{q)^$a=Whv07U>j{ojfv#=GBtD;iVlnc?Z_>SO#{8T#l9+Q{8bh zr*|h8L^-G(Tj)Ko0qwYfjsig^fp1O&-yG(GP8NEF(V&-@H#t1uEwz%P@m^mH2x9n# zVX+Su)VImg&%)dP!=|5uw}geEBLo8qL3U$_{Wm4w2nO|w1aWQuy)`L6HPT<3I0~5$_fc z7{Bx}QaHtXPX_OF58CcBnk^36tG|Pi_=wpV%gitew&>bD^ki|!qXu6+2J)v^dSsAa z(6E2ra6r)Tu>shOfytGDX$d(JZaWf5Y2MXGNEd{W_{EXL_lz;TqhZ}uD~KUi+rbGG zaBrcH&k*F33@*q6XX5M9`oKOEJg~d}CW!&sIfU&VO647IR3C>i!`>r755~a30B~sE zxb|4NKe~{Go0-w65PBp3jJehJhXMzi;%zR4msn6ra^>rQsxtkmLJ~L(Uh?J}!`1=g zav#$cin%{LwxS|H=f&oV3S^H@&-Ct()6A z!SMj_t8>r)|kZMRS;J?WQ2mP{l^c^Xf!G8g2G&GD=+0W2 z20KK}roibl2p?YI>$<84vm{79kx=mWv#(usmgnaNIQ=VRn{wmHZAG}iyp#n)!M=X$njqYQmsXD zmtg`^xX={0`0?Y;kB{NZ@?PDGT7k7q2cM6Z=F;I191$Gu+1-VC|7D!@-a7^n0%X6l zdgaO&*6LaT``V`D+3g;PKbhe@7u$CuU^4v6tm>C()yC|;*;FDpu#>*4j{*7#4X_U# zo|v*tEK-0~J< zV-7zg83oRjg7hz0yx?D>zXA3|FTet8>EqVAcdDC{A-u4rx04Vo5%jpWSWq`vUc5uZw;e3tQu7+t37sC+`uETW=(1wC!qR>b5j44Chx6dcXNm zt^e4gYoi12_GbM(T-x88mOi?fL_&oe!8L&kNOsy5`dBz5+kOpfFz3xjpNX&RsI7Z} zTssJCy^Jb;i7c**zxLJpP<@4wj0J_0=Q4>WvTlu{Zp))NwGwd<$0|?)xrc`@TqVSu z@!5()!^aiMwnsA9AmEhmb&0lqhknjj;+t`Ys*+%ebBh6cN-y4JX6hm~wP2Q;v0rit z2eR}K!=2HB_f$9pBw`%ICb{@;53cs~M4bv2@^92ZAC#87UsOLgtp6(~5t7Xf@g>m5 zUzuKS_&&wl>NdbYY2L|rQ_arFpJc`^N-5w8o`3z9RR8zjLK?U%1LWD)5g_v%=``mzF0C`&3azx*Zk zJJp}++&d-@IgIygJH0nQ#!;TI2KVxc8e&pv_idwpT&2vO&+k2mrteX3D|tLAF!ti7 zZfwhV`bN|Hw|uUBq15!uAukfTMl6qsoh!CcH^*OCT;z|20H{okoLNfr((I>bG}Asw zTQ&>*mJPSGC(cgfUoUTG`{uJVTWj-}-cIeUKQ*8maPfeO>L-mS*|GumS=n!4>AKHE zV!m6zilj0T{`Mvia!seFbCW+199Z8sk@rlr_0ii)2SNjsESw#L80ibUBq@$a515Gs z=L6|?oigE4S$G^&dA>MVWy3if&S~Tto~mos_%1a=@rMYDw(W1iZGi-@O;y1tk;cy5 zV808I_totpYmoef0ZUuhIv#KX3ewXQ@bUo;aE<$KYueT9GM(AXzXQm0rNa) zM7aTs=aaFNj1?9S)KEh(M?7Q5d90Gyl?vkX>$F*Q}61~JiP<=Zn4b{2f0=&|hk{1nm?6r8>3 zukxKi*`d#8s^PI9=;Kp> zQbh>8d5p*S^I#VlW2;qwrYKUp$h6SdYX-U{O7@N;vIoD2Cl%$H% z!EC5IZp8qoB`T5NZsN4$=_qkeEA;OY+zW)IQ^B2TzqmS)Gav43*8HNz-^VnCF(KOe z9x{|697UJXjgoTpq`qi)z^*_GTvq8@RW z;Atff82Xt#N*SdbZl$Y!v^Hl;;M9=3G4d>l9XVdim4#&->5pTpdCMlsHweWG!Xk7O z1iylZuZa?s86C+~5VRKK&|O$0dOAf!o0bMf4qcr9P}BMk&B5NHn@CcX`Vr!$dg~NG zvxVp44;M(q_%0T1iwb2XO3HX(W9wU2=_HjIHK1|u!0=+;g((2o8AAol6QV80Bt4jJ zn_etjrD7r^g9tlVf{}Ogtg7^bdWi)iS&piindO^?zDy=;WZ-Q!-F%Zm+`pdH5D5&O zT}X9?ml>Ig6U$3S2?V)o@Vv~@8|sbyIG!3Hd#!&pt$LqDj&)d!^54A%oYdkS7Ebig z;MPg1PLka%1hvFg1}%*cEWpzoUxlWXyy2PiM=_lDgD${dfe_kOhoh~;+XjsGGjP8u zVz01_pk*UUG2pR4+CKWJ_?-J!_A=i*JbIcNAGoNnc{u3dHZRl`sp&RY)mq3RC?cvik)Ume}GcMtvdz)0< z3$*aTAStn8$~4aiFw z$RL7489k7(?FB;Yi5^?l#vE25?|%ri5uZBxxzSoy#_CyugC+#ZTmatXwk)0s zjKFZNZAIR^$0*Lz)fx2ZB&Furwl=(Ko&N}{vn<(nMRNbz<8DlU;YDE$&`iC!<~I8x zcBr4;zFCMGqKpE1pG8gRCk z5mfTi0urhixxht>Xt(U!8d-%vwH*16wc>3+7I-MNJV0Sb=Xah(qLKfvk#*#4kEyjA zFlLN6a4k=QMhG4X&3j8%a(YMVj|J4^pomxhi=%S4EJ9)B94?Isg^DJxgPP5$KPFc9 z8x86(m+|lmw}vu4!kBQQ=z$UhKH7qmgl841``=xDExx{Y@r!9mV}nI~>Tv2-(i9si z^><3v`>`MK@DlQL$Jase8(5Qm=gtJz-z);ZvkKTM$aI2SPl4(v7vZ@yTK{a2E10df zF~5elM3;)unb0OJ3;=dAhSCDg)%{OTPXtUdn8mSl;#k-SR*04L zuL^d~O~#yXRlPHm4MiK!UTRbvrDQ|Jjt)JlpoGnRplFG{z>KFqqT;Psmv3f_52&+a zLQTYJ>7$jQqX2s-}L?W(*>FO$uaYolpj z5z5vcn!+8ic!`z~js2G#YFF6I!b~+H#XH4XBqaa#IkjdSP}sB(BoPP(rW3z z4i*Z-xoEkaBh0aK_wZC~sEFrPiaJk+K|niM^`)ZD+EN>;oj>3*+%*Eb_add^^xpKYGr`^2;g3OsK++}6A{{n1{I7} z*8`<_Fb{d@iAbApECi|a2m>DLXbM<_0l(@y1j;Q5YO7oGvh+3?FQX5nT6r7a+1MGT$DW`#n_g|-YPfR zRM)FL^pa(S36ge6t6Ae`i>Bn{R9MvUDj++ivd0R)Ald$m*et;P!6e3T(=zedR)kBS z4CU!E3i`v;ekGWV6+Qy!kHb2Xg{x`w_`Ey&M=BQBKue28Z>ONAG{y^TlN~{P7plf< zH0b3)nBVJ z`uSUJvC5ACpbqh?7r;=WcYCB;R-{tIv|>J;Qa+sv!IWZbJ@BVgiqi_%Fh%h&IXIni z?X;SLnVP$)FFH!WX+|dk{hVABF9eqwBz7#KVOLm~d|?~i6#~9-k}W)ex)IQMEk;Bd zbstv%ek@HQ6#Bl8$v=|gsBj_vgMal@XUPmHJQCOkp#KbjVB7EFZ`=Er=sBSu)*9@0 zm`k3{mg+OaeyP!BR*&UwRCj0 ziZhCIJg`zTvVQGum9AixI7>>eB~=fSUe8*;Vzw4OgSchX{vpB-rHYbJSB=sa0nC2 zV;Vz8gU9l`ea)#smdWPSn&}qHdrPtuNK%(tA#3S#gvE^4)XT5toUf=TR~?_5&WE~&u8!3p5kPb=e+jrKl>XI z;%<@3PA$9jg{F5dWa&QT^J5DR`=>$vcV$iyL8kAG0H54P>XKy$n2?tHz({i7yx7&x^I5p%J3|I+dt-Ov}leKObn+~2L$bUS5AoL_;HIRGkUtVk};IiTr|%+0)sbe_6VYdHp9*ho{Pvciwl+E@TX zYC9Aiy30IDexVuzcYK13aw0?o+Jz}>*~`sSo+=3CN3IK?*3JHf3KB#4=BZ2*apL03 zs|o9tC!qpJClfy>3sEQ2R^0N$^6uX9e(6KCI^5MQvf@Yt)rrL;Iy&2tuQG%P48>a{ z(zz4pygl!GAC#OfW&WT&0#rg}uD$5@YNv zfd?+HZ|3ud5n#^I8?K6dz*TKZDU4fZ{I;R7xvLSj9bq9yUXt^tet@8JLeo)F;69Gs zH}@iyF@Rzx(vg$hC%#EU`V^Pyr*%}+$zY^nzGbWi-2?G3N$^a@3C=phNf-$fLAq0# z^67i-BB;F?`@Olyz3F>E(P;O1QQVy9-eQ5%g%CN^xA(C$*EZ_d_1cz;1XtL@ec(G^ z>h28cCkGqdN6gwSKq|v|uWXiw3zf9qvzY83M{s>!*p||Llj_fAZMR03I5DH`|~(gy8_2-;ep9noN4o zZhrsG4>YqsIN*4?JLLH-^59f)U2r~>A>=!_{OP?R58DlQAtcadXx)b6JHPXH==JZv z_e0r1-~T=O0e`(NPNw>(L)qhWlEZ)9ZNW7Z0A-L~GFbaR?$i!_U(OYNDtiJsokK(L zKSKy~Mv76xCuaNDC&0od-W8Fqcsf@!-GyB6##Q8oWHL}H8YqywZY8=$%J3FZ#;I8B zee!cxv)G%Obf@h1fB&}+{6cx(4#mMhfh-R-jt$HSa5H#+?GN+bGn_C6NDAH)?mIFZ z_R;v_^C@vpUCG_B-bV!U-yp@^$L{E;J)<@s4U1!yxjp4f@3v2ea~^wUbKXycMA5cb)MyBo@reCcFgqcRl*e~?L}-JsSO`bXZT;<3Y?zY zOZe`8R|0-hGg^#zu1SFuFMjo0_kSPdJ8}K=eaKmP`JZ`v+~qCruj@f?EdGpJ{2_h% zJ?nAuA@jFY@VEKI!*@|H`^ADT=AZwa6F8wP1n6JKnYJAnKE=&aviUcze!W`??aQz0 zwq>!)K~c-m`_Dge>@6wzn$G>*+dRU*_MVP%pBsAVoOG&R?mqYE&(OsyTzHUw@}C)| zmtWidEG~P`x4nG58T@AR&qtY;-E)6?Kwx1YNJzr@0KqH-V&Ye6JaEvu3>V`z6Z(jG z8xIwL-kM4g8cAl?PQ5inDAWtPQ-E}sD$z3tL*}yaDkBS%#WnrTPWulxlknGl;Ip!h zy2Sju8FF@=Xua`F2EL3M*JBsG2mxVhY29Oofm*txW=GuGYKHImr$+a0Cs!8Ry*8(6 z-8ene{R4je-23)R2J>b&?}E4C#W8aAT`cD{kKO-tMbMzvD~8m@_4je^50>9wI($qJ zO=6Q^`J}5AVLh|#zIUduJNJTmy3Q`p(*c+B{BVEoTndkjZ}{=cf-jGp@%>6%Gi^S$Ti| z{^redG6bCEe~>IDfP+Z3lW{bRnRzc6iYx>o4ia=o!51#=D{j;Qmbt9_9b$qpmvj7A z%|8~l7d>3p1HFEE<}fUnpz!usFfkHi zFpJ9NbaTZ=S?N~R5nnD|ij9s4q&fWCTubBEsr*k@98K|X>wF=S$@o%2H2+_URT);W zw?mBb0F-a*wpc5%!p4>C;(`##PVwRdA+9ZagueA$eiSLAqBz^NQ=&XkOI4!6&)ikQ zJ*0re#&>hQYI}Z*@IC&!h-J z%#Wm-Kk9cO8dD_cC7UJ^AFnkp1)SGDnzdi3Zf#)~mu}y#>Z&teP5kEC(VRbiwda^b zpVIX`GRM8VA?Cb`*z%)+2>0j5dn_%*Pd9o6yM!+w+S@ayQRx^3j zt>+5Z91qoBzxZ4`_U6mIKLNjuuV0jtLN2VkALjxGYeMKsW-kEZDDUm3KA<2>F^m5j z+Og_TcsHWF6@+R-BauG`5a8b>{fuYOmk0Cr!KTroKiT8M{bdEA=HfRcTk0dOt|1s6 zSKL(6J9x>rI}Z!1DCN)j9_7H31W&WPEadee+HE0&r5G$CYWyLlF;$2oQ2qv|^+yk@ zKSeREx^J)UuZLmOiv!-ZYsu{l#ybZUd(D9R{^Y|G{T!KGQ+;oC5M?8u|0#C*={%r8 zhm69iJ9^USjqG1yNl9Ew5PHE5|9`1HXn>$g03Za+$->Nqq@q%0QxLe!tIMHg&aP=l zuV5>}D`dr`XQrqrVywq=!-nUUIrj|*K3%=bx)zu9&1LUB6gG0cY~(0q>LzLCBW>j> zZ}XpXC~rpzJ^~dSd{rL?sW?7Yc68BjG`{U;qW6MQd)&MG!rCn8-YsWm9T$IXH%jo~ zfA6_F`kDVDFU&pj*P@IwO0X}AOl7yP;#8e*$ot{i?lJm4k>&yE=D|s5pOnWwLpL}y z2+04NI#i_uAG+1bcmJaf70q(hDafIH?(MtzhLrNd@qduR|6P7)KTa@x6m3W8KOSeH z9TSZ$OSJ!|{Aky=?ldzd=sI?oI#%5IU)jgAWM{`tm;akOeD2xeZ`c@`V?)4qsWJ)b}=!Iky(%8)4kJ5 zA0|-xkGiK>5rG7PU*UiFq1V`d@rUDo@rO@y=!>z4pigl@pJM~&!`(^IfqR*+5}F#5 z8;YvS1~R%S{YUiFtHixD3VxVzUR-z4RsFA}>7u9cqOIttwrr^}D|xu7`a?_g@_ZL* zjPT(T;S)tZY`+-j`ZL~eIMg{mJ^6la@cjRZKStI+{}+FpQ_7FU*?)_q^SPOmv61gz zm;dc9|Jj^BJ|Ufbo7i32IbK@-HM6(%|C)WQZU6mW)Zvf)i}TI@Bl!5XcepycK&d@` zLwI!w`2H|3D@Wcip>QAyF07xY+fXzZ$92thaipPmI0wWmfg*~`g4=qaFyM7Ywbdt=Xg=R!E?dIF8{-wrSV_Ii=EhyCwzwOgp~o?3p)FF z_J*&+$-)LF3rP*@HEGw}mfvR|bd6=+6xcKDY~G$Wy&h+;(Il`lM|e1{Q<>G`9#;4G z+ww$L+W@I8jQ+@|yZzZ@U&I&9$?lHB-qG}?VB?<7W5UPMxZcU0uIGiHTkc={|I{8o zrmFA%>+Svf>&IsOn-6c^{5m+J+W3N{QO&%MZDp?@*x+yiIXPtL_=(v#6M3F;?YW{IlY>tB;^ zt$B4hOh!y;)@vG2lp$)@r#Y85^VI_^H_iP|E)^F9?r&}4#ev)v$>E}7g}I@UJK_=X`@gqJ=yj~c zO0!_j+qv0(0Rs6^qU+lg`a%48pH zbglN(?RQ%!!Z)QOe8e`Q!TS;2pY$US^O>$w{{3((^wL-^sj? z_PWFKm}2~@Tv;sY7XSa&9v>ezX`CJuCpBKa)0H`)xM`52an|jaq^>*uFi8VNy+jcX zLGF~=qnEvfc#}2%m8OB3M$#OE_LbIGX1U@V8V)iO%^JXGOUJYC^#2}BX;054Y3fzi zw$5XuF03fRp;oP;rY~zrlICf5e$9*$YY&s#d3&wWwAVRbQ7Qg%HMg_Av@^AV zkVL1QgZ89egC8HhU)Pz)WmG=_i5)}k_$ddz_VjGiywXF>zbcHmd(_ao%l;V4!aI2< zN3@fE@2m5xo4K^>6N;J_=ZHseWZtWn-rRFYDsfG13?7VXu z4YU7#;mP@yuT0nXr}83WdYE#_b^`yuhk_55S8fzI8%MiH+O6&m z_WQXEetopa%cjq2sr~~@jdjUOdVH5zw};3bgDEuOCG$tadImT4)Q_`;|d6~xdcAeg$*Gg>V z^rkPA1DB`u*ID_mz7d+d4NT6t$Q$P|xXBbQDsNWzhlJ_@8Xl=QM(HlD-Q+w}4yw3X zP*50kT}ky;;8tnT*RBdqcRHQa*ht(RRzcAPp((%4W`hDX7kQqxvE1ddpulkhjewo$ zt&d0t0xm>Rz2c2x$7%xFqar51f|CX6Yz4(~UF>wqB~X-_8DY^;2oR^YwXVza5L7 z>Ir(U3pMK|{Z|D8B1qiHGXrMhyZzmzWJ_6zw;nev;|pf4Jop*7^5&6JFYAw|QG?D? z=Q~b)!Y4>?i*cicvU#}=@eHx|yUpoBnuQKa8vp$p!+|Qcyr=`-huPwbtycl2pLr!?8Z;9mWsJgA#bjN5^Il$TM zVq$8$F>__tB&bh#q^jg{e#A99)?e%6fn{FPk)5z^@(*^)0~-_nW*b)g-&LmNZj+fSrT)Nh(Rzapouk;_Z8LFUWvno^eIA_isL2 zc)08f&6ft|xzl}5v4CYr$n@kR)wO5=$HC5mc*2zewtuU?`|dmx9j1Tq>FMJ~UxhD} z#vCQ8MV{Ykrwr4Q?0 zKau^(wkcE%&mAQV`FLK)(u~pWDPPo<#r=s!gVZDY5ag$uOkKg@{D-lK!`e@Y&q%XZ z`DNRdght+bwd^hO5~ekfRDYHAixPM9A(~G~CJX0#> z+Y92{zV@hFKCN8+o_|mpzTnt3&%7x6xlTSYj$a}}2@@TfH9NWOPyF!g?>BSf<1)vj zur%SkZR;zG&YQu%Wd5rE^t-Ji$MU8RcRg`GMJ8=m^1ftst}P@maJ%cxqqCVPy$csc z)BZw@Hx)yzu+xEhIN~|o>FtLK7`~S;=WAa71%GaPdW&R6eSh=csRf)x(dXacBjSnG z4ky+(lZ6r22F zxV(_X?URVGD z8a2&itHgO@nE%SWbgqJ)o~iuQHH|snu<)OLr--Oj@P5^k1GT6N)=-;S zg-36-nPtuV-i7M+2Sjh(XfX9+lxM1(j#v~4%B-;5^b@<3sUU9|CfEObzaesD>ULFy z(%Y!uuNG43zBrUKyyQ9mH8K9{ui{*bg31cY4+`V;L8J4qT0O_*BYDVh#ynNLa?rX(G=CuPl= z(u`|#qv%~ydRLOi3V9Hh9TzI%Eq){*I(T-tBzGG$F~_&_gd?OXpHYp<@?PMs(K(nj znx{!iBqp0MRenty7EC?YdZqgru5*c3@AIoe!mGBFaAOtOD=)-NRMHtu(?h+|En|?@ z9b&eh)2XS`TbVN+Y|GrY5_|L_nud%gDl#s=MLjQN?#gAlm}L67T=nSS4(P}v zPh}SU$i#MB!BIL7tE^eCtjv_G*x%CeE|(I2XN|IC$IE8F(v!{@jmVCX%e};v^*Or> z7rI{1z#DkwZw$(QVABsg$g{Btp29Tap^xWRlyuEz$m2va=&Mdn&j5XKtUK zMAIm8P(^lFMR>F_FK<4Nu_^D$jXYwu_>_y#j8%S^P+nnbKIyaAqD%Uh3l-!_NBY;_ zGIPHLmtPb-`=4b-cF1Wj_4*8lZX^NV-g8 zjlb)KFRjFHPQ7+c!6P5Q@~; zTXHEN?Xys!+YfNi1pxf=;Qvv31XQNxfURRI^SCR+@sPM=%DpwD09{oUP*suhe+q|H zRVAv`jb{*waM&48)k&)Ev91z9S1cA5){pWXk-=#g`XY*O_VM?akpt=k#_NTp8YxuaaZck=PCc}m09I>Kya;T9j1#gkFnJel7B>zy z9_8Dv4K2y_qHc}9bDH(Lnhh74OEFNi8`PL09NM(p3v98>Z87YsF%P7-p|AZd3AL_n zxogvU$ENjBU@MxZwT#$M1b|XBLQgd)ML6`4qEsDicmx=xR%2kzr*6=!6WIJkwbeYg zH8Qt7wyQmIyv6KWivdrq!+5)CTx&*Phlx$=ds6HBF-RT(g6HYXJ?MDN)0yGfS&`dW z)kWbAJ45i0r5{b!%*_u9A)(2TCRh5-+^Vj?s^YV*HwKwcps>BQb~DR3+jd}`DCJ-7S44H#?-2F3Ty#PzM5_d(xxZ^iY_ z=7P_=z-h?-kGbF@1IquJfC%2V!dRg2pML(Jw?cVuC2QU$qhZ-cZ8KU-8+b@C0eluX zpqw|L+CAW8U9S0O0HqFzN$!usgJURt5*!@d2MU6NaeW}0vyvEcx1R0bJ=?+H|4*-W}_WB7>p`Lr=PgLOsEHe?XxJARpUdKigp(Vd!BMC^{MJ z7WB?Ae)#UryGPPstmg<8`!4b#Xyk6dNLK7fO3piz?ruJ0Sx6q`<=5gBye*c?Z@25D@@a%n%qt81LBsiZ4wwqwk zfThP=J_26>YU$wpIJ1yGbaP!tJUL&5}VQ~bcGMqsy`E5k< z_|GT3S=i}zgX&^e%FR1yH}D;fI4)odJMx_9eSU2n4Ng0N6iZgck>7RJjEi7^3aY@5 zNZ2~2WQ_=4Np|qxAHQ6G~@B7(J!c_c2 zlOM;|{kW#)Ql@B(n9*TO$waEg+6FhN)(5!@PwAnQ0xca4iR%OPb2EG-f8m~hmuiry zJyTsFzJu zaRB5`SN|PrFcC4%$H%<(l0URIL&XZrhlC#HH@Clp>VK;j?5ZtA63Pj+cnl;B3yDqc z`w0JPB>UrzI|;2v<+56BJhw9 zBv6Wv9o%{;t@!+Gn;D#fAi*vyS&<*O&-!gu-6^hyU zcSTJOHosAeP<#k;U4j@ItbyI?#H8v`_R!=w`pAO%EHX$K5q2X*9~w;gSZv4Iuj_x? z9;vHko~$YGgp~1<4YXiHJU9;t9oer>=iB`aZE@po?bd+iB0t6<>HU^B_ndB=@?Vm( z1*Zabqpt3rsMdcD*e&wdLc7t&p|&;RSVR@}3X*r{HCybZc0Nz;9re`w+FL(F>}zSk znlSrY!Sp-5Uw1WkO0gS_SE0XZAz1)$EE)Xqf-DgD4{^S~*_#N?N9?NKA^hDr1O^`9 zmm$0i%V#c3cZ?vflbcEV&ExjaA`Fzxp58NVRne|n#SSv|t$zw1bK@=y*9TVR-vtJ) zlZ@9)s=pSXA<;-kJc5z&;jw~uqf6R7&-5cs7YRK2SW>u|acZAC&v5U_t+ zY$q64KjD+%(;vq5&EuqnV#Gq}8RTuxPyil8i7O&J=PC+V*ZV;6$@JPh2MXt>hIiHu z?5k8JKw(HAYzaPEyV>=Ro&U>^F9gmFBrpb1CCm5cHFnn0uDcaJ{f?UN!|uv-fw4HLc#>(%Tf#3t(}1!1n5H;f}#|6uSxfb8; zdl4%?sCg|9FmEFm1$6Q(e>@mCI@8=YNaF8xPM0$9jyJjHI2m+In_D{i(Rr%$_DwIE zN@^&Zgh@0!6gYJuOlooe5-d-$-I(mrXw2n&pHyZz80R+SqxbRkb;_Ni_^pb&pq;wQ zgo6wi-}jWh&4k1KE}0HYa&kEbjW`;AD=zjvE@U*V)>@${RzLTCNN}@@QTordG|X0| zfjTwQt>lt7Tn`CaAc3IdE*hp1P(Bp^ju-&)L&|QBD&Ew43kgiCxy5>?`|)cRamxu+ zi1oq7txHb3;7aD-a$-5!Y+52I(XbzStj?-=m${rvUTEWXZY85|7-GZb&D8Fu&7tn0 zOOKTjBlDa%oaOZ#g>H%VucaEjUtE*?bF#pc{^!%rwN$I*#&LbM?>??t;9qM^cj&a= z9m)pKAW&3X7Z@~(3dmuOiQ=>MT*;Tb$?&S_(jE290ybVeiUy9VAXBl2cbJXotL4(B z3Kd@R8o`W>?iLt+bST6!C;}Y9AiT~_IeUh{x=GW+RKwR^Mb8wnZku2l!gRR%OITc1 zszq4usJj@vvbLRat&PMnKel{!Ct>)G_Xq7v0n~8McmWkSOOTHL5la3p5ZK2F_=HXt z)%P3xx|QdBi)0Ppo8fE*pg-X)l&MDc@^J#p?qOTaE_p0Sq49BOmC{4nmPm)efgKrGKp4^M& zd@Z`l3n#K5UBDGI;0pi%KyU|TJR*rmT<+TB$6Y_Az>7j7eRSMqqmPvc1Fg-sT*dtn zG)!I^Se!+-3g}knd83&AQ~3j~J$hauhWlwrp)wbX?p7F+Cf(hV!dr6NC2;MrY#+~$ zKjc(hrtfe*+3(Mf3~;S-u=M#D#0aJn=)cXGs}`y)PBvwdLt(?rJ+LCLqo0W}ulksv z$kZ^@DFz6&j21m0raZ11`?mc%@-tKpl?w!+QJ~j-gA!tYz4}6RlCQHs91T%iRD6Nw z29kWfe^c(|dwiny52f92QK*9e0JPxSz=0o$=S$jhTO(0mQL-8X0!v32(SlBCFW=bfQnHOi)A2R?8PVA?X2P7)JZp?C<89(m=RGB@$ngrj>kHR@5W!D3_O4Inq(gH99~%29)5 zZ^ja&JWz2y;P)Mg&kQxYL$UasD?l(NLfY{o(1D??=TLW8-Vz&DsnbHon}wyTNJ)Ib zVEN|e*QX)vpN)d8*Yyc0f%1V>H23cut>8MYOC(!`q~Ol@{v@wPX#p<-1!Pv zGk!^IIJ(eWH7eGokctL_sKQ5JkyBKk5f@U!svHtYcUo+Dia+shkAPq>0u>{d7f@L@ z%H!ehdmSuadF2Zl)uval5bOtP_UJyk{ok>a_osP~*GVI>5@@~%05WHZYfBwKeMhP$ z90IT9^+;^$fBZdjh8otezKdmY#%G5ZgB0#PyJJPXQP+Ghq(KT|^4XQ7u8%mP7G1)T z8guNjVTVxblrVa>R65?RQgDTX!{gVTGL`p^FL%8xe-Fh^+SX2cOr^khmC4lIW=L4c zZz#K?MXMBcP-vlM#YYz#-V+1>USLA)Et+L@TK|$&q(m4v-YZfuw=05?p4ck=&kJIK zx7+_p4ST&_cufoZ|4?^dQB8$^gYQ#Fp$bZq4$_-|^k(QFf;6epTL3B2yCER~q)U;i zpeP+e6%Z8>>1gO3Lr0`bS7hS*33G0b1_-D%f3p&!_MB%=lA7#GFtpZ<+C)H zCN0G0e#aBr@9)CpqKT^Kg(&S4DIiyGjIh~ox3^2u)Ag}Nh1g-VQ4LoJ)$>ucq%>PDuyBr0(Wr6q;Q|1r(D8}FE`5yEU6`|4cLmHc zKYO1DfOQsm!9Fp6PEGRXpqi|q=w=;-=x7wfAGZ~Dhy`6J%->=EzA>)xJQdmKWJ(i? zFcK*OI<4d}icB2|%ZnvFQ+j)6u_$iP$`1v(LF|WHVuj6%)@r$<{el;ND{ER^^5J^a znJaY>kkGyu$_GT>hlYO&Uw%FHRs5^X?vCs#Yu^c4*I*FR1&~Rk#lQj|*LKlDX?!{k z@|TDVegV-_Y_C$HLNO2)K>*r)W)^FEn|ZVM?)kN@^r43Woa-AZRCyJj>jCk?fa8Xi z6{W0IXVtqSAIV}=A1_f~Q-FCm0m(@$sR*?+n@<~x+PYSK-w%7=^3`@8pHmC-=qsE~ z8VV#2AOpW6Ew1dkN==DPfo(53ufOihO^=AjG0?`aN+>Z_7Ng#wpdGhnO*_b}+M##z zV4AcR8Hj-RrpT5!dJJR&gA!{8@7P282X$CqVZ%A1gteF7fsKQuBiz`AmaMHVpKh`4tF#y{G^DvD9Td+ zi41(sgF1f3-=WIX@9OG))yDbxHHDgRU{0||yry`S3^g8j?P={5G8xtupnwg;(g=%e zlwPi5e=P-zQH#^S)Pj1IHQHqDl>vq^u?`}1kBc>xC9hv*o5UqXLKyMw&|B|Vr<&Lt zAlqmNJK*_(;+IK503BTR_^OUFcaOg^yY(TpkThTT6wW&y>NusfuK;K?*3{C>*`ds$ z=uqItK;HHPX^kM(Mlg}~#?>sMFOCH`oL+Y}n@&z7Pwp0V-l0%XDArsaRW7W0 zZG@FXcgiaMCJxJGLn2lAwR77-=DF^#-PAOSO?v>G0n7z zt)#08Feg8tS6Aublhw%U{Hb0Aw`+I_2Pk z-l?A*mPQnDr%Lixl>qq)0Tvsk=Ut!JWYU;7jXjYuq{CS8Kqe&VPs5D;w1Z+wm4668 zqCUnyM)gO9m5WExHsa;#@nIb%##giT7t7l~W|9o18C;`MGS6;dsX`>*2ER1PqA*9i zPYmdVSrf%tMF2hf(7-ZS@D$FR7HB~LTKHu$bxe4tDOfEwXI!5!aeU%S`$F|r@wFKP zTBNyu4porU8wfQo8zjN^;>Np`e1xqb#c6BZ~SH_-fWyQ?7e7=UYrFAMUgft_&E;JALlz2<7wN) zKRWRhgwdoA9iN%ks923XPM& z!Xo!@Afq=_eqy zTWxm=vAgvC4p^9Xb%44%0KlYRmL&>OX1~{Dw-{u9FmAg*ZNJ}yqqKv%>*7+jrv|g^ zH?tO24W@(3CLOFw>&k8Q61q@dWM4Z=_;$pxyBIlH2{ajWh&#bVw{bo#Q?92D3P=p; z_n3k%_!dd4w17l==LDj`3Vs-cP>k3q@P-7MmxvaYKnoMmVpAYd1V%a(qmTo>ltVbn zZCFZME(xe&HVBY~Xjrp8FXZHKew>=8Ihy*Yj8sw6XbB|(ZAY*V>XAMxXTt+)&m*kDE(71ET>2o~BB=lni%8$ixIAXlg-7XZYa=E=hadgHc9LNt7qXxA*?Aois-{g8)2kT4|~ip!p-RZ=7%DdOT8&ua-m@PP@qXyKNvVQsLy-$Qv6Mi{a4 zU3Gi18${Ug?ls5sXoLA^micNP6106LaNsG99oaSSp6sp74`_al?fLATAJJPAvX}$e z-AQquqv)+ZLyQ>dUaufXg3(#h4kIJD{Z$*o|JO&7e|f|X^ZnRojDPQ|wvRN?>4rQ= z9J(yp3pzE#$dD?a=HUJ;@PPNOoIK7&7e~vqf0gOc_b4312mloXfIB8Wcbha`nA|b8 z@hgmTKU(yOw_FH$2!#08H2Vub zI}nXK5LrK{F+AYC^u&|a6K#_Ax#Bx38z5S=H(0$R^~_mlXG(qp`UUqAp@!iU^y1kA zs+`1-gbO#|ko%O>Li8#lEr2^fE4!suoBntyzysCe0*#oC^h*OPRRg&YM;12&OAWm&IfKLmkF4H$ zs;&oFegEY!`Rg7N$n5Q5{SL4)dy^;BuX-V<{!O6mi%pkF^h1GTjqibo)F9ohxKA5GDq>H4g#GD=vvl2f(}S`FmFM@%+v0 z@KRF3(mwo>-#5H&{bKgY?*-UjBGccblc?$SKVL7S7I)8T*PRgejxE;%MTj7Y&`2=^ zNGu0qPl$f<9OER9>(s*SFpoK^`i9nD$bS*1foqT$X;g5QDxx3=83Yb(O_jyS31cXNN*Y|Jqrt#=J zr3!;lbYg|C)j#Yr;Tz-?x1|YuN?04pg~9kAl>HJQWK+ISj=6qVrv5@ZUCMhiurK|_ zZ3|UzPyFWH0?|^xLjTdeYt`CGY?7U;TiJ~^gpL^Jwe2hsBq2xb*7^>cg8#t>Jq$FF zLF7L4(qhrX^`U-^CDW~D>xMPM=lUGW^ixe-UvJXL`R{C11$3)eDT5N}7VP zcN>~kFsiIDc55^K?aT(N^_}+(u4CoxQ9At5d&~Zk@ zu22gXhWa?W2-CF4$gMB4m>qlddW|d_Cd;@b6V3Ivq${Ss)!pbSsJ!&WW3jdk9u%nG z@@h=Ij5!ZhVYB5%s)`iWImNIm1q)O2HeZ%JT~LD* zE7}PQSJm}zdK8Nk>y>3RY*Nsdm!4BNSA^HhY}R~Xi4gTJ8nOQA*{eudTJZX>;`ZZD zJAIxe-#p)my&cG&60KE%d@F&lA3VV@n3HHz0;uE`FktVP&!=v!}Zl%AHAco z;hlCMC0j*1m@|Lr{h9C}-AB-jDeMkZUs>`C!_RnpBjwF@-_JZMY;|9_6P2aJyqB{MIizc`J25>i3^pgs&q7dqWiKgHqpUVeh3!4crx_ z`?c;xNDrteMafK9{f0MbJXJ_eCbG7tJu9r{UO2)nSvUlD_PHW<0a< zDc$Z?x@^zy6-Zq@u!W{798PIHU9^Q2|lVW!Xc4H zuxRZ*9<%z63%bsvmg+~q@DFmpHKsn&eSH-x5b3xNFH?`IBVZ-k7k|3Qe@;XiX_I$x z(^8gxW;ZX1V=Zu?&49OZUwy=*O+~npC8*W#8lS)#=H&5G{)?Df^%L_FZpzQyUnF;i z67Ab{nN?nDN!9PW-&MYGyA!DdZ>mc%h*-Y9%G_)*U6(5Ld6}sW-Yj!omv*c2I@>UV z8Y@eE`b}^N1EjB+k!LtPn=1GEwI5w9CjOz%{;YIKmG{N#`tv4{@d-nqef-%byrl_u z`9$ZN?(j7GM`b1PiNBQ@V4oOqemlq~k=itH{aA`OmWp3WQsyoLqbd6NU4Cijra@ZS z25eyxzpP_iuQB>j`s5(LycXXbpQWUX9x4IFC}~3<^Ius%BHi;R6#Au~&^;E~*&Ut9G8_ zP5~1xeuF`t8*aWoyzS;(wLhsOHwPLirFw2Oy~eEay&6&3Kuw+60nq% zh|7ssxY%dYl|fu_U$!M^FP-{bxJV>7+0 zq#Ox}qs)$9{NpGS$KM8yR{MXfjBPK^U;Lc^vp#)zG;?+^v^)0e$HMx-{N~~O+WFXz zbrMZkJp8e`a{1&^{7eNt3^T z^BQRKm%Hd`bL37uHPUW1&M@rcUCpvI)O5`fcm1*Y%*H>L@XW>T`kNeBR{7df_m>`% zd49*CMfuiWJl0bfN5Ym0BinLHpIaOWA)h=3RV)|9`%m!~CCJ`cd>O7N`~#gfqVVH2 z*nE@!O~Ha(X>nYzuy6zxZ9P_2mS<5>e(UvSMM!1+CCg}KqjjlJUens^uhv~jn}+&V+gpVcle?7UXruJABcw?JGi zciJKg6L%1s^&-2ra~ul0??cBac|ZJVd+nQY0j-+&C`Iv5!jh~Zbgwg^?_{TuN{1@z z-IbFY`(F(B9`bav{kGh1VUKG!ZQ*3)CFvC7KRzU#GFbAN@7li>$*}V+)r+m=s&38- zt#6vLvq`nezyG6CZm>5J)a4ovM{hst`-SyYN%kci^ERcb=qrs$YZ%3`uZ~^8G03PK zm#EyEP$*>&9vgq-eQ!8$8`C%!8bCUK(0h8BOtiQ+@czm?**58}s{b#8t!a;I95clD z^?8|mNe!ydt;gK0gg0VlDK0eejSe zo2x2*+Ung8#eEYZhA7y}GTsz>`$>SW{OE1MnLltNE_SH40Y{>+2n1r7C@mYF30KdMk81dj62er<-N1ZTDtM+DN&hHxTW=nE%|o#8{g?C; zj0+Ljs~1DO5wpeZDwO-BSKE+|7x^mg=nuU2ex3=(QJGFyT92$v{egH9?+d|gV|{xT z7q8ZpuUC@$L?h`(vfRgXiEHL}-T1qFYzAKX8nvW)T8|q1Ch*uC_G+YoZe9~Ci_)vKJ*g-ReY5f= zGH6uwHp^6JiecGWV7X%@y&zj+^2P1^+(JI z(ea#rXA|8G24-Ff%JAxoczbb@>GWKt1T?o8^c$*-d>dRdS1EPLbC1@4Fndvz#Zm0? z$Y5-0Y!gyHFeG-Hm_CwPBGx8KQQ-#z+io?J9zpS(?+0EsJh@e|!dI(|P#-z;k!>dg z`aVkcy7#?bPCj~-$H_e6`?nFM8!p?s7?Ab+=Rk{&2);e77C{>_%AVS%3V2LyTj~k0 z<0({7Sh zgH5k)XwPXCev{wiO4J5(Z}ulIH=`sMjJiC}-TOWnP1hcruC4Z%9=k>}^qAdn4^zb? z?>&1g{Oyo?x7XS2Za{SslW1w!Wy%^uEyH)^Hhur@p+J7etjED_zH3&}Hp^QsdwuDLgh%Z{(fnZwD`qhIEKr*7J>gVdA~84ErY{XIT-^2JZC*nH9XOJ2qP zw(k>*0{#7mvV?-rJ#VGaukS9&PkUVbCsH&ErcO~Wd~@3UkCbz7?1n1T8jJWZ5Zc#f zfOSD9YCc{)WAdrcbJt@v+efv@8wcHSu=JY4NTot}=AaVX0E7gabKyS}8Wo)>O+r`jz2zX2Q@>+xIBdM<4WFX3QU~@m}m&8&^!} z)caa-vOnxmP+qEg=^%_w;XZmdZ~UvuHrF)jpfjP4s20*(Q=IDkmNg)Yn=_0+DX@kJ z+t^gMXuEDdx1FEf{xh-jS9zxDa?$4p+YnKYI#r#McQ5oR=SRMMR) zV?NQ>bJ!boGyXv_vp4QbcjWI^ec(DCa(T)iC@QJ9O%CWe;~9y+im&m~0u^ z%@Hk7c2`#G%66$Gf+tAqGz=l{ce4z`E%+driR;t2^W-DUVo0<^y`0bJJ?%11Z@Jhv zF<3*B;HvQlo=&$E)~-B6n&@wY@Wv`l`k~ zn*zgHVVGDp8Sjryem7de{<=S2DfaIl*5E0-4?^B0KM}24)!}u;R`A4&(aX;tDh0S) zdDSG&isS6ciE?bXe}f(&r*o^vG4ZFd49kfm);)RBGLY{T)AdYgH(jjLM)Ddcg)`&& z?Z$)@OQ**8l(v}UPsPbOW4DFJwRYe*W`R`dgQR*o#dC=?FnN%~oA|$ith_gjzs4w# zm0#I6XCix+*6}ih;T3Bb6P-t9VgZsKuanMj-C%`Vt+*wToGz7%+z-&lb;4`?3!fyE z>o20f-Rj~fX~lMUsmm$Xnn9hOLEf2x_>ocdCH^UgWrk`s{W!DM4I8c8vX)gnZc;mN7ZV*o%z4HCn-)o4u|V2O z;kK7T)*#{jV$pDrILj+(>sPYjujD;JC`9pcQ4zIM`W0}oEjM|TA1unRL^rSGPFu;{ znSU)3{U@*(iPte5@c&PXHS2;T3q6%6di8d2?lRcx8PBd0q!adw*s1US-F5Wfg(qJxf*R zW@U$U)u)-t&z}EUBm+;X`ZudaDXJ&#RQIw}4~19F=2dmgR8O+hEGgEIXi7Dnyru*8 zRHDeg|Hb(Jt@5^t>L-f*e%yREiQu?qOJb}1YW*2j-m z;NMq}ud&pv_LE;#s>#QbN79ln?-h#KlxG`s-Zk0%ZgTKykbl>t#M*pUsS%mqEN;_mYtx{YSg%jnPu6L+>c(flpIt~69(E26fUA|K5yTq2hpX~{WZDT)Mvwp*;e#6^mVco3n z(+1whT>?H#*tEtZmb{^C2}y%<0^q!9l;1npC&&fwvoe&o!JZ7XoaTQ_s)YTS{YV;X zb}{?$T&aWXLC4uFEYhgN@J`1cFVZf~*LV71VNYP8il69{O2bhl)K#z`3Ap#n8#Drr z<%09x?L1@c5Uhd$+F=o>j#%2xAd-9OfRSP0Xd1nnzsORO&RXcx{%~6W-nfzY7{9QhO_3xvF?&&gefal7ilZ%XaF2 zEs{UIvqim63wlvh-Hz?uD}e5@J)l|AN8X39Sijf7667fku%bVme1otc0JWzw&D9xd zv~qEV@<5~VfZw0~N%rZZEWy##MgA% zuG@b;3OImTX$O2mzO6}rd_eaxTz$k((z=yi`n2dn7O~=)Lvw8fMaktB9BB|^ThuN?zuT2UQ0?!uA%@RYrwoFeiXe0_n$xL_s4GeSl6COm2HlTRD0 zj6i*ir;#A1|Aqi%7?D3CQq&OZtF6gXipID^;h_W=F9F842b-tuJ_3BREWQ2LafCFP z-tC5|*b$5qP~n_kpHNLM$zG`#F>aAeo&_MEihzfZz#X1)sAKY`(Aaa8F?q);q&7?h zD>-batZ1ep>HU=8Z}OV?saw?)75K7BquDG}`}RB8exxa>1mPMrVfd~&{e4-{=1{&q z2)74|;2KOMP~od&i-tH++x+Nxro#>@J_+&{e)VP-O{SL@^986HpXB#AO6p-Yh9dwq zFJKz)*(@+nY4m>L=0C3mBcOurI$rrkfMw8*))3|&RaO=hP2kTdGK(k-F5qYs#kY>p zcLrRu<(%U~OuzrYQudnj2=k(qO`^Xm&Da<62^9;X=vxQ4e-}f96+r8P!~OK9a~ndJ{`qJE*>POg~l`x{8)v2Edc? z6h!I;k;+==&&q;5JjiY}-3ab6SaiEs|7+TO4snT|vQFxG{e!P-QZ$u02=XjHxMJb5 z>@ZbS8ayLy@wvmew988uymbfSz=*HF>yRmm^==@az;%PwFiIU zM{YVaBdR~H7g5K&y4{NRhIHjS#PovEn5sCaG% zBEM6hRY;kJAg`?1Ec?4@%syLxQI_Q}b3M6)Brk^~CT;_1e!QE?+F283T>$S;SWuJL z9V`w&O=H2?FV1nzaMzprN30R~uJP%ZrNiJ-DMG!?6TSD*>Kmv~5{K z&is6l-)sNrP?^oeC;q{fXBSlHIr_;g=Ex@x!n%m<9f{qa{uS>Nc`NBj+)ab z4p=Qa=fKL%gl~S5Gy=463ic!8-5s-gN82ALOup}=<39@h0rCQ9)-UKEe5Oi5P4Iqi zY<@yspFF-T4#(1V+^%|wN_)vQpQJ81^Q4GSMKRj8NwIgaaNbr)++M7W9``ZmMB(f7 zeGd(37(D~1$EoOewi%ZlK(WLj%l`4a-Q)UMIJamgAKN*va$6#xt?>gqk@onmq%~*i zgwF5fjm_PQiRwY0Ya6kn~wVpdr*8nmI;`>gYrN{d7$a2EIG#JZfm(AL*Pb z;pZDd`)Vt?FtNs55uMaxl?W=^53vgPg?6vEjC$6G?y1jJBG1|CnafT1?p7o@wYiLC z37eA&rRaV=VS%!I>GDoqp<%J`Be!lcR`V^(dROw!pU=#!4R+Pj3Gh$h}GR);_+#2byFQE$0aA{S_1 zh+C%S%eh5fRq!8+r@Q17038s%9ZtkF|b@Je6SS&q(SCzqsi1IAoVdjPpFEsnMDWkALR)Z$EuK~moT{% zIJ-T2K+)#T%1S}(0MjYz0>G?+(`y{Gj|*UI3<1{Ze+U!d$;}%i)S)K<2E=_y6gltamTSJ$Q*i>2$Cls%A-JI!{8kPG*2xuRX3?K?e)h zL|Mm@U7F!zGW|i?Gos;Jt?mw#(zL)un5cvRXLvVo{kq>o^qU*1r_3uU+APz~=~cTa z9xfRtYwxOGnWn(70Ee7nL!~+h00k@vi(~Ei{)ttT=7&&R0Ubq49fq1GrwGTQ`{QJ{ z_cQt-TYz<$1C~ay17U1rc3Smf*!kej>xiyJ2#`v8*MSUTF262WyJl6&=i9cpmLJw4 zG)%VY9`}Lk{qHx?zQbxXbA~{VXm0kfg@jU$-dAxR{{FpIKwz0lFVVxu&xo7vbze^< z8`D*QO)Rx_Z82o3HqK7v;oDRseTSXVGJ;Ipq1nI6S-R-Dj-00E?E{0_aHhMAfcc}8 zOM1btK=31?vb9Mn$}t&DDaol|h9ZR;9H7;&J_*?|B}WjqV#Dcr#AqF2SRJ{*6dgc8 zOMHCvm!CLzF-&2D0Z2Vo1iq!)(b>_I76Qj>=yc^nBwM~ndf;tDMj7Fg&S`{DNiU&8 zD@qT13>l$={v}e4vdfW8w4zU*B%mmVvQR7qJoLh8(07}s9bwf*U}?)jD6J7D>QtBe z{=;6b2F5Fo{f3{qyyT()5R!uMu!N^(aD~CeTdWBH+#5kGwYdY$at>W$+Az*feou(a z8$tgP|4Fc4_M;+nkgbh~fJ{sRDXI``YozOCv`Y;4&{8hDWh;EI^fU0Knk$1{JScu7YSu#gse*sCMGmlH#cbO1Ay z0dAhZ9t=>wk~gX;X#2oQlpbDmefQKz&0akvq6!dT^cg|sgX%Xv{Pxfyb3<+86E%Z8 zz|2U$gG}?$6O*|jNSnkW7eqcaLKEX~ZLb3wn1^D_`OHB^?ZJ3WajZo&(~>$0sfo!; z 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�#UcH#3WKnlG{ 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

    X0 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�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 z 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%0AqMnwK5X#=Hlh@>oz+J( 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®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�r-@#t$u&!27rReuHg=?2bVBAnig545-=5%&@+~Kz zI^0tczBK1FsSa{Xj6g=D?+2RN*_B85)b9}=!gL|l+cx1_dMCOD7|eF4I>9Hp;P8)U zyGKvEdnCKRU0{EFP<2~f%v@Yff?f7qV8%BmM<=^n1gHCZCuUD4$3D+ZVJ^%D7)Bzl zX0_pGOs9X=PPp!@k8Z3@TQUBvo!$W5uBgtQcgFp_T{Pq_`e)bkT36lDv%@*-r;)Qi zwXSA1yK%r!R)ga^Jq#Tm*kP-SNj=cBJ;EbDf@D4-&F9eO$uPva`K`@h5DOn-LMht@ zQ#?}Y>m}66Z9M1VkfbldUNf8tifXWi$^$^-&VapCL?JZ@c?Cv!-G9MRcfn~E@*09t z_wDG-v_oBO2$CF(LXvnPpmE7&i$c$W%E|&0{*20o*yM1#;OxKTY)9>mKxH94y$E(C z_I3H7hhf44C*cNpihw*Lw`FawN&;Bb}S1*#X2({ZQdHpNTyDKe) zEmUBHF{#^$o|{&>i{3Pbz4Vr#In43(t-As$7tgIr8>&Pb zDjn&q`zXv)!MCCnm4OG;&9SJ+R;g0}S0XIe^hYVfE@TI>0eQ;yuO25k)=9 zn}ra{>BpY^$DaA;@5k=%0ln)e{ilzE^8vLamokvp_nqgV@`nAHoiKuE*A9KE{ZHCaL41Iaq5%P&?DVBB1+%*)dCE5OSt3kQMVj zwau5K{V#jQzh{$#mB)b-f!ZAG!Cj6@#{vr|3uHL+@zjU#5}a5fD@xuzh9gp zgSnAU{I-|;Z#~ame>&U0;Qa2vt${q<_aHGqIV=10+5mZrMZRJ; zz_Hr=8crC7h0piWpq}PMC=N4KtRlgd3_aFsb*}@St%28cW~#9)Jahy!0(vuw6-k9J z;H>4U6=V$0m#CUw1nf~uUa;$#MFeAwSE>**w|S{KE~RD(dux~U1_;-!b^Bc%tagoh zvx~UhT6hzG7OawV|7jDB>An>fY51!W1ugwJy+&6ve~05;vHUn0p8@iOrTaZRo-+D1 zzuw<%g>A|Re0p`t`$qHhEMZRPUM~;Wm=YgDn(uWUWKbA@_Y!1PZz0)_R`47e3(R6 zHbgc~fl@025B?`{E8MA7lq}a{&Tl^l^35>Q{GU>5XpD1291u9G?j z`y(m17C*Q>Bf5ue1Pwp(E9-CT$h|X1D|R}SjmTJYmV7+78+iFA+K4-vD7ttAM-+vS zUPkMhJo{o{c#Xh&<-8>HS=n80=3x?9+~H_W-_=I$zP6obm*gIG@+D8_!Q+srhQz=S zkpc~27$J`$PN*My=6G3HRHKsZmrVZ^-qASqE~j!~%%xCd5evC;rX@$Z{~@kGyIsSW z(1O!t44-^wW+{*Bk$Xjq*v&?+yLNO&xi=TvQF}?_N7Cw6Wl6zbO)fcQpM2PIo6Sp= zOBZHJ)mwjmQ7jAC|8C+bX*g;TkmWrO1v-0Fc9vG}ufp|?Zhlaq=2jH>_^#|VdOeX< z|47YTIKmU0Gmw34oWUyhQrEz=pttd&hQAjuecllvq79WCur63YFnlG;?dFghY z`qXcKR$3*%&Qj>0=DNA!1(z+H5x!!VP4UEYupI2l!j~U&-ru%Gvwvm~nV=?Q_XVsm z;*hPS|4;I6!!lBEg*CL=XWFujymiGjpi`hEqxOv*^7r)T)zD3uSyN>P04Y|wf(0)jVu+y?_R=5`ljLPoF*ub-HLb?jZI*Q7 z+o;eh|8dKqhvh#zL!_%M1U~7kdF}p;eW*6akm`x0i{$+VQtgo-%c3ul{%$?gE|VXI zW^!-8G7qzkWAh3fPh&rVx>idPArc(<*|FsUs|^IP5B!#dMxzn}jcOWD3e)vwyOBD> zIy<%PR2%uyN(zDrJ82H8)2GsromI7Xrin;VC~4(*~% z6Gtnr?obhJ9tYa6fmTCm>CXf_3-lo#3%=NBq<9v^X8Swtqnb~9*~Mey3$ijtGZC#$ zjIaMGOqi3L$MrYAi8feZ^(Gwg4q%vjfkifM`f!@$!^R-Ue^{u-ln_QEZU%6r8M|~I z&l;F4CIi8xc*LgD>R#^R6+*`S(utfL9~tin+9wi*lhdqc$w^`k6;)8{AsA_^T%X3? zo0P@}Hoat-Yi-x?($)#eRW?3C&6L9zd>Pj-alpyA^iCRhnRmRi%UdO?c!`3a-8Erz z^%TL6GN)POq^-)ZtMok=_WcWR#ZILqVg5{(6>8_D3!@gZIXG{enB~S*N*2HAdpX$X zBMqjW6T;;-jLw?#m?Nz}1R7rrS8FRx%q>KZ*OoY2TgxBLud3tL%MKIkO*rV5HeOZW zrCCCI1*TSA+YbDX&E4Aze((*GHhCG?&YvEPCzz zyVLepK?l5qn9ILfYgDlga7Hauk~G!~c~u3> zXPX@qwhWw3F)&$%iN*U|btlB}gijz1R;yS=T9jj`%APublLYmaYD< z8ICggyb`WawQ@iFU%dTgP+MR0IQ)hHNpLL=#oY@OD5aF*R=jwFySp|}+}#7g9fG?R zDbSVz#Wi?w3Z+;JH{ajyfA7q5U)?+N%##;q_T;=claoFB%vpP_&-y)T6Y|z?^9ahW zW7wr#?-WxNXtcTY94>3toc^mu?*-A1v36{Zu;BPMN!!*hie(oj?R1|34L&XBb)})S zy=&9j`i*&YOobCcd(SGCg0a|se%$_RBXyKhnnEvR#ucvzm?WL$0(q6{5NH!Wr<(Fm z=iHU1z!{Kp{x@ttC!*;urZ8;;JJ`lA_RCpk$b z>K8fz?+TH<_ViZtJ^m@`qGKZ&yWnV!?&HD6pR3%NPO~S%dHIdhwV~#prV&?5jBj_T zj!d;D{Na@F&8@-r#nkT(L+O7Nna^v{Kix8oVtVRUm8JQOX}W@GwIej5c@`b!pb5B>dQ+OiSkEFOZ7|@xTW?% zzNE$yH)tI&lP#jb0*BI)9hT59n?5?53_P)78-;R}FRYUk2}*AOfffU=SN(2H8Mzl^ z`7JL8EkodWsL*sGnl(8OQumkU?h)|Oj0J{^)mNwFqPa{nBea>Fs|`#h*wtn{6RhO( z#oMNoEEmwX>`dwuWuV-xp(TdrK0ANd@?LvTt8o>P%jOM7tTrlJ^RjPR$!)7%ko#uL za;q>FGcha)(Gp6~;xDi7Pn%2z&x*?$bjiOLouStjGsOP1dzeu2+QKAh+?r~+OwYz# zWAdp@r`5ZH)CVUj1&b|dc1!($T;mzz9eLDJnKd~-{eyhIp2Z`x+@{f^>Dufdbrk`8 z5B`)G*ZS6(b((&|HaEMyXlrtJ;3qx18bz8#CQWz-m452pR2{i4JN2ddD%0VTCA&qX z{hro5DTQRQLUA$W@{ST|MZ}Y0tCvO3W1+%{?@doPu}Q7%J(%Iq>ohav?O?I|o%gv;C z;0OZc2nm~!lz_V)U@KZC=HIDi&jq}(7$rVr)Q zFLFuV)gO=#(x0E$W^gl|&Y4wcR6ns8~BcG;urDYv~pr=vP;jYis36(z&eX-Ma4;y?$buXq|Y7$`Yor?aL$y zL*O{D+>_K4J5=TzR{iN^N4Bw4728UiaYcfT94H<&%h`Eu@DuaI7TRP>$8l7SI&W`!ThgOKLVa-n znJ5roFU;Djss*hC5pd*{9X`7#tOz(Lx!5@$tX%MCXOpcoP^rx|ED+${If|(MeMQR^ zTYLPE>y+MMN;}rv=Xe&MX9)PyE#W}*bv3&f^K7}@gizMJWLeB@TGianH_56}d*-h+ z$0JOKqCVN9dxs+w?_WAp=F76FPP4(QkMuowe}sI`)7YFkWp2H&5(GJ}7M!qe=_in~ zyk4%fjA2P_;uIb&n^3WT4b;nuQ5@`oSl9RX=G+eVLs-|*T*Y2R z#wJb5;Y!s%t*p(T_L4`~1!%s8KdFnPyXiQ@f-}m9y*}3@A)w|sgykE?83%LC&%{%J ztfAu;+2mv;{DOY$N#(xxNgCnP!q~drg8JT<0<)dR*OA*MSKRHBYXL^}Z9?|nK<~oz zt@gzjUNKvpa@Sq(H_WaQv|(59DO7_-9ROy#m`2d5hf?1yrp3^Gs7v0rKSh$(PZ!v& zYcg0njjG?)^N!KG@!1Q4TrJlM=G%qNYh#`3*Ohy=1nS)4W!gAaQ`a<^dFT6zUOezA zq|&{r-dH@W=$^EUjID9it{pEX|APG}@GRAJD0lPxPqnmzNxSf`dp1{sV!;qr8-8l{ ze-1}xd&mn>;~UZ4(m$weEp{!^vy72?ucj?_8g8ygPGwxj)<}1fkGur?JF(2}`Pkb; zV(dMU_2kA05%t=!{w~`d#fV?LzqyXpLMkZx1^c_sC$@G;jT#ywvQsbW8VHM0LVo_1 zZ>pYQ>Nn$H!z;o_a>vlQxbR+GQ*eK}py*SSNDxO=E0G?2XraSb?h35`GFiK$!DrCL zv1M(uV3zqw_U!k1HESHNxv*U?_SO!e{WqXnd!&iSNj=WS8TUSTb#3>rFg*r|o5_|j zI%2vNX1wph?_0daczKQ+a`-Ik@$%(_<@hGu{W_EQm!CQoRnPEh&z2jw-!})b>aUvf z&#hgY%@_XlzBJOWq1oTA-gF0^aY8PbPjcNkl9pXlYM$UVT29y}={f0v9P(B2M}@Q1 z44YrADDr?s6mv_7vdUlBBD~Eqo@P2ReP$p%+{|EinBTJE6R4eNJzaI-1M>(w)LT*q ziqr(m9Rmw!@tWE)yj~TGl+KYO4sS%?JE7-<^A!@K!JOb-(XoA^r>}+zo7jFm+ZPKauwuyr&Q2e0h_#=|-?oPIN1+oaj%0ZS3wE3v#PPED;X+kPuR2`Mn(1O! z<;i@FE}0DF=|}&ZYdb#r?J_qVQgqs^+(e}K#k4C%L41PT4e;Kr$7PB>7buwyu}eBT zde)AJe%5mRP?Pxyag)*ZtJ-rn@)jy_qx6o~qs@gKn3gJVE7CdPa?cv}P@HEg@MiDg zt)qt&8C4L)yB!}15!?Cu*qX+}s-V7;sy@Gm>1yRFcDh}9pLV{?HU>OUSJ`L(n6&yv z?^~K~pUMx&4+}J|n1u%#of<}rF@xS#L+s{}f2`hKm{acG+W7i6v}3yXzU8;@!8^yw zyQuz>xxMQhE_?m{!>(_&0HU8GI!vw-JJc3*2ReeN=bUsHQvm4sOxfy>JX~6w!b+cF2q;+?SHk3UR{HSD)KE zeSM%eRF&H;?WxjHLh7v)y0O@dgwcA){`wnE8Sq`w0``6W%vaJerhP6%>#Ih8XJ7T{ zLprDLeE=DkQlFE6YyZp_UYX;?B1;5e7!Z$LPH77DIvkH)T31|?c{qZI0QW1WyX8pY zlh*<9ekt2yF%+t)vwr8>Drp4r!touAyW<(mFC%B|Eu&I>{=z^{B-8D*N)%Jr^}5iZ zl#gP5hr>DA>JH;6f_0<$vA?XpRU33p>=+w%N}Y}kt! z`G}foh`R-fS$Ms$43xC;leD&%vQw1{{14es_0m=i)YA^oSFo{Hu=SO52vGO%*Y|VL z_OQ0G&{5|Jldy_Z^^DRBh=1!F=IZmZQCPlCRH05nty)U8QWA}9$hSxuz|q2n!vEnl za{sTqM)v=Q*U)lJQhQe>r}m$)p=Q#prrWM!*rlUZC2Lu#Y}Ki2i`4c=vh_@`_fL2D zUtzVqo*fq62Fmqb^Uu47E_Q2X> z&((CpDl*?eQz}kNx>8*s?5$jahVuUi8w&pk8+wY7|08TdS}JUd?x7sjcf#3&jq=C`X6Lt3yo|9+3aSUM4*L@a+A0i+i0|~k?xsM zVi{j$pH|_W+l03HL)s&QYLJ1&p^mFC`{j=wlQ5fInAQK<8b5uTL;WWrf)`_arxRkr zyK*wSQqfCbawEL3WF)UQY#}~kF)e;9EB-b)XRa#mcX{1ockRE{=EvUl``)Va#)|p2 z{LHbm_%CJfujM6^)n$wQ{VQ!P^R2aC+Z*<(3sDQ5i{nT%tg$oMeYjLNjfOQk|9x(~ znCP0D`1TbIYkVEsUm5v3`}u5oaeRMi?&#aZpP4Ur>#Gk-bJt&|_I{54=V<&NUSsL^ z)$;A-xAXtyHReu^<_`{MFArAt|Kl|#uC~#<#?Qx}|M438|6jbuzvIJym)j2)ClB|> zkN4Y;zb_tc|2(2UfA0SNJiR%3T>QTZ8|nYQ2pf?9TZN6y|Nn&z^Z!SLjjjD>ec$_E z-Tb}7-rIm-Nw*upW}j4|!g|J|7#+KWI5)$~C2kOQB-)jmktv3LOg40poW;{<)2jTq_WY+?5L?J zaIq2WhsXvIl(O5b?1rPQ#-*<+Et^Q1jBbh)k>m6?~_vQ3y?)Oq|T!lmnP?Fw4hs0ItP z{*SQH@}IEr+30_SjlZn_2^)f`|0`^KIzS5>y?6p>VWZV8`G16sodDhojjb@X)iKT$ zEB7w0b}8~YO{JxEB;t*nNd3MeEUO-R$XLDCo9Q^2OC^$@f)_g>9d2-zP7< zp?9;7C)cw+#%uiZ&$jA(SMQE3r&cY}60VyAH^kaDtnO9);>?ENeroq$UrH>S^s9Kz zKpPe$w&NGbzQ3q#K24l^6IF1y%RVF3z9oNB61d^>oZx8Flf_^1(DD^ScU{W|Dk&qi z?zHOlyu#`ilU|?6yq4kYPn);Yd;`9JyWZm0-1o8l{>LM@dpoF5lq0xLHu!T%-`z!R z1Id(h-{phPHA=wtW!Xxh+8AX=cc-(`9U01RtfFt;{JWwiCIa}qDJgJxJB-pR|JWjZ z04KNJ9sBqDq&;_{U;cuESfwVny0e31lNFw6c;*SP{ZE_Ge36MYh4VMti8LWUy=Zh- z!X5!p;!h8w{5;||xBcvfDTM0%RIQR1G8cxai%w&hR-wKD2J$@Y{I&~m#lg%}z5Iy> zu~#y0@xD=&_N@^}pZbBHEOk`$Riz|aGH=XJy-5<8VS)Lr>O7uOjXjT1kDD(tXCe|+ zlI6cp-zfq6z`$dQ1=9g1h9zuFII@E$HnDk9x){?#Bbp4jk%eRy4t+MVIt5x88(d{P zZ!@|WGs|rNwL83py3!<>ikaO`a|i6UG=MhY?6(s+mq9oT>dc---{MM^AkRd7XSZ{_ z56yz}W7O@se%VIr;{EQrEf4G&l3r!CZO@K;Efo91kyLj-`;KzbX5um^!3mFl(D(5z z&%rkRS1+qq-z$jlX?`Q9u_`gv3`u(ob+Ry>r=_9F6VXj6_U`v)Kimu?(gB3U6#q1( zI0G1txaMDU&xpHN)N3Odu_a6@$7o$(o)vo#?CEDQ1q_<@}N-m z`<@vf>2v-+w))T%E5oT>kHPY14Pi{j!=(x*gX9cvUu*r|z;9>o7KtnIe)%=`w|n+* zRdCgbW=}z>OV%5D8+Xf8+~^ldG$4lic^6!jF1QB?%Vh&s8Cl zX$%mmP@f-a@5=@=>u2FF;mOBhKEtJvg=vA|2WrOpZIv3{ub00%7=GUAh>mZqyWQ08 zj`UyPAM_UgjN=r}n5`5nhC~Ldizuhv6+#)bo37%H5`Icfm-EjA>CkT^er;P6zjR7! zJ2`L(EKQo6Z1#+^vXbJ+U|le4&Ur&$?DP4ygY9*D#qF14nv|94x1!^3p79;C{p+4W zs^c_1(z&tIuYNDli+Qm%c&?&&u<4)art+J9e{UpH@y}^fj4!DxX?ONI$0MjsTEB)g zb4W5_^q4LyqwWoFgvkW$dIzhiS^N1+gVzE7>6kO&aYGokdwiamFD1Mz@2UUp#{!k* zF|yI_V|Q)o-?6y7X88*5trPMpYN<0;wunZ$*JDFA)WAt!$c~BqMne*tRh|Y4 zxcY_d7s&Q~XItIRp9xXrx+L#wx&&LvRA9VU^vNRoO&N4W!Y2~u?l}GU_Fqdd=9j7a zjegprt;V2fy6(5T6=HrdL@cCj{rpS)WJjSv=zh#NcE5>Xq_ad=R8&Uo0RZ11#~Ih3 zk&@S0#JH6o5-I#kWECo}?H)e+#)yRsqy|O5G2Ywb_@QsGjKvpa862n+79$+?qsWWD z#eZ*0B<)k!m)8<8m#`lmumMt7gY3tl!9W)s5APVH#EuT4S~hx)IiTwpbu>v}k-s5@6cFDm}&^i}AJz?6a^yWt$bL zGh@d-^dxvkXhP& zEaIB|V!I4tkc%|E2C+U6;lZCV9gCbJW6_^ExyB*UU;MbfDMj^<(NAYb{t%~`vrFj7 zPT)s38u^s)VmpBmn7G-Iup=(KpC3e}qwK8qCck14GsDTG5Q zPf1f4aCjK~nV2O~t1pr(JW@H8xw)yid6!ZPE>fdN(}Z)l*!~kXswkHSaOt2R8GCdt zCV`w`xY)CoD7P=k9u#6UhC*dLTL5vB~A?Jt~BxK5E!nS znXYaiTLgwf6$b58rpq`6J#iL2DwCEm%l#nJqZ7kvfM6MIXq;!Q5NC%;WUriOMfzt) z-)1c%GuHQB1W#u;K70KlhVqISZ4rQrrXV?0kbtQi|MMIKb*?paZmDuEx~ks#0Q9;u z7oBG4aGvWhm1_?L)#Kzfa^WB zl0kt}keMY&oF;re2C|p~N0+jP5<`}5;VU_ijmKNa8Z{)45nV0}_COXKFBP127I>iw zekp^0bAjy;nRJ4gj^mkLONGwk7!REoGysIBCjO8c0wRe&k&FOW5gTxA!INbZWt{$th%fSztOY1f_q||>gz4ViYC76061-`n4cR*kQ=8|2A5wF=UG6B zs7eWcK#7P7Zt;0Z5pikS07TBHG+wiWPo;E5xs*>5K5Gb%6@-KcmgyRm=`VwWWy%b4 z(Sw{12yiV|UJZ4+g=BdPS6;I{s1J(&8Hzv3i2t9kAz9&NR56-NAb*=~xkz%5Oc*Ru zOpj5_fsy0Go&z<+cLzX}?uz3cmy1gWN?%l$C>~ZmlSF4-K~kVq3d@yg$kMdK(s}CY zV#(^oPDr#Syo|egc?ljkRb78qjijk*x~sNBqbZs-ZC!<3U4?X-pu5gYU~Hk!0B$V` zw|)wDEVp)|tM==1Z5@o@BAJk7x;zCdao1KsLDwHge!< zl2xKcrAN3``7|Y|Q^kVZ4d)Y8e;i7rR7%ciN)l)qQesQ4X^_`OkO)Bt=*53N1}G1S zUxWN8gCwSHj7UZj@swF6gWZxFX}TNfY8qY68(ol%Hn$)T6iz=1hcmBM#kkfJi{$112mMuN=u1L$`GwL)g=bB$Q*8XNmtuE7yOk99AN~Xje&%~ zAS;FiesS$EWcylYdk7vR^t?Ur9@J(8>JI3L?#_%1ETnM*C*F4?|BtYda)dXPOR{qJ z^!+XEh9>^Qc+KrNhLU4mn_*^ya+Ak7s8qF!^$5I61KBmIU!?Bdl)&}thNBIPXh3Pv zd5PR%cbZD6O?PEKZRsd2PR?ENeL(APqt^m6Qwr=kRqX`Gh>xKkq7ss;p_s`{SCJSLQ%$c49Hfi~Ilw@4wS!9cAa_(F6YVFu z`y4mTT(@%&WA`TxHBi75xCj9$9)P@(92)!rSy$~5aTC(5T1Q_aAiZq`w5zOrn-Jjby^8k=cXg<)?$Zm&FUXJ3=Dn(M#_#=swKc`;GS+g&lyR%rrveE}~yEX{Ig z7{?oFif>yE?1gi~8{cde!2q4Ds6&=su_YiuacN+ABn~h`?|{fe*(EkOzY$ zaV;k~1RGHNFUbU~v#+Eb@qgQcKRBWreGd3Q!LdP;yZMtJ0t;M;)1A*J&*{EjNPWLh z1NkGsA#TXKp6`G08&8apcWTJ^DM&dZ?pEFxQHL)$-@Y_UeL1c!{V`sZC0PZAml6k$ z%#CB%AxzKBzq*Efg-&PCa}(t_>dAg2kX2`r6=Liqp9;B=#@6tLwZF?cHH+qF!y zJ4+;;7SZAqZaVF(EJ3HwK*zmdM?@efGHzU{Zji2a+}1583|er&)uA6e7x)Dn;)slZ z_QgR*imKc6{?66b_Gxkti8)Pcy_h~#sd{cy%ClDQfWTOgi79L99Ahe`SE*!I$9F-3 zx$CCJRZDYJN>5%u4wS*J2n-(p{wD-M<4^>x5D{B2$*f8`8#%sU_mbcdPVG6~@Eu+; z!7}@c<#Kum**Vw-mTQCj#FL*}PrqVwo?|5g3WgyG@>aTfSGt`c5rC?JZ}ZO1CCh=h z<>y1;@Gpugg?RDwvb0o;36u*Cq$1n6{>czzZELw^l^hLj#Um0@bPf)If?Ut>KBMrG zUpBu_iCO|@1gi|{a1l+Q%KJ1o%7Zr$37~#P{61Li004iI1~q21fpv=KGk_75kHRfL z(IZd<^(eck+!hicw39zbNzhVrunuBf-N*g3)E%QKOyF0Pt=th6A*wy)(B>62s{n zr{ElCV4zw1jj7g<=-M&f;MA_!!^Xh*t|`NwIRn1i#Anu;PrN;ijRZ~9FF@!$R?G87 z8^(P`IsncxB$z4vR?hh(i;sM-2)3Y?hSnwZ;aquQ&_gR}esCs7mf z0RWEShI~e(CsI?a2!fqqjr4h+Tu@yXfrpRBXj=;GjzCWV+zm}4eL@i_7qTmK`%M%? zL9#z2xhxoYSbPd$YZLQV>1WT})i+UNho@2ML^-RB;*b)5PD~wp<{3I~!B&LGE8Uc<4 z3`_J>D)%%f^faVEac7jh$*Q>^ zORHzq*M{7QL6-;ur)2Q$<6k89tGmOzoIa_C(f4gNg%`gL8*sV-qmQWot5havk{!5EfNt=F%?XH7m^)+8)s+ zWs!H7g^(1>1kI+KZ>uh~`{SARg;VS7spX=D4c?!L8~+I#4_Gw1|08UGoMUwU6E@(| zb9)Yx;RG}jh(V+Bue35jJt4c8oSF!^XoUpXbS1u$WaqU=tKsO6aDU~(b-haUj|_6D ztjhVbBR!97_Xe-@(wp44Eu0Tf)p(isH-V7A6G( zNe!G4avhP>aCA8C8DGgDyOvyv3?K!QfN;?+BJWBXYg!l{#L_57=1V3h_vGDQw>%3o ze0D0RWHuB?EI0rK67C^VJ`(t(vnWabWK2zb1*Enn5<^x+jpVf~!31K&0~-1?>+$8u z734OXWVMj^Y$WnuB^}9INvZL8wpwu5F(n6B<7j0t>VA#%dQRMD3I5V~xF*r+7Z6`==iHo^(Zn%6)5E&f^OptWg zL5xaFbPQ!T_cQ&?8~iRENSpof07_V^3wK$v-k&T&~ zT@axV=1N8&Ccd9_zW=dAdqMNA&|fF(y{Q4eo$s$c5cGV8bS4UI$q4Vqk>SXv2tJ9i zBwx7p<+_@Cd`JF>rIha+yo&5Z}%EJJBDCmgq#yCVZ=EnO9 z>r+Sw6&BrZ#X*caBG_A2lDTa0k-XV5S_Ue>2`2yuhA>k9p)xk*l^@A*+NQx)R=}wA z#lV#rz#x*r5FX%^r%;~a2U?ClKh?s=6hr|jD+e&h5jZO008Ew+OomgWlEUPmA`MFB z7WR7dp9D#4)+_-%SEq8*k|iBJ6%2U&Bor%%ktVeoPgOjJ_|p?BZ46ljOgc>rvROhP zI9i6iM@Y$kT4G^F!?0Si(O$^Mz%9B8sh-VPB3=X#Pi~(rl_^o8fIlNh4JOGZ z2*b3KB}4oSXOjcqx>E^8;N(E1@<2px`oB5P(>bXHb`#!lq5wwe13)TNEYez+{m=O* z8(N;=lSBciD&>T=qqP+0c4<9T7=!TiI$FOQJHAdI z0C6$R6ClQ1J%;@vP1{vu z064^8;d2;JGsw5~+gCZE0dvy_X_ek%w%WiKt6!Q%EU-v#e!gTw0kC_*x|k^#U;dmX zC1I5bw~z+_Wnf{%!=D)b$wkNG0IOP4eGoWPk7mMh=NKxhbM<+Qthg4N2@)3`!#p&+ z(R{euJPW$o4OAGo%;zx3tOf>A2bS3}r?&||> zrQhrQ1W!g)^i(vNYj{I{cR%>=f%dPTyqf>~+{_(E&Fa&q?8;$?Sz}V5L4f>ewn*8a z{juu88@hVPYo#Z4z_+wASPOzK9_k6Q?yNF^A0ejzqkqd!_o@4e`67YjQ&0#5g=x1| zCT>Ool%q{2&0duAy&5|v4mMaq?FjcjHh^r%@pHdgGW_Ox(L)fpI#h#;WW%a-z)=ey z7%9!X`ZLpe+9-L0u}g9FJXPpSvJim9;m3!I{lN6$kv0wEeP`_6pcZi^ z)3FDq@XO<)9I*88V9X>t3b4V>29QD#csh2Q%`3?WU1w~A1$D4K3VZj=s{k-$5ZeHx zBozUWFerX|>ZTkESAjUeqVT1-CC3ZEH<#O$cmkj7n*j(w5P*RteC9#t-rF+>gYlnd zQb7j6ChjKX-;6NmvjAIP;E%S*1WT-RMph0@K$xRb!DaUMzlZVP{lBQ;)~)%;Pii4x zhSGrd!vD&)f}}64SYc%?-RO$@WSql?Ci@K}h*LiR=)LE4jZLB`?c_40uDOM|jhww0 zO8mQ{s{Z)(9d5UHec*YdU3UAXDq1+H1p_cZei4C?Jjhl<=o0e?M%DO8D|% z))qJ9Q`G?36xJhWvxF6bpP@8?WP0#1^o{i8K;UAO)fg6erGy$)C78Gfm-rRIegBVJ zP+&*oJ0$>8h26xWTXihzuV-q2I7=`pYMZo)-z&wi9#2dzcFUl07Otr0m39<*aHB79ROJsSGo0OzNz!r zKdL2nq#QP45TEPsMT%NtNL(JGzid@U0I)O}i4g$OfC#1h(Pcd1mraqXb}(E`#%L@N zhBp|Gu8Z&i%oP8{VMl0>-53@LF@_XzD2W{m3q5xP0k1t^8M?4hSw-*sC=nArbtMc9 znMi>kaFADQK+9*JY2_SGFoG<~0NF_fkmkI9vy6d(t}?Yjjv3_D1&l|z4`3Z`XW{d7O*uw8!@01A`TFp#X7hE zxofiN%D!D${0z=x2rY&OlJb1huDI`lV=$sG8OhF+Z*dMNHLhEauM3xYF(@)A_j+=2 zg@OFjNA&Yw-9RlcO*~kOBgqKnJ`fd0u6ffGWv$DY76$-U!Zy@GV^_Cd2BUzoFhBoWH+$y6Pn!skw+5kfhrYt3}P5i z38rxi0NDYQhND8yUnk;*s&)vHk1-%aE16E3m_@ZoU(c}if*pxNrA_!$5m;o=U6>sL zxPZ50%abKDZ2<$|peZ#Z?l7l_N+C_ZzDY_KgcXBPaWX&yzY<2m85v0v6|^`RDGLb( zG^-ettIP25eA9T{D=f=5yDqNV<0ct|`krfCURQ!;6{`lKVZt|v~E=e%7&3@9pS3bckkRdkX&?uH=hFSQbUuoe!ppX z{0lSY;fgq)Bf*@9t|gfF#(58eU9$x@hp@nNSlFwSB-*e?B4}hSkGcarZOcSBmI4NRH zhq5h}2rib(d`H@k$&X;!L}MdkVP__2eZ9D;bFq?jK+R3vvZ*a z*^^&Va$oK`u1#f`p>Uo}Xpg=OV zsa+&S8w$@Q(q;gyXMpTwz+Rfheo8CddcwqZ3lL6F;1zvdUF{*CC{wSQT3vUS=K8LD zES19hoPkaHy-kMGO(a+Sdb8%&lSncE56})EaS_=swXsh?e5L+23-BVRJ6+!nFr3Fg ztW-`T)lyLRDsD*oT^J7aWt1lp`_UMIZR8dvs(`I)V98+@rkjjys2PE6gA%YqF>?Yr zVPWikVWQ;`y5g2*;+DqQ5$LnJ2yC*A%3wBkCjHT_fItRIQfcRHs{oOY! za@T*;8waFh(X?$AE<#NQB7l=n{YlijNNbZR6hXPQLEEkkCki+kVWPBa(zmNWxrMUN4&CZD-1hd@8JVo_6pS7KFRGwfzg!yIeb1}L; zXFuDfaF%R~u;q-hXN8dBc`jB zhj>(ng1d)-C${e;_N%BCy-TqVmy)kMu?3<&)L%YVJntxo^zZ|{(TLdNKNBy&HsU0-~?5ysDXsJkD=-vKmOxZ?c@GCSHp&u$AT1Ly}Z3ZCB~o(B{?MUQXGpI^X74=R)H=)}WdZ^M`by?F(% zb>CjQaR93e_ERbD1+szMN{8S!w8DepgWi|h9F|4~mN484pnx5Uhs@$PoeKdxQ2Sul z11==6&Nr~V0?38D_m}o-TL>$k2TJMt_$6KOBExvcfMIX{jDHCGK;^A{24)cqqk@Lg zQ~sMKx?o&zr*p-i7;vAC3Z0L_K!5Wz>)+FjUkk3miyuNCmlXd^@BdpW{5SnPY(4AW z-2T7mh2U9^2l@{f)7Qas-+ygU{-bjZp}+nQ@}Ndyd|&vr$MG=pK4d#97)`ZQwcF?I z{bP9V!G!>FL&6xRELr`4IoH7HHcLSR=RI~$J6NRI)CarlNJl`l=K-iZ%{IAU&>xpl z*vjs^5xd*<4xER5>rE^y{3@jSU9-!{o#-(-1N}$+Kgn|SRdJt-b>-jB&rxsO z?+9H?IKFT9CXvnkd&cQbr{qti$ereY${-nVj!5hc&|G^JqI9+%*r`b`Hop?>&x#Y2 z`KD>A;r)9^2rEa$IaufD6|8-gnIIHfvW7_%8An!JmcPeaQ6h)hi|WtdC{Fi)k* zOOHdI7t8F=+r&3vz>@H6y`!{IxN(0r;C+a_6(O6L=y9C1$4XtAmJ0{GB^`*(md>v& zS(|Az*F;~0c@FzrQRYwS(YA(@;%Ly zWX;iJEo$pWo>Q^>fBECZFOpqSo}UHrXS{gH^J7*P13pB!!_8#VYZ`cR^+W!Y3b~lZ zJ$~LN&yXP2aRN7W>#%rcYLzARHXc*`=YffJsszBCi$G>7*}x(}Zw`o;z{PK9WZ%h{ zffW1tb$wN1dk;QozOnMGQ^4$-?fwmEFulie)xKDqr%po2P^M~)T&2F=W_r=+)!n-&2-uixJJ0jpBi>GuXe!7R7!H?lVs;DO4(S zSmd(EHJDI$Zbd zuhiyzHmQBV1+MS@vd!?*AjI>7s_(%J%^BCM=F+!ZQ=thOBOabLTdc`-~Gl@pOOWxCRspteKB;}GjaR+m$g^tZ+&hwOu z^&a5bs{HWZY^jj0LumL0loyh=R$k&&YkstyEfap?ucUsMoy$E}rGWn-DV+OlRrOq* z*!Pt7VF&#b(zo@gR~2m7HQT*+`tz+~SG9Jn1jgIda}|A}VjjJYItNAzE2!26xw#`V zf`f&@EplY2sk#DAjX`496%uL4Yo)hr@VSeAsmWLpc6 z{=`hZ#weh;t-dC>PSW^Ze{n`EKdp?{(V@oJX`P}Su6yM2QB`%RI78m@3BSinWfLTO zduO)^zdoGD)KHeP`p5r^y}OQTI{qKNzaeg8bVv(GmvomXoq{Nm3er8gWgFe28)-%e zqogFHLs~kV64FdWB~-5YjbB{Xb?$TB=f3{D&-whlv(F#f`JB)D^>{tI>iBE&9v^x= zO<%d?{GwCfnUdM}n(mf^fVuIJ(?Yts{m>Kk-~;pX*`KJ>LATIv!NVuVk9+<|a)dcu zegx`>_TJ?ZL54eGMQ;-R@7xcajJP112Cba&Ed@PtiHE#03S2sP_oL0MYQwCl&8_j2 zOZ%zVV>?bACjld0fu~NAX2If?K9c4zaa}zb9~XJs5Xl#Ta<l4`Yo z-H$d}_ECkBN{fuj>${o*@)r5(_^ht&e|JAlnX2|#kDM|M?EhwURdqYG|7LYN{)K+@ zs?}`DbzZdS*|Zut)f(a5k8ivqEYZoO+0Uib-@V1hvgO57y!%=Bhx=K4tUIY~Km6DI zI4qjEzBe)7GIQ8{W`%p^wqWD6Xak$_vDkTm*FUfwce9ZfvCW?NzV0KX*ZOMV`l<4Z`!r+q zQcJzsr<&y!x)^)Y3Wq1{wgzwh_H`XP{9Q3_W&B8Mt!X3{-duO zXgB{7Ht-+xC(Lor_3<3OtQ&2P%)t+kJEtXhCYReJRyn5E!E&NPTj7q~4gMu%&tmcP z2jRFL;WLTP>LOe=@nzj`m;Gq(qkzWnkfqq5_b~z65wQ{N*_rKWF;(?xO$GVoLn%#o z{Sz~nk@zzu3%|r3-_$*;#Ot4$>%UFihO0Lfr!{$*gBb~9rTJ48r4uz}i{0I8Z<_I& zUZz^>x0hO%M(ZZ~JC3mp3;#erLvOy0w#|=BPObL;9v|6R8~imt{cU4pcyDoRXL9`e z-1yaB^t14DZh2>Cboa}`As+o4tzYe|{P?+iaXNYWert1Le|!GuaB+A4!|C4I?l~U) zOq_kjqo2L&z5f;cZ14RO{apXry#DKc4*qLa_v!$5x&Li(VzCSFet!OESvTST#QmJ> z|KBX@e*F61%DNiuemB5B{#Dk^y!GDXe^b`|U)&G(e<|xi{!3Yx=lpM3w;-IH_1|UP z;eVHPJ^rJt%Szh)_TpQMN-|wich}WVdSJZ+SxB9dk>k`kkta(KpX0J!do1#}b{+4z1%#W2A zN)Ftg?`N(acb?T{A9WDT*LXbp=+}PId)BQ9W zw>;W!IjnscTyZ}1#P^~uzK$rS2za(|R=U~_@K9Htj`Mr!x{aNF5PYa~wZ%dHo@4Z| zR#kGisYyj;?tn~Drn8J(5jVXlp(u6Y>aAj^q1QYQh_2;OGdf_BRMgt`CjVebtmixZ z;Hl+VkJ%L3Z$j@&Y4Vaj*z$YJsZ4>7<%Puc@3W82X^DPaZmlxD8$S>AP)auU@XcM# z&4u%i2Gka9vB%7$4?l}e=(Wm^vE050x!9U}xQG6jCaaLsn&i9k_Sqln4KLR1_PKA_ zw*`(a*2SGLjl%G`MvtqW`*OXK<{7H#D9KFhf@>X`*X?n{OZ}4QnVyF+-yeU zjF!Hu@%wHVroB}VZWK1^Tr{lQs`XJU7-HD#B0^4bJPBy25h zvSO(~dgrSawd?JGQxLhrpRam9u^hL^_Y_X@r%?&abF=#nEcevCbUB*Y4nvHZSe}U) z#OB+u-qRB3nAeN1nqlHolT>{y}xbiwCvHX*Ta2JHU z`p7GrYOWBlUOduuc<4By@c8_&f84Rd+1)BaQ+)BWmP=AqcG0Q*FB|rH@CArBJ3vm}UH87c{D!>pw$qxf&=0L}df6;Uu0YDzS8j-k zpgAkjt_Dd(RaD`h-73{mWcAWTnu?f?W)){MXHEnq%50dcv<+frg}xspoX9%qq-2vP z`*~N$5;&WX69;4Sz2c6Ki9+#{%3Iom3)`IN^Dc=scx(_p7#2*!qfi=3!KmWL|vNr7&Ch%Z}(j%ae>o}-U ztN0WDQ>6WtjmN9_6$;s`j#X1u@%WghhafbDxuecMQd~=0Dgs$?+XJwkwUS-^Q?GW_ z-SQxJ?WYj<)i<}gP_>TrqS(6bt6OAN8k`#d=?ae-JBSXcuKBl>%y;6me7|Sgj3FN@ zN(tX!Voe;x0WRlKEqaECd#1VidQWq=7`k5 z$#8v5nE1gb)gHnz#eMMtpq@nK`ifFW(l^B<#1`il!P4s2+z_335Wd_0fiwrK zNTKND7~Q%IVt{Fu6_7iJUo0=s3cVqk)lONWTzV`dofc!cX&iM`cWY8iy>#H1cJBN7 zimHEutYv9X8h!D3)X4s>s~z9PRlnsRQEQK)N4QP!vP^MNt6^;~q5RurpU@hueR}dl zdDRtt>fE)R%)^Jo!aCsVXiS`rZMflV8K*Q$1ptJaj%i3=^=^UY>nbEjHOm~{;tdSn%0iJ zm^=F)7TbpEKMgWg~R18$Sz>{Qk)$x>aMi zEW`cto>A+nc%qf`q)JTBD)!fLg#RJg9|e;ZAL1(^J-xB2Z&UMpAtH|5)anIiDo1j8 z2K8%s;wfG($uOqzKkO^iPaD`jKaYL|y4pTviFo%$KJGY5a0K}fVdd}@-XE&Cl`D;Er7et1r;soprTAOFX6e#Uwno%Vs}dOqG}fRdZeKa zLWgVjg=dRVPJoTb4Sg=?B7lSes%U%u4>StW_e-CKm>3#)(nU(Y5Ze>K<*O>o$?52u zVs8Nnztim7Y)q-Jb^kJof;u2d=|x1rXWFYx3E~L%74B#?`taMO40GHRC&T2PBhd;- z0s znjGUX2}9=z{BsG}cM=s;60+~!?I1mpCP^XH&Ukst@MRz{{R)|wcqi5MKKT&lZyMJdg>TgY zO>#2Ks({SX8O%i)&n_}d_cCtdpvy2)$DGVX{3Pjerh65sGeef+UaFk~BBnU~vM)X1 zQ~DYwi3=87f`!CSgCj=&_FrRivb}r3k8`r)+Ov~JvmeWXVVKm+z#JD;jw>c7r#&@y z6qHVcM;tj0)2U0aTy!j{S9@-4d*(bUO_3qZdPXTbo0?ggJdK_wh>t#`igwwGBy10o z)C(Cf%^%2tjO5@CO7ZVuA)`6@_IiG>_@s zODNQfrMZXMoXA-M? z`kiT(o5XA34$*0mvD}iOz)TQu0TRM zN(A|dCN67d8HplLb@;OGo_5*6eqDrB8NRF=W{@4i20rI6hoS0!tP_ipbT@k797O6;8g?L~CjX)YhJei1Wn%rKh@aLL`k1DNFvtQvu1XFB2Aq- z9=WDf{*r{tW`nEd(F;gC29lv&V3OB@FYC@TKzw^aB|+6MG;RSgyY~E+c0-B z(Dw?^3K3`%@rXiov-bG#!mrAJLr9RtgzV*TYHuwzu5^H*?er;2axF)S;4O-vymmRN zi{8w6t1itvv}^|?avBU*E{iNG3&nuFt-4?okm6rP>VfG)aIimW8v2j2E?Fo(00MSJ zfozF~Y(i$7MEcG1fko8?g^Z91qH%V`Ss{h@aTrJ(W1q5FzQ9or-gzNphyNV(L|g}r zjE|M7o6m{4yo0_6xm&R^IMeO@x<$SpF8OWJQ5n3&pTD)zD6`-5#H9?0se=sktD{#Wzy@2(1^Ximj5L_w;U7U8G=GjOjc0>a^+L)3cvJ^+6@m1_Nq>rry5CQ8T4@09r&ckN;AKuY zML#}C+KZ~L$5c0TtW{T6yW`gI@#dMk>(iF&3#99=y)(WP{VoRJoNKxILdK0eZ7}O4 z(O4{GC@z0C2f~O2VSATDC_nfDKNc8@F9L`|*dR%yO~m=N6;`FmC`jf3__OS40FIc7 z$?bC|O}O_*3=Ug|!(t2;$Tv2YCqNboZN50nJSI)tFcWUhJdycSkM8VL8#Qq@XzlTJ@f9 z+y?`4Z~^DyB#KnXsdK4Vw85y~AB<}tS#d204Cv#W2kT`y5tTIIGC1~!tJJZVgfzUgAC=&{?=<&!H2}h zJ1F1J-HC(V**^}&0R1RvrCvb}^_zoMPFBob3te@N3E+RIVEmcNh5-rd{@#*vvt#lK zwIESnJ0y$^Jjn!E>isGvD`9=in%$lCE{l{2|FDFCMEo8{ICX~Co^0fn=n=ou81KBk z3w0MclMFja=so7^DJhyfIq0q(h{eB*Avdq542lQ6G?=IoXuj$`7l`{IFTdX<4Dn(6 z7OuRvLP0)X&z3ip$B|0vevJYm1p52;tB`O=i86HidFjydPr<1VN!as5HXV~Lh5@HVIY9$$nCCxf4U#*2OdL{gzST8!&1!@?Tl*8*jcqC=7(;F zj@6%44dVe{`KUFPL|-h^{-^sHV3=B0`mgSXc3 z?ejZl8iz~wB54d0IJHvw-nhn~Jg{9Rb>D2h=_DA%=SwxIM> z*RE80RNdxi7^QH$^T}>^nw(=aiH2igsbO#dxF1G?;VHCBLX>j+&8#1LI zyQRsBKSq)gZFC2;>J>Gu4>_(urMv9E)eQwjv}$X~GunP(!;uP6E-|Dx=spRj{-)pJ z#r%PAkTggNyilciq)DktAsTsK?4cs*zKH6*>oe~GMKBi)chGgOEJP;oPz!{(DaiH? zc>{2+&ZJY{z-^=_iA|p)#SeK7KCqq@NV-pPU-HQlN-fp-hlE6B!?K5%a8mQ-A`UXS zptmiHq*A+BolkY69N`kxt176kkAEL4Yp8aJrQYBvd80Q_lBmjIL|d$aa)Zp;Klb!E zpf>QHQq!LHT(oNy3a*vK8WIcA!)HCzYjvt!e{B1I3|^Xu4;Kqb4<`>NSEsj@8M6w& zit);Dd={TJxsmwHBaxnou8BxmCNRNs(^yvh$5#y{ESo#sbu@y1jm zoOvp!0As>7hsrTEX~*Kw)An7@?W$o$LYi!80x+QgfZ6{V>gC|<-}{bn2KhMsi&$xS z2k67Y`&@ah(rdhV2r_z;A|y0(hnv~s`0EhcOH{Zg1n2os zsdSn%71?8IP4e|c&kruF4=q01N^g~1vrZUVuR<=Z3_9CIm0KslgmW8{vh?^Im zE-6k2IzFh-i*&%jctk{K%TApIR};geB!<}bQ`gCGh$x8iJW8if5eu;-el9ays!EyU zUluE=Gz|x-!vD5;30{a&D2Ux;4U*_3V6#F%WT1qj=TVAQrvr*aW%X6wgLjar(S)rTRexdA}I=9K!!pl`l)5q5G1 zj{1H=1B?yXaDa~~l1h-88IoQh`=tV}h^z=XVw7)y*nrf6H<){Ao^fp#liFAq5l{vw z6M(FU4E~y%UR5FqO0rum-}3hf`3z6@3}ul0jNH7+H#A`gu;5+VpNxBgM|5O*6!^ix zX*)t10D_#8qgeRDsc^r~AX*(uNIp`o*14xg;aI|ye#WS^965^*H zr!py_F2+@G2?CM2F&xa-H??X^r?k=jxc=&_b+9oH)3Eyp5=h!sMM#T*le3k^=Bc@u zeYsEW7J@aDQAFIJf&)msHWB)+1rIt6lT8HKfG-nzt?pVQ%Y&$?*>C_s76Edfq8lxr zs|D>}S1*4-)-kaH;9xc`1W*uL{$Y?qZU>R{GG_Az*lOzrGY)=3ruW7;CR$N-yQza& zf);xIS_mAMppy=#&RdF*?z%vjjBGMZzIHDz5m-kdrQe-(ft4hRHG8$O**QyY$idY$ zSi~lvov=<>GKPeZ@wL#$HVr{~902Pl%{(%qO7wuz%EOPHnk8oNH;V%LrnpIge7DU( z?>kZx2wNH@_PP#`A4g6a?BH)XJ8Sb{Y^I(NEuK z;Ocq96=}*@`cio^OUAkt;kX7KZH9Fs3E<1``I-ph?XBoY*p<3xg$)0p z8*sWb9QqKv1QKLp{*ev7mzrV^3~nN1#X4#ny)9;$yT~A8kt}W_NhHtKhtp!&1+z(P z-KIGPsq@7iaaqL@50tQ|>9{E3W>!H7SRf~?7x?1qQeX%NL)LlkqZ_~WD*f)xGxE1o zeTmt3IUt%^?;QqHustQRC?Wvx-p&7R?J`SA`3PU|CXliwBA~XFI_S_<43M{vNyR6n z0lo^?%?L^NkX|al2BBiw45_MG%W5B9^6!ltMdzV?OAkQOa&Q1pySE-5=b&@kT&0EI`n~ZKiH0QD+IYBQ-2B-;GE{2KN%?K_bCQ z>#%6y+rku1R7+6GHc|;IIdV&qdA<58>;sZga|0mJwjw}kT!k*C%bDZedlbjlt9(+y^vg$-p_=#@ErN<(kq{0C zoz=|d_Mp=6kwy>=FCbS3exo-+ffuvTLv`xv&Cq zQ;s6T0dz%#@Uq8~SCk?lj_gcXdFH``D*WeQs04umt4fuKd)_L5YY>i)C82n}B-$Mg zBFF~hH;Mq+FhNBMRG#3#>FD5nkgal*?)@md1Tw&tn2r#ZQ=x&d^fxd1J9aT@976g< z(k3$K>#M$ry$9cx2V~--XAD)T0g4_g5rmjKL})fOZBQ^hk4z`Y)u$+mB9%6FI8+3& zj^ria|5!{Q_9m%H5;@a8Ls@B9xRE#UaXXb$8V^#DKaOUR@C&SI6szu27-F z0g4%Q{6PVJf*b$Eg0huK1ZzFS5Fi+U6OUDu0fcM~&%IT?zLP6!0FzU|iO?zm5daG1 zC`G{(qC>b%1fvi;pk4>y_ZE=e1ds0H>tzSrG=N`|VWRF4Myg%a8=M0SvhzH)Q0`~U zC|&Y#bgs@UAw|)UvRz z&Xv$zF;f<3-9Qb01p)xv4Wc>%BCX3F5dVUkVpy{{Msu<1DQBpY#K~T*vKz7?2_9~q+D&SP^4fA$`Wi9%$3cL8~N45#>oLZ_8J8m0LBiY zoNOplfC#6nY1nRb_M_O1UloAPnB7#i*BGds!VlYkHrk z4Sz)hZt38Q@mvvb+kQS9rf$$k&o!s+gO#`%_j46TEL8 zz5v0_0TjE0I@pM~&xHK)04iQ!GRJH9dsP`1A%Dtf7rEP1XbH%YPEjq9y8-tFCH#gm zAnP#zP$YL_7XU{8%|!p91_#3gL$M&+m`EoJRoz}ucSi~9)XD4s{oN0Vkb*m9M6G04 zLjL9mYPfV>uIvmF@XGe~InAqYzoK{_-zV0Vf&d~(=F(uhck%WTQp9t<2e%^z!*-*{ zyeqs8MTYyp>V~5O{0M!RV2{xRq`&~G2qlh$ergBT?ZZDcMo>8dRuj4*fHLM=BZe+@ zcjkwCLhdy*z7FXny6y@p(lBR}${4T}i3&akc|fA?=NWlWNCi)~O3Ops+Q6PMkrD?L zR5*a=c~sD}7;kwjx9@C;!Q)DbLhVm?gB}TL5EVt6_1T$sx-bb-t(AE7&))16^)#7v zbe@y+HR26wMgm%?Ihre*qT3k?6hrw#HEBFzBFUE~2iQ5r2o>TVy3DU2(u z=3r zQUutWqP}^SsCG|?FW6J&wM_=mi@OU&6ifL5&G&;v-SK5v z-q!30cqFy#HTA7m<3-WkUM6~Ra3BUgG%JlnaeLlkxn zqhpl4707-m(sJacIYoHS&2UkQHQ{rlW!ow~F55X_{&vFLa{A`8m?$S$RI6gNw`1K7 zf3yPxNTUqYRYsV!Ra%~{RAf|_-<_FJ>-N37q8z(YRuH=oxxSRKzO1%V^<;sp^WJx7 z00BCVdhc5K)B>hP1bxAWMy+mU2DH-~RpTP|TK z?Lp)_k;I@+WZc$dKdfl*S|f zv@d9Xe6pOje%7|?7=Xk_xu1)C;*zqy74?a4;b!-(aFHc~yY%6F=$qX37PMra+Fn~+ z`|yIj>7#=KqNyY;t*Msz*f%05>I2%MY)H_=^Z>asrCRZrarp9B;_C2389EL=A1ZIq&Y z7M^=Am~(Yo+4q_c+eJB9fuVm;!W18$K%Sd9BJs8H=Egw$SalvB#H zy)?4tc{{sNQck%WP7#yOC?Rkbw(yg|U3`o-qvB@lj$=yUo-swZ&;kMeR?jS-XSnZQ zbwxTBft={0F)Yz;u(|~X37J29o?WIgpl5P^buV}U_`w2l4xk>y3=0`{qX#>oqRb5< zBS02+0XObuBWSD;^o|Hx7?3UiG3bXFNJ7x#%djSgx*J>L6^Ms_5CesWG`K^W7+}9W zVt@r{T!?(Sfc&uYw=yfnc0*vquGZc$N@y>cd$&Sq_vm%xb^XqPCokBG;=mJdjOBK3 zbg%Pfi{8?A|7?HU1v#K zX6Fal?oKgJ@jMDAw2KrxKe7e~Sh6QCy`zxEJ-;YfO50%+VHp>2Xi z7$Fai_QV4yjAQzU6UxTX(%~qiaSZ-j>}&*-CJ0vS3GjsA@gz<#hJYRBrSa#4xCbYQ zIUJWla>BQWDq%Dlu*Xr`r*7Lkc!Y<$c`e5JO?E=kZ}hPC{-KLIanW+d^QAX8 z+;`!;90*E0356iI9KUrOMT+rwo6+Ckg}WKjZgZXkId-=gF$j%e;O!zGW{i){B7$WX zc)QIPc0JvwXhA zw}e!|XSb!@1lat{ajSQge>}fuJ12Ey1@^Od*ye@(5Ye<1h(XdO69_2V+1<0{M-w={ zA~4C^{!p=f%JqXIz*cj|gEIj3BH8mczIPiy5QaLr*a45QxD7A(hk6_i{O}K3^rxo? zpvV5C%RUUB`Z>rFfb>746A8GEs5}gPeuyu~4o01azdDcm=pWs44tEF$)i@8EI%ho( z82_ar=uRIOZS~=7uX5@{`ljT{?MV`q^*g+Z>qz2 z{KLRBVPuK$<E(S+Z~;^snjR5WeY*Si zI_$##`m6`>Yw?;13;aeN!VHMHEf2%Cd6sIBvnmB)rx7^NeWaX^YOUi8+dD?d0N9pc z|L{O8$zAPQ>&-2#MD!lM3%}{lY&z0jH|3lqIo7d)Wl8hb-J=WOe=HB8>_MXi$*Z(?JH^pmcSjOl;f7wh37^2U{8 z>r2C(Id1#6w(H&ha6fKWQpal@{@>~*$UU5q_7ka`vcJwp1_vWqpC2<1l>|+zNluj3j^Dc=+EJhJDgu5=xtOf2T8;SC{!rb zl>MGtf@E!JL&Kh^KedycY%zW&eb^HIK;50@+?EYgOzsKhJW9fg z0L~YcdXG`pmhN^mbg7y1(ROAv8K(VNJbGtaE?w;x-1(k;qYpD5J_{^$GB(cHF3?)g zu(N~zsM^d5*Eg;#c!1pLw~tzIuy^)yqNVea^x`fhdsycap`%GSGe~DiB03nWs3v-o z)*9X6OmC_ts`^r0kcf*Edgn2vhV*&MvS#`Gc4mE&@f*9cR7y^?Z*8I)UD7kJi$(iS z)`4HFK%S4c9ymX7F+k-5dCEe*?#WQ5sF4NIS=4Ml=~rgt1Loy_9h3L)@Hyo>bc|lF zu_*}u(aF=Daf?wT^O{VTwmrem37w0+bx>bx7G1etibW1nQpI()K*F-(a+Br<}YP;o<6E;U-R~` z^e6Y@Rzt78 zj!*erXKiMMUBCS@)zkCyo%`hV$2d?gkO~&;-@y8Z3c~aI76#EqJa=8T$g4p*g`gG0 zKBqwUk{(AP=zdvkV~3Q8%% za4O#Yl)a!IME8p~HYB>ITQklt^-0e*B>Am9XWnjm2ia&ye)-F0{}eq;cuI+i!n>b2 z?veW&^{ChoPEL+0adxp(6h}HIw|MLblVD@&`@R`DtU8=KFG?(VcN?D(|RXlAX74RqyT0aM>dXbmFCa6Bn}I zay)anrJ9!SX`7{GuHfB||I-Qg4!-;y1&5s>E&YumJoaH`=4o%&x9)B#{K1(m_vNB5 z__XO&Zd#?%_VyHls`>5(3EB->J&j_MB%GZ$`@AV;{q1;hJ zrFtS+?r|A+2DcVv&};_3csbCHPd9Y$QRq-}MN7gLYDp+h9)8+PX1+@K;nLjSIaB2f zYQwbL(VR)6D*Z@Kqs5C4RV-rFTV?#lPl%>VkGX4}m6sZ}UslwoW+YnQaxwQ9t2P!Z zy!G1BQoy2h$+-1cyw0znts!4{vnUT>RCYgLJ+8O#+NzRCULyF!IK-^YI%(sS;Gn?)i*K^>V@=B5|#xTCQ*8JSsFI~6S>K{ zZ=Yr8oMGsY^T;FBP`CQQ(=rvkb}jRN!yB_sBmFKzn^JAtHY0~dgTLw~(b+x8(Y6gA z-0^dHq|pKA~QE$>($VjN z`@&}ipug!3B0dHFBDvERbm8>I72jL%kJJ2GG_GI%lOFTBa< zNRFwYzloW94FR<_NED-tTRHI6C-;y4hdb z{f<{R?|=MF?R@z!shz|9A6r|0_O|}~OWkb!IX(XKYv<2@basB?J3FV}53iU1duJ#A z|HRwS|6lFwZ2rIR?0owFJ3IfMJ3B1s%93h)XD8=+Wj_P6;Qas8*$JvTY^oAn70khR zc2*jU&1&vCEGgkTJ82Dae>*$z_|6WC?QsWZb(T>3;ZO}-#|ahZNmrn6JZJZ>j&cvw zZ&2+*j~vuh#Ds7v0M{4SZtn4bL?fZJpS(uk>!2>z8v79QwTYv(^2(D z7Gj>ft@#^c6#lwX@5ML!r}}vy_KJ--HfdGd`CHn_x5*#jlgw9JP`)n3pSQm&aVlVidHh~Iuk@h#;!ppHe*o@2n}rpSM?$=F{WxNd!4g6=+&)h^5+U+y`kP;C-%YKPVA*`b zd(*RE{&UqkaTBh%Kn=xe8G-!v=s1fHl)r*@3xZ7Q zS4ymw&)}Yk_v6?U#*A7^-+g_2Zo(3<5um|&b4p(5aI^Tw9rAOWA<8(;YKwk^ z3Cu2Lpx`q_$=c3CQf-i2PQ=M2FsjPo-WVU3Q0Cyc(EV`1DJA=Cl2b2`e_g9Ve9&e) z52oJt*zXIfk>u8Frn-{(XD){mjE#`P#n>g*EBkfC>Qc;(P6LEG$Ek0a`NUh-5h><5 zu@$%Y%u$c?DCyq(Va3< z2la+09GP<6dx&l>pD+kY-Za;~l$sXJNlGzw-Q|gQq6$+oD$(o%PqSSX`n{luIyXUc z-(%EZA^4EUd1RycP;53mjxzq07a#M{{RgS(k1AeB@M&g?SYJk(`uwS5_t9;=#HuH+czGn2m#)>n zy-LY2TUK{jB`kTQ(sFc^rc^WBD`(u+*HAqz5n;BKNz1|%sY&dyzee1BT6P2K?z?*V zaADA^^PA{hr5xf7p-=UlW9BY_!)Y35cXa!~V4{Si$>QcvmZXf$j?;;NYM9q_-LEIC zir?|;BV97>>ssm&YNgFiC6I1nS`trDChH%C`f3z)FiXdd$E43ug~DT)=!pj-xqJZw zi4DW|vgFw*OV9Z)A=udGf}cFPA;H3AY>7veFAkj{!yJWQlei8yNr8bQn(lhB(ltdK zJQt%B`A3P?#M}Ipv8YOc)8s1GZ6OC5N3x`pv@YG9vTU*rX-4mmLGCRv*6r&!MfRLL zhX+PQz<^2nPa{qJ>j6P(Yd#~hNuY-MDR=zrD ztnwJTxgMhgy2S$D_DO@NN_ncbb~w(+lO^mmOmRMm?8l-=poeZ%X8(MKA39FEVVdEXfO?zIXK@G6p( zg?f3xRa%0!AIQJ|rmR5s;7=M{j@pS_RVtGU-d?Fg)`qC{dwJ65I3aE6MvXK+_2!h} zO3f5{*c#%is&blTH2xDAy?`LUb5CD7ywxE*v63~aGMqU^S;z3XhfTP)dZ7A<2RCo{ zqXud9VWj4Lqlb`iLm453;(O*za>O$50Um_u61Ta`T^HaJ`%Q_=Z+!^FG9}7kjkFp`duWPdz9kkjoTc5reJ5SOjlX37a!QG2;>)-<-ZIHS_b*=fnF|y+>5fDi?R^QAO~gWY7uE% zRkqe>w)RDKe0%n?NNW0MiuHY^9Vw;k9BKhs^0l3ah`tQRPZ?4UdD7%w5QMUZe@akw&sU9JT0ZMdKi-nbH5EwHyiR=`DxFe6yRIV&g!gusxD7mwog;bt};gIsz?B%Z3 z-1qK4d> zA?G3jMxt0u?d@vF`^(yC#@ExA#i8&_AK2@q+}F$6S$O2)#h2v{2ghqex6JBxg6eji z>l!e1jYXvOTPX~Dsi(QARFw6ko~atU_ewfwAFqHS@!&%_GeU%@X206R88aML-U_Yl z$i;Mz)pYXL)QB_?bU^7C8-Uui5dNaUTui1FkqNYtUA~c%7?WgG*_P9Y_cl>h5P`hL zyQ__naIiZD6n>qHmWgk=-3tz$Zc@5xQf6v?aL_a`Omtx)=>yg9u$Rwl2sSKU?fTtA)<{d zre-Y8WFum&sUco%?b>f`W2`mhuZ0q~QC>B~m=ncxwq+JUYjJJ0u%cRA0|O%wAhJA@@ETJHfHw8pI9{eV_vn{W)Bfc{b z4lcK97Ub3{VoVxoC}150J;?)^biRFZ)odCJ^1?eR{w^P_tXYAs#mme^bFhzcR>>9E z;aZ-EOpYkI7n%a7K*OQF2jw){6{OG#I=O~Z`JOZRo~U@DY(OI!Q*Bgd&t+%P&6;8Y zg`-Q8($D_-2)A-Ge#c%irl*8;_@<)rU>{&37J)~%OH)o(HcwZLo7=M}TYY}lbHRfHJq7wG_1blTd=@}6 zBOs&jUTZ|MEn$OQEb5g3drZ`SXaiar0AH3TlT{=uMs}-+_DkTVxWU?*J!`ev`*oK4 z^^PE=?6nvi0}xy+^oN?8_bnu?1Bdrzk8R&HBfcdAYQ0CAy$@@Wy09(Nn$SiE{Eog; zEMiB+Vt<|hIvDsei?;7PTF^3(+dMXcl)V3~v1nu2;DnVCv4D%r!5xdmi|}mgh=era zbQj=u`ykp1al1Q(z*dOXs)u0&)yQWa2o*(TY8zy-71G*1()s{NfDhcJHyPjM#CT&z zmNyULejol)6gE-@NiR2L?~2sU4SzqjD}q%S-WXy-%Oc<2L6mU7rjnBg3Wj6HLYra; zu_9x!jz-5B9|874{_rB4`1?=?P26HT9WeyxIu}j%b-rq+uaueX~%U|lpb7!8{WaE|RB(&8W-9w5e zuwzeaJSiZ~Jh*)T)T~&K<)})Ck3cmr++J8|1zu?% zd?~WE#DQ?RhqH&4XStuVr~40(dLki2C&R`8Y?lM7i=3oI^)|XIpCiD|4q)x~jn$90 zE69~J=Mf<7#5@FJx-%E#5BMHufK?2|Dh6P=w57RQwNWF$g;1P+j0LsztQ8&{01Xn2 z3rFlZvJMV$m}qy0Vb}2B3>&nY1jbV?ELHtkMA)vAMX!sc;fhA&55x0E93ajUNvPh& zhJ4P&GNpDT$^EqQGa+P=a&z%LgsG!~Y65qsvYG)6pAx#@@Q_Wajpg;wjJY`d*|V>#BtUk7^Oh=6_fHmZAhcFLn=?>n8SuR(B%}*mFoB2BN62KE*gZ?Q z%7ZsGf$Ok}*N4cCfkrr<-P(7Yz zY7I#|0=*ms7k2UYp2ssN!_AXCw5HE1m%JSNdquN7 z6;=hT2;jZ@*K3iN6J|BM&42P;}>wb(20y-1^fd4N`L0;Xi@9tS2DCB)Aw& zM$$q`E2>)F5IXy-WNU==@3Kmrj!REyPEwIlia_%q>& zJ?_}Y#X>`DtY~;+C=?vj2^1Lub9p`;ayX^%`rg&r>_E9zehVqJgaq(3$Ps{Xe>)d} zLw=gdM~~6vuK+(gKw^*wBwAfyxtc`SH}225F7llgSl~rM(i410)I^g-+8LEdb28vM z*>)EN8uP+8{xw(vT4Bk32eEB$T)OWLiy!MgX>qY1w_> zb;5~d{|&ob;?`O5Iw|(l6&uY{sYj>gIu?12Sgg^NYu2MUL_u8CO83G)i25BsC=4q` z@#M1etSRDKf;Cq8J_Lmg1c>8Fr^mG))6PGNGt<&iF7e=y0#GX*CI|39W}_w>JR6UG zG$z2YDbgwkJ{N_LVB2(oXUCt4u3c9X+*T0W0F-5O*wqucbYFNV<-%m+=1)C8+ONKi zAmP;O3!9uzl|&=J#=we)zV>Q<^=Z!7is)6@@VGnYbqG4Dg8GlX1^GyXi?BglPiyTa~uVWCnW7tf(- z6Sj8ZXOi`Ib*~RY-wS{D9R27JC=Z@nT4(ynx?-uQe#K*~sY)`HeK=Bwv2e8(t}r z&kR*>pXqZ{)rB7seaY%>94aEmahrw(QoD;9M+t=31Xf5yi#~~Mz#t03BQmUyND&4B zEpu_sDcRoR;d~8}_{-?eI2uaE&qYaiAQ<$mlhtLk2fL1VpG*EKek=A3k`+@T2+M6I1HcmDd8ACe)UUqdZK8 z+g!R_z{QrDl*$iZza$%U+Jt#|7z3`H|;B7ckCp}@qfpFiG1qNQ&Y1V-qpgU z@B5p#Y1;E>A2cI;fU1lbaHM}CC9sPEqxr@Wz4$_5I>vY}Lypux8o2gvMvH#6Mv%Q) z&dJATRHWG=mf47i8qEH&2imbr_ z&x3~aJiFMXkQ9P>h{!2o!JrpUU{;3VH{CYi1EC0k<_wWp??XHcgSv%*H22l_gQaYV zlT_zPoH1}Zh$0NO55XWb2(sU!SahyxSPIiIe&y%^j6t&hnY%$Ln|c6K8X@zq7n;fJopw z2Em-mxf43~;)k}v-(uN)h9Ce1vIIvS3BVzgTK0(--Eu)U=?_G9d~t8`W<&?zLSDy^ zb_qN_u?Qt-bnXS=Cx=8-uH)Mw-_XDi;H!pM`rY^XxXSes&t?gq-!_Nx0g!Mk9XJ{o z+656OdIh3UbQ5SFd?k|uz-qTfLov5YLx zX)nk?Y(_*l2t*w5%z7Y4Y_mAo@I>@xnlVkCWQ;e)1TZ=ej*dT%WrI|V`Pc&H#6ZB^ zEA4=p1|fnyuf-{Y8OU`;VIY(=0}i4mPTLD&P2r7hlXVCfiVc4C;4YJk+8C;F@$oc; zM&3?tQZk?-4w{!hG*$zQh7@|vKow!stU5Yo9~>P67VzQi6RO&yq*ks{xV+vY6o}sp zW0ju7BJwe!@XSx=8QGQll%&c&LA*<6%NVUm)deILe2x9Y0gmlpM5QjjD>W{IgDHwk z!IXz%sC0$f2W`^e)IZCf4UbZ|I7eea^)~c5W6E$eOx7-G@zc~F8fjDcimzGT#WgEv zaiHFjh8JVV%b{tLsT7cPQ;2^Rgd1l;Q^6@PND2|Ymojgz_Y>R>xjXpN47eYD&K|2M zZvYWbpud*){`lanav3vIfpTT8pv@#4jTH~w-vtJ-@b6VOa;2ZY=|f{A^v{#N0A#?r zU-1iN-pXAPn zC|OzI=n=v|uqgZ~gN(E|>-#vbl1-X*2oOL+0i0!qVX#5F56c36v~4ulA#*U%=uZ{F zf&lb1KrqXjbu8jooy3cj3D;epu8sh?%eWHeaGu-8`|oE zO@H?fOf>^EA_o`-6pp6llmGQ=|B@gX6oAD#7K+|nqM&=X>iuQ&Y0FVAkdG&V7~uYG z|1wAr;M0VHn|MYz5$|l5SG@Y&fpn)V<}4fmGOfuq9t@A)IWP=Hja3W)&tU${k_I?l z@@E}aWT7lhvi>**NC3G5h*JPK|HqA@O!w(LkWh70oAQR2=gG-C#BQwr$dOd z4E>-@!QR?|JOQ;3u}OYN#U&670p=$-PHY9_Q(kw0IeYGB-aLh(1%2q|=<7Cfo;0SF z3xVg-P5`u;W5_e+gII&gu@r;4T%So_hRNt2h-3*b1;=X_U_t#g-XVc#U9g5w8Jp;z zy)^e-m#?;-`{!jD0MG$ao$q)eZNiRereLpgA6377sq*VbJ*dA!(_^|Zs#NhsSZ==0kBvB_9 zSa*N!Z_AQb!>ka0h3|AJkqqV=#4)*}kqY$fE!-H9UjZNwHlQ>g1Feg8#Zb9CJ_f{~ zi4DF7;1@$vMCMa6u_S&GisScC0RY)}_NE4SqloM0^H`DSLRJMAh5B22GVf^D?)|9R z!#8WOPY;107#z5F@r9V^;coABv^}b*`^^C*G}OMzcEWMHGML!1{R_v+xd5=;fM$Al z@y&Jkn~kR5D1yJGe?$N49GBf;mnQxgT^tHP!*M{FHWgj1Vju0!!~xc0l{dJM8p=#s zt(B`uiR*Bq(86Lk1_mtBwGyW)tKI^Fs99OwExKyF*1XLZT56p%rmA?>kAm@lkc?>=yr@&! z3nD^dVD@w@AL3m^(p_pxxTlBuAWJos00{vA+(E#tF`45N1VpR!JORPpE@nzPl2!6tAdF3Z_;L<`boIumj-NeNfAN5aA#!XfsI0Na6|O z7eeCK7rj6U3Nc`R(rzq7N%AE}jFST@Oz<&`d(6p1f7Xz~*J_&t4x8%T2qEd`k=mWCXCHYXP(e zOBS*D-8b`}F!-Yxh&ZbPtc^oF{ht8xF@I?ntezFG4#TmaGVG&(^gOt+5vS?T9$Xku zsf0CXipvX9{OB->ZT~PZQ8W0=zy7TeKdLZBE!0CJ4D2@!nLcFGBF^mT1yfVNv1O>i z7VQ#L;JyGN@iUA9%LZ(ZuV`s-V|p1}LOELYjx#xC2qO5ye2@<%2Qgvr$!+G9=D0Zkn$OnM^3BKco0xD_qO543ONTG`5S1c$tj8zV`P6A#`1tW zQx(1!8F3pCG&w?`;vbB#m*TOUiCb8d>n!13FTcsb!5(9Mb$#eP0R4yBN(?5&VQ%wg zmd6>4?(g#72Kn*l9Ya2O4|+$!iA%V^P@onpi@L7dlPuI88RVA+IA`(46Xm3#f|2WT1@rkJg+UncDR+7W)5ekX`n1f$bcbhGRd*S8-f-Qj zWZl<`ai3b$R*ivQ4oEqwgzQNM3M;J`h~dp+v}nC|^pIFHQM@v$o@uK`K}YJ8|%1Ih0rDu_Ypo&Lt14y)TV?U&BDcy4q=eS$8Fkt?*EH3k}y(aOLk1_mrIbc1m$Ve^HC!M`91TYqn{}6)Xq5 zkED}x(I3=;&gNrD7UGx|;$JSr2CK0>@M2j2zyN^xJUH;>Z0cB8jFd{Yu#o!^sbyxE zxR-FiTYezw4DZ69!=r)nqOFt`3w5fk~`Snge-(SH!$rZrt6tmzvpIvAK4 z^(WyQ=5oi&6%2(*EG3RN)mHf(m#(#-gz~1TR&tEOrF1RBAnzQwOd!pfL&ttosJAp#G_X z1ZsN(f0WVFanRd!4c0+oqKXF;i*kS}K`uj`PD3rp{6E#HwhaI5^IAERdKULb-SA+3 z=lsH<%(1^x^WOYc}Pu-&LzF7ZkUA@KnS zC!+o^II5KMkje7$2+i*R72|~%AhdXSj30RcfxLqO>;{|ctO2j=jCo==g$B^*2+=4A z0~lojMD+rgl+c*E0)&p&xyaCk{sst0n+S9UteI}{5(c8C)JX*c*kJ*B69)H8+NFt$ zpvE;6EKx6|c zZhz!5Ex6PI%<5w`>boI8jnt;*FK3+v!LF>PpY*iV1i)@3AUAl3Me~|DbcuL;3wzbf zp%LUBwnnVE>a3^78XK@FrpFc*@Ua>5Q|zwi0OltMI%^o3+wAU2)UIdNuJ`P&?~bll zNHFW*E_}fJQ;GR!jlBTzJ$O>UBPs^)&)WS6vv3R94K6a@?y&GtSoK@AfOqbFOtJX9 zqwA_+&c^DG20-J3qeX;Z`U$K?hnRb!yca@r)N_w|;x?rA(z14S5uiiP&^)eCJ0;22 zfzVdvpXS5qdl<8sth!yxQpxK6Pn3WjP~md6%DgI&o&zQ;s~$HQdgki>KQsoF(0Bl! zIUF|W9X8tmn;MNN5Z0mt#&iycsIG?O^zd8s;j=J*I)lyijsW&%H15Iueo}Nk9#r|X z#m=f17#+ZaYSc7V5mhTXu^?x}sue5h2m*FyJ(v_YKsh^%G`3UHzowWEoNjC;n13nT z{hHOYb>j&|0Z5M@J@(*@HsMJj7A2@#3by&;rgM#}Go-)fSA!AadV%TU6{of>ez-QwJ4KyJ;hZ_(&2jui#AmD`g z^ly?eF2U(Jz6pr?^akYkAb!G`a|-%=x=y_+PKtJ}@tfP?1Qcp>A#G1$?tre3MltVC zjj*OaHAcC046Fe#zmu!RfVE!%SsG|Md%>*9XKckzhJ+w%L`eP1P!}bznVo6n`odND z3+AGlM|W0TP?s{ttP#tnMS~QlPpqpF$Ho#00n{bVZL9v2H@|6r_={gV)1IDFb@{{A z&LwxxC222UKY(w{T_|J%+8V9tn*Awr{3$1lnLeS>1GYFF?5}t1&x%gy2rqlhHl^)M zUQ7hM9Y7ldp`#+f7tk$fP~cl>ljlf7)kobIIhUxtiQjAs6(L;>puOS>SSLAU?+Unz zc9m{KQz^b=`eDgM7+5QPY4{QC!#B5c&=#sTQvYaw>E_7R3_3nO_CqZysAS#gcjy{w z{VewIS;`@5^C5!+-Q3+<%nqB1-04c(-9BG8HoAZQevN|9+<&;Ez8LW69-!|Y_|g5b zN&FhVYwZ(r?JRLknc^Sx4fSmv{=3#PF)n^5*BwdL-x>oFp1E$29J0u)dNyjkxY^xY z3EnT%JK(h9el;78kcw%5ILw2^l>ABBp^6p(%t*}Vp&@$B!Rh#cEDnwg2xF1ibH*GO z+PQOTrHhIaXIi8ejQc|TJ5XHzf*RsoaqTR<<}3=nZO?L%ne%8Wx(QvgR;Im7C`Mx! z^nBiRkCKX76+Icq0#N%)$G7{QU2kQuPw&qCbHsg*#4UTy{rcrSoq_y^*`VyXJm7b9cz%zXy-NbpjU}r2qEgZ`vDR z)roW6$BW$`UQ66AC%boBYvH-0wv#n!w_`#Tp*S z7@fjo-oxmLzVkj!*!?&xwT=ZpiNkxfxjPUXP0RP0$F}tin^G>PC26HrVsR9;Y!V|; z&w0@}lR(AUvgcEF*;0O6M3hkd(P)M6yTzdLx)L4A4~xGK53jkAT>;?7r(8BSJVxDi z!C5+N>K2RNh2sBO9KCt5^IewD+)cE_*|_wDyF=%wP_0@~hJ@mktmey|d``_)vxAiS zot*Nu`1)UOijHSADu3qCy@lY?aV7ED|J?|Vgi3$GB@gHudG=zlA=JO&`CQfMM(;Vh z{a>FO7Db&ud&(Q3#FsN8eI>MvVT2S?j#=`a-n)u!Kqjcan3(ieWf@E|RaLp%;NH)C zczVB%@VV#w7iO)C?vy`0|@2$7I^F&ym7Q#!Rh<_a;!g z^^%o2#qD*33EV2tv{WJGYMKEq_y;m=WJMx{UaS)`L|kB4rZxLsjfP|)o-JSzs`^zW zoV-GWr+Y5CS->ZL6MER?C{4zan@w*MHqm-Kx;PubhSIf(3Wr00}9D2nFYODO8G^$`hMLR>V=`ns-aCM2aT=0vy(XX3%W(^X?Vw#NEv&O4Y9!vz)!LWkDi@4M8uNQDqJ%3?eh(I2o)6rVLE9u0baRG*9hrO zS279p86ukN-0*4UP4A6tjjQ@sH4sCn_{%izpkjtRjB?V!>sv=}xv9LPcK3!Kf0P6C z+3BH`9=so_c%!oTm-dfm%UJ22M~|oHA0L$rQ>{D3sXkUP9*uvO3F~l3^46hya479z z2^ow1F;xK0FA@00rfmK-L!aR?W`&klnp=AURiH& z31N+MN%JHdRcv#%u#6}Q$H%Ur%`Ju{D|AKG19BUa5qA#CQfmC3z})A(pk$>BamNyw=w)GsZga-cxDJ$BBSA^ zaGCb}4~HSqLW5!we|3+KHDj^ooRef_3=j2@&O3@(r#zw@Y4sg)#rN-Ht2E@F7FL*Y ziZrI)UX>S^8i?AqXh+T3C0F@!g2GD|AZe%d<5FC9+iWUia>+3&>IP3DS*8x+>q-PE zS0_c?r>{$GTYb)L&)@@ZRXt}+TFY!4nuK&(F0P!<@ffajhGt571ia)#3JlOGWnH|U zA_fy|;44eh)8g#qt1icGY)1=YXqWAu#5Vf)AGPKsTQ76lx3_~Pv6df>zqS(xGx;ZL z>yssU1U`x8ih9)CeEPJy6`JWN^ASgVZ}@4cuGHxpYbrI}V;1AoWp%vI?mf@V zcqOfuHW?ybmVVCMe*0~7!hKk7ly8+MIaN!GU6Cl*;^74mr~IciW$OQ^k9gp5i}2luqRZ^3%+aV9#UVubn(>FG>^|>&b){p8+k9-G!u4@QT~y9(Rz6?cq@XBr~cfAl1abNB1ugo0|h%&M%|3RHM22B zYlq`XJ64Kx=oz9r`c{S5G<8IcRQ-AK0};*LEbCQoshS=-OKR)Y@n?^R_G*U2twI-A zB>vuwE?$n1dKW;~{#LsR0E6n?8A3KLX^lyD?TheTPN;cO*^D>4{!hX=0>F{$k zgPASTEHR6Jz-08|RLlOum)3=C`L#p2mCh?RhNOAvO0njC4zIaT=jCyXzwxF77o5eJ z@$X{X{2%g_!@%_ARoZ|_*KouvvC5|R zJ8I3Z=jVm^m5}XipzP;6r`{vV4{5tApNd_xN-{G)l9L-_K|9p5RIs#%$C9FmvX7Z^ z>U2NFS)$T)P0`m>C*hfgM94^GDEKn_u>-ewRNgL}c$Qdem1z2JM-J{d6ypgEq*W_b zN(*?K9!nQLmqM5 zr>oHu7nq<>w#pC|Ai=U2~@v z48NKxtTarwNl~MVt$MtS{pGn{fu#zRU2lDxK^OluBb=b+){u|{`bU@EpOud4O70Yn zyYL}nfP|!QWl2m^=Ty*;eth+_p*E|+)Z9Ahbc4~Y=kmKr&FKe0n{^q}|-4qFds!lEf zqc=+W(VpT}_|Sc;KYK#W(r8 zVrbJrv#*|_$wqSWD>pAHR>*G&XUya(b&cOCsq1!=xieR~b2MQ>hU{-_^nxldBo!|} z4_9(cHqH1YX`zogJ+A_NXer&cFM~cFJ)43-y8q_x>%un?iBb`TAN(lHfTl_>)&t42 zFYA|7q?xudrbMDr{LG&S8B=BV}chxII(g{{ z5zOy%nec|64EDVE z&xD9;ock|>;tSvYHJ^@S;AvG48`|cYMV^TjQ4TMA9uL;4sghExAN|hw_=NF1j)tDu zJUGNOv4vK`%Ay@FTU~cs^LSTrs30JM!JC~_f|oKpIxdWP-Clq-S`aJfSa;c$HX}1z zhB+-vJ@Je#ZQ_zah54~qVKGIW`I&-QuI!F6yO%|m=hlor^C$XQOcl+5BBsEf7ExD& zhp`zq{iZ^aX@qgK@RvHV!37B+tk$4q!q+C1LwdfZr6~~vF^v>1odpvi2y5EcFYrxP^20(h9SPO5JbGVZ-!cSIgS;$TeJ~nlO_|BSYbxWf~DcK}%Ef}dq z^Q8XHn0c8Ko0znDc>t4VBdLL%USuarg;T!eB~v13!>7u`Ud~jPS&wFCF>aQP8O`XU z0Bss+<`+A*T>3|84F9|qv_tk*Mw^Xl?UG@IGG`zZxrUYYH;l=RnI z$ysViUmV)G{6glTSJt67K9Q2%7y=JzI@LcU@(#m^b`?}~88GUN)jKQZKD(+5-1<*n5&yotY1n*QE zUxD4y#;21i9NBt$4R`Fli{_hjw5nO<3wlR2j)l$sCIu$@@@F>vXZiy)oQk*dUqPGZ zRz}4;yG?12^s{=Vt5;;Oo~7(Yla7$81`t;YD) z^`%+EjI<(VZ7-#_6l_jBe_A<;6Qb`hchqKo8({u`O*7t7BtlaGh%WaM;O^$i(M_Xo z(kdaU+!@Zb1aHpogdBvrZsO#{0nvBUdw%H)RMf9lrit0?dRe1co0?=P%lXm(-my2# zJ}=LDw3{o+0-Ok4PNLu;& zi=TtSs?j7nHv$JsHAXl+i4XESo5H{K5rb4&&ug4gf?n9)rmS>!t<_0`((|6HgZ zs}S7Ks@FOpLSrKpNuyt~hZvVvgjiw5KzCj`Y1TWKRvnzwlrr8QK+GH%KgORmKozQx zWCyHBVXONj-62^h8n}{hr?e^SYnXyPhx>{!g+1_l4b?L%uN@L@0fvA^LVkCYRwa03?6fyQtW01)Iu2$%+*YQ_&B!nP zk2xwv2V|emrs-bHVcXBp6`iW=^{H&_e5iiiX(a-#=YQsOaeKyHoO4jBO_V#wG3*p$ zwejYC<+LQDtyWFt8JkqPrnLS=ZbZhB85iTu0f(K7T_U4vk%=JK^y$Deatfs`xp^LX zYxzxf0_($v2KskD4EQ=zxwoCVi=21~ez7Vd-!nMAP|X|1=Y9HEYdE-0d0DZdQQ&cD zO(A(n8*!X2w_T4$2HZ?Hyn321$Mfu(J>F}%1@B4E_JxxBa!0@k;2Hm~7cV7zHdG0? z*~>Zb4|TD=+54$f?aZ$EJ2kv9|HLR+VfjLr{JWLj<^>`CC-ma!9z!Yu={)rxc27r~ zUP|ykpFd^~_jh2SJ88dT;!{27!C!iBTNj~aC3zQrerKnF-Dqr0CZLiDeR1&9Z_iwj zWTHn#&YDqdocNEIc`A)Y5Xi96Z6O}S1B>Lg>g7|MqVqd5cL6`YcQsc*pW2|$Jp{44 zHLmknYuca4zySY;3}5gGzYvEAD#O zQ;kc>jPbqob2anlYAzfft@yQEUg&te)N$dLQx6LyzJmH2XQ zs_(r%s`#kNSh`DFd&xU{s=HZ!u(vWceC10UC}bMSZ4k_*jZ!c}K6*#VyTlnfiPgT~ zj~4$=k1r~N>hX*J`Iqu3f;t&eY8i_E2mdlz+6skVrYLI^{%i1c8vfyz>dkVf24AT{ z28CamG^trttDqWu=O_!uC>!f~SF1)3nEriG#| zU#BTZCaApqsv(!4sSuA!??1|=>#C#}Yo(a0ggc_ZOXqZZ^EeIZd~LZRJ%vg$&0<4^ zI#abK!}q1A;@;Jw#mTY)Roq)@3^?hIIO$HADh>JA^!Zqix|t8S82+~;eoBmiLGCP%d2A$aYbpU`aX0z z;mcJ_@?=ToMM=SZ$v^h;Z#{~=YCwB@ z{~n>_%lV7T#k>#CosJBS`NHNzLZ>ScdmkBQZ7G6$yOStD~ui zw&CPAw7=wA>-VQrB_j325@-+R5XK|Yr6~=zfmP;*t7C0Vy^BqOI2Rw;LWS{B!+# zw;IJ>e!D)s1O8(#g^RV|jsMuoc3>D(3v~;6J*aT|I>+Ka>}9N`hoJ?Ey)-h!_bZtR zV=eOd7|twEgkmp^=IFyv?4>b^y$qX1v6o~h_LAa%*h~KZVK22%?B%w!f;iUyu$Qg> zWiL%7|I1#|{Fl8f`rqtj7VCf5%i>6nt6Ta^@BhtS?nVEHz4T{4U=99qe7jeGBdx_! zn1XMypPuUGMVk{Ey|Z8Pi=4trxuD1@tF(B$;Gq0*=yA>}9xZjr@e>J92-!nEL=A+`-mW#;f$6 zs0@Etj;rBchTnM7!*!r{A5x~(I3a2O=SWnZ0nc#W;nm{@fyKAiZCAlCK3{@)O#hXpsbw19rHv0uV<$+00cZXV z?qJR)k)h6nCO?Dge8KtO?fDlXC(WDVBBoP+o^L~p^wj1*jJ#2-^cWG(-%0ziser6H z!4_#TnCcZOl|B@+p8s8OEVA0=E$q`__+Fgt2l`Ov!38&E^<7SuF+qa(Soz$O|{t>`D>GLE0m^~0!kB`1FW zvgLWu#P~JUL!lSu)?}R-^k}j7hWdB3n}xL^LFCPw&Kb_2la|b1$K8Ff-*%y^3kD?S zE-|UE2_v?{!I(|WELRQhB2D;>R_1&8m!f#1?BglPS^}j7LHjfh&b00((r-mT5st^D z`Lu!4U1B@Gq5_Y8j$L@rykBa_UL{0R{W>jt8`=cB#$9sT|zrapQv??1zAQ{ z-mhEhCTx}SU1Vv}W}yt*?Cva5ADrGL*5M{@AXrlYJ7*s}bc~^&Wku6H?Sn&p>z;+} z%d)M0j~f+L|DEL_pjTTMGkK&U`hY%WBT$|=?t(+RODApL8BSAisQ7B^cFdu%F#bqB zL0skgm`6km95iYUoD_PD;r?mQ#K%V=@Jm*P@Cuxav2E~t4fJZTrH)ZI!BmpFPtiIJ zoclC5|4PNE-owO2{+cIUYNT#F=8mU;jV@P~&a+Ea+_}(i8Z4KDr7EK_Re0HL@xl6L zBKF3qSQ>+leI;KtM*~qzmAU|nvZBx3;4hZvq*qB0j_H-UjQ+z%=^x>xe&njmm~pQ4 zF;F-+KDxmuvcB+bT4P;ZfL+<8i}k}+iAI=@LKWwth347?xrd^?M8VzBuOu~<}OJ&s|N+BMROs46>xkGld5w98sAreb@)pmmw1=I;w!>qL2!2y*%h z&hf_C@&&pd4tCqvda6HveA8KW>E3k^r|pdX1xbtl!F9m))RsPy9{6662UCOHo!f`p zrDw2*s%XTPkJ9M!=voTORijC)GlN%7*83XcC_v?5qnvP}|0TY>E=ym>lkfSoLS_c< zt*1AklnVmqqf>Fo54>lbDTDISFMj)2GepVW4$G8TWGzN)b3Ju(6|1dH{!W#%Bi1r( zG9EGIkYSdO;rOVaV^{aSeOEweuFz9N?`x*HxoBLO%a2dpn@akOW-$A4x+To|C^7j0 z$)(gPwm`+h-_uO6%paUMeJDUcId>7}oQ5;PNWphIML(2Y+va1ZQwFlCPVY1FNfV zo_&uz2|H$3uXKeacL+ysf+a3^ZI3YjDC`TIjRYT4=HKdU+^ULXq0w%o)v;KG7?(_y zz7ptp7XJI?-)nC-8c(XcKf$?)PnX&bukZ{J{h^B`+u{6P`y1YGBGt>*#JSVjBK5|r zpT#}8eRjYI{`0<4f~(-O1Qh*ymfz=)ql0wYqpC`_?Iya;Bp&?@GVX8h7(}&9uU6e( zWqT@3@18!ku03lHdrS5Eqi0=SPt19oF?(KnzU=YjJF|V&h#0@~ma!-1kK7~+l^jja zClY+KpTa%PKASh#?`*tE4S)|j$|Qt-659MsQZM}q)7Qe(`)M;{bP{Knw1k|gP|_Q3 zTs3`459XC?u82#uJXgQHEo@$UjQ zHv^}V1Gb)!P`dMn)REPN1WA1I7l{*iHu>@ctGjHRs|pzt|2&5^%5A9Q7x5qznhUng z3!-5q|ClWHCp3f=EvS2v^Hd21zcD$<(54x>xDWcPHHRM0h2}QG0zQSEod(w#g$0C# zRpy2HqB8vAjWG9=P%Qdz3z-+9#;DKXQ@PBIL#oXMmZ+Wmj%*T|T#rQvoMH6DjXkh_)#%AWl+||T-I`W?*@Xio; zq_S~mvG~NEaiq6+0=aK+7f5@W$p}-QEfV5DCxGlN@f-{B?6*Lk1>ihS0>5Sg|4Y5-Fd#Skq z(g_FYg@f!)6K!)6by~pQr&tScJWI<26nkl#nnZkyM>7;>V<^6JuH!}?_Qq1ADL)y{ z<7?+@0y!aY0UQ$InSx?3QOY8GBE{@BCDt;@i6_-wDHX+Dri7!`><8Jyz*eWJG|2co zp|t0>z#b*slGL;^6nnXlHmHQVd`c)Nl)i+FtM!Z{n+$4Q2*Ry#bPHA^>q|ySJHpab zO9r^M2yhG{WAqkMc$zVWVlRgvc}l1ZKXYC)Gim~*Z)QezL6GEG$j25)L@dN72fP=a z<%7sVv6siUSx4bn9)w^AheR#U?3*FbT}!qpYRz^8xDWQvn*^c)e6JixL{3i*-nl_K z?r%H}R+Ud`B6O4diw5GSO1X|`5dh1K0VHUcJabeNoBkkUoeg_KGZR(Ev9f2a?q@Es zWqko)t)`}g+~x_kLc(J6Uq(Q}V

    z`lg3Z?y_gm$uF@(0f@B)kJ~9U4arsq0%BS z8-R;&DEx?xt7TRAX|Yi6t`K2>do;j5hr}meOz*h0mb7H1(u(Z>8q!igVxjrSmW&O} zJdcA6&*6-?iDKX3jDHImK=b^xO8o91D3vh$AcOHy3;PSA*u$zM4x0G|3Q6)RO-cL5 zUM4Mqec)hYgG2{FqJvV|H@$)AB=Z^Z(W7r(g;8>PzA3i?r$ot?H=#l)pm-D#8ei z5g>IJ&>gj$bsGY=4dJQ;#-pquEJwH#;>^SRaSAHz*ZJj2L3*006?ZlEN{RZniRKO< zCQ2~8DSw&F{3%fNeS@ktb}^tqWdss|XwX?|(7SJlfI)(w1s+h4$7!kQbC6YewlxA& z+6uaF0XgzCp%QabD999E;EZVUS!(jTZ-V1g1l*S+rPKz6pHm!?DyZVJM1oMGo3WHF zEKAKX_aGwx_`? zp>BH~FseAd*6LyQ>0$M$el?sg9GSUvTeU=9()qq2{-AwIu00m@Q`<76-Zw~TSH?PE z7egCH4|~Pi>s}l{vX{Q5YL_YO1FcR)ZXBDJJgBTpzY!^`OXPnun`%zp@1Va2IXU32 zQFeaP>?S=;MGYTX@qicav6jj^yq21rP&DFFqesT~|FD-}-yBF9d!wE#}t(4^i9=t!-IsKZ~rUkI39< zb{L`|7-d^_fkSvkYDU5GqD`Kt2K^M|?SN}3%hwoKL`sM2c8VDA86C_R9ezN#p90Nb z2#)=3#nx_R>`v%#$Gfz#SaL{|P&JC89H$(Ajg!Ba+PWTIIi#JpE?584Yuu-`Btm#- zq$Sfl2Nd2$-iJkY{UAr0J3KCojikzVJs8q%%Zk|t%N#UQ8Gr`>xn$w}M2h zlO(!vlyT)09g|cmlhqR)HeF@(x{1yrsmzsNW@@nAM7B{E$PrplCklBX1_^nDP1Wm6 z@nudWu}=wpfCL*12|i@BKJSyEYUnJl|LoN;rdc1aRMH#S9-;K3K=d2p8gD+fX_un? zJ5DA&MV7Ddh!-4O;DB45gLg&w%~<#q$$H!x3|9jiw+B(^#5vckH0MT*tBsB0P+5pT zbYj|c{aWe-QKjW+{y^S?EGDuS+vj71z-G4~$5Zfg+zw%@{IJv7(Eag%MTqv&F!d=g zM}u9hk`6Bd4_a2WdROmCfwg3r<%9%T|D2q2U%!h7Cmv7|$_TM4K$qp>wLFp$Yy$lNC6CmH zw^H@;0fTX!5O?@8dd`#q2BD7;k8UF-ZVA+RgBRGHb@z~^xZ104-?Z-tREy165j=J@ z{3=$7KZtUJn5lw2`|;^jP0x~(yqjivnci%Eho0skw$sv8 z*9ZQRt<3@h;Ly;n={A}=9qHlYhunqE)&NGZ-b(s#|0e(ivA=z$oF`rg?}2o8apRva z;TmId8(-oWp+eJOx9yq<#-{{EqImp-GM&ju)AR(A3~5@bw@LU`Nhe>izi;KVM09nh z=ByfbLxm${o8iWZW3Ah}-K0hVCNK3<~?}voXHt%4!WSHR8 zqpIr){_Rh!Y=w5UYE^<)VEeBdPlMo4b)KS}kc%nF%EyiAtq;&(!E{$`uy21R>z2`H z03^8oauMhBxigMt@5KjgXpkV-q5&M3gfF#HK$KHv9I;Qr{B*Sdj4n&%6BrI%9prg9 z6|TPvs9%t+X^r15rjv(MZj#A=f(%-fz%GWx&2HgC&ozEOrJ9e2rpUFld;4^MUS8~A?uRlM9SV5 z;nB|-eX%(<)3VOf^PeTD)a~1;?P(XW>2(E#t7sR9+se!m>z~nRRq6dVhF|@{_fJm< z7LERyL6h}Vz7jIytf$s_qc4I+yjsN4`+T)_ZvX>AU^_hv)Hou@5%=7Dve|s3J*g!0 z@{USW?J&>Z>A=jULQ^wWo?g`Bn?X~F%IhM<9P*RKucyj!CM-H7(L<=boGcn{>7mqu z(WIicB=P%5U-d)*7F8YHidXcaqfXDF=r>NKTNi5IjplDOd0lMu8kfG!HuIatRw3YQ8Eh@B@|`yAHNIr1 zUE_br6czrR21#D^q43M$^#~k`e@s3Mn@B<))3IjYklLwj031#rgKnSvBqdQCMtHFt zsggT_?$UIc&DtZ9JSy>QlsaH#n|UQC8J;G6j`0nDaNn;uOd8cSq#Q2}8h<+Tn#9~G zd4bYglQ9u|GtNpX`-d-Oc^~jX^YzPg+fjyBN@NR+s@AP~RfEQ3^i~80jA3|XnDUr` zXND=Yu5Cac8t0a5h=FLI(A+{4Ne%@0bQYbfmbn_UG;*wOB~K7)IM81e-}QS=por^; zf&ZNN5#DE4xsXWsLfMeDZJG14?h6eiHBFLj3r`kZYgGF5H(dyOhZLMpd6_A&h8PCK zp{Iud$ds?x>3#Y8B#J~xea5l~<-n5ri3{3$mV|PQ0~jP?%kr2Rss)z&sm~hr@}0{b zBKe#qNi(`#;hlTxy+3YvM%n7(1wnqekihcThF*W zPuji4P(Bn&9|8ykD)#TwnX#l87p^$E9wV(D`sBZCVnGXO-1~vHRp!}x!Y{3o+1&ns zR+=I)0eG-&1n!ql@NnXbiXj4NkYt$L@A0Hp0z?)Ha;ONi#9q{!#HDwD4GTh7m?DtS z&j2$>9HDNqM^EKBb`7BHzv4p|)VOVeFq5!RL6aD?IInZBj}NO@H-_j3wdFA;IS@}Q zb_p7_N5oqS37z50lpp<+1ik!*-oly5M~E12?vI`^J8(q544RM`Ovb}vg@K-EGXkZU zLe-Zs5G1N|n0K~>hO;RL|{oP4{VW1MiGdi+1{jv#-+j$-Fkwj2 zw`%j><@%0qse;B3075?tOmM+#4JQlCru$>Xxk9~wk|FwSA|N1y8rX-<(35^wCTHs? zdCjLqD;*36YY_npT`a0lwAKZpXN^LQ9v`aTeLj;LG%{S&8=)D2%PTzvXaqS}kTN%r z$Vu=FelbB5Q5W=Mb6&xTa>X$3k73tyMpp!J!4#v!Wgoe{?uG+b!$8h0x)ztvw^N3$Dm+#$JtqWGbsWSlL&|x z=>y7Wz;thqTh$0kdOqj9VEs{D2QccXdPN4nJjPW5LEn&O8Vo=|G^UTvqs@(WS+%p( zKyqzn%&DwV4`Q*zK;4-%=(m0h%mScV1-t{fT*oHN6zAf{Vu(ebF5M-yoxCd%-HQVe zR)oW$GVY*(a8#p)Dq~z^j!4`#Q52X<&}f9DAc5IH!DM4X)6v8N*d10Y@LVB=>^QR{ zk4S;H$DNS)59LeHp^!A!*`fZO!`mhzfDxCQ6~vAC<2s#!MBTWF^YR{jQvqlC5T%}) zl{|TvmO*`+P@)3Rs zR3tj$yPoCe&We95?cIDO`kw+oLGf^m=`SF%1{fwQG%C5Jag}Yu1xPfuk4Y;C&HvOeFoj_~_=muLhxM)BVjXdu7jau-)00o+LBatS zur|Oh6H#aZ_7gXbndh{d68%9>3lMnnFhEF~sO*Q}GdAxxw5$@_KKaR^6x>@cjN9#^w-xDkj5EE$P z!2u3R@YUfyQ{#_xJ)rYDjQdq-kX8Sp*ZUs5i#p}ZsOOkal`{*9*%*HV9n6nrq0qW( z)Vr~lQP=T=#+QVV-tN)GRCxyShbRJg>wsTQw!H1eXQ@Q@vE6fQ=y@+kQVelF;^IY9 z$8$EEYDdZ#AWi`sCzf~AO8)+HcC;IBosjF!^Kzbk0gFffx)(w6hUB<_enGM>_&baSatN96@{Ls{!ImN`^tQrIV$gOl1F3m_zdfDeNe`>7GccGc)$J{ej%R;wKaxF>2!uwRcC%t?H{d~m_*Zm3-^0nr!mR*oC#wWO5;YiZ04`NI=rN}6 zM7V21KdnC!m4hybgs|a6?eg?lB}Hi8KLZj0wy5Cksc<#78m<0tHb+u$_yDTrUY3G2 zOH`xSbf*Y>RV0wY0&)}5EC|V{yz@XG(?0!u0j&LhMre`gmuE!|b zSJHVpF`*Nf*xCRAFG{E%0HOlN>L1eBu6R+x?yr*i&3J&^>-lo%5N-{gZwDmkDpG?e z6zi(XGY$ZCgL4bApqbQMNv&Ew*JgYR_!SQQnnw6d7;3iDOr z)q{{g6`4Z|T*n)*Kq}m|L=w}jQJW}K{rI`=a12`^u zAOQWNMW|XS2a6$F6VW##mQ8xV!6!8)uxnunSO@V3VaO@JP;9n`o&ZzsEm1pxxN zaH0YLeghfz_hGyw0MQFL__j;4V!X--=+0Qs_yHF!dWL?T97~Nl6)JW?x14DM@S&j} zUce*A1zu4;CGH42_8e<$#BMsRm7zf=ldA{UFiASXQMN7dW&;|fwD2dKD)@25ZxjIl z02~AT1OPNc0{(^&q9g@sXm_rJKc7C+@cFAT2_187h&)g&#MRNjGSVa~;C|JBNe0DY z#++7Y!d3xA8EC_CB{=(xcx1m}l8s^7e$(Qu5-(=qd@|c^>@N*u1Ykl#FH*4FXQTY> zz-jXWY6X}Yu*hzl!OL}=i!-gXeeF(IoEizku{nT5n+ZPv?$eC}$cSQj|C3WQm5(Zr;uko+lH<$9*Asg)+1QxIY1c0YEGXK$J9aehyRpsv&|DqRKso z%z*?`j*;DRJ%QC=s$e}U4p)PLgCxqLSb5n@=U!^g={G~%ldxJt0XRQ&f@Vb>nMX1$ zBhmZwOg(};70aey16z2$it>%{RD!N%5&Q+X<*zar3a|bP(Z-Lcl&VDyLs+oiBq+=m z8;AaW;KEUX11sR<63t|O+7HNR7H8cw2bBQrD2E7$Uq_aiIj2axa$rLoA!2Nj2x0{* z(6oDf(G|{g$N1JcPS1MbJM3+H1zxZLGk94U!>z>qUe_aso8lHcXy5#WS;(;iqhLJ` zrvd;{(LYy|7jA0AXDhiv(4em6xoaBi3qx5_u4e83X{@M@RW4eZDxI zkwyrERHITi-T?1pR%=+vt2oIenwsrHF=PfXy#`|=q8-pJa}|-zO2#e0k*x<>#uc(0?7(6 z-}D;z!`5q6bWre{$Wkk~tm8yIM!vb)uofl6k;J%*iqM-e%D5xK$SwlikjP;daZ+o> zY4;!AL_cdy;0ke7yT&C5Vu?m@q66-Ji1X5jORRSS1reNCSe9eU4)LoMdeNumks5YF z#OT6Hji{iG_1p#SxpYoJJ#Jj&;H+$V+W}fA*lsg5ZVQG%+h9>f*Mg*?Q z8vY>+@(+gR6G?Q4h5v7jv<^nJh($cTP3E$OF2a1GY)+nUPA#@Wxw(c{wnLJzO>k&T z>tc>OvV&i?-4+~b;@j9nu()(KpPJJ{TQ*^Wn2@HS@U@^)Ako5~_HH5F-f?eGpewdpf(Cs{E^@AKRv_|P_G1A-BKZgypb?!07_M=+@%bfyt}S!-7tAl-im z9{B#-wl(eokl+=FZx$o~z#y#%WoZDhWPyxTb|`Fi+Jn~^L%?Pd`%QdS!t8qv);6EL zZEV;r1K?2(bXH!JmUcEa=!;wS^p;NGqu~gfKj}8YBZrD|`@IWTOg@pO6)@{V8+1vl zdxDX>KE!Rr)|21L0gnFq*y1hjK+p|L@i5zpNFNxC;RJzB;YUUyPQ5{>Q*Q+4G04aO zOCJ`YH+!sC5W!zz787|KduaAy(Jt-+6cd6-%dq=-zWL$sSWo*TTI(b+YvO< zx>bbX1;POx;qPIgvTfmNlu^D=h@V81J^aj0J0j)+p-%27PynKE15(37rxQYFz|NFO zq0<*&Q52De8#c}PSlM1DWcxM)wfa8!x|#i7j@3=+VStg z`#!?hAYy#+B)7~i{vVbd-07U%@+SWhy)zzuE`KA>j3pdnl;6dh9qV;$f&{M8Tp|qR zkHbd@Lbf414G7+(D^)FoDm#L=1A(`6#nZpfD}i7FToW-Mc*pkfKY{o=K!gO@oT-seX@^MBu5Covj$NU6mpug9uLNG+@Tq{bF05F!5v+m; zA^{L{|GwS`LWb}icf*=a9o7KW4|$3o=$_2By2wB5dw+VjqT|0YhDJFu?ioPg>#rj` z?<3ebL&-TqNjgINKcg3pWBzD_ju=8mA4DUMphZ`#jsa=6L-j60>5}dY6Ym(3yy>@r zMp51dTcHM9cXVTShL?Aymp~duAKkakG-IK(+CCBj);etn9!5{nb`V|tExMa>z0Fwp z@FySqpgRx2$G9%gVeN8s>-rJIy$o`Bw=W>?yKeLAD&6O8#=fM$JNg-f%qR#QuYX&H z2qt`IOunTY>GqVuo%#NnC)y_>^NJOIg@Ouf@xnpxVOQXzC>99>rQ10*zEeDSA2|Q>{wvs@^7uYQ+&})Me-g#-rI{Z9?&LYzy7E8)UrXZ9wP)WAGVg_-Xm-=L{jj`mOWgKc`~bfW&7YChbS= zBoKEJV$t_;X~x;9JeZ~5ho}DxwY2oOSPxnq^AF*UoJ;kpV);?o^QkON^E!C)sCmi&6@u z5^&Lw5G)=}l5lfcM+Z0v8JKXTH0(T>mBPp&ay82sP%TD2$BXE!y`vd=l{6xJVOHF^ z64e+yD#c;wH!kI}phoMvs#=rT3iorhS|ibVlXk^0ef-t>mR60wO-d7snXC#aUMC)G zsw71!tT)GBm&{c@1!JH{+m6N2)20XrMF{r1P2xu`cj3NlQkAi65o`=BwX7>`HWeq# z>ui>N`KsPWMsvj@yG@u@pnbn1hzV z>R7elG<>mdf*6RW!wm&^!n~AWVM4S*JH(0xDhm`;He)z^?cY3bqnRS_;{@yWk)EaC6dSfo!aF2NL6ZI%_vG!NfdXYM@ts)6tR zGZi1>p9o2YL~i6T$_`6Ed(~EdFwy{qp*&1aSc(7B(kfzQG233dYmover}`q-%m1{K z<71EwxYY9F-RISuvH|RUN4JC%n<9s{sMVqxKK(L>3T%Db91DJjin2$c?Byi3(AZ=3 z;*?5C4T4}+&Wdtkr6*>}%c2V(M75H!hz){vu&INSy*=vsxOk^^&HD~rU%w!^k5Gb`<4IJNz^}Rhlb*a7DeJbB3|;#yNjvb#Ad&CGR{2pA4d1}G zu5o9dD!GXYRNk`%`BgjxZ9mL#d}S33eEtsk<|z^Jbjt*uz!=^p51$WPD5h!ctx5Th131O6&A32zc+E4Me*tLK%!SPMjqs-UHogdgFB^e;pJqMXjiAUd)J===(UX^ z24dEQ0WS}iG?fqEqb>>y*Zi*(MDC!mK@{=F+>&5HicwkHkE~}GQ(#QCSiu>__czzF z=&+HI|Jv+;XJLD|gTJ55U28sIkK7via-FU&`dpQIyNt3H5-d>^-N%(2SCVYH z@p^-5dNZbR($lHX7#L`>^Jg%6j5Xgq>_hHBr3Iz1f;oSD?yBWFv*fsSTWt#7x9!TT zmnHT#vng*%4hfhfCawO$FM>-6yP%C)BZ)F#UUev@8V zk|E=+Qu(^=CWkBS-J_ODNwFkOAf3!1?NkH}ws3RdKM!`PBfn9$w%Nd6`$!Qb`)6jL zZ&@=kMWWBUMxL#__DWi_dNyN7brvs>%8ab|KDn&=I)Ld&H72` z&F7>GuM#|OPMzERNn;(Mw5Pr14Bsmiz00l(@>;6y+<(*H%cB(`QT^XjjZE8_kF~2^3UbK7Nz`9}e!rEaljCv`Bv-jMR>1aKuYOb+} z??Sv5DShc*Q@otVZ>uU{RErQt<_9`E%{%74%^^r@Dn1*&SzHKQO^s&5Jb_Mit^fT! zor;iU6*Z*X&N&sT5m&N0*G0;HRZH)@K-wtzPK*Q)cp*{GSu~Lb##Rm@g}`3!qHic0 zrMr=g-syvV{=Gk@AH|Xy#zX{(foiX^=jJN;m4%cQa1BkBGn1nu930Z)=KobujwtiG zD6duTNdz?1p>(hOjQ=hZ7SD+@vkS$%)a&Os%KF$AO#c@DWUD>Wp}i;1F1eh0>0-5^ zlq-@;mxpG8<9*s>h3Ls%4y_dzlDsBbi6xwidY!vD3ugDz+Pdz;!4HSd0RM0cNeU+` zLFp@W@sgYG4xY8AjaP|^j5%Sd`mxcpTS-@XU8U$>lask$g4;DuK|tp(vCNW#J;7Yw zom^Y*^7ZFa$W;j!+w7DHAC{~fzE_dv8V4?ltdRAc1r3bN)9!Y-9_G2{p}s4j*x469 z9XzSaQLVJPjyGJhO>lXJ8)e^I^mKKJS0tpl{Mh_Y`o^`@uMp7*2i(+$hcaYt2=(;6z}CUo8~*ezuYRqDK>rHG6xB4KcC>p*7fIx=y?!|&$lQlxY4Ela-chiCi!J={oLlUJvP0qYh+VGz|gO1d%EElE~xI7*Z{jNv31O=t}yX$3R~Carh)PvvT>@XM<%S%6-#!q1lPxO@@CPOPjzqW}yuD zSd{-@^JUql6`x_^F&hgT#&riekA}vmlY&yR0+f3KI+%}jxG6`4d=`w_`1$zc?v7;A zIx|X=$uDM=IA`ha=d`omYwBD~no5Pc*6+ycR@Vk7?j`f5gtG1>*S^^o;^@#}15M{N zwuy9-VnmmxSGN47K2psw)B?BIWcBp0(=POwetcd?I5Bm8+ySlb#Q!#UjQPqa^-fA@ z9S~xo_n(|G33Fs_!)K<47`&VQEr84RHJ>q40QIK>bCQf~2Ati_DTC_`D$F|ObnN-F zY(~C-1os8Hxa6HyJqtEv3%|x9`54mtYnr5fCJqup#`9PFcSSzdluv9ZCN;@Ls7=l~ zX(+oGXq1cB&v)J3_jqyWo89xUnb+=*ncZcJ7SrFhQZcObGLv4Q-jXWgqW^8L{m|C_ zOC_mfBDuOtcDN!(f~LrfSlbvb?qM&lcN%x*|BX{!kCS54Q@*fRc9>fIT57(TtZ!ov z`$W8gk6;{GQI=h`T>Gmk2eKkbpVN+D9LswxPw>%Kr~s;%o0VrV^O*(ck;P2C7dMcl zR%VXxV)`2UT^HX9#vGZZTmc*Nv`PwVe;R=qkoiz`7nS@`rItzmRIjSmGVN;~0r$Hk zQHvV?ph&6VK&j(H?>b`Q8)>0Ho#EP=OIh`8 zqjGDvcik$IRZEz|c#%nJaU1gGs9JJ^MVK64kz)&gTF8vUrw{+zzGbt!tSmQI$> zoxY>dn{Be(khz7oAylDEloOAeu8Tz%$;LEwN7fE32d|F+*j5&8R1k9p=>!YQJ33h$ zG_j{iA^C+^iyU8>^H|o>ON_%q?ieApPtbSppzw-+4psKD$t<)LNuH8ldysiwx(l<| zkq#hVw>I!7+(~%Ir|#lx$+h{Q{IbxnM4LQsM$_Cy|D9J`-cf6A9vM6GE|_)YR!$in2MMx9nFdpNQ`=zKi&lsQ~o1Q%~?#UJ8)}dIST%c zCv_5QVQ)#!o@8^#3NG*2bsSoy|3JVyU^C*-#_d1CqYXX`ph(LrC*H(2oW zA#c!n%h%A#l!T-AqU5DBJ9;PMTffdJ9_?19PygGEv*4M0h~W?}e)F0om_A20$A0QH z_e2v@ha}BZ3}26h#k0QD@C;@i9mkRfD!sW=PT`Fef^(Z>r)LAFi}a(yHv~+pwqspv zD-SiB8BW7y7U^{r^pQ+6)XwdX`bNx!ae1g}#ogNW-K24PmtE@0x!t4vfY*Cw^ycUl z=_0K9vuas{bqD>sLLbuEL!NBJs)E^>rZU%OBlD}*Hem<0(m3pw4=$V30!tlS8V>vF zhklfe|1%Z4(&EJk4Gzx?2NLab4)*F zWZyj4*9{T{S}-oQ+5cd6naSC$?mIhG9Q`@zBv{GC?&1=yOh4!2ke0&zYBi~J?pZY?_T2=fFZ666uhYN6F z&PUPUF%9{0(m^3YU;SXh!HZPiF_BZV32 zNNn8o>1kP9M}8h==kJNrcuEHGzxGo~AR2MU@L!2+AZ_t$5kEK_T#P@ux5ISksXO*9;`ijWZ?4z*Po2B_rSC ze^S5s^v~_HiA6GpQu8`tp3KYdP0sxF4)#AQp#K=LIJ|Bu>2ogJ)h(Jl|6P1~aJ0Hx z87FCdkx$Fi?P$&I2Cw>|#sRUgQ|02n)B$NS|Z6AO5qC|_b8G5+0fa28u& z<@B zK3TDJq;chL$pu?o%oN`jD>p1;p6xXy2%$n*oL6~qM{QGL`9&7W*}K8qgl8f&HM8`h z9253C9xm8AO>f67-ZO8zo2N5I>PHoMOO!f1wpkdZUKsKC>c_DB;oEge^nLxw2PWd% zM&RH`Te5N&C~FJtLsxinbbC2q}X@Ftg6}F{O+$T5BJ#^@vN7fS+*yp^*Y{` z_ZLj}9po}mdVVj+-&pf#D&un3^_mT|%2FsZ9=h?Q>?{$9uo89&KL#nwqv6Ygn$W*y#gCx|(q9TS&{Re>IpjOL`WxRaM`` zUjF`}W%4GlOnlG5d7ij&>*y)lEG!nr^rB8wqe@z(N>ZmxPO(*7IaSCcSNR1(5sffd<|tcdYS?FJSZAr( zXQLk|JEXrxBMi>XRZ z9ozl9Is$Dw98EecUN31H4C@&z>+6iGTaW6a9R}NFBbO;->ti$LB}~y2h4uhX(j)z0Co>H-)T8WWLg{fAJjbWv^R+Ft>hmCp}nqu&>?R2-T zaeVvP(`3%wWFpYeJth!tiJuP4uh}7T8P`=e<_B&5bOU?3|Ynz2_}(IwozF& zu^Ap|W!4|6?9P*Z}`JCQ4Sl^1K7-Hws5*||0XUg(^me-=X zY98Cr4nq^Fx%{%eda*q>b2usTb5Y)xs^X=d?zM)>>DIdap-)>Aor|*#U-z4r(G3WgKaY=o9v=Vv ze)@BN|KG{}zr&M%XQz+1d;e}O{{1~f{kZv`0>i_flZ)$vvo$oo@Ee;}rJ-OT3`$C# z`~QSrp#1-WUs(I!_=T(gBfrr6|0ch1{XhAIog+x!%qP^ZzYhxs|2ux+a}=ZF|KJxS z@BdHy0^t8&{K94D9XCvJdU6(Fwm%Z)_>O6ga+ZOmz{>v{Y{Fh(&{$GBfx<2Q> z{KA8pllvR&8Nch1XL1_+ql}lVb)%ROP99oMmI9le|EO`&`Eu!^F*Et}($Z6wuUms; z@?`Gpb`tL~NI>RKhnJ_U%ASVjtUT(>>-j6(T=zIFf%y8FJJwc0IW^oVj|DjfnbsJQ zPj3k2#5||GmtH?pC!AASYJD~5#epw2`!BlE)zwCc^0=h+|d zj+1azXr;${slV@OqD%yYvvc2M0%PXrfobkf< z`RUpgj-B+~!g-(&Gb6@lPx-b1I~zA7>~C9SA_03m(^vGo)3Z_qO!oxG;`!MNHM_z7 z!gHT*Z)T+p?wQ7SKDe@&B(2yjvn_K8L>y!@5uzOJo|m=G$f;P4{f;y!pW1m2KS*XI zwQcER$>9iiKw6L%s?c*eTzlUOG6$X(4)cb%Yj{qWQ_N(QaZEoC*feCKAxu~14;hW~ zd@;AaoApU15{Kc6F)#4y_$AL2euUZH)LPx!G1=sqSOq6mI;^PvWybjAl$v=`>rr|p z8)03s79{o4d8wx%!YcN|=D{-lU*3G47QuBoK<+0uzpi_o(W7n&CB_i(&mzgJXkiJ2 zVo&OCOh$hrJv938c2a(UCFzmL=4rXoc=zn2@BI4wc2V}!>iIQ#w#`C35K3rF;F-HS zzlkm}pALW}1n0gOpA-D0?zJeG|I@rw*3b_nLYN<)6045Ac-r}DbjLFt>yed8578Ok zhQ8`eTk@PnwJ+_5dr@Q!>-&6Y==?!q-<=dl+t66gmQs~c0;pUfB7WQRMW||i+s5?A zs!M9~)A~T;7k!r&f*H4^jK+Htg|~-qMXs<4Jy3y2-M+C;m^L2_kc*p`0%Zw;iVa~v z4A~q_pTR)|t8k$jx*P7Kp(jB$^SZ3&M2<=f|E@}7xRw`*L^;KU(uO-&1_wl99%6Ag!5rCLt(|_UZ2dC%UG{jKBNb?~luM*qhSZ*M}dl zmp+?J$39Tg+7!$CX=(9$YJ@n5{jK_q;`O|xgWaYbit~h*5%HDgP2J4#l6Fo9ijA%N zjJM-~bKbAflB91rtxOZ#&nipX_H1U(iE!1X#L{les#&#V$&I}#9zNL}S?T1( z7geNJb9@j~o?)6N)xI;%9)`rC zbRe%f2yN6*0}8KF!sH&xo|+3Qj9GaN`*N<^!ku+|xt|h$KhSdZemj2z=Weo_QY48K z5BX6VKq+C5_rj~5BXoSGP>L5>YwHe>W+xe zW++1Q9)SevT6M6RWii?>N8&X`&hJDz`$d#9M|nzw?^#6IL!+t-qpZfF)^?)wB!s6~ zqV-gw3N4~FqNAgVq7~5mLi}ztA2eEoIfhatX3sn((=IZn;%Sy0Ro*fD;}~V39lW@M zvh+A6H!GIOGdA=(q=r)9=of1PW!!h+I2E0^HUs_+O4hE9xUIQ3shha|3cgKoJ~Y3u z;PGJ!%`e>ZPD=2g`Gs-j57f`&Ni5^}5b-M#3iD&}pNitGFcNTC5*Tjc_w9JTE^{Ae zB{Vc8l+PtxRB&HWa-;c$5{m>1kHnzY5WhIyjyi|LIMR- z0~u2Ti69avDs-!Ns>}&k?sqCWE$#qFbD2$b(T1R7y<4;R>$7S9;TOj7w;0p6wA0`G zPMe;^XQU#aQcVgPklnB(!4-8_EK2bjNb!G7C}0mMEr7b5WRy1i2NLko&h##qasN!^~;&fnR_f#T# zv2&BQGeQB-5&zt=nB4abxxq=fUw%VE`XM$ju!nY@M}MkJOsa!hoeQ}E97pHDH9ppK`qoS6Za(ut$cmR;i{sp}; z$i!J_yc;qWj>O9;=#$JH`kg@@P)PZZ(VJc9(V0vCP{>GK#N3tZvkkU)E8+~u;_fP< zZz$q^08+vrLqxbDQh1-;iW{}@8U>3*R*U5xie-)PFe?d6C6i7Yk|~o#F1OQ(8>Qy; z3IB|LGzS%osnFiT@w~1et(~PN4#=ebf>!^6CaN-sTA4*a8KeqX#)wRxEwg)oHrkg# zPRklQ%TndbQ(@))Xlwxn4S6VspO%LTR)iZ>M54nfvk*@~$RdghBEbdmY=FdlsfgpQ zObw`9G=vn$<2B4y4qsIk;8Ya|R+Si470gyvP~!}3I5(GRD8un= zuOP_{)ycD^W&ubKHKZGN%}{KacU5^)Wtq=vSvsu7!U1P2w%lp8#?}Z)5>ShMnn6%i zxYh*?6NH8n)rD(ABjnLd)X+_wx~;CdvxnN<2Z+}!*io?F5s)R=2^P#Q;y*2N+6Fqo zA^t=SXb}XHrvc24Y^_p31DBs+5QZzTw_B#KA%u3K@qJPuc@C6{ zyNN;#J8c%(cUnCdTidFNT@Gt%9_^>q4Ds#`0W{i+R8?Tq8%w-hgQS3k6^3O~Vxys*!75zI%dfxTuSk;bW!$PTe_ zNUVBlv|~reDI^q7!-ZS!@c=D{|Oo?T*S>{+HPaI5+g)S@cHw^+d)K_R*33P@qf7C{lm#ZUsk>Po_Q&q zd=Z$%cm)i}{`63t`Aiie?_YnL10D}7dT9vVKJA9)_T%*Q#}(8rbs>?)U7gqiPl9lg zrj!ltyNp12|PGl_?4DCom?Eq|eQ~??{^1Yi(F_63i1@|GOK^2mrlV2iptgyTH(& zF#1hLa{{dvG9y+pBcfF3_CjbJW2<@~)M>Kibs*IBWW)=vED?rNiX0W-ZT7_(Dy3!p$rEdijQ~o{66Ii9WoB006{(78tEM zIqZ}bPL<4k+QU%=Hhh5WtJO`MKxTQ{m>i~<9s1+s$5&%<;*+|&stekr2cv_=J{y%C z($<8^G|L(fx^Ry@uWp`FD{rUjRibTVCLyrbhL$omrF^K15rkeDLB9Qk*r-Ds;lNO1 z$Vfjv;zuGV=BbW@%V)Q$iq%T;;IGuORn+*nNHx3&dB}$9NW4*Ie83#F`qVe4+)x-a zdKSu0S0Q{}9*rWZh~Dlxl^Ht>Dk$gak~3|la~ku^>8hY9kB80NCFj_M4v!>Pa|AX^ zN;j8Xl}2jk!UZ$yCGkeI@vU0$C4o6GIx%m{2`QWsIVn6bBRsp_MW?C7k4DgGo?b@A z-ru-cB$ZjTSHL+W*oAQpOR5NtzZ}+8NO4*~W`rKO$8r8$K=BuZN$O_arcG~hwxu`Rg zej6_b#Yd$UOukjCvRME|qdJ1s^W{X?{Eh?B@|oV+(8dNCfFWTG4*8}V#3-;b(;@S3 zd}=~>g{?ef-vMt^+w-=c@MrHT!F95peKryO4vE|jks1D%ZMgM*e_cjxFKOQ z9Y3UYZ%;F^gTe1NAmH9My0u*&E|7bib~YU|>7T@U|1!ne`DA?TL!%Q4$wuvn5)jNE}m5-i|%eSS;K$j;gCeBjidX^G9fM15{iU0z=iL zZ)i{4ZvfFW$!OO=iVKc_Mwg-^GIAFE%S0cv!T#Fq7UAwN$RW^)T}mp^y& zY-|}?SBd3oqumD60U&p^E+${`69`VEOvk1|PD-vaN&%@CG@vn}=XeQ@nrdDZa!?`K z+$Xdx<=RN%hn6+oS+9Pu4-sffFl9X5M9Mq#^XoI9$62HKzE=`7IDhnr7db|K{!F?y z9X1fpn98(08&3dD>K}Egn)jBvNtMT`>Vw8eZ`*4_wuqET>2w(xa&+GjRO5J|0P5d|gqU6_s{f{=f#|<-))ltIxx3o!;rwG$nc-|v2cGS;D zJ|~k}J>>+yg|e}3`jUUT##@x^bL{{)nlPPuStZuef}KsVD8bml!;swxa#yb5Bs`DD zaw3P&J!j+BKM=Op`!AnY-x2ssEpkMAXQuYXLUtqE(*UlQOuYtxVMI?A)T9KLCyzHx!~F~jRwS0MZymlAj&-z04 z%U$Oxv~u+VA-xY8%#58hpYRuTelzQ^WKp(vsJ79rgO{`%sleyTTOzvsAS}W4D;?R$ z61jVtzU3;9FL9bCrpJyGS(`~C#pWl@)7%1&p=>?h*FsNq=1)EeF1x=U73~`ZYz1D= zNVx3GmTq@ZB2f{Ku89{k-f>FDH6+`(br2B-!iO&pQs^7`j563eq@=nIE7a4r2ErH! z|8X|XW2fn>t82nVyDKQS=$&~)nTv4rC=dxG zXRkm40TyP?1%yS+n_x@}j0DtC3l-2JeD|i`f1+}Oc8O$qaS(N#l zo~SymiSga=vPvGK{00|k_rViFG-S5imztl23hwf)aAVH~9J5;mg@Msdt9JYak*JQ? zYuZ_DiJ4*@RtrQXUTr0`Mq$_C!8RI$kzwPcbS@c&)DtZ$ga9lD}!w+a*Wacv-He zE@~&s^Pfu9S-s$iI15rJ5=BEJzU<6e{I+7bG@#^Rk6ZQgM^!9jgwhuIksOJ#qwyPx zI>(j!2y1N4_7PWmHjye{JnUHfTb?E%+B`*OviG#yTXsv7%jY9mX$uvztbwfC;7vbS z=i%&oq3GAd73xL6x{mi4pd3@wU0)upKWmc=BnbroMt=R%(53k z`(6zUV8*{ZC)b(f3Q|1AaZzqW*gBBQXgG3#E$Gz;N{1+2lynxe6CztjZ~Qbr)^m2_ z$ad=FYvgb(_t9XXVa4DFNw^Vqu}Trh9qWGzu5p>I8G!1CKD5~C{Lg=2Ftd^YJ?zY7a)YcBZ7--YlS2LUL? zQ6x8K0pRgy)^EneZqFX1QA=V$OtUBmD>91SGn#4Va0MP0oEfY!n|ST^5s}-KNy>wB zp+*uGng^4p9k&=YtvK%jtPnFT7K2=PWVa}Q$P2H?QZiWXL?!?}bdW`PrtJ&%DK$+>KTl2|orW^WGy_mCu?#}^ z94Eo1p>5ge&((GR)`iYI8BoIx^ph0>w89ZbcA{w3lB?Uk7^YLppolgF9YMS}kn`F$ zySjEEX7q^UIPN5zbR2U__#MbJImQ6^z)InAQ!mRI{0w>TnH%=q+b}(VrSQebO_?a- zGh##~xFDt7EE7X(CIF!_*oU_RN06%e-W|FfXF zg;CQp$@*wxz9P)8HsH55nrHY}Qfb2nFDBYNc3g1)HNEHUupsZ@tyE1?#wMAN zQzV1Z#1R05kszWmyTaOh-Q+*W*F8~TuGvWe~=1&R3)|gw%lQa6{ z-^KQzs{U~E5Q~?ly~tgf#6J9%pJDb%yLzAfH{HD_MDjq80+!WR*poDsI2~;kH=iOw zE<2$N1h0t}6PW>SeHTpeN)#_T;f48qmIJ^qvU7#(oapvWzv#(x&leKDS{0Q%55vc> zwk4uEMbP809j<9+G?3T=kPe<1o&^ed%ND)^023r|Mv{X(>Av3fSE1}X!2o@sWF_Cd z_mJOzO1rPC8=t$V^oGo_cew^@Q&`@&0|2T}wXZi1fFAbXP+n!;HZ4jH7!F8_s)2$r z7@bsy8yox2@L!%#!ez!md`oB$_FXj9w`@qBD{nuIO+hrvA2j^qFPD*)G;=rx&>!A4 zvi%KY7;aC)Gu~DCPRP+&1_yjIg@S-lQ93xI?MWkq-mh-}plHX$X8}P0bI}xG7@Mr( z&ydNrX>orcBBoAP9CEM#0D|LyLizW0vAx8)Id(MXYHrbvLdigG!cN1!)A`dU$Ij&3 z-b`8#D{yg5|fg=`t@G;=jq(r@>X5=5Qf>Ti5GNaz(9AJK|)Iv0LiH9 ze(l8Qm?C79;OJ)H$M;06ZJ8J%J<|J+ouiqIL}t4U9e;Tx60tu|Jldua1pu2-Gy`K` zo~Im0Y_IiMeTLmvV@GBmyA#)4vv@)2mZ(M=qikkIZh(>)srtO^avMD1E#Dp6lny^v zAmQsNNmnU63P6pDzsrJ4G{}4_0H42*^v#c};sSUkwE)L&u)b|{h*ml?Chk(XqIBzbz*qXaPtF$CReEq0md}Cpz zc%=3zA`dkeZywwO;sxwxV+8M4(szL^@ijMEn`w(vPvi%OsZ_4I62iw}*M4@x)QnN( zZPn-r06ilcc)Upm8|PfZdfgjK$qzecsx0Df3bPxgKa}9F$CPjP_~8=1$hDz461_QI zI*S5HE)*V=Ve&lcp1UlO6tJCSx9qfiJvU6@Gw zDCZraTF*Dx25)jz2Rm|7qiUd3ywc>NHG%;EdBVjmnZC`p3g~8tj%$=5MmWWv!%y(G za~UplzY3g)p+!ekWnt!%h1L8c zTHmaKI=Iv^`faYO_Dk06QbRht0pbtTbLm8X-=3?~@ z2mHqS%0_e(YIIl0vVZHOFDOG-NHKso08Mb5*HV0>1{=rQW_m_ZeMX3mS#P)~SE4FS zpaG(Z3g#nMQ&k8c$_GpykC-FJxcT{2CWQ4@B_HQMiLnzhyjL#5n|Z| zUOn!2SOw3^z9HF}$r{(c`jdgIB=MDrf&wr)OJH-rknbTBJviof5gV~{kGeU|Sx}gy z(O@pWhB+D2E!PS$i{je?KfYAH-XAHZZEU9voCowU`Cwt=MF7&SY8z%zO9TXMHoaTS z$uJAH?0O9rpb=*4;H$?VHI-&a7Fe zWN(5#0s!m9(3wS%5<2U{SKr*?+heP#cX`UnCN#EmroS=2NRe`xEC|boWYAz{mcbU8 zkdP(9%t9RXY^=3pHT?xg!UU^IiL|Qj!j#!UE?Ufs@Fsw71Pf%*Pt8Wq##Pm0sO*LT zIVK{q+^phavB-E~U{C53`wN2Cj|guDz*T^8!^K zDkMhC#yi_Z8SaC1W@CMI-l8w`Mk3%P_b8q@!4-Zjdp^16nFPq66Rh$W?R0<#pc1T? z;;b|v*L;WT_xG*&2rCM%5Gx$SWPe2r5wm+`A%FsL=STA;Mt}B-doT{!zPDl3ykS)X zdDtB9nYdaVx8m6q?}1zGSB#=^jhE6vEHGyuX2uudLx*9!|$n!C~ogj=f(p7QOLPV!268{hyBUFzuFcx_$ts0WXuFI5oYo7qq?iUc13=D`OHJE)8WP;kQM8| zsS(ZH?7@VI8hZ4#w>G5w!cZU$PhC9A{;>H!bXLg4p;- z7k?~d>(97bNyy%vzi3#%79Sl{@_4ll#8-~4e~3R=eHL$>=yIKKzRwGYd4P+v%8x&G zO7O>e-B&wUwsALldfHmu<;zMoPf_hCvDtAcjh zQq$3=(;y)`pY!u*5qvb4X!NhDAHSxfWxRcaFb*e8KQ0G;5Ee`RKo12qqJKF%T>p*! z-)uW~39Uyxko+StBJBM7sKLC$?Z{nf`&OKPie5tF^=Nr*Nb~|iPOMU|v z8_Y3p-Z38~)V3Mw$?G-m{mG?s_UDwQv~FTB&iXOV`kMA4!P6j)1{KACieg=Y*y7`? z3|vI9Af?eG!c*Xe0chYnitRA!2H=z(ajMJ!;$S>g`2ie&p5CK8MX8^vzyg%=0+e1k z$aikDEdk|CK%BRumEK1S9imT^qPda2f-*Zo$nE_&D^C;zuO>TX(ugPu166HBZ9BhZ*~m8U3?6KB({6&(NTs z;RzlguYQL8{E2z~Gw8-e1ZD7JpPx){&(NTt>+bWPy*w9@Ge6^=2ZzrDan=wZ`skz^ z-?}>kv|j{;-M)A!>^T;BPMCh!s|4{UZtx-9^Yk{vaBwgJ9ez=W{ffzHt;wZj#Jdb+W31q>6UcCqtYzB5^91W@enZ9w>{V6E^ z&PB+N;2?%*fAyeg-qWSL2$i3qjUO*p$F8o|K3u8fU9CNjSh)^ee;J{=_f=iw@5-&P z0VoJ58maUu;@&k-`TB}5xxj&rT+fTxrwrTr;ji=R68XV_bI;+7B1q|}5B%|l3VV#1 z%eC1aKp#wWe3f)x7&3u*q{*2ITXj`vM1hw6@{Dac0@0v1zjgZg?(h#$k_-EdZC)>^l-5zrI{RH@&(F;q zfxmw)fBsNU4(|@wX{@FW`36~x31My7du|Q<%V2B+B4IStr=E+=*GfK{HH@HJ{8?fT zggU)5J?u}Q2@Rzoz1ERgI;TG1!Yi$XsAmtW~80 z7F39pE-KIn9`hwLu>#&4zmH4_o7c)#O6InAZv>vs=Ta-G?}VxHz058QTpznp>^qTk z<1VH9o26KlCt{BCZ@Y(m^$$+BQ>wc9rg zPciIKHw+!tk%`}@XQGl>xLl%O*~Hamy`vj-ONhT)VB=>z zO85TW;QOQvGi-clak)XA8+(TimF2qvhO_ohImBnDpNcn=S-e%VNy3DCKG*dM_r7`R zQQRukJ@(b$`vXfKdoP>cuJ#9n`2|1bLNK}yaBa!k291&z9wzs{SJe&GRuFql*Q;G? z0I{rfj3C}vZ5bHlVQG0y&6V18?FY{L_Tx>=;@OBX#ajjc2O&@T#HVGy_O&&i8e0CC zvChijnYqUjAvs6<8z3>Id)v!@&QM#i0*;M*UJBtVw^<%*`rAnCQwcd?Vm@cY98uM|$E1Z)+K-<@nLoGn^D?q8eLeyni59(JvGK_^oA z`}|qLW2MW_^|tdDqj}doF<;-_xpRFr`SSYj_oEN52tOu7-uY{jCwEQNjDe;y6XsF7 zf$Ysu6yewr>Kfc@h_*kX4+)jHxIwHZ>OGo>y3Aa9E;(#*4*Tg`@8(LTNCCa)K6P-w5Z)`--?7DKdoB3DZ0L-ZQClI zKMF1vN(z~Dau+KYaO9D!+@G{mYb(?$b{1@`)n&K$&t3iViLBRL3!UX3H_Tln__lT$ z@rZaz07ScC1dj28VvF#v~qfs;x;$rWN)d-a+sMit7@>QII^e*vg>H_ zsGHx^G8KP7&_&(&i~|MDU8O97B`rO~?&`^+!wE@?oTIy}v#wf%u12V_PPnmpm>B^T zRd?~wa1YV&2r&ur)emsDwF5W;Vni)tZ#%_Hx+H1`CYpq0>IP;z1}e5o2*uv~U#RGR zdKQ&7X_Yo%!Y+bUvAW@tyH5WzX~|P_&NKX1wGrL|^g0RZG%+?b!b$Eh+ca z<1LKi^;EJ6%;*EHY$KIo6U{suqXI|sLPzT)fA9Q2zo$MfndVyMrs|c}dL34J)lTL$ z1Yp#~uEOPZ!;g}@j8M)i#m@Is+KV4#R&I>aOd?1x3xzP zSO1qT>hw9%bw9%KFwZhB#Vo4ADyiGzDIsjh^vSGtOs;dy=_G_LK6$a>T`hs7F#!`% z9;+CS4^bZfXwhi*PYD5AxQ8X7Es5d(!j}KIqWJj4n4YJ(FEf+s8!}#Wmi0YND;&@5 ziCIcbn9oT*P0yRHE!ZKlkNut= zAKiUFzP+^g?cK!H+S=L1+MlKQi^-Y8|5Po%KP{h~tzHriW)f)8$^B37zkOXi`MS1u zL2yMU|Kp0{uebiEE4uq%S9JTID|)&Ae_YY?U%$T|{yw<=_;#$F5VrjMKVi%N?~49E zyP|ov|HBn!yRiG;uIOek!4>8Fzi~zFT?wve`TuvWXt}#j;my4gg;2A-2f^n|<xz#4PggXmjil%6i;+z^o`0^WXWoBY(SH8_ zhAp1D|8+%~9S=H-*gS3$T+w*1PVj$RQ6+*a8keU19Zd*Z@_K(vc!=11<_!5U;JwSj z{R&XO`yw64K=vLd!Q6nhZynJ7G=xyOC(=!2y0$Q~Y|(I(LDAcDG^X%SL1>(NFBYA0 zvs&T)Fq?slxa1`GAfSRz-hnRW7fW?`{02 zd=_p%uOnubp|ue+D{FHSw>@GgBX2J~6j+$q6s|0p!T;d?n!X17G_0>w>>oKJ|6_!x zN510DfqzT*OMcn8CUl6|<8{cK-;L%=lb+;77;(&$p~`OD9t5}JQ6 z=ZGmUuYMS;Z_oSQ(Z9C3;w=QE(7)oG`tf+BcKPGsXdlNrA~d{D=l6Ft8Fn_&=&b@g z{`6;A3ll}mnI(2BohReaup;Wp7Y4tv(B085q)HjPMzY8yJGkx;#LAjU;u2g+KVWb- zFPjjy1giF~i#20DEpH;imWG-Nn(lCWmRvvWy0uc8smM^VmAVG&VQn2_ySreIbvJ!3 znCz=|;BOyh71SY7Hy!+4tehpLy|1(Mh5VZFM^?*R$=~C?8Onw1><;j8pHm9?Q05!nj*Hx*?^-*5=!6h&DxYPwYx*0v~> zJ34VI2ECqIGkBVCxhC-OMBPfw@5YB=c6+-=-F%m=dXA_1A{ild?cLrUVN}c#^^BAt zA^*aDBTL$k;+)|o-QVv8=rpz85)pBK+kV{d3>2q~TUz~MXQ^sRauCom zwY9GD_&rK}l&*El%_9+*Q zLh~G5#ou=Vf0zvN9neupIsK&YgJ^)^TwFQiOZD5s)|Hsl2_yMX4%LMJiOu<}X{v z6_v2rUgDxjpaM4rTJvUvs0@li*Ujr56>EEbN_C}MHZ<|=D_2x}WD0h^plEIR+32DE zdzI6PG&qIr>SjpwuU={2pz5>6$^g>v6#-f1?vQZX(8xDi3V#Jh-^fw*cBlEfU8iiM zsax}8z71~R`jI%*+#{33{XPVDU&eW{mnZL~*|J>{$3ah+m*}tXkwS9Pjm$^G(=Ci` zL(cQ>&oh*k)N08i!!2IFYIY#(XwY^TiEHvclJn? zAkr4pR(eI!_YL*_jPDU&b+N-1jSUXe5zn(;t-UQzbYHr|e6(2p^V#nL+@vky`cJ@* zj^Cy0p<|}hXEATjPU~ylcYgj`X!CK)JR?GDQb6F&`K!k`)pf(ugaEBd#nQ8owro10 z3tpf`U|lXBF(mZkiG6ZwWX*$s&Q|N77=PHNXVP8Ihq(c-S{1QQx4}{p^fkQf;}7Oc zWnj5{e7vk`G1B~didhSo+Y+A09n~C&ypTi?p=x3IAa=`9O3gvCo&ibrGsa@bEx}L! zd4e?WhXS>m-f)K@o_+)F_8og{cMDnH>+WxcLR3|EVP z0;J3dmd)&n%?eH`97l*SvKCz=9nU760+aI?6SM9nSGvZXMJH#vCg%+$C-Wu~gHj&v zCl}vM3E)kck4o`$P3ay=vENS_2BqGwNvT&(eVv~)UL!u*#r8HhW=ex=CRpMfoO3>3 ze9@KZ!+7dMR~k!pS}IlihN}=QuhceNeD{K5D>!{7E1jV={ae1^_Y349W5!4;rqL+l z{6gR&nE$dXqh~Io^f&`xE^v~FgfNN0n2^N8Vx+YgVNK#=XW~UNWo3(Jg&Ae>eCB21W9KJk_>81npQSPHVyS|qA+Jxfyq{34r2%T-#b` z9G-mD;Hh)SQ`ds0?!U;VMJYGXkBX=s4d!R}Z_14|16fgoY9cTEO`c76o*h%ZCl(r8 z3naLrtmypYH^9`|{PbEN3m*E~jx5K#;OR2i6o$NTnQRnG_VialP7?Vjh8zLRsd6jS zWa%<`2}5DE?Mi&4aAVWzQ&O4n3H`9dA48h>`T(K5j=Uv z{hW0G1?v&{@u4}RnZLHOas_9qwRn;HJMzxYunZg=Y=H&KVWAW7*XG4zn#E(kun6W- zYPnKMId~+xl(Dch5Cvn^f(2&&3tI?F+}svr86p3|78U@>5P($pvP@KtOkA#9(xP0F zgmmSQE3d5zgWKY$L;1{S;CoWGJibmiD>10i%OHwO0$39 zWu?^w+{&HAT&}VLjWu;A$wF84@DZmr7o{3hW*=5%BM5OprNsn19$g(=SRL9^9Ypdk zY>8Zfg&|>nvw2~kOA-rf)@5O_*K&mW2404!Ed!9`T#~#%kPT(l4jz&W+0_-i)Nm;<8<&lQL)&;ccp?%W*_>y& z4E?eKy_pQnSZ<2%Zt}uIJ$F!2+gH)UMUru2a+=fX`h; z*WDkkBWo$I5A7g&dqew@8%9d6pA7XhfQE^7I%;=@qB}$FI$e7^-LyL&W8i66tgj_@ zgo!u@4S(&{;#K!DOdDH`tY%@Uek@P;3tD+dyZqfrs?j93Qd&((h%=jCcGtC<^AkTz zuIkk+CRAGGb|gi=yNkYJlSSc#u%#-jr>3YU`mo*OUzyg_%+lMcU6xP_^~OR8$HX5s z_x7#!5(+ABJa9<9Z{#a5H3@bUl4GHrH*%ESg3FJ6lRqclzaZcL`YRAu4`oK?+tfm1 zl6vQ^wez>W_S+KYZ&<=&QSi#Iu!^rR%8BMfmRHBC*oBFrlHSTb;^H)X(cto{XZ2N< zp;dhKmAzV(19dO&yAvLJUF^NB6QNZI)BRwoa6}o5S&)}_Vb&^b#On+M#LBF zdykrRA^$^MVZ0z(ekHEIVF;|9;=F9~vF0YM8b?8Yx; z;wk>(5$OfgdIjS+;0=TR`J&vo!lvVu&9BU`vdO$iENprm#=cU@J6#(73s`OO08YF7 zB5K2^Zo@2;#H**W91D-d6a3KLW=w_S$-J>Lrf8t{>*Vxg^Ry1U+^hFdCX5|m zQ8Qt)vM4Ffc>ght#7Bdt8;84&zjp6y!sIt#p#Hp;#7m^tSfI zqoxwS>8++qR-sxp(Z4|igxoN>YgK1k_zL&xird4X9YpN_)hZ5($%Ln(##;5p#8Vnq^*0iBok_f=s)710jO;+ zxxoqMhVo4K`#Pu>Ew1R4r%nblf7R54uoBN)&P_PQGv|Ea8?(wh# z4t{-hysXQZZyffWmDl{%8$IU!?@&J!{6d&mTB$pGwq?eBIvdxOd5KN!6xHfAr6N&a@JW`45~5<&^UaAq_t(MQ7m4$Pe7py)+C;|~Ik4UfP9AK886 zIU;8Uz!e_X+ghAIO@EakN>YO?c?^IJDm)v-UBtcHn^XQ%@KEL$K|%z%teodh{T4DiKN2w-BHs@Il*2M*1b$veVD*l(< zoAWhuI>lMBbA7V&IR;ouf2FJiIy$a9m?eZqp~-wM^j2TirUotie&u9+s)h5+ng1Pe*XF8noPx=;rgXQzL>dE zTh7$_)u+#G)z{w|rEgIQP3+h7R@7-n&LcYJ7V1o1Yy_-JRjW5=HTV^eLvwt-EH=K# z{cZaD(f9RU*Z{lDpWv?39U(SZ5vxuj3UNoA=%6wY;)W8pPL0|W>tFw+$#*!4W3Yri zyN{%u11E&R5nX0PYgj=`d{ea|2TDhKa~QHXK3sCxsku#QSiHUecg4}g#;){0x>mr+K@WEkfV}ur;C&Y!)tQ+*F#aLf{QS!dws(4mK$S0;-EFdHn z2PTH|BEeMSn#s?MeIN-%-a5z7e!~Zsqv2ho6{dBp2fpV9UuZLWmlH<*|RN0Bl@>JQ~%$QfVH+WUt6t6SC zJ5Ztkr4Di#FQs++A~IA9_d4~B-$Y+S84Z=Si=GfP2-uh|I{3>dhe zM&k?6Lt=~Ed9eEv3TTuGF>6TcF8~I*Q3Qx3<6#6+DtsGP@t?UP!cFOPf_d#dzkDp` zxk%jfJK)2ZyyarT@+Vaqge!6NcCN)8v!8uLTre<<9W5RWybB+DX8T#Qnk943oV7A! zzZ+KUK#{LNgt%{lq;%5rW4(M$ld_w;Z>xT%a>3N)T76?a!L}o$6&QX1S!s&McIoQA z6*+wPCLX@v3?jkWDUC5E z2)vv)dK^Oo=ERL2yIPLk2M7zl1h z@HV@wh4p!ELZ`X*9z#Sk}?1!wsi5d3Oe=<4=fCjKppl z@P=j@K7&E=olhE;eu8X2@oFU07!a|R9e^_PwamB}g;e_Whys?3E_8p89BzZpq0K}w zJ`e@@74x%Y2v)7*2Q$n&jYT?iZo%~PF>oskhzbb+n&F7G1GcC+4C0U56ZI^`f85`8 z1ps+9MuB8l`g5%F*QSuJ$M3eO0ht(95riHY`YxDjc2r@SNq@d^zT{R1se&fS9bd;` zAVnfTW_dJP-!A$&pIJPaKf?^}G=O~v3jwgARmcR9Kw3LBRYN1Jd;FK;^9vMXlKUWC zuswv+4(elK(P>t8TEV~m<*R}@DM%Fsa=D2Enc#@^gSYa`7S-urhIXQ5>;N^X3D+OE^_?hvJwX73#^6o;%o&5`_ul^g%R~g+PF4;B5ZE6fF=xzQAOVqO<9l*(#W;;mLGJtJ#~ND=F(^{t$G! zMOt~zkW(Xv0*)kt#Hn%A&+uSU6VVi3#=KVrLq3sC-5+VVzI9(m&;duqNI_vk)Sau~ z+h$}c5eE7!Z2%NlkXR2WiJ`~byk3o?>>&dQW)J^}L-EKQCDjWLj|dICNM7%D5WIG0 zKetme|L{~l%zz7=*Q`n+SqehzMA2LEl-fRKUL;;R0n;+#z|cHL&n!m(c_NM&PDn78 z0^**UMTxB`zZ0gcskd;1CUuY(5=T)dr%C* zrFlI=K=0Xi7y&v{p;2UH0PyDQ(R<-<;{lo5fYZJm2sOG7QGuiG$Q&bV%$M5|^+qf_ zyB*RVMega!1#lBUSzL=KVklX;z*m1_d6bw9!+&S6k9FE*r{zT{-tLpzX0K7)ALA#n z!Inbxl!dbFkHXt3HqLFV->A?T8NbnGc`KtP#GZKol|%xGGXY8mg$J|^xSnEz9Ucoc zzYir}+P9n4d7+trKpHG?Qp3hhy>jPsr33p44xq?@#}G?0(d5GiZynb79d!}yhI7jo zC=_G_zxAST#u4QJumFe-9*E48f`-?Fw%j-eO7J6aM~?K;7Yk0Y&mlss5ep4rVQ3=; zy2aX{Iu~vffb_y&=_V%0B}4Jxz1Z*Nyo+BfXOgVjs4H>lmLzQjB%T<91LY@0w+WwD z0vG`js+rf(7g;8dRwOKIPb(vJndrt>#k$)u`2<@Lsd+}1`(*kNCDwwo@h2DI%rh25 z7d&%P@pJ0Uy=$q%>|3HSG=n#VHvwyVvLG56WfDCm;7Z1AASDt2kXBx=TQQ^QK*GW? zeWn(T+a7=>c>!8G3{M!wNu#{gFj+{vM}bhRVE9PJ1wdE~ErGi;fQDZT9LuN9vb;K{ zQa*x{QC$FlnO$DPsKkdnB*C?LbB(%Y@lIG_-7aBmY}`CE3MKanoe2>wENe>!00BUR zS-c--59gDF9}_WTiGch%ZW6g6C_Ktx9BMD8yoh*3&6+RVPElV3bAkgxvoK~SJlDG^ z7>M0qd#$`PGC`L0uI_$pr&gN-0>`6J!aWH40KyRG1Gpsli2+d+b)rpth_L1a-DVsN zp-RlC8cvNNv%9;2B+r2Yv2Di>qm`F9~WMSu*(6PeH@o58d_K<8KA zyd58Yp^Va^GdBP<^;RP?Gwu*YG4$LMS0=BNVF^1dZPglPVSeGrg+b(3wQLR_a}DZ| z73o)`j~GycGz3X|x|!C%va~QiI1HHj(g^_6J?z!Pf$>AI(2MwoJ7wni-7qW$k=XGw z6r(pzgcyhF7pe^}@q~=S_zmNssMjO*qof+r#o9pCZxWuYsqXD+*T>o83$tRriL7tj zFt7^@43RKGr5TEYEpWl~(YFyNHM--_2xK1yobS)f7s{C6kdFb{0mvjfKxP=YnFLFF zE~{a=zf8gtapLj?8D}#&kR8A|RqF2Bwo?hHuMDNbT1N^kS#pC$^x(uW0OnW*&A305 znNmotPl50=6-#PyxhW|6 z!69@w@S~Af*b>-x2}ZzaAzIZUZ3z~HUWgG%D+;`(K>!F^s=iFKQ*-X65m%i=E|Te` zL39D~VVwv~f>W>v%nrktsuOPCLofyvWa7hQba%nJo%=d7;M^lYvNhIXG$J7gt%tjt zYYqqMx=!iI01-%71a|6#6L*SBaH#1fo#36J2GESh>I7?V@#}ONOb;81a}#CcZ&b}L7)$l|7Cfk%)G&;oU{;;3sKNB!2s|FQH0TVGDB*N0e z^Wv3qQ-X$4*7H9Y7w^B8sWMnJ30yRdTQtjEG>cGp-a2R54fDkjKE}ry9D-fS-)SxC zP@gg8$=>p223){p;Io9aA4q0VRk%iRmIf@;bd_VNwQJ&?7VmQqXM=~>;NnC@ zKM)RJiy4@T;NyJaph0o*Xf{(3649w z|KM}T;;NO|c*?kz)Z(@AS-H8Qu}Q~L>f%z`u325VQ8M!)?fwJp=2(}+QFxlhQ=|z) zZ?1nC%!}|6<0?+35v8ZmMUhhlW)bvYuJM?Pv+9a7363s(0C~W;a*N=B8m#z}6A^Nr zfRbpw%;?%Q5CPsaag8G=ot5N7mUfWF{y4(6gul!!rny)vBMczFD$47&>Z!7+VvaIACOsh9+A8cpiL@z+1vmmj2kTu3?lMu`(5-#Fzlu3>n#?2^ME}!aT zQKB(1ZB6$P!d}e;){$@<5(1l{=v|2aRrI-{jc8YNO$q3xOf-Qz{B;oh=Kv(SAI;eu z#nBuE`1_I7AR5#O5?HdW-i;POTU_LRgr!>uqob(t(dU5{H_){yyw&ho?M$iA?T$7E5jxN<8K zbZvrikhF=DvWYW6Zi}<8R6MYda^5yc1j#5_h!|MBaEg=agxrqY7Js@eW#UjtXQ2@J zF9E7_a**zXh@c!RtQ{>~9i`(PRpX-{V0W~3e zK^1h4x@r#oi_zvy(Omh_yrR2eHjYxx5W7UEKW~B^h4aE;(@Oi4MBx8L++78=74{Fi zCIOP*R@|X@(E>#Zg%)?$;!bdvmWJT&?(S0D3$%D~*9N!ZQlOGA@B7~}v-kdv_gN+< zYbGmetxTThcV8M>Hdt7KVjh=U=y#%maIkY_xMO1Ydy2Ix=O2bka8CPRvdm!0$Y2Us zu!ry=g5H&mG;rTT9dDb8bLgc?PuJaA->xF$V_JFvG{3a1i|NCX|k^&L6lA0!JOdq9po zkB-vu54;mWb>6!Q_i)`ABZtZZZ^*GnB`AsRIOV{>T=+*)+d(nuUii6{s>_}-XurBO z?7dV3-#t+f;xI%H_*)gu)B$|a59hi(;X=T9`0RhPoHq5rc^(`a@S$9M@FpH8hTLg` z=_!*vw4DdYas7&PdSDhAH^h^AoPii<+tP?tC~( zBj!s#p_2wa=d+`rI3$-kq|~ruW3%&22l$y@vnF`3Rd`S$uDRsxyy*^E$UQx$u94&v zo)j7$l!=GD3D+za9{dT{?)Wzza&ShC8&BJt7X{ZZd2a%@JU!K}J=6}}SiRii0n`R? zDhl|^2*4Y1gm2r8IQcC(A#s7kfPqV88nmd0x5?=gV9Rl7n;7Bj}{g=FeRo(_L@zfwx=1Pjs%dgsyi}09ryH z1_=CDo9q16g?#%xTKzQ(?+t$fKy~?+bmZ2J;1{RJCHfm6GXtCh4V|YF?nCeE!RzbA z26Q9;lJX7WxpZy#HmVmN$G?#JSKOa9;+FmlV88SKC86?E_m87lt}$ZN-= ze?uV!m&~}1N;vfV2Vj2Vaq$pLFLH51=W0!Ue+vRy`~uL6JleTFrqe%W{0L5Z<%8-e zo~J)rzwyr@_sMB^%t4+%nLggO`R9!IKMFrymHRVf-j^VQA0+Q-5+4&^x#kdDWU0Ge z#y|b-yP!cko0&QXC#+FdKv78OQ|mql0uHhJ4OtE|8(r$i_}w|ZWUpY>oe=&W4P+d7 zDbaSxD1zW(H=n6@tpfuY3E{QBybB9_hFyJ1+AplZ0izc#BcJ|^WdxL7oTK);B>ws^ zy&O!B@V|C>nrrwlcjz+s>Tmgv^F_12707cszWb-}KeHDu_xE?m5#PV%(;t7Q`<&B# zwEOb$+!pxh!H=#eAe;Bm{LN#T`bCjz(EhZ4D%)d*?>}1DhfMXyj5h%%$j5EFpwxnk z@9Gz&1^(H*f71va_bdM0ss+`sAs?5Xp70Tl1m=G6w?YJ-qCb3H^?w_KBl&<|8=KNj z_3A^hNr2F!%k2R+^>~`A9og7SPO2JqO*jUM2^DtQW6ydQfzKcn3R&IukWZi!Q<-}a zHFxkmOUQF{!GC^lI$KP=?}Oqz%Xks{CqCzK9eIKbPG2pFtQN2xWx!N{Ak*~7kB^2a!L zHWl|?m-uFPThtA|ao!IOwlcF;q`vZik2YZ^MI>Xi$WEmCaU%txtY|rdeIcezwno*MENMXQ=C`Fl;XwluhdtdeqmM!k zx>oUTu@)DcIFg5!j07}UOz?zouZYqV`U%m~`TNnnB5_}~%)HGo3wj*HF^^D$4asG! ztEIesHm25*>12ns_e0{9m4mF*^y(tqM^4bd1F}{4iDm$_2R2R(t!EJmcdWq^|Kn!# zb0GTi%kDoa3!542KMnP%PY+kNN`OFyI0!jc6LOfGEOya1F6dWD^L0Gy8G(x0;$f?a z&FNt!{!Wge3xUh)dgJ|iW3#yD5!II^)Hpw>K1)`qG|Z-M9q{@Aei?g=%b3*ikLL)b zHx-u)9mrG@)bt8R{vg$L9BFYJKW)^SaCTpW%$b~T747u4RMMcE@)tybTn|sAC;GKW9s`!Fj{C>P&pA=bXnZSMZgNvRjVDWpw`$oj%a{h~jnuOZNvC(s{ zsy&Grkc?J38~c{u5$DC@T@F6d_o@N>r3-nSwCMWD*lhW)*Z}Fec-OeKaKH%IEKi3wn(HGKR3oqAH&c!B69^74m*OVs)GB-Ie--k=Hg?yr0fV@U~;UrR)E^ z;QH}WJ+WNB!6!;ZpV;gBXCC3&-~Qj-Yj4)k_3b65HhCn@x)|{_ZTnkT8lwnfEXHWq zd9D@IKT&_*CT#_G?fbuY>psDBnpq*4EbDAMN+dM0eQ`KsHhIpx4p@v4xYoUa*bN^3K&bJNoUsHuWqvO>cyt4vS86O2t8wEJmz2xkFx|QddYS5k z9Zsl$JX5-2>6E{&i8_J!!diArk;JPI^`N!r^5blJjxp9HEzU4kd(sLb@Ypy6lv*pr zqA!5VT9g2KMt7Y^YZp`-^s|%3=)TycDTtaKv%QJEoG>FIpqyIQobj`2MI2~ht&SF7 zN@ndNxH;05CBpa<7)pOUlV8`Kc+XyXvY~Oa@T9Tikx!`1W|KpB6MJr3?52~-+3c5q9RKCiZT0(S`#!xjoAboppU6Wi zy?<1XG(0U-8r1Aco+;?x4f?X2?8E?W~kA03OT^CY;i*|p`J7LfrRaVwZ8^-;I`l~}(tKPJ2 z=;_AskL~^*6?1D=zt8v*29ZLV#5~soybK5Af5?l+H0AclYOl zD0qHO+vYTgabu2fYIeeqr-gI!$eie3N7iSSJH?tVI~fA+A-sPljjay+_`I2e;ljkD zgV5I`Z2oD6i_bYk|r*?Y)0>+%l-$!({0KeyC<$ z_)rexDip@G{{2JAdn9u$RLs>Tm35$J9>sO&o)}GA!@n#njYBf{9@5 z*}JJ&@#YxiK?6rqBPlC*fQ@`UwCRXwfM)BNN@`TkCbsm|n+;y2evQU!ePN&on03Ot>CDi5qdr+z;` z{(;BqoJC3W_>g!9*)_~$A~r0_sk>Oe+@D6=zR2}Q&Mmrq^sA(vq_m=KI5hU?Lj~)Q zXslPx%d7#ZI9`Q@KXz$-`loYk+h3IFw|my99~>f}7v0tBtP^dIWCxz6LwT<|!GFsB zsP=qU#=H0#vo>f8xIDE$zC2g|JD|wyeYO1EdvMug3`y;gqDruz`NsIy-x&K=Zk}KB z=|951uzumaGFx|;na)~*7j0w-QGacn&9k7gAfg#=&1rwG_aHfU&v+Fg|piGkc4Am@pqex zMvK@)JGmHGv(q*kWZ3fr(M8YKrb_Vgk+%y!i+=b{?(_~Zgms!2N-Q`hrJ3GQE>}?| zPcjgIOc9LJ-1ww+d{`XmOzRqp=f^Xvt(Jn}s`;UF97|@uTZ{kLBpX%z_{hE4qnS72 zZMkM)&}D;6;f!XswJ|D^F8HysGH$q7wwW&>wklUaM)Fh*+r zNc}j=noU3aVJ}*T`JE)L7T&Xlt2FDsJMy1Rsk03n|L#RInm0ny$kp_XDU&sfw%;{T zQSjKHG3{i3r2Dc>D=V1}x1cj1#pm%U`K4$~;6fV{HTCvq!SI#U z%f5Y*?6Q^B)ZZLyxTd9=$u>;+%wAVy)JB^bY0q1nnd4CFg>8B2=~j!F#qR|eZ2~kC z9a80wk&{MEEZ=Y$KKG{ZKIw?xrv(`6STC`#2qjN2NFnG12J!oJqny3ZR?4~qs z>D|5vUW!mMB*}lSFwCayz5WS!)Isz-%8}N*-ZrGz?sl{ICt|;l!zz3&&BxHbEUz@K z97)caTn?o(g>Ys^bQ#S^uc^i_*Wn$<))fn?v631M6ZP4DrKyk+rnM%;6DhahE`RS= zO_Yw8I98S;W1IJe^|?g6JqC6bQZa6)j402t!gXLlmhJ$xo=}%Ya*>1(7~jgGLWnng z|Fp@NQH`w$Drv{x;!I^w8Giz@o)SjM(kZtK4opYFi5y;rbRa7lQi zGfs2TOHe3K#9@+A2`9=lVJBeRDekf_i65mp;jqzl>|@yiVwbH7i_>uBjk zZaQo9juY%WwM%qge{kKuxAq!QFy>-i`uXrzY0WSl2)oRoiQg_L+5juL=opiJkjHO#BW67Q^`ecE^HP4Ac=Q?L+j;vo?eF0y zJagrRbT#$8RM_=IL1SEsMQ1;}tDuu&eP)S-_ zfS{$erdGpemrJ#}Z>@scY+VG{c1?Gh$<|dZPoP!$X?QRCR8LP%wjx_ESXt*bO;zrU z8Z3I)Ivg*&59*VPobeBG_tnnFuxX2woRW!l$EP;$6roR+?0;-8FXu`o>z#!0U$A1+ zU%?M5iQdrDy|INv zP+qn|)og!Kpo3)N?a;f4SWm6`d5&o#%ENf$U^1A&KI<*{jbt?aPmB#bx-RZjJo=8mQY2QYh7~}q3GY@k-Zo4Pn zM0rNjDz>pRX@i2qPW;*IIDM7SFur{aUg?mu|x9 zjnq5ah3uC!XPk2HNM)AIIltzKgc%$^9<|kbMLxM>W0z#OxTrKOzkW*NYv#`pXtAeb zVO!$)utUkFT~TA=QKLpD&)iBqvX@$wZUec~Adq9#ulDHj5UZ{ew&h=vXw`e<(`K#_ zB52h9?adx?a_ry+`h8#*Y&B*?PA=?jK7C{U>L%5vEVUZRQZg)L_JT+2x?yv_>J>WQ z6{g^wy^Do$lFq;LrJ;irTP8&t%ie^u7 zPam;=CGR)!=r062s~hb;*4Kvp%*blIFJ`{$^cJNzI$qK%Uu$u*^qom&)}Ckci}85~ z@;yp@#h=q|vR0#8^U@vtW-6$*YO(sJ?f|lDK9jwdI9Pwn)O?q8?W}ZR!KF=1-=HT~ z0@6E^(QD_%fy$87IS7}3vT`sDr|l)RBX5@bpzpC-wzIplh$SxK9aw*%$B+H4Xw$Uj zhTE&TP9&Pw<>+4nYg3!TKSuL{7j_wp{@oqXQ0Le{{5j#IXgQKH7CZ);j39EfT2&BeFSHlX>1+{z@rXksa|C z3AnOgdq5wV{4)3=qe?3bzvI(OSHtLY3FPOL^fu>md!G1uVpL!nbnRMk20!KZ}D#Og|0E0k7U(Yp6z4iq}3T>RU@J=wxc|She@;GEo4Z?_E$^{md(MYNa_Ln?k8LNmRI@*#bHgn;#RB8;0S>^ zTP}?fX4v%0HsP0FZTDaC+E4R%?iTA=i#h4=v^jgzeDwD|;IEIb(6xS9vyu}v{{*rXC+}74 z&ls{^KlkWXrfqWn#E((&XDZ~%-%Cu6B=gT!GaEt8e>UHrxT?NP_>_O29<7APyzJHr;v&k2DP zl9NnQz<=MB?E=Ma`pQ1O5%t%qrWm|)Np&SGD<3viR+PytKkZo(29z)$O=;{C{arrP|H};C@4OcH(*iLC4B6(%&gyiZ(RjOYrRf%YoOT23p zdE3mbnJ9a&cQ1I`k!7zyPs!gpl!R;`(6taf%>0h#FUCHDjBh0V!L7l9oIKJ zFtI%{g)UiotXjK_d!dpMcE>g@hpr~0mLa|VDiVpBZz}&opvuIlDZw@6Vs(@vjCI1) z-lnO`WNXT#>istsVW6C4s-0_PoM~eiV`rJ^=APo`nd#vWi@M~E6w6IiS~O*gY>Y~* z^~x>O+HG|^?X>FMt=l|py8Ik_y&N0yWG*f(o!|j-L_YryF6Mo zKGQTi(7Qj^bGFuqibV``{TuGOnrvSl8Jpf5K3W}qS|0f`IW}^*I<~*E@N;tfer@S# zX8!VU^uPY;=AXkAlz;kkJadjJMNA$YES~>dKK{9QbFy)KyLxr=KLqLy^5B0Li@4rJ zUY#RH?E1ccqy7JP0(JN9opQU2YKPy=$>v1+#YmG6`uv@8N8|R_$W9>H zcM<5$NFuXx{vThL-3bE@=+^g6&u!my{utqt&X(i($_hB$WPt6Lg+{B1{5TKy({-@f z{MKZ5yK6+7JI;@%?vAV7oDc%?_@2(2!=NUMFx-M=p0wz?w8@%nlm zZ(83a*v0qt{{Dq>{mk&c^!UXA7rZ(XB|j84J+;iyLPc3=Di9qu+#dVQUu-pVIc>Q%3d>+m8v)=;=1Ihqn9w}QAKH&U1cSITJ?#4Me);Ibz=~6xw-~>$nn%Wcgg>> zetQ3jwV|Kx5Sl$ecDmkZMOE{{xp^*NxoM_&skRv;3v~`V(LCL6-C(WYPTdUWGOYZO z%yHfsrD|MXa@1y=*|p!r`73*>(`#1za#wEyrA_)@OBUjtmr*^eeg$6QklMNdfu42 z*LzkToZA{N_Nh*NS|fwjdG0kB^lHJcAg{R}I*oj|UAMSto<>-WOrHH{Kl6OGrD-MM z`PTJosmO*s`fq{PNvE$K*Ii%X{f9t(*YeKcX6;p7$}35AiO;Mi>IY&jQ=*cZ>))H2 zDl&cxzrN^s=Q#I-dtNK~C-zKSqWA(2dQLzPuYMfOx!H4x9!JY{ld$`>`{Lt?%AZ}n z>&fR9cH@G7XQRrTSgJ)T#t~y4>d_&TFMfO-H5QKkxEH80iwGt# zb0LcVcU;CVD>VKz8ItN(1ZK(TRFuV6$XdwV-?=>^&FkgOaiwB;H65brRy-cOTN=GA zkn8WN!IBe+Xu2E)%62Xq_TdpVM&aBB@y7sqq$mR#H8x>UBWNK zt=ps5+!6DUYmvPZ*4f)9&bxQW6O>+G8lLYsPyz*OuV$Qp_JMVH-CwJ#7;L~vJkC7KL zj*FD4UTiht1ROzlvtiEwP-Ke(pM#JyI5|4xi93>v#GQa-0N$(yQZ3eZeE1Y z^T0)HGtw-dzCnlV1(`^*-8pnRzAo2KhMo(({sdj9?e0gwTyqRea$9*Bw-9-41QnLw zAY9b(V@|Zi--TClFUP-g@{TBD`n&D3gh!;TrW)Vx#Fc~LNLOz`Vau%3+QeA7%;{j!>zpy%qb!3) zU+gruB9>p)EOn3Hhne%t$m3Ff9{9ga0C~Qwvo%y=E-PO!(aJsitx?meI-5_Y0H_dj zyj9C!^4fK;#(8TbKTXAmDJPKUiYNMfy>fB6u2F7k0tzoBQr^Mz(vVY&hGIGpp8U4h+Goo$c24ij4oUsFnctL|? zkQB8C&z>c>`EVM>Ef%@~uk$;`X{W5^*!y%C;A%v7M$`vu>p52}Xr zm(fHo#Y(lcH$9ZZgSK6=wQ+6{xMnRKr#$bgC+3m0!MbiUV0Py ziXm{$9kmDTPYWKIF-y~s4{{6#%D7I=Iq80>twyk*n!akWVZL!_H5*c!z+da=Xx(`Lr zY29a-tN-G#@YVYxPm*%@(N6ADb#WkQ1)2|ZvXu25-Vr({7oCygAYRc8WaH6z$4MJ@z&_Au|dK z9vvhifcP36ZXf*{7~{yJ()ajakCUM9zFQE($xn07?sC$!>OJ>rk-UjW!S zf3Cz2T*t=|CtQzm-TJZL`z5p&$I}lcknJXr0~3jv6A79UFgiIwQ4El*#ImMDz+58! zBgZ2JJF#d|wpLQ0M-qi02bCck&1zC2FzJaX*|o?+JcQV7A%cmLe8qr9KNWAQAMb2A zbOo$BicC$Rx0mGRAYJgIWL+ggAn;210q%rg7dPCE##EKn{~=IQ|C5rK!9(yl;di)e zlcY*u(eR=+;V0svrqp4C5SK&%X(NcLF`cRr;M@stqs;IS&F~rn(4inO1ny`d?uRPe zsml!1rt=R`xS{^Is8YlT3|Bb|ZwiiS zhpYeLCu7|p;Tq||gb;6yf_p=-k6XbnEXbeL0+=}%ExVvM3xJUgaL_1(WEWyb7g8kx zs2f4e8aSv@M2kjI3tv&IMiH@N5xG(kRY1{bA^ws=o{=`qrW>vY8YJBuD~b?{>#3MG z8yi)Ms4m2QnT;(JP*ROnlHQ+}a#~NJfYwQv+#}dKlN&%x1F64M#Ja%b3RaKH0mSjNb>+!rJ zEUc5xs$3-$A(+2+42k$Jfm$8_2}`W53aGBku8u@ugM5WJi1yS9h3w%3vS%_@Z-6n~2~&%_!w1OC&9NPU9*S^J+-MB|?mNPIuo zNDK_gX~gbs#9eRnL=*t1J`;<7enwqbB1NE&g-_M}nd+3#=j1c)>}R~I&+(YyKbmSS zh=fLFav;hmUlq)E3JyX=04^a%$bhO?*1HM00E@oR(MB&2Po9Y8p$ps2YT@ z8-8Xtyf(s0Yb;LXYgIFD4Ku2e&1p5tX+2QPkG*U)r*5+pZ?pd0`gs-9vzp`B-PYR) zax|==)TnV0Pxm!!_X%wG%W3ys2lyf~5gKVQ>JA#^rU#3rHF%RbkE?4(RIzP9BZHnt15LZ>$MZ=9`M|(8G2mP1mwTMT z2jwrM)P)e7a^vwboWN9UXyX_Ee%H&KvMdNj4J4rug1^y#c!DINHIn@4C(IrAGoDw4 zIz7J!^u=3KFN;TTdV~T7**^?E|6b2gJGj-=Dz(;=Y@ToPyLHj=>tgoTS56QfF0kbL zPN+ubTNSX&=~wE0KoS=H5j1{O+Jlw9gXXl%^RnsVrE?ek&8FLwk5hejhH&uFkx(6FQfu-~k; zE@kKMIAEnCu?J&w>jo#f`*BLL&9SmI#!_&{*f+YlKMYn~7KeSWI(!^UjOj>7s*RN% zhbE~RvNU-SLLx3(E5r-D`3iy)3mQ9ny)?k>D!Hh<4MIbEb4I|Sy8PSw@54Ri&H>*Y zjc~tzfCOul&(KV|x($KW!S)ESM)m+DOa)A5ioXMPVD#x6Odl8^`_c7C?14g2NZ{-2&>65hU+z#Mp1vW0 zB5r8P7~DNX`UZ7ZjxM6=oux6s`TqTT3j&mk(<%S6&E62e-dot~pM!Q%!1H&Gk9Phh zD?1+PHeL8(KC7z-@OMCVz2q%b)rJz5bnJMf#W-Ag0XiVYnV~^801j#FiF>M4cAQV* z%dhB%RHAh?at^m4@P4xAG0gT2H{y;)Wj1ScO8x{nI(KGu&!xrWI5L!XI^?(`$~-4Q z2Dr=fuZL!-n+1L^f9lPK$7KgGK(x9b%(dOpM)ealJu8m&N1RyN-JoIE!t=T5Dd{Y_ z0X!!{NE|NeqrnQ90dqt{HVRi!1%*wGPJFH*Eb(5?OK_9Kx>XlwqA@deHFGO*y(e!y z_!u|H5Z6s~?wiR*@_LRtVNPq*vOC|XRLR|4z?`$zISz^(avqi%MIk2 z*zYa{cGTExe*xw*-k~X6yOZ8>u-r=ihUbo0y{1~c9q*RRZxH9iis}c;uYxAb(?r>y zZ7_gQMV!2zx^%aaMx5@jr;<1X*f<*zz<~d5x9_eH-@K1_BM}hX54m%izNf*Gn#d!m zg}@Qu4{rTE{wOy@xv_<$`@8xc$1mjQ;7^V91DWUGoXYo^GUjnf<9`hT=0IO)T z=75uJ{ISm8yKB)6spplXe;{T!5HAgYPb1)CAjw8QAP6Z{nPhsNo_LWQbQ76e5rDRGSEZGYk@*SRHx^DT^O%g?6Vj*7Z%)>1{!vFfizjl+Lvk z#fNH2P8+?!iktZlA77nDywM1NOWk}~pGx?*w=P!l#u2-gZ%y}m&TwL;;wOsll61k- zly_+OEp8xZM3a2fWTjzQ6d%?zl>r1NR)Q3kSm2HIbjh1&?2tml&E?5^qI;ABVdeU3 z`+G^M%cx5sIF9{*lJM8P%S|RtgLgw^Do;t66ZV!rBowWXsTYj-cGpVlA!k5r3zivv z3`*eYq)r5RAWqT7JA4?x!5R?J5BXy_C2(X92*yBGs0LmRy4j^K5uj?>!7UNSE_oyN zL%wB!bpQ`a_$y25_x;xHrqaE<*nTYoRwy3?ZM%Hs|4pF2_50rusAV$Am;A~PhLYrww~%|!bq zoJQ1RVknK}0JNx0QV)!rU-(S4sQu*A#WD5r1oQg3l#qAqFKG&sxi~&z{!9D~} zc)^dk;+3%5*Dq199C;D^14y+DiTVqoI7z)yboOT^uifJ%frcgTzITlEC&;lESraS! zeF&AOYu%~gZTK!Q!KLzI0E0w#C1Cm;M@1>*4OhdrWO~l_z3X>jM@5JEZo`arFbq}^ z033kP(NE%WR3-l`=$Ql z(L|HJne?2HfyEbGPZei~n>o-1EG30Wm^o0<9jb6r-flr%ZCBvfom6FU;rC73Uinmm78|1FA*Fi;an2= z?|Nee)Yv&3TCfTdDs&@)G5HwSXv!*BDp_22&`ELwkp28ehZ6TQ=m`X5b!ZrboR#JT z#d zkuVIEuV}{BExg61e*T(Qsh>n6Y-*#%{cJGwX9*E!$B*!+s1h7+Q`CKR&}Sp&#uZ^JlWa zcWlv@bn6{qXiSYwU_t~*0bww9OK<|`TN#Hvh8duO6#yqO9PnL(YEkNthtrbv!&4*; z`ieaq%ia~^`_X&Kb+9Z4SrfDOv*&*Yzu}@u^-B>l^rQ8yM3HX1r4CjpeY+K$;OzDm zjf8Ip>p2<#$g9IxEwGI{h{TK1H zp!r}G2BF@EAq_V;iSlzrw2V#$!dNLZEC?qtGXso;r=>JNo7@fdE*>;9SGeZc-|V)8 zSL2bUelb&~=j&hqfMXRSI}Q5Li2VRyhL~C=)F6KT?2L*JGtE;6CWH`%1__-{V(pQA z5L^;T-up@hVP~giOKc({jHlUTV77Wp)g2&Zurv;$r-XwMcfSYdmZS`2X4BdembofmGrU)Q(f zuG+6L=_M|&@U&*MfI}h2*a}xz8eXW<#tJG_AhyZJ!i>q72m=l}e1jCKdxznr`#HBI zxS}xt$VD17lFH!55QXrop$khHBQt`nS3`7K&L`nnmH zaty)fZy5lD{m6cFTtrlMryswUwXFc!4D5!9KUu34le7JC=b<)p=+aXl;};1-fRhzX zryH6e8`T(Ap*d#G%D3P*Xr{-*H`L4!X$&3v^5<-oEEa0GsoQ}B&Y9)K&Y^qgV(v@M zPKMtzudXwE!AJ51d%-6fBd_f^MRz z6g47x@7KEHtSC`v0fQ$W0Gey7xO)apl=NBWlFO;fVkDBl0nF3|STF!C-%L7-)KZcT z4|}>e@UHh&#ht;7WabqbNJI*dN&-WZE8I7R8qnTRSOV!Z)cl!YXr&Zjtqi;ZE9T!; zztf2`k>^DOANN9NzT3;a%yf^zyu|}x`9ZT;Q~*!{7=XjiGniZg_)K5Z7!B_Q*Ye0&KsrcF~D`ErRuit+*@CfHUIS}8xA5B0Bp<4Tk zY;TldLa{t6F8P=&zp;a8y|NcG@h$c7+-pnWlH=gRUFv*=EcAb;r$l~m%ISySAAX-B ze{K8*(S!=Y&_*MIA(`Zu>{3j`aerXQ6UuUQNHDenAX@dq&h_@_ANX!*g1et(Apu3) z3;G~`{@^?%hQT0_*ZgoyibO%ye$%yg((xZ|`vgAx__+D=f;u2EWLbtQ8=T391$#Zg z!2>`!rU(ps6pCnG57@;B3TRjmuR5=3w05uhNrZ;s#t5(=$Cil_aqp%)=|gFzbEwK# zZGN%9m%lNPKND{f-K8gHaFL$R=lov3R78W;uma3^QFGz058-O_{HV$D!*R@#r+#0i zm&R^g5O$R4z-}}i=C1LUPz7sphIJVW9M07+)`b?6EQEmuuurTY%ax8eYDZG^Bny5J z_<$A{jt=vB2SYP}m7xPXW?CuOA?xSIZe1qx`Obsc(tAQ*rlJfK?-e)t-;lE3U zDanGVMcf&{_U5qQ@uJnhs?;d79O4LWudh`wY2iOJmL&W~_vwT&C(qJU79lB_8Oa(rm`H6x7qCHr_+B`TtUlrRVJ8A{j?%cnfZ zxqVBHa}t%mp>)5jbbAOlW^X+H9SZI)_e!Ppnga(k(FDD20JFm|+|c%~LT&kS|FMsT zd~XpQ>$kD7a59S?7uDkQWJC+-pOQAW5kgwf2msgJ&RwH*O*+JKM6uZf|&{Qh}n0pxe+Fo;wGi3S?55bc>grU(h3T8l4y zhQPzCv*Z0>yJt7Nf5LkpLO;7}4vwZ#!%nIJP#eW`pAkSFMU7kLj1RRW47cElR)Mtw zM}RnhyswhW{)8zf;V4n`StJaoKt}e!wCOb=mMrsdLKo04sPa-F zV8_c@K00V1+Ox{niNFji)*5VOv8J-yG3-fQi`9^&sBYZpGDtdKJje=26SkS}w$J#zsNU*Jj zMpLNrUyPZEBXwkGEXls6yz(d=<{Sg*9LgqT64JUFq%>9tR^`*EXAX1i7$m`&ieMl4 zEui_KG8}dBk=kpaj%9CNTr$U%p9NM?2K#h`Bcc7_LN?mMY2mN%!p+e@<_JuI#(Dk@ zxWLT3z-8F0IMAE8aH+g`sUeU93U*Y8@Zy{I7FqCQ2bc7Gg^Uh8Ltxmhy!$96vG|lv zkE!*2ZLjKrp#W^wk9h!%ZbiMH;duFawzi`EJN({v*gvM`J#qkEZDlxEHiUkOJ) z4SlNuc!s9U^=y7oJHofW#k(-v^eD_E6K>~?sqeRhGB`PA!l145PAnn({Xi5S%2^5I zECiz7H;4>__Aco&pqu!GnXF*GX9#~OH1BD@;EAZg=;e7zoh?mbd+5rcC)QGzn0=3@ zt6GN3$GE747bS(aU>+GR5~pqc5QdD(GYD@r2#=dLgMgyT3?jW(V(tv$>sG??bR7Cu z;{Jw-)~%Rzth^CgjgU1=T3ks$H6`*4qV^54y;n2hKv{VP331vPVTJ`ZhLNOeQj04& zx`q~R0AdCJ+e5^wu=%3DVHTD1{QcU`A?WEg1`ds@NviWG8dGILVG6MTlf^>(1UaJx zYjK6m3Ic3L!Pc^1FDY#ljf(R1#7RT?NJE?#fv&AU6#h3z`kqhfJs$%)b7nBL+j|z+ z29pMy)gH)d4u7Gs;k*gwra%|}3mm{SaUFtB(T4Q3YV)`Os2Sc%${Locu8Iz=irlR^ zB!&w*FL;T7Kbu5sNJJpL3?e?)ts`V3e5t434Vi42fW00z5&I@vstevCTR+maK5v@r zrER@SGl~scHBSV^;pyzEF6`1yTmLor!Tn=va`UC^yu-tM1gTDxu3;FNoiQJ7gilx)pA>>!!5lL@47?Qv z3BvR-K|!bpf^<0k0Rp%bhK|4eEFGwSWDbc(n1~=S+7OiKa07;I;`nW3-ZncVgqR0` zh9BZyXHM9+4e8S}ctFtNZ!-m98jK?N+>F>0^&C|Z25!s1wt1c-I9EULc_sWAXq%4J z!Z$A*${vAyDY@&MnEr{hC0KPmWU}?+WhmiFs1|#eszI=Arm?q(6_f#_9|?3nGv+=A zz9fofz>CI&0H1Z$AlDAw;imjVt* z*l3k3l4>mr82QO_8Y~`%X=?>j^BFxS)^$9IF z2(A7Xb9WgP)gQi%ei&c^X{EbEL0Uo(>5%U3?rxj`Y3c5vyBh=n0qO4U1_32Rah~}- z|L2@H=bZOvt^I!1-m_!&eDCXXJ?At<6IjBp-PMJJa@Fq|%SHUHiAPm+GMWNk4u`;* zZMmjHUM&MTrcqU$C`}+FBK#N`Arms7Wg8}7%P1ET8E(rgXBb**%Vm4~dC?Zt&&hFh z91pT%z_*LF1}4`YhY6g#BDIT}1ZLD8zc#gvh_lTdGRz6K3!M!4yl5B2d6H~={JPy% zgLA!v(=d5+y$sb=ISd@L3Ss5~_H!7HW1<&>LQ%zzN}M4~wkXd5i2C$b;-?ecK-B3v zb-T#Uif)XeQAoo(T2WP}4kq{@NAWomVuMd_WwqGVKVFpkWN-3?g%BcCN&ai=#597S zyS5mPwyaaupHsRTj$OhhE>VS@=To2%DnQ5#?#0yM`P}9?)wUzu!};PSd@S5)SsOUE zX*n|JI85bG)nka{^gW551b*gRXOsi>bpxyUFZX&vrm2pj4#R|Rfv*KGIeJ4lAVx2B z&tAeV_wLqDiP!grR*yE*te~`-jf0#G#y5KyFmMr|lV>*|3q>0d{wh zrEOc0XFp2hz`5%Y%Nu4 zujFejF=bsbT`ZraTVfqukxskHwO&aNxe~az;vug{#jg}MuT;KlA3&^QU~-moBcZw^Z^o@!daIwMR3qd1>BV<;VVPu%ic~)%oj8N z&MA)_7dFwT1U(msfzl?P3!CT5i~I6RmgAHAiZVAOUtMXx-t5%gyaaf0UTVKQ_S_jd zW_$p?9SqST@#^F7nlZZ7wefoS=2nBmSu5>Us|-$_V2N?GkMFZjQVu82@KSxV|FX?X zi}=>O?S@|b8ao}0Uf1%O&%S*;nsVv2>_1CV2+)!B>hS?iL+UBvaxshh>pk8tPZB2& zoqKOtA0L|g#nyArCHP|Pz4#J5z~#cV&4-HX*YYG9%@sVj?%vPGX_@oh4g5ekeNTlS zf~4m1otpHSqV}PkcAT{Kku!N1D>WQ#H4G{JQK4;@WNiOZJmj_QWr~ZlDI}cF>v#Ic z->Y7~-*ktYnrizD{sxCT>b0Lf)!GkZdeV}H&?Wec-QCC9JOs)iV{)2?cV@bq=SefC-?a%rn-)7mzIcA^oH~w|^jx9^50{F*e z>OW!kk6)(H=6W6iKZbZec#lBtqe*^w#NT_X_`1sme$)Bu$r4zvb3cUlD-wC$_vXF` z>vld|BI@byEIpbi`4*d-b*e#pb?r}8(x%hpeK;DS* z14U8_A)5DWu4wx|VUh4S9$(Q7L_WjBnm1De4^ooyx}P7bZO2i)cw^oCKwvQ(Po-3; zInr42J%vjr>C^8$Fg`7viU0YGMcHsB)kl!19e3nl&igbTBlh};p%~@@EX~G!_T(!4 zUdsk^CPf`)xdhAK64uzO&6dNKLMXf;iP`<&P?i2_C^nkJB^*2Rxur>k{~u&@wcZW= zAa$hP<1cyA%JI|)5B#`lZuZg7VcgFS4LexB#{@|#wmdKl4-X1E-;A^Fe^*4jx4Pu} zka%J@FQnR(x0-Q$Jf;#VvAL6s7}y_8=d}sWuyH7$;+W%m)L=Ews3{8Am#6Bwh=1d; zm?!VcY!S^<^v$?i-%g{nhoWxsy_P8fg@E;V{rmlQ1YErUS_19?adaGxW*8y_f;CJN zEd3&p#MpPGEfiPc%aFdwM>T;}MdDkpExC&Kva>Q@bMFfjiHz>_Y_kZ!3o<2P<&qIY zWG%Zv<#bm10Rd(hmbmW%i|ORQ{>C8GY6&A5Q2KCkU@RlHqnjC{ve2x7#2e4;OT+WZ1Wy;rKEEuLe=g5}i)mP1 z<=t8Kd6{6etfo8s-rkR?Wd7T8%qYKCjl;nZLReP zZA$YhZDRXcgf0+$1#B#eLnp(D7VtrGmH~z!*}2-fJNCvFm{mXtGH8&wi)U0mI_z{=s0;)&Q;+&@W9*XE!ABl5065Enp^4bqJroF}l(o>K(G;skHuXvZ1Ky)+aqx69&c%$N(COcp)`H=iFO`ZG7f zHSGTJ@!gIGi(d{znwdC!XP%di!-fVWR?9wHR#R2e%a7P`9t9HoO_{4?Q6N{iOjVdK zW_H8u(2V1X`|4;sQQIc(7|k1^_;)EEaw{+D-IQ~>PE0yDGN}?W5wdN$$F`C&{MU~Q z_V}&zeW?65+soK2+@Rs#0KJY7^=7Bpn@jjnGIHu(aVn6SaeP~#>1aI(OOPP+WuNNB&uVAvlGno`Mf2j{f6?(9ayt&S>5c+*Bv8HS!oe;In^JK zWGX@e^9`{jR)k|#8jG!ok@nqX5=vy#NG9H#x1zN69+9HwA?`UjgC@dZw#rL|r%B}o z4u3INRM&eJJL4H_6gZx#Zy#!f%@@^HWU$KbiM^-_?Pj}lj(C6M%+>pPp@w2)tsC8> zt<12+Zrrh4U!CoB{|QI-t~HkFHS;f@mK3gUfk+YF&6Sg2DZVx3Frm#cqPcuv&+9?$ zx0HYQ62HbCI2*03EG#EA){=*tD4%6dPQ^KNzlolq>Mk)jH}wwwHeQ|>u(q&b%;P0_ zP-R*sH=L{g{OehX#)LSzlxY^<_`<&58KFRd7htVOEF zWm6m!vzCiFt(n*o`Z!nhx{UG-!IakMGh7RrbV}o)%-TwC4#p2>F&15eWE1rq&8o}i z)+Lh--jla{p5G|czqo0ZEofbm=VFh)l31DXb#~PjS(kr)rdn>;CupR#e}%#g10YH&UO>(5(;ak`WHAdg&a#X*HV zuMT}&fdXmW;}>}%t?j`+W$1yEp~emC6JcoyZetfNB1zjonkwJ2i9&mW?5t%m58S#= z=jq*t4Q8o^2DY>har%qP&BQvU2EuZ`{2RxGCVoz4*>9|}8_WPAe3S6bou!Pwj1;AK zIS^sr^ffNTbUM<>kZ!svqzTWR-rjo%Veb@!zXYfVFy@Qo*}HCWHNZ=M-OxIE#@_Rk za}oKap;4G+#9S|DSmihxog7hw1g>5Lnygtoh!)^IMR|x;ri|-k$NT zbGMkE>LQQVrpSM-F$bMcMLMO=dG^nyI;XQ7Rp=(y%-%8!k*TZ(wT9y~{z}aOGb#EN zf>IaiC)oqvV=ud9A^*JD=zNIM9k0pB^GYUhQ(m;gxUV{e7ggu5GTNsy)H@))rPW=K-xgNde#Wj@bddy>*%qQx z|M7|z{V{f;LVs0>#z<|`du3_&07=TOMGF?2AZbX@N6W*Oq05EmPHs#bnq|{)|O3BJfsC>~~U1Cn%b(^KR7^9}7rEQGsS7WeR$#UDk|f zB2(E|N+*8m-=fKM#(IHX#8}iTKkR5}7V{~>X~uR6esa@1`qBNF*3GUk8{?x7`MsI* zq!~S!wZ~*+7*zPo-<;x!v_6Q2)!E>9ChaGh$(fP1JJn9rZv&GJqAY@4PUp0jrRJ=J znw9TqUIOTec~MH})3vkR=AhA$p+6^?WAd zN4B-0Amfo-?Q5oG{Lu}_Ad>6?uFpqq@uLIrMtzxQQJ1%tu7qxLq{ITkv`t66-YdNk zCBM+Y{d~`eYNtgL@)*tkZ+j-nz$eHYaF~6GnZJ9ocaBCYR+-F3L{XS(_SH(e1-2on zoo|gn_3n;g3zjw+NvS!)SnQTXAvTqAoqe%F0c%NJ%rqQ=mZ;oic6u@PmQdr67hc{L z51G-fC~f)#rTjh7m07er^rBO}GnO&NZ}vmo&WjtRXwsAr^?o$%N*kQiOc8?=U)l0` zZ!;lS^b~n}r@!fL`f}3->0WMZW13r>lOFuROu10gkyS39hZ-X=nIDw~6{8PE&&e_S zDHw2d^%b&-Zw}NXkoyrWgmnkxq}t|I0wlDH=F(a5aXV{se)(!imXTJPr9>GMWQQ&n z)OE$ydhD5@JEcpXm@LCbtPimh>^A6mvXH5C_QLybp6Fagt&Y$vTU&Df!WYO(O!@AZ zFx=HtL1nK(=p=)4jJ#J}v#hte&AKwT-^3N7BXXk{6%Exg?9b5AqcWF#INM1V^ zyM`Z+t+1*kB4gzrNu&G9{a$Ii`ITqDShws*WRqCUCD<1H(leptsX%5no^kH1BcfUc z^=Q^#sf)hmOcFe~a;uhDgv`>Q;}n@p+rpxLEwc~!OU%L*9=5FDS|-uUGKohPlT$(w z!s3F>BMqv`!w>qDSrxB^vn)qh^M^{1nkJg7+Ub>LycI@SE98EKR)xy@g`5@4r)-U` z>wYsfC8vz>)|>X5)S5VqFX@ihz1hh^m<{vP6~glZ=_sd4bg~7?4H8T8&`d4}D#j9N zZ!Rp;?}{A`*c;IHcn-%bvg|#$SpWPsc{Q6Ag=I`qIA6rW4xpZ(vn!2v&st#Glh3n_ zAtJrLK(Zj&)-AKlC28~N|XHLqznXy+*S>L}JlPMT* zb{vzS9AZ81Xa4>zYy(7CD2Q8R;%!63Y#m%#F@1N=$ip}l{OaL7>%T!(>}dAtB(|oZ zqcXOgRjoxi?`o2~^TLU22(^=izEs5KE2(*AM&m^r;)*U5^SJL2YkeNAKi|pB7_4k~ zw2=SE@f?YxM|4s}8uwWoEPTL+nLgsd+o)kv1prvY&S-fQ^u zBaiwvZ5N2`X=E0j{ALfxsa0DIe+A<65FeUVR95%Y z`GTM2xS>*xexIhla$%Bo&eyHbHnPA|K;bEiqO{D$A9c`h1=oIOk0Fx;qU42q4l+y+hnV+o&+!k zJ6>2lxvX8f$d_EoI_pC7k5$FEz!O^@K}XapG)|=^F!tl@e>zdt>@If9P!;;I8e}T= znaR(}mwbg4pNYBASRC`huO!w>9@LmeWo+zcDP61+FT`xko>K0Ne{htr9W}W6onD67 zS4aySVQpP$_n!w?8?3VH&ux(L5bd`}S@v3`&jx*Rk!X;Rs{Dg#vWHVHc2aL-zDfE> zLXdX0h2~cLyKIBAQsGAL@{^6#L}A8;8eZy)s<>>1@2^cePpa)1$Ea}&?m2M7nD-pmi(Zj)wrT5mPoBl8J32KQyvA#?VYVji%oRW7{CQ}; z0V?w8&s-L;W2gB+@yx>)_Xjc9I&NsaQu`o0j9buQ!IWNmpEk3`t$sU;r*#p@^pDV^ zCaZ?30-s))okP8XGbY6`+Jht6<9G-oSfdY?C1rzl;TOk zVse&y!Rig;V(Cl5Hq$ljU-Mao-lz1R`fWu=N~FKXtunDC^;`F-{uF1CdY{i*xL}8y z&C6us>ba9}YBj}E^?=7p+A4d2$OJj=@z+-*MRFYa5-H`#klZb`H@e9cA;!ZgR!@7O_0UjHh$ zr}Id*)QY6@d9-c3BoL?K6P$k=oZsHlzxH>KQ<{FONE58he(KFf{LjiL6xl4YsOjHI zZ$sftd4HnU^#k&9&hlvgO<6;t_2cmGNG!^dSq8LbL8vb7j(5ulF6jiZW)aK8*-aGL(=jtIme}V4$ z43)n-&uvIhje#}Q>dhrXrhSBWOU4{f`uq9~3o;Le0_u9>F5Rof`;OI1<%oNCR3Fr{ zJB!3UKO_^!k*8KNgL>1OyWl;)yhVZ4s(azn1)+i_;r7Gs^H(3YNuLs!%Y2|fPSzh* z=hA{f%7PZ@QrFr|E3*PNJXN+}dzj*Zf7_Y!7{Bh;mc--DvRaM)Dw2nrYMZG0=8MD< zt^6sqzImhz-Yss~-fH3YkYE#dLAVezb3|#7MX8FbzFAV>TB4 zYQJW>tf>?P7OfX?=A{9ajV+*TDn#yopt@QxgQxF<)yLne8< zlDE$x?^@88GWATZZvS#Sj>z}n%yRJAxo6H$i_2e|a zGSY>O9Xttt2y5vyo6(&Oi|x&h;5`$&{DgiyKhRmtg5l2H_C(KDx0+T)!TqClIk8GV zxhXelZx$kA-?-ZpBivGHz}mY>_p?Q~#N8?EuDQI7^LL-wr%?L`?2{6H+&JnF1(5f*f=xf&&!4Gm4mjQ2 zK8kG=D*vy9g9xb*7alhcgCI(A&?0)Ph|RA^|Mo45>>ElM1qum03MmUJd3h$3;-H|< zuBOhXW%)ml!z*2TUVRT<17Ch4%{TUe{N}#G7IyzB4gn~|;e(u~x?+Haytj^efSR$)6>b)YA{>NsxizvyrE2(5go9j_ zkb0?@WRrkI)oa6CS)*JXt29}Q{|Dh`EJLOS?gJI_f&2|O7 zP7RHEb@O6Ht2Qm`dNmZ`;2CS@7H{X!>}}uXj)MUX zD9d5k+k8I2dLhVRF3@@-$ZpNcY&F<*I@oGI$Zq$e)yYTO;~>i`Uz6QrgV0i=h;-}d zc-Qy}`_yXZR% z^7Xci!k4C$Hu2f96&3|wC*WdXx*!D0sIkEBm zXl>}v;_&Z@vF|6#V@DGs_w(a_*One;myh-~|DA3AIa>bpbN%nb(!<&G`S||+_{qV- z+1bL+v$fOPmFt^{pL;)$`#Z>!|1ZMf=ia~T%YT25{{7#C!`<)4^B=eWe;^#j3Ud{G z=+?XbH{oz!wB8Auxug2nO9w->5?=TA39Nl zgT}iUW6>s>(LSQ$k) z)X$W}^h|bl`4p_Qm>~Zt_k8hNMGQWBH`UV}@cDYS%H&^9&(r<&QQd!p!~NAG+JA(D zaJmVs^?wr%Xpyw~9sdyyB~%Zlw*Q-ONI($|z9_0QXfS)9LOk(LFZ6}gAj^v==>kT!AjzP2nXu_ zAskAL9EVPd>|L^$j&k4n>mF(S58-fme1t$P)|DrGVjeBXhO?ithJC*LeO&xZMxUi5 z1K0K>JJZ{rCO3ll;H3PLjQsRNajAV?McGjCX%%t=xn!SIzo@@aYPVWh1#iOYJgXbn z5oWF*xMOxqA7mDxsOn}fK5weyUUO8M)>h1Fo+G!sXw9Z_U~1b|2zP452y>{l*c9`- z>PqkWG3xNz_=Mi?N00LX1>;vh)j?ex8VUAdFE4qut9fIO;$c6&r1a|! z0-g2wfffDg>v-I*&g<`Q&E9ehGah|%jlr4u$t}vB{@M8Z>yo!BV}PddMzO!gl1*bQ zQR~$c;!Qa>lZQQ$c$1tb4DoO8_?+;jdEdQgo?t?~q0RpRI;p5XzNPv#E)}ZOxIiQ9 zgeUfJ9I7&>A^G%5REa?;eb!oJ<8BEvImm4F@f<0cAO@>*@>w2SWoWbgGk@VZ;Q#LU zUhxmcq(J?T@t?};k0*Qa?_fT0QzAcx(I1bUpVc_-!DTqxMLY9w1e0>V*LoaqWaqs) zZSofVUH)rZvUavm$GLf_Wmn8;DbE>)cQXEHT)28jWc~Iyc=l)953V^&m8*FVDZ#`a zmajL?eW^Lbv=ak@+D0`$zO#Hdawz+CjIdBDo(TU=LwcpitMn!1YA)ZGFru}LY$Av| z#Na0eDftH5rJaYlDQsT5_mPfE%5^Ls1FYNISy3H8*ntQDw!eRpQg(9uW)R7x(~sxp z>=dYx4>^RAZ8Xk;F;`y24#dU|! zl3weU9l3#>?e;9{hTCM{Uq*#EDDFDzdJ9O_x<%gk6)}7-?(A!s;k%7od(J|}8hBhU znzX;49kR?yIoR`0!D;kz^+N@_6nSHVr zGs!!R!8k49mgFD$(S7r>!qB=rrIgl6p-Ic)!wzprQeUalO_s&%3KIi#@`3Ir$LD=> zq3@P>MOq%YgzLu0L;0x-z4#2DuBcmI2y#l9`YQM7QxUpId*?=hl*1|Zaq=(jFHXVV zv#_)nZq$?dA}^z26DaYeIP3@Yvj)5kLTg_;gX3aCLQ`{Z$sgKT|!aSvusD*wld@)Y( za*EB8d^pir9`ULTo1i9SQSajEtgVQW#^;xvUm6yx$mFSl&~n5S=c}hReSOYsp>ZfR zeF|w}t*o|FnjaOI#rC}M-LSXu)T%&Id$pF)TgZ%MG>YurRmVP^yWmO7G)QB3T2a*o z<7R6gO!C;9J+pVueVJEvquoBgQK{^dWkjOylD>T5oIsc^y=l#pu-iQ?76LXVs1WF` zMyo!V6*79jia@0n>w;eIjnI`g_WZ$#d)Gt3@B|{|5^A9|!+WK-Mm*e$o%c+0j%)|4 z^g{-}wq9=)Y5;Ip7C?^uh#1_9AG7ir$gH9XSF6sM7(s7*g&W5rZBTR^)J~HfbB%Gp z%}C+UZYI2_9O<&ZM@u0j2s*z`Ob-+@A{?>#z=@Smv@SkP1Rd3!bdR}P-D7k3J!ar_ zl-gIFT059FUNsZpmVa)=_ni^xE8)c(a!^%FACvwCa$BDh%VR0dd3R4SM_OLV!b41 zIg0fbSnP8ajvKDgK zYX%KddEvfe5!UugAES%BFdKX_ZtRs)JzOjVs6O$2m0`n<)Vyxvu$E*e8YZvs5#vN9 zQrccpw38d}@n=QAzCRCqtHF9E%Wd8yR^Va1Ja6-|oGH?qT@qb`08NhP$m2adjNcYj z<-)E0JVW zIflpLP?2FVyib9!!%r5FFoWe+W@dp(O?)h%=jIRLdhVeGH>8GqaQ|a_ffr=gs*xTq z0^q*Pp&5~%SqZF=5c*isD4graG`grXLA*d;)^ygW%w^W><;YxCw*2A9lwr~$xoEfL zmt`4|CGDhDq>%-_Y;_Oe4a00rg5fo!q-~KgG3_z$Gh%?dF<+Ns`iFUYbx8(wL%++B zjI@W036f0MeiqmdpLuxoql|i9H+IB5b~iD0RqoY#Io0Mv>{r6LS?;*~@|TC@l*buy zEsb&gGjW#>>{q0eH-hmM>hZte@%TmY(Ej)*!B{{C*S}%%d%=WE^@J+71c*Ev78^PC zN&@<_1OZ!O^i4v6TB0*NlK3|zsUI162eI++N1BDiP>PgZ3QBm`Oh}rmh z2ajK64&!H`qMOBfS;d*y+v0qvQN>LFF7*zd|L@qA4CdeyqHP4WYdyFk0jqL4y9WwQ z5Qp~3LkIM7hV*h0rn6DOa#V7A@^{X36nIuB*Eaz?FQ4m|kn86Pwnw0mPp58@_y{05qJ|5B z@tB{f3QaYIV%tNzDiF_B5rpgoS-n`*y@(1^=l~luwiohQ6+%s3NH1JSqYq&|Env1U z{DcodIS`3L;6y#J2UiiFevyDeQ6dx^s*3g9^jWJa)_;V9aIqA5u~=tTqHeyCd%od& zyir&1-zWsY9)Y1yQZtS91T7%IDkx9D!m@|zlb4#Y7YqnNlU;Lcvr2oRIYS+#iC3jj zFo-*QS%hj?1Z`PVLYY5#S%5-WC;)7aUyhoU)9V0*`aQ+q43 zX-l#bsyh9vs#mKr5tWsvRsSlWPtejN*XrS{>e0^X@hp(%RrRz2*qf_nUcYA1zh=%K zyu_Bfx>B?GShK+nE)~bC(yKi@%_4-?IusUb_gAQ2^R+|4AFohB)4E#)2sFB~xw1}A zzp9@cQC^Q#0mDj$VWH3+^wrA0Sk5E-FR zkxZphZI&5BlYRzv-3B?kmMi~h{;&pO6lsBvg8UGW==vN#VTgNH%XmkbKUU+=2qFss zCCSDj_AkI8FX-vWcFr!yQbkD|ST79PAX!y9S#ADZZ91KmIDgt;YxPfht)2$0Rt{}g zRft%8$WP(AkgIl%=$a(O8e161=PJW>8svcJa6o{v$2!6*L5Q^u`zw$_SF@jLt-M|B zeP6B0Ztc1y@6jpFuX=3zgzVK0aA#N7muIzG{-`snhFc%ZNnVsJQU^1wqh^PuyH>|u zeTnU@o~3|J{V7d?RTBHRM=Dl(p@Q>|^?^u=o-XnpzcFaeHdbvfR=7iZWH!{T3NgUe zSRh>a%iwFmbc0VX$ZHx@w)XYkpRa)NX4Btj)T+JGf6#tL(NqY&tXCwe_NhI@dee>o z#|syEyMliT*L8_C+?C#I_ z-AVX^h39pe_67Qs2${eEpQMB|54CtK1jccV6=h8pxM5f#P&1M z*Bmle20oZL1WUgazp{F&t1!|I65d%_3vuzEa>*)v{G8)}RYf4ue*UuL?AbJNSABbB z)r&s^|4tAe{&*b_jO%cZYb2(F`9J=29e-9ij;~N^pOy2ex5W~I z<=2A|_hnT_VNbYbjd0EJA&usEot|A{XHqz3IwCUPKFvKUj-&tO)bsF@|37&*)NCQ|bgYa-VOQc3%j%HgYn@YfM2v_c$8 zMGGbjBB8M(YZE17FT!!@&9~>MZaD3!oz6eW#&UTq`&bQbH=S@Uz;Wfu_~V!p6gySm z4{_}UIn#pO>#?7ZgFMwxoLx~=L>=caX!AIC^LPSh`U+&*3vxB>g!y+}KY_f(!6+k$ z-0{mId8Vx?_@gNpb_GsdZ;v&o!;Jfau3QJ{DTJG%O}QFSG_NI^@vg%bbsxK{RJcfC&6robaJQt6~drq$Ihq(s9%s$zq(ulqC%jJ*01%%g8NUQaaRLX;?-tS#@ zUqmwv>i!p`TD#ww)$$_w%tC>n4@agJ(z}v9P|@H~i$xjJVp3HW!3FU$MYBhN2Upnm zj55ASQerJ?_rB_+tkq22g$)$3Ac9Z!b zxQ_031@>qHc3}OavuU2NFeKtKNAVnrGM3_>0mrMJnS8R~*&l$GDg_Q#|9UuBR0pfav25@uS6c53~ zp_a-}-H`~#p%VKW z7h~Z;3=gm+ESsc!p?(^d}~1y^q$5`(Zs6b3Lu8vwm= z4Mg^!v&_&*Mcw%Gb}vyx;5z#wC!6FF3uPDRL_3X*7Q8PjD-9w%?`zqwQ|Og~Y_itK zB`PUJ#2kE|@Ag?zeBUZ&d(J2ln7{(&5+4^puMtPb+yB6aMq*k2KJ0h~1OV|2_X0uq zSLl>3`oOXm{PVEASbVoEbR53JZE;+%(yUB89_-mq@HWnT1vlD(zjzu?$@8eYiQH%BNS7@no}VX ze*oA>zuA(C6vsF!_D~l5G0?&m#wM39ZP~m^v@mc*U*t5e?(bLg8aPQdwi>ul5Xw@b{;J*n z1ZB3RMSnNySGK`|SNZF!3rS%bwM*X25Jk{!&=AEl{CZPOESh>mj%$Abi&@~8zKBdw zVz_VO+pB3wNPp}9A+}udw_&h+*+YI8vyzhnMa{)v` zpkri5riwLrHs6|_HTpLDYodS86KKhlC42YS8=xlk_hB2p{t7~eq4DGH8;aG1`Qjbz zyN0^Gd3yy&Zw)Q|OXnCc6u4IT@+hz`F~<)8#NuqHZ6%QEcr2I~`6}#S-$vJm24?Mr z0X->HtttKSCxtJF&eXnBEXX8LT(s0I9)_YraQ{jWrV!ZB;v6;1r%A^(45q0&_8p{+ zh=4y9j(^|s`*}4rb?yNo&p-g75ZY}|n@c^ar^wS178*AxG+59qOC$`v@I9`(rII>` zdn?+|=JmU`ra&@?0WeD-?wG*R;`oD9QEp70PGoeu^iLgl7+S%8N7 zMZt8RGK;2T4qOz!mBMP zCq5j_6xAc7xREy;*~6+llaO1nOG_jq0b)c1IWoe~C1&^no8=QLzkzXxxZuxG33^sd z7`l5R-sVh|kL#(C*yJ)`HWvXTNI>ukcq+U%ZuAIyYso2^BxhipNPRFo2w)cP!omjt z*;U_j4iLl{3+y{RJjk$;qOgN?iE&wBEr@ykKl)5%sbMbF43~ETLN&*un&s9SK z3^+Lx)rM~$3l#kyvGeYm^~FNS;Lp7i0SNI@p6ihWpM7)SmBRs)76EgbRf)qO+hqIs zDc)~C6azD%7ph$k5K}hAI1rx%g0cAg7UzmdcMjxc((Bz>8Gr;C;uo~yuooE3l%A9o zqBrnon5^5jwVo#Eh1|F#3N`MPeG!6`(*S6-I50p{9F#-AnL6~dSf@r#p$bbZjU64G z3zGu#3n>qR{bYaKrq7az`Z+POf4 z8W>?_I;VZkjBAB($UwI8TC)yUeh64-th~pU#p#kmgSNj0Vws8yUG|NSno0BD9fvZ= z`@rw{VHg@j-@6DMYJA3j*5BsTn16GNM!QM|nuh_{m$9;RX_5BLKC0 zB&cY63>og?dxi>G@1yrK7=Z1H;yu2PY{9n2$Sa6U0uY!omO}~ypu3vIW9^>jqLayTV&TKZbGL&CHJPQM z?%Fu%pmY)eq-A&vHVclQBqcP!1w;GF006#!&IW-;*<^E7uNBMw=l@!^cllEVT$ z+@b^A0MJ85(~oTNAZdmfCh+mFTv}n$**P;O%V$c*u#*TV0=Sc8ih-g0O0-xYj#n7~ zB!KnCFv>`;rrWk7p;{ac=_ z5b}l~mS8*uAp24ra*TChYtvTJ9?W*3DF`<*ty%XbZlil0%o6DMjjY2}hR?ep2Fis1 zu%EMG5Z5n3>KhCbImOYvYk&lfq0NU%q-s8NKV{dH9oxD1*>Mc*w=Y7ei*3cxx501_ zEA3|rlIa5;)SiAFp$LYcrV$bVpjTc3CM~%b!e{R3b=#XS5*%68w_UJU9BC#6rGdmS zIFTXBw4v=2q+H!BV5z3gTpwbC3~uGg(7sqJ7lsv!-R3a`OHY~t0F;Ou$D8)=A;Nv> zYzb$nN7-lv_+hLv2{9fnLT1~;U@qC~StLIqu^qAX)o8;fY-0uuT@{cDzCuD1L^k<$ ztp831ZqeGviD6cCmkO=0!Xa|K-f`huif2?I@{O<;<|(2&K0bKv`~7IpZ5#d{moTGa z(PN4HrZZQ95J2ElI1y_~Z-h$LAo!!fPZRv(xYiJ&`O8hHTqi~(4uG~74VF&?DF00k zSDg-5Uu$$#tUC;BTzpUi2#^8gtadK9W38E0?J#9i*gwh0EV;_&V`g0tF=zO zVZ$E9&;*znJq*nj=A_$BB-QeQl7*i#6zF7ZqejuTse{Vz(gk+pOB4`;zKnkbEz*OZDP)8uL8LAU|BPbPx>-%8b6ad5N zuH~k7zu%?RD>StfFl^nLXNWfi^x%ydu>8P4c)66~+XSl@2^I1<0*n#vu96sxn5r4C z+~v9>$k|LNBitcjo5KCv=&(_7KG6;u`=|)t41vgc@FQ77Ji`lY{I1e|7!aSymNM4b za|pQe9n&q{b)-+@;giO&Ocn*xlNpOdF?kpov&3(XNq;t^+H|9>rL2!sZI~|)h6iIk z0hJ*GfM7YyeR&ur1^xK<`;@r+XGVmPII}7#rjuoX`!+aYpYoG@w<;^Wd1se3ZX^#ZYo+Byp`ujuugl!c`S$vcNC8FhR5|1in>a3NY1S z%ocOf>V1itbp_`Wg;`bn0GNCxW!P9sK3QSjk3JT%&Ir}xW{%z0Al4DZ=c8Q%G%X4l zUZxXXwz4HdCjpzgbs0+DBC%eFcrmdOp4!Y$XE#<^rHS2m4)#uw;Qz*?MntCCA=yN7ET%D>ZwVnmuVaD%Wpz z6~@!6#?uSr-B#ni!n7|Bx625p%?&5ZRio2V^EL%9zJe@uM7T1tc#;9od;w^CLl^zz z!VZyuCz-4D!5<%Zi(XCs`$e`YnT^(>h{V*I&9O50pDgpl<= zRl%2E$G>HU@)pR;if&fFh$O>Yvd#q&Nk@3vDiJ!V3&*s+8q`QW9t#nVeTNgKqKbyu z8|I@6_H)3HZ*%s?K!>yiCoCbt1u6uS+W{6xYMFp!i;@6 zC__s<-Aiw=cx|!Spp$>bUvMgILO0e3+}myN)oaC*YyI1x!Iy=#PMmd5RrU74rRE@= zXrd)M)!A=K;31{;v_Zpf9EMDTAk?98H8SvD(6)^=w6B>Vn*jL;YGcr8aVKEv;fJmg zp`(WS*ND(jUmkKZHbm{hNUwcfT}w-2!f5l>Xq#z4@c?tzNK21&;TUsM!D(TIWAiB0 z7{xjmw;S&sY@A$dsPSuEGHvdZglu7MvEm!+yKbI|n(QlWYFlmX4jQdWZ~nkE{@rb? zL4+O}7Qzdg|3PHDUJ|B{kN#TR^cAZCd*tR7mFc?Zf_*Q@17V8w55%Ib2vC|*&sI&* z%}pEztI5Gve}D410(;bhQ0Rn1Lbz^Z2s?f#4*(tG4*1d*PK-b!o!%kc-l0xIBbzp( z%7c^H>K9L-QHbxB9_-Nc>@YjSY182J;vu;cA?!my@}XT`Qy}9sPz6)##AxA(-&i3` z(YN8$ z%RtSZ|HuTLa4QDE5Kc&_{$_~5CQwT(gf7xb*E&SM)yi~TXmT@Q3G_3TQmIm-_@mJf_C^_(^jIRK$3o`Fs< zgwfa9FZj^zFeISo$nX-#?7NE66PO`Kb|7mX=hYD75N7dXX4b=(!&Y3qN3~3$$m&~7 zUOAvKE65ZOZr*PD`Ox-r&#^fIUX~9`J$tOadf8k)XxhDN>3}dLGC8DJa#rd z^61SP+iF* z5tmPyMqHmYA{jn`o-tf-rEh{C=Ht zH(qcLBWd=we(~Bp(k+_POo7-xA(`wDbo&=f?e6^F9a$QGZPI}*7q?c}EH?8I4D~>& zL96l<&0@5pFl?6rk%==lBn=4aY&GxTgOEYcV z1^YcRj6%-?t-XCVJ&@KZ;!VVP6@jN+-z9D3wZpKNdf(C8=}QLqQ6&M=4RYfge59g# z)gX1`M0i}nigZdi^0;yEnZ72eaFDOK2@pB*^gh=Z2GXEBv>-_OWdyq&`(>5arG}}8i|KiV@RbJrRS=)2MuUS~hIbJA(H|Fs)$5bB zyClo%2vQNOE3Wu2Q zUV#~RRTbAU(?HjPYdQvRcS0Wz-78}Co8YJZG@?g!za0Et{qb1x{ut~QdwL7&yY@4^ z3N-bH5Bo5RdRCDmd!B+q6mF;W{5vy_TKB!%6pl*rZvxrxeH8wDRySxE@@l6K7|=cX zLg+b8|JSp^;S2lU_uqju%ZRCro0wsTkyDRq*S{$R9jO4IA@1E~^Y?t4NnsIv+%n?GZiP<3qw9vgR1H;tNsCz34uzcfl;;(C&6ytUfoo(-_TQdpPt?%Cj|OIK#Y-I?4q}Qr+6KN z-V?!pTOpBjFWsRNjAw=YNNhI>Nku5*7lfFX#ySzv)|&`?KII)z4KukYEQREsnn^5U zNHSf6ZbcaD>u5S#hY1Q|n*;`N@3GM37v=;^d?pi6E=z1JN`)kXD54N>963*+av0T{ zp;$_g^D@KsLb!U&>mUFS`I~*Rm2DwhZk(KDJRN3v7fOBOG7@h_I2On8VK{-_=lt>F z#D1AsF5K&}ZT^oX`|uZ03S#oe5N7DW%iPu<`+r^>%oHo6@H*cK9?h3 zKJ85r#-4$UdMH0qo!df#aaOx^GY6#`#_(BVJCxfR;tMo{HjBkPBy5Y+Lbbbz!^~A! zGh*2gFqE!Gcyo2boG5cNOy$b6>9rHipRQ0C$`I~j38Ukp{2uzwMnThTzUZsoWAfAL zh>{5Rz$#Qk^TSnM+LX*6D=Qw=y*vX>GMpp}!j55P+t)`O>;vPe1q%< zuF3@2Hrd=b@`i8`G0rkyOE8r=ocB77sie<3nz3+YAWKIn_jT%ao`g|4dqG{N_)h3t z-0~p|O6*`*t0|>W9)`R4emCB1j*3b5W4t$c3JudLYt(j_6_;CUImF2sn>U-qk87?p z5zf)k&K1-UEm3dhsKZqYccil4O5bPt!y9&jR^vG-)lBDw-S@Bhw$^V_Ua7Z1ydmdL~Na>%dlQp0|m2it|-&bO6a z($r#Y1Ky@Q!dpS#dTLwL*-V;y^VJ-W;So~nmhG;NQ>N>0LzG>|g^$5rjSxfU+Jm4F z9``{+#lNPJ$eRbho~Gbmz9%u$@%5RVk3AB*FQS@90W=C8#1air(I9kr5y{ja`o>1Wr}C6mIx13~**$;XGv=hJzcwKXTA z_YZ5%qP@A-5)oBV0ZH#@PRez1$AE;oZ?o4M%e_BVe&mzFR2lz!R57q{X)RFnnKENa zWB{n;%)8z~)9qBz2+o^vbgW9g};*Jhm2{=T4I%IjyemnF=DLJ88keK&FN5^~e zmKeq81;P;9Axf$SKUt3~&Yq~(lw2rdysn%X1>RJZ7ZdOEWhq2{#W`C~rq|sdfOYc#X_GS;U z1nNtPv)-y!=|%%QFt$vi&Oj5&<%v-KI8XjfM7i^?AUw{!^zj`dhe(ZyL%yfP7DmI- zR4tQ6&|@ywL$$$D%RkOMrz?&{uj)7CX~f2SJ2UJB-%8_M7IMc)S)!o641=Bv@#H5c z8(?b_HF!Mu}cH>17d=yFzXYe%F|{R#!gy3zola+mdc*Y94h zF8)5RaD3PU^5hIJD%aPFeB<58rjR-7&+wn<{w0xwyJ(`tn|l70&n_&}giGg!M+^V7 z=3tI0zFxQyKioBBcGTp3Itk)1v{6>G(`4n>f*#h(UACJ?$KkUT9ZeGQeYMjZgEkt9 zfx7LV=Vq(R4_m5Dj9_hL$nZMxFTKWkp`W&O_e-8Odc$MxCL?Xb7Mq=!mi+mZm%`mG zY8Okk^Pd~vu9WHAPTYDK3!8f@;Z1&PPF8ivL%W-~ZMI`2QNAK8zLqhg!tx8)-ej|S zf`iV&-lzT#Jk6_I3$p+TXjxd8K>qVq8)3-kYrHpXW)gT-N~Y|SEia$Rs#DE2wOv%l z7#~PKKQdMMO`56w>#~#tzu9YJr5xWO=2O1eySMb;vU`VuvO0vR+M9T&79V8Bk=#FjJ}SNbG_|JI8ohhG@Sc4>qPLsQ zGzITK^!{lp)3tCDWM5*3Z7JH^R@Z5~?h<*7fA592Bz=-&9sT4F3lRw%nX~3^v0nEOr@t{V zBfPh7d|8qH;%b~#pgZr)#8L-j{J=65Huu4MK?=m!IBo@@9Q&Ugf83evAjB3!$F`B$c zN+b0$J?%-)P%;-KV=PA)Lfs92FlJRZnd2HLwC$R_+0AboonIy^b_~p9S(#VJq8;BI zqO{q1I3ajyLF+dgH!4}oQk>pRI!WAYN&?y->1ALkC%Cj*tvJkQj*5FcCnXS@r;{h< z(J8=uO;cG0-5@eu!LeYuFqzjha^+wGNo94jYDFa#>{us3hO&6_m+Z(&i1YP+6lOAB zuK-qQ2CKdg)EOJe>7Ha2aCB1PwiP?HKkE0Le242Z9-9|1+h~6oH7}XBOc%=)1~KCk z&qIa?Mdg1yHZj-Du007W&VJ4)Sw7?wMJI${$OtQ-Yfkd^wG{f5_$1$WPm^)e9{){S zdgfMfyYr9uTH_NA5<+rX7gi=&`5pVWJ78r?i8d2u^6ZEva;zgWCHX8-@uy~2R1#_y z0-ZEJc5|&>Zq!%(044pHipy~mwY*>X@w-WPJ#1AnaC>pR0kjod05JxvWgZ@i3VT)wds6DOO3QdKTRE%?`}-XBo=@Lj`)18hpw{micsQ zXHQ-Qsk*J?8@m_BdG0k7?k?p0c+NycSFXYnL|`eCz?GG3$WvmyN8zF~`E&OhS8s_? zv585y{yeO}g-V~mV)O4g3+A4RF}ba`L4@Z~?)9#7&7 zS1F8t_+6Ch5$jUfn^)~xCGOge+3jnc(~C?|2ICky<+B4kwH!hDs`AR#tc*cw2Y#xD zz;)486k})679Pk(=GQ?$)$AAZ$I9461MfWgG$FfXnUY`vPMYwoYch??o{Vtu_`86t za>mrK$;iLvMf!K;PdBOiclWl5jJt$v-#6RE1cj%NQ%&N<=GNzTnRBGl$#Zh$S%cyT zy~-_!GnH2=qK^)v(!XcvnEtH8OZk^8`R@?9NGoIj1 znK}$@Bd+Z)n(T8fLP{oAb)&g_h*=B5SxfQDm2p|kSId`pi~+coe+m~eDR*24t2tJ* zoVh9$o;eJUuG$nQ;uP$>1HvlkWvc*x ztib;PXRH4Q&bErYuIGD~ErGVPnz?VSGyYF@)-LObI))nPmCC+tSN?yg zS-sA8Z)@LJw5eKudS_j({=aJ0Bgp}+W}QCyIDh2uo>n^<47*+X?%+909 ztiHpzj^2Th&7QH-q9ro`B zQfkpvDYMcoL#tWq_Z?>HmG0J^9yaYTYjpd3$lZ9{&0rqwWj!q?0vyM^Y`%J0%m>&k z20G3M{zqoly)0L~?EBGVHpu=*(Ek+B(Ox#e2pM4$kzpN^;*nbJkyYcE_FwxvsJO;9 z8DYPU_OeK~8Mw`V;qwrO{YZ~3@3s)%@i4TM4Ooou9*;p|*{G0?|H9`PpHgD#8C@#ozbnydw)TJW=N7- z)=%|z?Kf6z7w3LkYF`?woBY~+yjj11CbJz6U)xT`+7?Epr`A6I9UIx(7`k6t{% zb$@B>U~=>p4QE%EZoe%b9*i9R*nB|S*@NY)o3;DnZzul?XBU6|oWDS~&#%#NcH;8? z3!J_9A2@rz_kV)3C#RRF^|}AGvo|<2ij9Q>A=o73sl$y$pCh2m%DIY7#b0A6UO23e zG?fe|FuaMTQEDz7P2qS~-HNSVG@ik4IhGp*E1S#_{cyBC+EOuHARSWgq|{P5TcQZT zH6ClN`c|P)qKqEpwVSKaYvC#z`&hHoVD>qh%n_}`S_FoxjmO*S);_`hFWTAh|F@lO z{QtDGDgSrc*|Yz@o&Em-JKNLJG{#!P;@-kJ{@K0%bfRQh>d(ZwfFEt&<d zfWVKEm(qs67d_8QuIGHZ@UI7LOdm57q(lfyr&k?=drl;7FnhC?ocE30zS|T0x{@4S zq#<0o+x?cXn)``X{oAi@)z;?3B^;kEJWT?}N&8ovV*6nvlkUr3(u276TWzC7_a>S0 zJPwLd@M}(5K=sov^XE?ZQCPmt+~=ozKjS4rdr8!%eft&70 zbSD&O|FQh!+M9q*Jkid5>k779SH}oU_>1^Mr#|5TBIb zN|k$5`{Gj{uvvFEWrd!wqk{Thqez&QRfBu_=j)#u$^N)o%$6mBA{GJ~Zu5oyynjaD zxVfa{jT&I6P;%`@)x9dUvgSS=YMm>c3~65fwx7R9FTQu7jSNt@q50jz_^&z5M>2sg z0Y?E-o+ZnCh55y?hXNMQhwL8lP4ZKapuI&)WLo#MP~VD#om!Z+F!O#Y&+Cs@+$L zG*F^9x||l}F_7OWv!bi}VYkzEJ1rNTnnX-HdKv4h1+yV7P-=HHtkhimgaYl1XNG5jD&GD)(_F-Y~_z~fBL_N3;QkP3wNY*6@uwKclQQtPY)aMe!1*$)`p;(F(Ps8T=#|!JOTn%*H#oZ-%vqyE5F67 zr^ev-dY?UJArX|=+mJs=gRF~c0LEO4MZwFa=XbD}mbrwWFCpD8(i?++r&_KZlnlLG zRObl9dMv~0)Z;W(H_!|dH7eys+u5gD7m3|?djdHb zy<8R-fggRuUhu^~<{3*h=UBTZoHY4N=?)ww&l_#N@cQ70HS|F%KEj3~sbj)~+x%#g z+pZ2d`8L-WQzb40G1RIeo6D*uu~gxBQd=3PbtqhCz-Z6& zt4!B;RjZGRk#7n+%C!!f28^HctwN<|?5qUDuVRr>UXJh}VZ&37RC~UV{}gT#@1}C*sSx&V}JUp($DYWMPrcF>9@xjIB6g zKM#qo9a7)xX6urLhT`ZLv0CycQ%@)fJHC_ZXHO8bi?LYhC7C(+#3Y5E=P2@T2TK^Y zs5`48`V5~jJgQRvgw-0vCi^Q=@ikoz4$2UKvOheVt{G>nE6ofMZ8ci?>FI2zIJ9`N zdqyHOob%dsVC>ofXVP%6VU^JQdUT&0d}rR@_9|cJ_fcm3m3?Q{Z_Dxpbv;}DzIRGp z!68XAihNqD7~PlKEFL>rU(DCdrR<;ULbgCn)SJVfoL?PEj6`kTyI|uKqpBOFZx*hx89o_#F?sZ5H zxo(@=nT_9%apiZw82Yv1lYcJu%0#Z8F!0`e+GIP}{(1%fbYJA)x+Wk{D_7mklNR^H zn}Vjaa4X`mwC+^)t@Y!6NE!+B!THM)JIi&5cwbl_da&nt{s+O8p5np;qq;sWN1iWs zlP?0_SvaW31%DL~QF$Q-atq9|fXibA&oH@_f)G+RGTA!M950~;WnAPVR9B%=LqCG- z1)L>F*nUL3{L>NuUsRa#MyjMEU;gk=y@5KBxidaxsey!8yW16kh%8%lG%S5jGQ@rk zg_vF-YMMxb7sa?leDt?uF(X5nwnHMCNgY`{d0I_9%st;JhQ$oNxs}ysBlWCf4^TkB z&3xDdmYHM-?1I7Pp5Nj&PRgMO0*RSJ_3E zE=Nm_M5O~`%s66VWn#4LVqy?6ij^^lftaS-=zc|kUJi!O?JvISJvH@-T^tNnY>u7a z5Rt@;o2`5{MZto$vpAx0tGCZDM7UR$WJgFE4g=kxb}SFKf1?ZevT*m5s!nB zK*XHD(;R=9$#rcf^rxNw{+97}IUzqezKA#xl*NhZ%K`RHOifNiG$-Qy;du06gz8fu z51?*uB8bE&N0-CCB!waEVAQwD;wf5n?8(h7cE4ds)PKln#h#Llk}ES4uJq%tH{y#v zW~GRCq=>HIub~-}60zFnWS%UF^#ke+6n-%ZNIjFPwvtMF2BhUr(-upkhoz09@J1Wa zlVE96D7+PDx`kM}RTjQM7Cu)85enT$FC?K>O#O44Y)6#h_?&R$4D7;>jcm*a;KUA< z#twmIB0Dld0oZ6P`vDCE(b-x`2zqcM5$$L@GMzQD(tWd>Vc6(?`4|i@-xqJ_f9!0& zSavyOHo9VN+AavgNvIKJ^Qa;}g=P4f;l`QawrAzEQ{te@)1T~dW6%rwq1az2vAr~M zzt}_mH-A2L2u5Q>rx_rPM&6=t-f~vn(jRcE243@79y)*ipPfaCJ!t{tx5Du@G*a=- zvyF*!ENAgY_|Z*OoNM2L8(-YJs)9;*K?OffGCvMFJyWVt2=*%kbKxYz3riad9{*rR zLW?33u}KYz(0r1NtB52U8*vChciKGwS#JErEC$7Fe#LIkEKewQxdvVl^hpu41f4%e z+u0XXPnrM(&Q(#r>{-t^$uByJZ^cT}QH6K*1-RLzK-@yC&cagk0jbK=#0#~RaeI8r z^s>wJSFz(z*d_+p5zz85{&Fkv@(7J`JKSos`=wvTDw|^g^PoIRCrxgT^(JY99`e2+_2YKs@>Uu&YwSU;k1om$D*)f8?pau zd86~^j*St33W6B0J+#R_v4ZqCmFP(m?HO3NqlsqiKRb&Cd-QO~3heb^BEbc$nd6>a zVU+r92;KrtMOp_q9jAi$(Z7W-r^Oit32($sYiz`pC`UlcUvlS$nYCISHE8?cy!A(` zPF#%D!U}i}#19u=94Di?{8>{1>SP$s zop05LwXXEW>demS{_*NcKU_=yZqpbX%N(36jkXF{l`3_QdrSlFSdR2~*>XYBtAfDG(aYa9VT6r0Kn0v!YQ~LpkJ>_ z1`M`S7iJ%IRT)%Q!mDpO+D0Y1Z>n(6wec4;4I?q#297w%(l`kWINeHR@>E~4j|xH2 z*ujmTA}ITnV|$Mcxpe+=AcW7F>@@Pc;U%ID*nG-E zb~I1E77i7eVSB-gVX?&(Pl^LkkYN5I;%scH&f$Q7BC2fcRQ~!bt}mhM1w6IgWmFAg zkN%(S)&{fs+hPN{#opFDD38dzt-9wd>>e${ev%88NZW{}h;|?^lB5($kw0I92J&O$ zjbAvrVA0dhnRW+vo4#;0gjdG);8(XNSKs9AMu|3_s^*59~wcS%!zKA%-W;X23M1{tx|`Ts?EKE8s-V&H<`#UVm!@A0Hrr zzTX0HYF|taNB2*?8Jl`g#;pc?OoA3ZaTv{jww2wDRAl3%_jjpr7bcv6oisu=il+4k zrYnmCR;3GavIkA;3M&|J8t>Xt60yT@sv^wr>O@j3&IvZqxp3*OEt*CU^>{xQ#II+` z?`3hkf65vPZBK4Yd}F2Jwk_yPxqLeN%*Smc<@dHc+&i+s1h0 z(k^e`gd%>=vuX0beol7TY5ish#A;*6}*7Eba&UW7Z0jJ?W>`=gJvDvZ9FQjuQlem%EyTK5r(woto@WvVEejuzc-=PTKU9};* z5Ia?)^!l*%wrVuV4A;d7;%v6z2TjG7L0n3IeQmjb*Mu+iD76{~#fd|$n;c>1)g9z^ zV_U73dzyi1;9%!MJSY9Wl(j?SpI={b64F^K8A&k;F%uG~m7Y6&HjAk?8!rf#te(8b z9yNf#8u6>v$=sYFeJa&wtJN(V)fonb9b(vzT`fb6`0MZ=O!`ESrEF*uzCAzs8eUM* zKS|2Q6rAFpv3>l2Uv5G%wy6a9qE6pFvDTiT?MS;m-5CbI?Hz(nGi5;QaIhD)_at7P% zp*keCt)g+X-xu3u225E48BN6Bl@bKkzu@zsseLqNe}WF2OFv2MJZO*FKb6EeRNfnU z()MSp%=qmSp=l_Peyg!_@K4m}#%2M!+Tz8HjetVP6CoFkgl;e1vJK!<^J6Cgw%9fc zlzT?je-*lN<3!FB1;P%SpxK7+7;xel6x69k8o}PsOn=UCQspkWxR0IGm+bik+!KSX z^`o(Hu%{WyjOfgg_qNesB}Plcw6H) zcvCf64Mm}s6fCR&oBQ`L1b(|}-Q>;UH<X)Y`1g*RO*~ASBIqrR_`Y}vcC>3;P z^p_c1v-DjCOJMG$<{XQl_fDQ{me#IvI*)O$w$iDUh@cn2hWQulIW@&3wj?Icu{n+6 zbPY9P)q<&^L7=}+TpR0FnF%(DCcTcTfPW~$KcRQ2?=w*aG z2--)qodsfr#=gQJl!Zycn$c-)d_j#9fYcz6z15{3C#*eGIF>m+Ty%ynJPnY9;z&^|u6OZjIEfaqSNd(yZ=G^va9k>7hBnkhBG#oraRH2&L znH7;>-8ssx^5WdDV&?VZfQ+D~uk0Tb#-cb(PzYa6X$#PVPdg6Cn=CWk+mC^ClKfNa7x!xT0yK9(7qz$V)PmsITv&gU} zXA{&dW`E(k?i&uo;vHeYz@#Vy7o7DIHI%tz@7BzuOz`ki+j8OYWMMo5Y{@*?`#78> z@$0LIX#j>;X^5WeE})pg*rSP1d`i^P3`r<|8~f_-Ept+?i!~;ZY`K4Ek}T7o_k=Q| zSYod%Q&>B!hNTF^tldk}BJ#a|nS&8vwssT} z5Z9sC3;@Y)QlNSBc$x*-b%swhP)lCGf0#&~p_qR*-prKzZ2kl52N5&mW?;U&HN$Ab z7oF68C$Z{Nf4unI6 zvZ4w2DU*6_@s6M(3xlFx8ktSv17Oc4A_&Nwh9@J2FG(rdk7#EQNr+fc2Sxz4k(n9^ z6psCqDE<**Fhq;83&$Xxk-}kt11E07Mf-t*BZ7%W~5budO(hMiW1VGv7q z;;={qND9A-IKjmU=}+F>k1;{-Q6$@E)-t9{1kQr}K)>1*4AMk|Ypknh_UFBz z*m8U*gLK~0+f5AqMi80C8yez|o9qzrcLSlM<dac5Q%Aj=Ptnh4W8o zM@K`OEEW2B3IqmSV=KwQ2a*YC9=(L>SD?s38&VBvkUSB=!ii34;xlbgI~h2b;T?!D zGS|tK=%e7dmqz*cRww@@=Jt8F1rNg@yL1u5@jldg(@sw>Bpqd6~;bHIe15te}XceUEYPux4F_sgS; z;$i@LHmOF*X)J=$mkbymlKTN*e%$(K6#4G%Svr5Nxu}cih+*@iLeS{*_}kZJMI=6O zOnGVil5?T@n|6hH7a1A$V5#1sqp=3kT+uv~{o4KDc%J;l)M?^~bYN_AfjDwLbE0qLDIQ<{LN|uMnt9h?x7H zH%X2R>H966H54J4cv%~#77Kv;&R1efnZ)c78NXU4_e1?uEBBr#-X>Fk zV=}-jM`Rvsr~(0)#OOr_dGRDuvJ#v*8K%xN7MNAFsO1JJX@bsfzSLgRB0C^5G=3w; zkz9s76Ol0aD^NscS^{d^$LfXx0-lBe=GEbk?@ycFRf+K3;EFfl;Mnz(OdMQW678-S z{3P97aff4Mo==b?C){~chNZAY3E28hfxePJ4-$hXRud+#8WVazlYC5WmFk$>b~RY) zjR35J%tH){+NoFPIAo$IlD~11TG@~iN3hzhD7X@y8Uh#-tM=w^wCRxYl_vdH%@vaZ z5FCf!F$2`05pD*3jw-KK?)x!-5Q9i5*J{8S5dfe!0Huhq(LyvSrBh5JZuJkIvE=U${uEC=jYpp!FOx5kJ0Lu@rLv#J>=1&{!73 zl=lSH8s`rVU=SAjJlI?LntQ%W_DjAC6bm04C^Z9#9E7}D!_3PWP^SnZ(f~qg8)*X| z?q?!u%a}Fp0_dj*1RykybI+G)JT)SEDzm*&y@n$_*pUEIX_hn2Pf%2-0fTUD;&X+a z7&)si$k)MhB8L|5TjF{E)I8`1Dq%uig z-GLE?m0@P@;3U#OQVPMs)lhXiaHIg0h3psW(m|_Kx}cqeC%_1|vllB=SZbmCM50pC zT-@WDbVx1m^(04zm>k1QfJ z7eJH=kb<%Y@~0Y1$is8VgS%hn&J((|N4S}R)ls38&uYm=;Ho}l4WOF5q&$5JpxRle z8h`0PR}pvy&@LdjXg+3n&m@pi5%&z*dY|jvAJ#_&K;K3s)q`WT1JYMZ-9`lJca(ah z<@2=DJ0=o*eZp0jF*Q(4Y836y1|eSz#u_C%MgNAXK?PaG#qcwGeQ;IG1Tw$@5dBm+ zA9%zWN;wJhWf6i=4O(v$N`vboj3@n>$Y;VXNu~RzLYE-r;!d2eH28D243#zznNncl zCmm&>3`2!JLKWXmxC^9i^V%>(#2Vq$&kz5^ji^?l@$7%=4UecVm7+XWo_6bpwKIEh zN#4Z((zOt_X5c(u$cI&tWe@Tt!K_KE>EAoW*P-f)#S^!JsedGe?`zeszo`GIRlA!| zi#Lk$mj2n-T-1~Yy9MK;sz4m*yHaov zM+h+o!Uh%*;FIoxF{61u5=io5hCAE4QspX^`O#`RV@B(4UH$g&+}%%gKH7Kxe$M^$ zn|n+JMEJL3QDS1{m4MwNBYgB`XcuCzKjtqeMfjsIt`3_89l`F>ulKd1{;QJfVR68b z@6G0A13?@kVTun(K0QtHGNeix2<F7 z045#)ix7gi5i9s0!hZx(tD$;R+sL=gb1V6DB=v1#r`9tvDCtX061iF8kF#c(npAa~ zq-i>4jkC72vs5o+kQ6STLw7CnBDYW`2#+oGPU%`N6q5xsQfI6bOu6c_# zJ+qD@n&9^lVRi4uX$-;68WXK=Jw`NXg$$e0ushSGS^Yh$rDP{&(t(X2Aui(kj;4@k!hOBb*) zOS{0QG5_u52D=ZEFLGYfISf5~$Kj*B@_t^yI&3j;V`(7_{gaO?dBzK2Aaze;U09e- z;yg#D@#@LE`sBvm0|@ng;{botXnA8VaARN9_|Q4*=%a~_w8{506J69MI)t~GW-=c( zzr|{z`G92LKnQSztbW|k@Wj%)1*O!1%FB?dX{H?Q#!F=;7LnoZ3@G=r@DDIZ1|t>0 z*qCJwZBlBw;6^mZM?J$!%(E&0u=2h6GWrS3^B-d92->}^r@}~5VNjX%Dh~jIcNxhnwIaX|&rmhsqzK`d(dK}D zzv40Z;fZy&fn~pJ=-3DbnM8oVmY_DUE5i=~we`mj9P5MlKip9k{CnuI+7F@hA3|+l z`&;c(xebNDdA{XMlSDADnx(Lfh5)ab=sycIr4`=Wwl~vW+0d493FGoI){^`F%{okp zY{7^F{bFHx9IW#fu`#zJ3r|2i{MI~$`sq9%CbL}~n_ccq{b&8i%q!5db`UdcSBDp* zovyE+Zq0W9V(s6pHr}n4vo^i9&Uz0r_S!WD+gRoA@)jb|td<9T0{=ofP3>8@>@gLB zih69GjUeq7(Px&8F)yenZP#&ePt#?^J7}Lfa>Z#1={5y=rvoZ5wqcF5%_>75*PQC# z3c7Fpo)@Hdjr5yBa-q;?E9mV5=+QLM4xJk}&pe39KQL!7YBYv4JI|y?r9)1%qVmWg zapd|t7LBTUW@lkWnFb^P5Q8X^`F5q?qdDUUB6kWwhdRu^KBNa6(VyApFCvPB9SVgV ziWh--HV%1{2+ARS>Pkdz8-i62nH{9>7QUw?Y|DIb#L%mqOy(G&W57jWt+$7j$iF;}uI0$2m)krjP>Qo- zn(;0R0|>ckZAxIE-@DJ$?@(~HqIqrY9}jZ6wc_7`1ofL!L;}f!fMho2l;p@o7iWr~ zt$Fn4jn0&CXNts=$Mrqujr5bJ2hJ4INV0z?D=yA!Q_d@D=8Ik@i)vfj@mnYz7YZAf z&2Se~IIwc+WVhUzGV+Lu9JHh3OtERs4b$XCSFbY<-v;hzdWMmChVe0M@=0$RXNKPo zo!V1aLUvuF%G47bDE~=W+GqX;!Oa=Ki<4NK*hqm$duEDXKkE@xkw@j5ho!#`3$G7p z^p2kJ9Tg0n(aj(TDjf34wn)C~mxEmyBVp)6@1uvh6;By6kzAQb>W1@(HYCOVIo&Ce z{OdVY!#VA#8znucybeS?e9lq^{dw*Xtd#t`6ny#W5msj7kUwRQUM;Msep#A-Nhf;w#`Z|I?~ES3H%IppkKRGO z5BBO4tQrie89HjAvqqLX87(?}>D7L&cx<$fWeNy)R9q&&x;A@?9=+GF=bu-9(B7`o z=3m|m=>;+9IWUYIW^Q^Yp8^S{?TJl2oj$>omad5)H?oA@3a9q8{lL7}QdPwzGG} z%UBC1D0ZLOGS3SN3edWZx981`mdLHT!mZ2G^D-U(a6)h5?|-1Lyqiy9UiALn6}~R6 zN4d^N2zH+^5x0Q8KP|8Pou`5F?4Eh#H_amcgQlK6BK}_#{yI*3H50mdRrtg_CWngr zp=D8jbZ6??wP~m>c_5SgF#x+60 zrQ@du^&4+myBjrn&+;L};`fK#J*O!hkXi4%W;wFpEeJNl zOTUAeBxZ#KdTDadbDuM_fk*6Rqskwxvx=` z?~jHW2%mCIMtf8eRvOUC8yS$X>c>mF|E)CCHPem8#GeY}kX6K|gquGyaMCc#Zw>OB zO=Qj%%l#ORGw)7h{DCrM6ei%Um1yL(?WW+{E8|G!eqXDwByi%;Xr&ilQX=(CN$5~J zmiKxmBg5xkHHet8ya>?K0;%Q9lVDmu@~!npI6cIk7y!u}-qAFPHZJ zB=0T{yw^5W@~)0zFSc@Y>XL#2YQC&wr$zgF2R&{?q#BSCwHv^hWinQsdgN}>b*6mh zb^T8epUlFz>$Isg9=<{f;S2-hYwtn0?~CRDEJeQO%E-jhsK!Gu2^1?lPslb0I@L#_KuQqoU;pM9dn!_!T`z_L^Cg?duR1?*ElbSxy#IDG=j4%eBZF^S4t6P-$q~t=cbWj^=+&klsfe zCbZf#t+f$CRf((EH4%qtH|cMdl0V$J`BBXVV5R!4IjyG(YeEq7@9OrVaHV6MdPu_S z$Q$=?GWCU8n`KbpyY-ZcxynfgI-~SXMLV8hXC=SDAEtOA@A9Z|f11vQY+=3%6AC$u z_tEd%ykOw?%Bq?e@qU$>NM)(|rcmAAVBMr!`hcHFM>8TgXPtyB?K2{6#>cWY!04!yiIq;VV3ML@SDN{~!_hJ-;H zZTqz}ZjgtsJC*w9oH)H@wok{!X)=yS!us`W9MpDxvOW|C*%=+XLVi?ADpkAj z1{HQRhY)3K-O22%XT(gMR9}PqC*po%lIhSKj)krCg<%Go(3|K&-(ip;Bl-$uU3_H; z{rR1oQ*8U!7W!jJMcfo;)oJ~1h96>u5)J#9t~AqB=(yb@B!1iB6>%u9UK8eX>R7rA zyc9=}dNE=xXAMc-Pfg2xj%LE*{!45yRiZQ>=O@ak6~?WpzTuKGfVK1{aH)rHxWVp# zZ1X{$m#elCQBe%lp*g7Z7cQ%-4Y$VLHp0=H>pXjDH`TX``^{0+K%!B1Gv$#!sA4#C zPcy5flD8*YY|zS7E9QiB*K+-h^cVJ2eKDO1w&gp1QylHjRVtQ!uhaU9NK&1pb+SK- z;3+9y2W!9FbrQu4Z)z;o%7GLzT0Ufoqn7J++^(%IF}$Yh|LRtQD6AjP-nHl%YJ9wY znRQtj`C9HQ)g$N$*$t&rpM&GioMx-?)fQ``HBz0JFYtA*-lMsjrkIZje-5$nl%=2i zBuly!&dn*R7x3@wBm6TNrZr1QP)9mlWpDdF8Mv!N=!JULY}x}E&9eqv7BPY>j6vbinR z4{~DQq-qV==67|84oLl``5fAm-p9p zdshQmlY|T+vPAFnTG$uImp<+rbFSGZTl!m*8kyN{;%sOar06=0Z!3e^9O`seYMYW8 z$&3Q*UU3>m=@W7pO^>We8Icy$bXgTh7|#bJT`xU&t-$RZzWUuud?8o+u3|KN^ngFm zRGIDFs6X30u9v(z(L-px{<)IE^yWUqg@+^0Qb`bhyJd-#(p&fK_>Nht*N34e4FYBX z*71~AmVBwrW92!T1QqG47t#fPglJqw%BOOM)Q;Q1XPP8rZ}LvPo0m}IunH`Xh3>zW zDR0BhV~jIdjX#|_@oyQ#=6nsBsubi(7Ivq{!q{K8_XWZow7a?+|<$d40 zFJCIN7qhtell$;5nuiMvtghXWe;2P`Ua-3I^Z7-e1TCD67em#wnOq`fhR@f&{}ti4 zMWsnJzIonBq^RD?T(^4j0#jy^-!bs2QTk*_&3KVoFOckQ*Y9nj+lP6YJ&ma{>Wu~9 zGE6xA4>7~(X-){g@m?9Z?)1w2az=V=7I0=gj@}eIO8!^tx2{*J<5hGLk&0tQ6gR3m z#u?dcISgqIN#nwXI(5h+4Z3eE*!-8_$$@E z1+(pGa@0D#^1M;vWy*=ow_`;s$PooU?zqPKR)%7(2LT$rMkPl+sAK19(%mP`W2OIO zLSlLw@b@ry+8`gM@nw!u{dNsTi=rh1qfVHhd0_?%n^A53i+0q;ug>UPv9=^chA;7R zRMu63`&AS(jP?2-*=HdE7JUfBA10*aW5Cd-lf%2ua4%J2j1yp zvc$$fjI&)#_vcKZ)p)OM3;j>@Snu=R6%iEnY^f9I(`K4U>}FYHY{jEz2^iS*n)2p$ zjS(O7!*cRf)OK_w=;!=~PWw}oNAhkDa}^xdp2GY2cx;keSU;1f$MY8&YLdILFFl_j zT0S+KzsPuFxGk<*q(iyO>b+&fW42*{-jRuVwvnBgF#*MWn60lev^>h*o7P)qPnP%2 z-rBS=JS+*8>gcujdf%&5ST%_C+jdRAmRVWd63!wDzc*rBqU&mfXaA>3sY z$=h`FNOL^ea;ava7t!OPOmk|=bqm5i&$Hzh+qJDLSj(`9E!)&1(SORmDOYS!2g#L9 zD&oR19-jVa&$3|nH?I6pJNrWTGmX4NE3B=)3xmc75(oW{T5gcK(nI8Y`PdiJmXCeZMX93UGV^Cc!q@Pz~X3R0c**;s8?f$>otS2h^=Z+ zMf;IOS(7m+Ge53;!9=2PrmOIS61hN7)_A1R_w`dn_zqQ&gBwl(?#5=%;oeZBv9ZJH z!o&wG*KBhO!&>jtY5K+f)-~RNipsA}S(Xp3^!*?8C@Wte=HI(k%Q4UnV)F$l?z0ph zG2@)+)myz%Xj8~-YL57oz3*o5WKeY ziQ=4#6F`=4bbH{oXv{=xS}%KV&a4=wSWNl;%p#w0J>{wHD=cYG6%-#XQ}sF@QE>c` zTCtvIF6^<@?_pMu$$98nUME~RP;Y72cDj^D{k^NSI_dy3)g%W}98#8ZIl!RFY?Th;eQr3NM3YyPp@izXX;$hirZu z*e8y!(zo>x)-1^s*+j1_K&(z88IH?j@E_Y)neFZ4?V{#XgLE4zbV}iKy-f@@#L;rXc@}2+_V5;UKg+Qo8yTl!qDWAs}aaC~?mHmln6VfbY%8 z(??ngUX_numat|v1eH%&m^M5|JP=@URyT0(AMzYr2OCg29KYJj>+95J`^qcbvm1Q1 z123}5sl<1|4YO2)nSuSE!pMXZY7r)AO2mF`B;doL50hlct9Y+mq0ok-A~|^ zc|gvP@C&+ZGD&fKW6sB*VFu~!Um~VS7ji}NOXm$U?WLX1UpFMZSd$Foo|8U>TJeit zS151uKs&xK1kn%bHpDkp(J3OEC8!*2>hftEpHo_sFbM0usWR!I)@eILeyCU?vB;_4 zC~-ZJ{QB6UOQ52|_3mrqB8eMQ0E#faW=Z5ip}-6B_L?lf3-hQ(4zEn4%NftY?~|t}pSnRjxiWRngb(Bko~lSqqr2gYO3s^Nw_^g| zt?RD#NrjhYc%fvqqz_k(O(mqb-{6>=YKWXU%|1V z|7sIUcB!U#)uh-oC;4zI((a)ykny|x=bWZ16^%rQ^0mjhs4Q<|1kyKZ8;kj<;ogg= z#E+L#kT{@8tSpxtr}|r1Zk)5$x6l_`siQ7{deN-ylCgZAs@(nYxEtB;PA?w>Exvjr zo}MRaX61V45ZM%Z zHMgt?yB^(o_J9%TSiHpz~5UIFJNpQYVqI;oF`^pB5j{hf|V8ExT{Y1x#4c$)A z_T)#m6O263?S#iB_D@wcB%J@-PVknnc9yVFlJ``3^-fh0{XpyE?{r@O)5mobobBJ( z`N})^==r#+yfw2ifQ#FN2$}~!`L8}65Ucn$+BN{KkE8Pm@|BWkdR(bQ{2x93`RS`# zA@wYAbV0#1OXvSnP;fvO6w+V+S0A^_(0rQ+H7JxfiVdwvJ6m%D~)kl?V2KAiK9fbu0=Sh9TJ!9K_6O&PE zr^WxI6h^&G_N?p=Y+Mgu(gUwQe0Eckj#HN@QIr2ikE<#mw3I(+ypGmVj?q$xFw{i+ zizvMK7g5l9g{H^TOtjL_5d|CLsJE_Zo*rp1`*@w#c?OClCaN`7|IqP9Tb(v@~Tm2UJQ+9)IfT~KgID6x($b4;m*r6U5H!UBpbol-*_*MglELp{(1g`HsQL%7pk zxW}PiR&{+Ssv-wYZ$&c!)#m~txeU;@)6~&7URg+!qyVXToCAs5MwbOl_N9#3n|E(sp zoQ}3mjf_vM4<4Yc@x{SEV}tz%3#0psb0_0Nce7)E)>p4LR{t!`-i)tr{|6oay|;XQ zy>fRnaXhxOJ$A4+e{wvJ4ksMkpu-8H-?#n`;`s5=pZ^Ib{J+HUo7=n7ldG-1wITF2 z@dv>F-EhJt`UbSwRkh_m=y>z_V7)iy?6vYgbUdOJgK|vVY3m<4p8MO!b$e8w8;y>) zzP0d46^<4=YDJ^tr6q8Naet04bG25Zxv?JZ$EzT-*?;J`TX>T@-naYqmdov|P@+e1 zXmor(=%e5l0yH{)Y*D0c7u(r>bN-^y?cotYSI6D=#+UJSab2CiZXWGcn-PBL`g4D^ z-|!C|_qn`>{6oiO(CB#8KXkm4J_2dq_75E|mbgXP{0ALRH1M^sLZjpP7Jwk%1vEMy zfkww2i_qwJ(mabF8XdPnqvO8w|AUUR{BLx;@EAuCETGYGZZtan z^}pzNk@A1hagP6@<9l+>1ByHU4?13w;QJF&kQ=~pxQ}GTpy5jS4>}%xR&Y>2F5=Hs zm?FUCfc$7Hi7ErinO7Uq?t8G_6ST zoV7+KR`9o-B#AqU^&1+jjas8QL3n{yVXgG8)Lg9V;myE{)$xe>{G-Q)#uAK8fiw zJ)LxRymH-bax`u7t!r}TY>46AT=R-rl}y|$VcFo&`F5L3`J?kom%Dc|cgUye>dAXZ zv&qCOrLKZb*v(Mf{yLa@vjt6`0-sP2I!!hd^*&%su$&ZRoBxbQ5Db@4F;ZW z6O!O4xRC$ILL7uh`sq)E5q-_ZuxOE;<}VEse>JuJaJ$!wp-Si=hfjCH#QBnv#3|9Ja!P-gSoy`{%LeF_<=H9T7= zF$LSeNA8o@zr-FMNYOsaBAX}SP+$J!Vf!QM1`5G?eqZeW7|pY@l`$Q1kxrFq6@{jl zP{o30r8s8TDk~f^k&CY~k3L6hl0(?fH`_jWM}{JQlxc*PN+emkm07h7Uet;)N51e1 zf`{6_ItZDrFy&%=vXk(p6IW2y@gwsOAufX|@;TyIud0coJl#8p9$Vvll~>Lu73R!^ z>b)njl;qP!4^jP&xulNr?OYb8BbtN;UUk(X6<1$<8%$nM#?Pxvn+r;D%;)`J{M(5O}dmos_JVN6cU6GFKSH1z&Yk2b(l~xVo zpV~{j04e6}esRV>2eonXv)U|o>HRbGS1^?kD+s;8Fx2#FKkCO0myzG&Q{$P*>XRh4 zx2?ib4MHC~fA5MIao1XjHDpRHcZ*fsJ@Al|Uu89T3|w#6kJ?l-#_U&86lv&;TJJT; zDUEH);@xxEim>@*kcsU|uHjO>?WZ=E zXlHgkJ>`7?QIO7792ukJsPo9p$B#KlU02k7&R0L<`#X}Jj`X4qn%uI<<1BL}f3sNx zDi|6$i0|}!47FBxrEtk?y=r6K=6#@EdxaW!vLm5}Uey!!CChbytM?;om22IvdoCjF z49hJKv)+kAynvVJ>Gm3Tm6?qG26`ibubOUN`gwu2lfe$>u4X z-}Zq`O3cVwQwP*g=W0nwP!MMesNegKt(VwmtEciM($_E3em#95mCqlk;A6S^UCL{F zaK&7vD~o6S4Mua_-rPoZaxd{)mdDp)APPT9qkCzP*a6{}zqRep%fEBwO1+E1k!+** zydl^2v*0Mmlso_3i^%9-8KUyP&Kw1tAC*i^6*oOyY8G!uIg<8%UdD3sv8uj}G4F)A z=y$s4b9n<=8JYI7o6)|4ZyoQyKRjprlz&!WW7qTiPbRa<9eY&_f_Ojt_i2);dS33= zmCjka{+!l>!NQYBkN4JkD!KJfB;JtSybiR*2`+!}G?eTG$igeP-pQK6dul5-pN7UZzLeiN=^AI|oc zYO0AS52zcI4j0FwzNn43fCYp zA!f}YMkykuATMTgC~`vo$rM$rt!V5VmB<(u&5lp(x@Mq4ee9Yq{{|HsiYjheBu-K@ zZm)&!K%DicC2oKvxb!OSf{O2oi|2=ae1}JTY*PHaFYoCR%Y&~l(18WhK^Xgv`LAz6 zMN+~ebU49)hwzSxm^$&(*Z6SFM9MO5Drzp8*2Ir9i2+xMOl83WuaXcNFW>4Xl_tif zha@@6A-F*A-3le2EI+n>&?k~;eR{kn#ygzkwwaU$Om>=9TC62lMG`2rrYH^nL&Tv5 zqz0Jpvo<5Dxl&@~QXG2-mZ7+eD4;oYDjFbWfu@d5;Sc`@9Uq@UZ!JoNQKxzM5x8XF zFV%`X8%|c0OSYH)$Q&Z6TNb51Ol2rRc^!-oLyr^4f@7A`V0$1<#3vRZynb1{+l){5t)G4`f4Yst?{y$` z*d<&;!EkW12P3j?_31W(@qL8A>BM3uI|B{9xez1l$H$T!qX+ zMM*rB6|}TaSU6Q!RExg`C2Eb#f@WmV0tq#Sg*$Fz`+Eq65r!7d}#$7 z4F$u|)8qhfNHECTJi|K}wC7)akXgNVkAt3VeJKeJAg;Nhsd)#j`RQMC>sa$+1f;i8 zqi4utrWDsD_jL3ECtMcNmsvbqUWw;aF<1^Ep{YuNRuV;5+GSRbX4bW})lw>z{1+Xk zjw%U4?+MOCe_-%jYdzm;{ahIsA(@Me%t+!XgFQ^)m_tAe$cFUHhNn&qHq@VANPT`~ z^qEB#^iCGU0zmT4WgT`Cqstt^q_u~)v=*WG^eAA`eMSLw*^}tpC#yIC$avCLoodaigyFu8f=sN`2DMjI5VydkT0XSnj?v_0)k4rt zy$5eer(qqDQNBl1E%R~9d)i7$M+lr4oJ|W3zG(GBR{I7Q9No7TMuX71Uh`-(@*tVJ zcWrLa+;r;pnpGSVJkal`BIq!|dTsmKMa@sS#xwiI?+N(Vk~Kr^pgWoxKVr~0pKWtpF0wFP<9O+3Hb_?&a;03do8Fo~zvf)=#m2mX-R zE7{R2bXeIYG}v`V&;{c1_TYqcGLkd*hI z(|-97&_deQxgAjA$x}kJ+Dw!6g^31|g;yOy+;%{dk^KwE1ns#HPKRHXTgheJS!b;- z%D{$;R;IdrkvVR38SBd($cM78F3|RaVGz_1zrVXM$rwKp3Ce&JX8taalFayYTm`QM z^NxUHp(DlbMoRe#cnrZjG<}bFO4$7e>c=W8%=2StOEMB#x+GiL>AoCCL-bB6NRIl= z@CO`?TR#eolK2nM8$oD^i0YRl$&1$&m`< zf`fMjUP6WaQ~18zL_vH?SHbvy4JLnf;3sw9Hvlk{ltG?Mspr(G$J|p4-IGGjy`Rc* zR$Hg=*QYN0a{^?Ge~p%qua`XFtudO;?0m&L*%BsnjuPmD%xtKQ#1Rp=kXjm<12v}&yYI6f*_z_R%DTCom z;5dmz&(m~w`o$0C6EWrxN*YM)#WX|Jw8v2$El*u7-DtV&Sg3LxQN{FE9>{L%`-jbP zE;s>ETP<5v1*L!fSb0A?4Fnbo5?8@(yGvGgf4l}G7!JmFL4ua0+VV#i@>UD{P#M^N zfUL5Ep2&uy<*$5vJ>Bcwu zdTcuV0{r0tfH97G#c8nY4lN#boFQAy8ymqTam)`c2m4I{TSn2N>qSKS6zZ$Qi%d=L z?!m!rrE$UakwD=-iT~8ziGu8H-2`7RvX6r);b_vFMa9c8KaXUsTTOC_M zjPkRg5J6LrST=r(!?x-v@ggxO09FwmFmS`$OeF~kGtYn_LGPvrU*Rc69nS`3?~>!JhQDxs`F41{Ug^C+fl|u+_S$7bRh;MDuNCrh`fI@JZ4~0A*4-x zAjp%>{j&dOw9S8j%n%(gSq~)!k^Tm*Gf~3c61Wib+e$8Fz)B`MyP2kd?@&XVq zfz>G_ix@#ePu!JD1xL@dKLrD@LZZm znLHMk;tu>eIPH#%>sZ$aZst_g`!0}WB7q+gG(girEtMC(+V#C1(t1+yu^TtSygJJO zUuk%79gr>=sY`B=O;)!TMhww#t{lx?LR6sl{pANKfqkJMr;Ci0DT0kDVh5d^jb(yCS-55|I+Dn-)N?*?Mrw9NFjh={ET=R2HN^tu_JS__fU+Y| z1gQk9`__VzSAY(F1h*T+_Y=e~8A(FXqi+-!*Xu~Z*;`&JDgfoF$rn&}lL0w;GJVuh6%H|wkoJS-m9Z#dP*Cj^K_WrW-`XA5ihbE{tJ5q} zB;!C3=#&{^YvdK{P_W8)mPU~lDJGNml=WBTKKm~^KC|=8g%MYECB1BOERxJ_ql24F zt5_vf#2v0}Kb|SW6U!i zCbQ6wXr=u0*c%^zeNAI>?|C%WBRQCB@@pya>R`S?&%m_JbFtdyw5&_#CH-{38e`Y`$!<1Da53B%zkVXi=L~8 z%%S*4_N3!4K8(}*Us<@ax&D|6Wtwu#AAb7HJG!oUiV0X)dWOGKH`suz5Kv$ak2#ZM zjDIDfnA`%~rvXwenTOsHw;*X@Z9SyfEzUdt?vw=+-y+s$n4j%It!k=igv`iS0$|fQM;PlZnIg<6}I>{Ee-Za27jD|d1@eKw=5 zuF#Vpz08kK?U+Aa`ZX$qIR70AgZOp{b5~l|wslt;rw8+cX45PVq14GxuWHV>zEA=& zjNV>C*|pz(qKYhXk`CiE7LteZ92w0-0S}_ZnN5Lz`X!yp;Zo_6wvdpI?K1_{9YGXE3w3ATqL#tu{BE@E)~+`AW#*2q~s zhS|>xJO+QE3U=_sJ_)YamsB+wN()6}#{F^xPCCu^w;4Ju{@V5TTJ|G%gZlmU%L{=B z$+iP=T>S=fi&43Ou6}$R`ni4^euIo;I7{p2*u>%?)b0`L+}@|~epA1go;xfcj(~mY z_vcE??0*atGK#2fzS(^tH>CXHdTJhWaSB_$%#z)-e8)kFhpv-9U;` z01lf_FplpQ*$~*0D*oy#RjP)9Cb<<&qUI}7aR3H+_ZAk8IouszBlh(niXTw>6!KUF zNWj&@Kfo-`y)ylVevOKY3LT;-L}Cy_Wg+?(5L>>pI0v=@>L=Xvk4@tlQkT+r0;6XS!2otxAr?6k02=d>?y%J4u|_`cJM#i8e3%@zZY>-PtHa(d zwL0l0%QcA`G2gny{P8ANbCc0QYq{x6M3Fc52RiW zs_Q!E1U9jUR?I*@&0H|F_!40gf)&9_mUQx}iqdBx@nmSqonlB9mnkEJRNN{dy_~Td zA19R(jEv`o0@+N=akW~yvHl8CFytxm*y27ZeU)?k(5Dg2petJzPbbTto4J^DFv9RY z_+zCe6EHdxiS;lBJyhxx)Afsi1AAU&VF*n@nsQNC?);UB7fSkjfcfed?5CXP?s#O+ z&>Nx^LU72ZFmw>CjU!|rE&w2;QdbrO4;F%Fh{89np76b;>H&;#sDSaivGZHXU=sS1 ztF9yT5NQ`^MZlZDj+cp8!2stc#6W<`O;ZaU2oo$D;w)ee$hVin`x+AeD;AR)GvZ?< z7cv;%lZD(lR!{`z>BK3^@aJWn1A9D`#@*HeN}^I7N^SrU^cg^l+f|@&W)Y2xJKKzz zAj@fNj@Pv8#_-cV{@aI)9?G@HZAcXAnk{-0J9@Vp?8*`A#K#xVS-{xHB!~GrLKYw0 zwpfBbSU6rY&pS_DRdQ2xW4xG-BwK>BrE2F?r`HK>SeRqr1_L}*FTbgO?)Il!7mh!Q zvQj+~AMg15sQ*lkknA(b7`93X(k3yhbk!iU#!N_-4gg?6yD^y1^$;ci?R?|nvmxf-r(Y94 z;YDp`aEH}oeaQ2XSDf{m(;xlsXJ0QrF0nW`v11%&xTRu~Ff_-& z;4%lSdj|uI|H#c8MbVAf1F%?_Lcr#-KpHG;=DO?}@B}L@zPW6W@YEW91O_>uxg68O zATZAMW!=i>$fnQNZ%#v<_NA_=KoUcjM5IDU-6xG)03{&;#9~7B)-4FQLCGH92NR z4%Eu=r=pV=sRu_qCkO@rse&n?QXF*RqS~F8SudbvFBmrwAV4rAz4g+u4S%H=A{2t| zC6F?OP=4lrVVnbN14VdLs!;_4eG7^Lg0X6Iosx6V>kl4O?9a)$aTEI2dfQ&UL(2R47HN}gqPFyNE^QB`e)lVNmhCXrx0AmR7D4oKv zE>{j0^ynlr)&d6$7LRd6`#B@nbrb*vhmjs&`Cdty(M6l=$iGhY-EIbS!1bZl0M}or()|Ktn=Wm6;(qGtsi8VJ!84SC@GO3oF6 z;|nl4U=Yn7io)kC>{f`d!~xm&LDHWu83tnu<>9B--_l^aQ-LI{73&lfKmJas@r-Nl zMZEV!XdEV(a4xD?ic1*~!KH2=qOOqjltyr<0{i0@7uSeHi*SpnV_7Y?EPq27 z7}*H!&X=ngd5w!bDGG$vhOMv&)f-3Ek}I?HjP2P|cwB&P?*}y^sy8i>O|4bvSOQss zEOaTjVy6UrktadN*?m$3CmZV?8;{VA@@E1)STltrI0jcb)|9INCqy1YeuT@FH&1Be zj<2aOyH5;5N&JwKk1lGsd4YqLI6apmt#Dd@eO1VBR!GA0NA>`qEDlroIOb#Vb85-Z zJcXza;rAav+3l)lev==EaDIyB$y`-@js$=c0Ezfv8USok0Jd{&IL>Y#&xeVF%DBVq znEtXbwcC=c@?o_L9%szK4o9)1mb|425vtHSbzfNc zuXkCi&tz4OKe>Iz)}IDcT2?;yK=+V@C$(P4W%t?@LW?7ykes;RDKpt`v$z{)c>8Dg z=4beKX9TWs0xuAx;vrVF*n%DiBOvG@pu4?xXp#~m+Ow9*BL%QT)0+KTEvXdYSc{Mj zLrCvx*#orE)VcWuwt;NuONvlF;!t^hOmo1To$s6-7=dm(ya_`*t3r4ohqyAsjnI9v zC4eqoFu)h!C=&7rAZ_$6+}FMx6kE*O|5%NFY|3Agi$96mg`2)=Mqqc|^m^XxTIZZu zoZ1ry3V1~+nzfTSk9 zvZA~}iq3L^i$M~ApgN$*51Oh~+s==o}%Q=k(_TtOg*f^=N1`6_q z*?$Za!w|?ogX};03A&pDbLEDRlUW zF{==qZs=e6b!^;t&;&z(3R6VLSP&d4Bpy1fv(~S(&Nqe8`y_Nx9#ga%h|WQ<>BC?D z!FHm;;htJ~z`R&0!d@xE)^3sx-*PdE;@h};WxDNR2cHTMpG~SaIf0sWCFvqFr0)Z%a`jLJJ+T=I^m~98;A5}_7R8_>}9iC6Vww! z1^ShQKl)182*pN(H%ecf1oK@Oc0gblPEeRW63!i=2Z=L>#D#fyq4b8Z!EuX(x#k}I zDEx^q5nnx`TsT>-o{7EryLt0KX$zt=6uB)5UjP$VW|OuFj;Fhc?~0;fSi}w5)LYsN z@IvX=VnDh!nHVfV8z@MS1<`^zHX=;F1to$q;ZDGCm);bKu+&Gp>%J!ZOK@J|P|l#u z2mOOBXEH(4ME zeWkXum}4veL%)RkRKdArfmQ2a9v`vw?ac$LFnA6YOppl6zX%U;&{N$#n;oPU%b1#@bo(MCM4acNR`k)C%cSO)9jsWaHm@4!^(0(nl*q$wY z4dHztz=Rp83y*R&=4?5LS+EyDVXz(8$M0dpP#)@wImE{qi$LuYcX!x8qG zuJEV{jMz8_L0|j0p9kzy2U!9~sk!!suEw!H;l)4Ug26|EFgPa+gA=wEiDQ!f+Jv<< zWb_G~1K?DfYd_46S@IL3mp-(=6D~r9V+K2JMjSUYAS@zqobLJ zXU1C~lhEn(>(e9=;0uIL56FBFR^(Z!cJP6JKg-?Doekkoa6h>jNi#wo9*M!B_ zw#1D2p(X-QR{>Pmo($&f6O&%{P#sfaelFu}G2_R`Gd_Lzg7n%9L1=O6LFNQp(EjKE z;VQi0+NZiBB!np>i^&f?8(4Q>vxiTP+i#fKM^-xy5*+{9!$=G|61au)2$_dg69%C` z8ciWo={s7v)=Ie{G{_5@gbQk9h_cKsRSS&f0!D+hCR&7nzg&>k?2zok@Y7&KUtr|% z){qhyvD+odqg}j`3%o}*kKSKWq`A}ATv7MOV?X6jEU}It!lxZ*xN*kgQ*u;1U zZZixLZcWAHLEDY7BZI-Auxl8k$BWuBmC+VNgguC~*ytT#J22rmn7?&MM|kMdT`|R* z?s7?_fuaf#_EX<24zS~IQ;#O*YAJ8iCh+5yD0kHK7@sPD&9CN$NMhWo-Po=nbLj3AAA^xd>8*Z zhweM8xSdW`d(Px~PK(_#1N?&ZJXJX1oXDecZ}@JLpTN>#T&|6w>7uax*(bL%vleX? z_WS%AMBejzEjo!|H~vF9K5=5E}_rN!(vJp4zz;N3(} zAfs%+oNa(o$!+V?+f+BtF0&sC2p87d9l}8vo}Ih(^J~^2xUlTvOBa6^orh~q#7|B{ z%g->Ar7*I;SKLh7UhDA3vR>5U82E1QDnSwSvLC=e%L}Fi#%I1vzb`SF`##|MiT~JS zWf?%P8tb3j_HOlt$-!@7Lv^eqEb_XPz~yO{uVHv^cM^sZ2IJ_Tdz|TmcOX!P$4-vM z2ff8AF+|LW6bWnaSdkdPSL-7fH!*_P&ha`@XZv*=W1eZu!S>-S*U8U1m*b!OYb_r8 zGgVGE0>(iKjWnJIZ=EI!&D9?^c79z8>VGo)!jMh#(|jW09j$4V{sL;FGhOs8heEB0 zel%+ZAwr?8&ODj4qS#q=$9%U!C_u)+aZ9eI(PCCwK=CYOO@%oXZKs8Q64Zgyes-vxW@hbU1>w-uL@GD zn<_I+%U5jFyD!yluWv%_u*1T>X&%^wXUKv~5K~%qa&?rZ)Q&C8;WS5KIiFN5{Pr@ zVUmdm35Viqin#CMi!PaCKHv*E5AUW4&p|PXUp)iS6Wb@EuR@|+FjCX3jDtmYU1MIu zPd0Z)!(W7^<&&4710|;}mgEoW(BQ809eKeG2%6TUxZTgoogYN0B}$a8s3A`uFKaQH zEHRfAWtQi?ypf>cOp04kWOV)=>BD5jD>9#~<2BH1R$b-Tw_Q^qaO;>Lw=&{bM=ecJ z=ocVa%K7FqM|-JaJp#m=-7(|HpDiNKb@FCer06s_P^L+za_z;!QPCnzfV0&ChH|NP za?iqShn4~7RB6fmuk$ZSkysr8ij?vJD53aTbW2HIS?u{NE&n~l`O|-+TxI{jecO_v= z3wA5==H$tXM{=D;MYoM!v`g8Iu}n~!neYwlV^DboKJ7IS8a5(A*eQjxaD51p64dor zI2sMxxw{1ox(Rz@d$H9S?cetkt$xQYa`D?j=;Bd z0|MQ}>{XYadzO=#T*&-1HM8Y_r&!+&UTH^}uZGH3k|&jeoPO=bQRX@wls9+2-4DWz zPPb}kvad;qWUUqtiLnAp{D|j`eAajuJLYiItQB~1L~}#map~;@3JNH(>b&}@Y1buu zh8}s(w6O7UX?*DDT;xA41Zm;)RL2PB5CSd2IOl(fLYM?4i4dw zz{#Mk9)>AGPl-R=JfYTaC--ZME52RF!0( zQsPhQ$XqtU94lCsZ}oM18MpAYM1Eu)LUCU6dAPoN`(Y6ja_};?RXJ+Gs^Bo@rmWkZ z*hl7jL22e~pS)|S!S`81Jd)JTB^!4mqgV8Mo>T+EQHe%@+g9{X21Q51+(I{!b^gp1 zi70N=MSp#$VBj4t9!xt`4P^h!dJ(k8l}qdqt5Y#MOgcPd;mYOyTx+w#@@{m^q&`3- z+lXBXtiXLV{x0`q6CzPIqJg6kc1}|ykVicfWzvvAidFQ$<{-rzccIf7!z`xg_fjSG zN{@OojU}>7y_IXyeCS!h++K;$dsiZ>y}~Ra>?3)*5iMgfmC}iBg;8?`?d)s5gI7{F z6Y#%@^5dWLsh{&`BHAYNNOa;~OAKk)RyX7a&w*ubxMy1xY(+lOX3?iDtCoAExb9Ri zEdGpueu5LjI+ShI7?T_F%I8wpIuD|vG*p=iOBF} zhDIJfsLURvX3iuR)r=MXWZ-@gS0_?x*vO7EDp^$^;2EFJQZXz*)zQ|Z5r>t`^Q`J# zB;ksn`hT%^7g23Cj=t}cv?RgZg1Z+f6qn-e?(Pz_c!Rr3ad(H}6iR7vr$vgpw*?9m zD01`u-@WfTXWcV7lRMgsGGIZH2MBqR@8{R-<)FRNtzJZwT7Z^ok2b3ZYel|f)xBdY zIzPNb0_INrq0EXMAoEEuHM3+{h;bF}D2^bSDI&sfK&iaxtC*_|U1xKac0xCbE5>UF zJy_caM}O0MbgTU1Wojo}E1a9E6}6>xXcCdrSKjxnwe;@}O+-%1$qVnOKlls^Df6r1 zeqRfSpEXu?lTDYHs&$(2IVq_4&U4kIhtEl~d(h-8Ms=l$Ygn;L`vBGsD>CwhYh6!2|xdx?H#i{=8|4=opDuw zJo?Ua3z=sH{N!(mRSBbfLeuNHH4b8p4Oh;_f$#V&`Gdr6O%*@J8=l=}u$^l@x&$#>_QoHIOF}Kv z6UoPn4)(>aj-ngWPn03`m3c)@Xl(3>VYgeSVOk1Vm4?!y8Zn)y6KQlD$+F?v0 ziNLAf`>B~HKH|PrC}s+^a!)tw-@g57;-E61hA;e3wRUPQoG{c6z?muI>}pWrv^0O3 z8D(o*uZO_?Rz^}@dD-60Mmf%?nJLGeJX|e0KiYQ@uMFC!iz@Yy1mJ%@JSceEV-4oK zo-NHAo?d5jgU!jUV82c+z)T)Fk6vklk2|i z6j@ zq?j$ED133Dxm-#h2I&pl&(9|m_c%}=oe@!Y8@a2LYy&Bux8v>$(9TB?KFm{v#w_ah zW|z3+R|;4%C>9S|(9$zz5z$)CHBpNI6R0@I@gnhbL@8!_zpr(EBYj+N#w3X|A!q8F zzouB?95Ws<&N@kUE)0gMDoKZQ2H79IHnb+fa4Dce(|RHtpla$?$$PcBbV3I z%1EP7Gqc%&0{17)I^VXF zY^n38uH>Ap8&Qe3X=U{Xt1^=k;~+XIB8s~vnxR>`YfL6x)>8cK5-C$!VcX1k;Ku9V z4FbLrDBAv3P^FdFAv~qL$boubk4Bjyp@!5xN?FfGF>}}CP`6|oeMpyny%4n;J(tgh zU^_Jm?a4T7YEKUhZ!Co&u%YU=hKij-2m?d0i zsZXc0WSu%ph#_yANtU3d*fly21E)}iDG6*RXuwdKzuBP5+SriFT5tJLbU!Vpe0Ga4 zFwxMqd#`#SUw)m%D%3{*j;XA`Y(GJ3UDU35#Lr?rnv zd@5+|W=wZUOW$6fKyiv#C{g>Lz#d zuk21F>XCK2v!4wpFB}Z5kaBqE0@{+rs)Ae`*8&Y7C9G@t+Tap)J6(3A?)m2St$ZKG zgHKfhsbleoC^xLrVIQNMQ0m{PRXCCQb4SFLQ@fRp)|)naNj{EsrpZNkdD*PYLz>GY zlKIuR=`&!~SwlvTnmwJG()m!j%=J^_nW`T&Y!n4VaS5Ac39KwwL~4Q#^hYVexOxkg zCWDj72Hr>Q*Vs$9bqz6Ih{MXU6mJx)_$Ku>7rK4(5%17eu7~r z(wbcy!}pSztqxX%>-6ot#6D^N;{JA@Z zBDk!*o%3!L%b0<(AeZ9Bh)WI1k-2)xPqe*4eG{v?*<|0JOW#wN-n{;Gqrz6WUU0sz z`Fz%?Khr?YWHyL(w}aB=*Fb~}tASF3vuZOoKLgWr=DOF53i4`>#Xg%wtYhnk{m#Sc z39!-dtG#;^QbI6eO7M%;eG*Gm(=nAFKV3NV&wk$ZMYM0S{#M*;$|n6)p1swzz63n9 zl-%icq(~t;iqTy`c|{)JkT%7ARM};lK31-ZyD?GD&@yEw<%geVaE8(`SWo$+x;ACS zpHJRBmTkjfZxvi`HVa2PXlz6+*99lz4WzIHH%T3Hl+8C1>Fr&8;*wTyc)j7oy1jG?mBU$G#l01o-wAY^OD?D>;1j+R@KGqIV5*}ICSrjd!x9_ugLwT#VhdiR=t{ znLNMy^DHx3u{ydwOM@?)7B8xtvovamHPW*Ft@_5G2!%DX61`~lIMbN_DVJEB9kZbS zlj(Td$eM^j@wh1-&`kCV&wGBE_t;|(_?7m}!6%IZn#Kz5q~91db|0r`651|HMz`V~ zIEtoT%09DI80TsgwbtoAP!!(siLK--*eRbamV>ze1zk>n7=+%<-I$&O-&9j1Ru;36 z*T(Pm`OgeBG-Ss7I5jY{0kIm^kmjqjy;@@vnMWeOG{#O^5?2t zR!?8S!atf4>qfeq2^!zGRIu^bdLjHs9nOU)fimBq;-b)GRbGy>}qVAM1E! zMWFNM*HuMHuoWREws&CTG4tCDSvoR<<~ISq!e|HhRUxo1{&3S=yCzEBx2dnp-~BFP zY^A<1iE$H{yuBJ4h5OF^B${mmHgZ>$xC?l0?(6#oe6@@|QAwG*u0P1(7m-|W4mmHd zbR`V<{Q>JI%dZ_aPDi@5W9OdFQ3tI-dW#Z zU27Kq?kWaT9@yhnFcMAL2IkI zLtoWKy_no@Yx(QHah)A4#I;OVV7EAFBc=9#q!0v11o&9k`;Qb<`-C@L|?889ds^6F}FYFg8)IItio1VblYLnMXZ%WI-0@V8F zEf`Iwo-d5#4`k~F|KSg+1hvY=q}uqk-iw>$%NeBU+P;&s%8|8sr|giaY?Gz0kSxTUn=5(V$CHztO;|P1U+f$EHHnBgxJ)!NDuj(YnLY zvCZ45!`HJtz_Z5Pq|Z`+PzPxrs81`~4C_08GqGDTa-Kxm2PTetW+s!Cj!64p$=Y?) z-TuhN?Er3aY^@}ktRh;bA|Ih9ov11s{vY)qR!ccvQ#Qg-Gg?(LLscqQQ#w^kI{#nw zz|!!YopG#-LxzV-rl)(lhf}PMObHS`Fjj7|&?&YtD6=!Du~2Qd*XwfD?ewte_O$DS z+cdZuj5_HJx*3fl?Snw)F`s|zgKz(vePFd51Ro9l$3EEk*FFfeIrBB!Lh=W(CZRF5 z(eG^IGT^BdRtc33>5c9=5y2fH{uPb>#YHADNCY9wV-8`vhp_oaK#1@>L<$JLW8p!| zaYzIqus<#EI3^;bGdrs*C9ACF=&5~bM+yi% ze?M0JZm3*pNlzH8uU@XHSnTatX{j0Q?b@v`-!3a0pKhD`^5J;1?R(qfr|yTru3r-! z--gGhS4Iw3hwc}L?Z};l(;Clb?`sDa}clYsV z_i^v&;q>_7_s-M#&&T_{$IFYy+v_Lf$MwzM(_iO1UpGRlga3y@_`jwQfYH<@|56AP zH`KQOO(AUA{D(ro3by}m3PGp>Ng>!S{=XDL*0=wn5GenfLXi1~LSUeX*;W283W4-1 zl0pzfQV4zjMIlK3OChY=?B^(!WLNwbg;2nJkk9Y0e~|bug@A^n5ST$Q`_z9a1lD8b zhU$QPmGpn4@7?g=0Z=w5E^Pyl6oTd{l0x{Me%^|t5by_HzT#E;^1Id9LkB;gjzfyA zal&o$X5xm@r*PgDEq^_GKg2_-Foe%ZV6>ETqwz9aK;)mu2I zdEE-jwPT~b`?soy&1D!|8hHC>aSl_ zV45oHYOkg%|Ky94ySuuQan))uiC_5sVy3^kg}XebcM=N)3MucE6hFSdy&%U-*b|<9 zzu+zEJLRc%txzBQ=Vn1IM)amb=A+-fXd00CfT7lp3kemW0N3{|lz3P1dWv+T_! zkzTs_9eN;+j4H!_8&I6^?k4*8Hz|3PlJ9Mw^H#R~6y^L-y!#Zb_Y!w~I9#$W4eMZ^ z>N(^2>$|F9;eBoyx?ns1SAmv|KhHn^5zvSuj-_4U)u;6THsfb5qJ5E*HAF3QPH`{` z!&~WOD#tyH^K!=B=%yRK**n+%gV;fw-N=2zP4YHTPMF!(AK~8%i!XGv&XML9V#|zl zxP=zcpAaD5tH%_bo3~37mnA?p!8KGnnLFRFs$oqt+YEPE_;^;?(eNmxd3Tz( z7ggBVU&iSZ{XuRS$<*I?t^E3yLXiW9F4FCWAl7Qq=UdrNj8yHv)9yuRpj&bsXu%u| z*m*V*UkT*vAKr`A8{5OWqEh!CluH=rAY$m3s`0XClu(;8IlFHPO5L7i=4JK@j=rzb z6Jz4Y7}TXrV6O`@q!Y8tj`(pMRR2t9SN;wtlPAj7DiW(MV@xR1z!%`h2)4FaHLl4x z-okn(s$H!qW5y&$J6C5qQbBuMrB~^lRCCQst4wyXt_`DYu4&VG5Uw5TzSAXWX{-0n z$QIl5osXIcYw(-L#@5*EKBnm%d}Ck|_b5DjL?kJ>M^8;~j<> z8lTs8uAbEBB?a=C|DOA6y2U$R(`sWC#QEIx#80jJuZik~F*@BT*cb6$$9W16Xuj2y z*3ZcU5Bm}N?F#5K&=KO0L?3U_+TUukVhxY_`eqz6Nk1fga5X}00_J15C`)d8uCvr- zNg5YPm8Er>VCigCdR9tB{KMU;%CKxlk7jxwxL%zrABz(&%XTLI$a^`UZ^-neRUg(^ zlzoV6dXW9yT+=77_y?{nESK7e9X}~U**f`KUHM|>c24`6m1M^^3o+1#kC;pcjdVTQwc8-egxkr3NCPNhO@k^7?^Nr(e z2tGxo!Ew`mYKB*#7o~Z@_gq#@Cm0F~j}tfKFzP+JBxYsaFq^lwXz=zdWCLU0?6j@W6>xWd@F|?{MYxY0>XM3es>=; z8R)m})m)?a$MEw80k$$qU)P{h(9Wpq9d=BvW(V;Lbnhn$&9M{*ln%TdCc?lKMy(BU z$Cah#M{38H;yaJ@eSRgj_vb8LqUrO&PboQ^r)4~&%STQIBP`|q7+|17?A*9`6aB-HzdF)1R{qr{<@7CX<%LOD(F7ecYg z%8{#+k!Okd&o{}g2!)z71rBDrnZ+=Ji?GyGBL$LIR#6D$N~$`!5XDX!R(T3RcSVO% zDX9fhJ$*)HUlz&NJ}s4Dm!%>WBa8-F)KG8!l6k2JD-ZqI5T_ga3|&rne%bY5-c2w* zv2TW+V}}`_B@j#B=gasi_9dtSqamU!9sHh>sjoZ0(9E~ ziC;7mIXn^%Z`h9QX-}6DyLk}r@scj|*)Eq@uYHpmQXNO(o}?A%A!RSqafJ| z2?+xW(K%Dhs+IeNIzNq^hWC?JT7;GRTL$dqrqrm}RG;%y(P7c~WX$gf%ISjN z&=_@S&`fUMZEg@3q+c-aqXNW>3o?=ob|?Z)jOLM_<&n?i%^l@^tp?8A=J`-#3{a!5 zBA1x5G1f^7wx37~M&XzZqj+6Q>@7!xtL7N+O-LF}VHyDS(xC9t01ZhYq`}dU6hb8z zYWim3J!w%T05#qm3XLs_N-n}!E<#@}!h}KJc0t_Li{bF%h$AqpyO?~rm;wd~6ND6V zmC(b`n$=5~Vd$*gCG2A*B?!!QXs%jIfk`pu5H%7UC_Hy4ypAbME-FmMDZFPXlw2+Z zD556!7bb5)m5-q!cV$kdK!)AJFnNJH5yXJTXix{+2f3yso!qiwasqR8qp+b?nssuw+B!y6NTrHDReQ{d|I<68KgVrtAG~CrR z!D{RLp@B^h8+EXM5yb5b?Alb@XIR`1s~dpTc_8wJ{OU$>>c+b3h72H;w{ZD;u-`OHr3Hh`!so>xUiNdnGsw~#(GP0)a*h)uA4KiKiE$)2kcPq^7Q8%zanCix4b zY-%Q7X+}~AlxILP1Z0&OyA~PGSLa}*w6F)X%rE$TNJUmtgd6JEt50Kjj$>e`>b8A1e zn`}2b!kxflM|G7)>8f3r@qg3f<8rQPO67UpYs~Tt_ScR17kkEa6bRSBdmw@4(B|0I zma&?YkzhY6>qw>a5O{T&&Cz2A&_7o2(>nt%>X&5PfAjlNeK05QEF;a5)&>yy0 zjzta)LlnjJ*MOJH8XSx2m&-_$KdBv;UKxDYLaRAathPq4kydQ)BrEI|?&&+}k%pCB zvJ~-%eCGL3n!MQ_P=vg{K6=)E4&cg~7VOe>Ab&;Ig=-N^Fv|loEG|ax=v63ohZj4- z!B0IEuo-YTa*c%@Bb*vSc{gYtUz|qV^%RYSIyf-o_)j-K~k{toT5( z!62D$IPS=W%uQ%rEHttSippAyq!21UK>jL0vRL|%KFp?IL5s*Z5~3L`%HRAB_PERQ zyz3=c0lO4cc;fVWZ9;|uCr0un#sViG7)_;hP;J=coXDi|*r(rqWpRo%sw-8WoC>M$ ztIN6v&R~UVWaS~qGOGxa%ZWTKkSOB=QR%RN?qJm1J7ISKG=8&8DQ8*_))Xf(8OsHI z3-5O_hm=sGFE?Qyi-b}Xzuq`YUy;Bl7Mv|+nJrPk7)hQTp~mn8Ks?~ZFtqG6)a)q1 zAu;EnkbX$WDC8|_){BQZj)ytUA49HB=Peudh%z4Z}pvLv|{2s=iFbCn7 z`huB(-@$Rz#XbQYh2x+5k7wW$@VTBI04uxe08?mE~ccH|HvvsXbwNOM85ShL32-E&n$JEK6&tI-` z%0-imEsUjZ@=ONXBN-jUObR*SY7^MgJU0f=6pko2Vy$>)Q~^GL%=G|W)G?NjWI=Vh zGU?g^#hQHf+Sdfk2y>w0Q-4RgL3Ua-Sa=+~qq4p)n(eH#qse z1Uqs;T#%9keA8S5GfK2NQsndA1T>_mxZed*ev28)5Twe?yU~xyJB67Pup{u;Io<@c z20*-&!2V>5XA~RAxpQK}b(j9U?)%<}@9Pfg*42WG<9o`!@Ge*#{oRm z&(bP|*(OlO94MKQ!g;awnYTX+iWQ^DoL2;aBW_^Zm%Ksx=PrVZ8Rc z#T_IF0Ve7PlRZgb$XEBRNI+a9dXpXwSI@%ry!Oaa_w;((^>W+Z<~7g<4`d`G9~z+k zo3r*3kd?EkRj%z;r5fAuLaDW?Oh8R?5t?i6N3s_fO4WSoqr6@$^Sr(>gv~o4P0$O{ znk(2hBnVU33q=4*;6=cQ{`6{9-UXB>Xu&d_CZ;O@D&1Qu#4*r^eo`USlL43vn}H-1 zVAM2#y{HGIVJDf#N7rNft-)xq>Sz^bkfeGbkve1$`6IB7qfU&A(ulj%1PnAk9TscE zU$1(|MypasbNvaeFh>jDg!G@TzQ;MUcoxZ-`2+NPKL68lFkq5cy!@{2=;epP)Z@LH zvFh-rO|b9GPfzm!=f0k{fSM=L6Eg}ZMLlo;u+5x;Nd|x>;tb@!7|2lne1VD@OQO~@xfNHAB^=X@yfG_;}#S}@rvGFIke4jINFTI~mWQh%12{Cy4E zqKj|Li5&?q0w?9YgnDB*^g|+kRbO=XRKmZ0cmA4!b0rZBA-6e#m0->{Vc2$ItUgg4 zq&O^5i4K~wLxfg0ZYDQwd!Y(wsI}wJHW#1|V7~3`-{)h6LFA1%i4D6sH6kBd<2NAy zZo7pJ{|gLC=`8iFf$)eqb`M^KZRywycGI#fjct~gbdiFV^s&-XnTXw0i!9AO#Y_&9 zzHm~l{hlB`m-R2%S_i5HqCt<(yFCk(OJx3`5YicX{jUy5cXd^czd5dEisGD6e}*##8Lx<~d049lmLP#eb2z>h`th@%+JuR$vl^uW5@^JbP-rs9srvh`e> zWvHB7F!b_-Jy*6~90u>=~Gp2hoH8Nb|ve_XT}!|6%k>*nXkvHJh9Zg>!Za zQ@!rNGjajqa1iCtG@)viFQ>1#$5VyW&z}j71z!9ERI|T%?3OWJrg}_su*k zfqPop3QL?9&Q{pr@zpj#5Nt%>)PMNJGvzhd>I=b$q%Z?7;DL^}b@&OI@;T9OQ?o@w zZf`3=Mu92+QbUO|$YCf$4A&e;!F`wlbURL&rSMzrdch#eZ4*Q0+E)$Eb++yO+3nZ# z$+o}}$Jcxu7bzluun()ku&k0~7WBpM?Mss@)+bc5_|}^mm;Y>2hhf}o`#uwU4gQYb z{D4D8%q@+>vWO#xqvNHcyD`t9sd!M{(Lu8{$Zr<0TD%8@G8b)v@VRizL*WA{2kYtK z+5%>sumZWSTl*Sd1eg^`@}h%rB*Nim7Fk=nl42fJp{p6SFcIA;E1P!)LpzDW7s*{% z=;Tf2&(T{>&BF@#k(9!#P+cV~-hF1aI)j|Kj-$@qdVa_1CwIpshgvF*Xi{9fXbBJn zgZU=V>8HXH15Kk?)p5k?xokKPwBQTef7Q%r9WL4a^9v1)*k3Xc-yf_?SjRXF1fQ*9 zWJm^yi5b)NrL$#TwlXE59#?ZV>bZ>Zi>sYLVIvwlP->jlB+kaDvl$j*|`eGQNf_O%bCK4-#T!?!DNc6vHGy**5DMnQdmm;@QT2epr z>5)ZsARqMYe@4H_hYIJwN1o~6p^th^NgIv;Kevp-AaG z>o29f$DMK+e; zwo|wS5GNThL=6bR@h!oplh_KKi{w|Hf0824r3Qc%i|C;A{m%<;!pR%CleEE}ehuL^ zLJ^iz=E0>Txi}$AjwHa&BR7Jrs(khU-z4|=0U%Bm@~bI?D8obX>5#mEs=ctIP;3ZB zUKBg!Ot(uU52%d29GX>J9dVeJKh#w!Bx8u56rAoUSt9dNv{-4wq9_tm9V~F%%$x=* z^Vvok0zTgcZWJhbh62C zr{xM!Nd^%VNqj<$W)iP&8KZbQ{8A%CW+d0(I`BMC{|JB#r10d;fwUyUB0lzW#lFv| z^v|h@*^&|H)&uwj$@x4I?RvWs+LZ0)i0cnTA&@+3{HOpU&HBG#DyEVUx<7`P#K#ef29tYr(xV0=aMTy3Tl;W8ygP!U4 zGl_hPQHwXn-@!O@?=QvxNo@9_k|0o3;hPnqmiV!gzqC;TOOhXnlV}Rg%hyxpRD3}M zO#SdgdH?`yoLcjz>SpYy*+k3D8Mf zrPf{L7af*{ESUQx<;UC8>j#T5Py-;|GO%IXa z4Qx-oKz%Y5K{E;`+E{v_T3MSQ7_Q|iutgH}Y?L1XWTpm@W+9#t0036f!u1$&O=4NN zKu{6MAjaYIzYQtVGI7q7YM-L`2)GbTni5Ux?1xO6s&Vk8o-L^R@WAt9gqzEnAZI_^Xq`3_LS@?qbAvkaVn51sE zRP@0D;f@mp?-x$`%Ur=#;4WVcp+?9q*WEh+3~{2Mxz)Aq5V2g8eS3NYhymKvxv?$g z*3X9d{8QPX1a@8yb6`qwCv9MVtr;#NG#j9Pn^!5-7zpY~f;ETD6~6Ujdpa-&7&ay9 z_vE0|QPw5bl7dJuqHAwrOYymAm|G>wvLspKbHoEvP9#cHBoOU62pp3B7oSBxXfhL( zusV?dWt|bI5+Qid5FB{F6kUx>50;HNfYy`kPd6Z!41jIO9pd@vxc_4(y7cQZVoBbV z=h|S|md^?HUj}6zitcl!ci-h!~@R2w#d}pw_|OY z!(k!`Kg0#NPvKuLQ+Y2c|*i0P3xw=@CQ~Y&-55~dbuZsl#%V|zJRkx4d4Eb z?G}xRX9n=7KzW)+!*qix>Aq(f@uk#mo#2*i#+P%o1j}U2FI%Fmp?sPj$PBubPjg^~ zBMTrV)np3j_-GuGLP&>|O<;yn^I4HZ;GEIsp0q%UP=crlwMLu$NFWe<1jJkpziLRz zsOly~q1Qt&MEAZvNn?WOBk9*hVu~C8#lbW zk5t78X-@^H$0B#_Tilzd!_^@VpK~kBVKgyKQ6-SMa0sd3_}6&(lTB*i2;#Q|Ehr12 z(ZnhFyIHN1{VPxZ20PmNsmd1D^jGbe$LBKu!WkgL42VzN(f_sJakzmz5SObpI!!E0 zT{WAFZna;bq)L6ax=my=t05bK>WctXp}ZA{@)*EMDYHm=rAIrd7i6R7tFnlg*9*{D zq?OSN`VsMlL(l9`&#q|kDU5H<46zh!qVKsEVOphOUKR380Kr%U4xHCFT|&_(3FC%_ zu^xsR$?Lt1(D&%ou(OXOB-EM>hbYe(6yHfJ&}+N)s?MfDt}PMR5eU`{kmF4R@(`Iw z%xhyl;~oLA+t2GVgx2qePOq=$j@l(dUCb5ym5!lOvca z-qFS*DiGhLiShE)(O!e`z18vh)!8=VnY9Ug6^)2|J+tH`Z|_J4eTWy-WNyuPrq}qJ z2?TlMyls}A24$9_P4p7>mfRUk>B=L00D20*XL|akx^UA2ZxmewNHr+*I0B^Cq+{%Y za%zKelA*&~wayd`GV(_G(Tif7yndEHZ$LQzdr(JfQ0Ee5bte6FBR(C9wNQ>K5F1zMi+=MHn}~-!b7S8~2kI!YpOLPe;5}`!Kzuyhcm?N& z>0+LmBEIMrVIYeAM}T~Y(%v^J%x9cSp&1!K!sHM(A0ROzgk#^5*gk}_eVZBzde5*z zhGXPEk8?V1Qm72vwjp! zlTBUdyjneq1Kiqy8sgb$;lUiG(7sDPwCkFs>nRZBQDv<(wB-uelVgO)f%mjzZPW@P z?PenM`Zo>A*A3?*?BLdF*Vb}kQO12>rATY}3TuVnUAwbyX9@Ep3mX>+>vy7?XDDHR z7<8ynG!F(*c2(91i$R?FMw~ODF6;Ysy@s?Tp|sSX_J>f;{!mXOI4~1RV}9V{dcekP z=P73AF|~~R1UJ_MdgcQ^u>%iNyMRYqI3vh6)6PrR4(?;;LwU%VWyskN;*>vl;_L(k z_#C(`ga+*&gjF2IQrblhg;odIdoqIDA8nD!My<^XyShX2LMR*ZNyp|6{f#XvwcT4v z5cd$USts;eutP|neWb3#2f}BZRfbH5p(YZ?Wx9^#V6eF_*il`>K|gAGFg{8#N zVtEEDj5BM8jq8W;NQCwt=mpfJq+q8f!Elx+jH?KwTW=(I9a?Gf<4JoGoN-{_Gjl*Nnnqecx^?7XDGU1)E?gQQAmZw z?kvK*f1_Ot!Egp-$vUSt2NH;%b5}U^$U1*%ccPkc8e9NAaV|P>il6rOISsv78TRpn znTIrUtWfKpkw{qmT{ydEgyV9Cl5~LB;O7$9Ub+c8lAM?I-tH1qUXuKmV#FXB;!A0_ zdD$d)p~OqVsb3tXaB7?#4pTQm#H9o=h&0-rhS^KpY)d@KOLAlT&K3TU_>0Z;>Tclz zOm&7eZAn!G{;iAq>CvNaA;f$UX!dkv$?x;!XNdJLpp}{r*YJteuM^&=Yx9j0b35lj zS!WBXYrE+XzG0tU-D{ia5GST}a_h(p+^oC4L~}ToM^hLiv5e-mbOuY2Vx2XlATDF*7>4_kkGtfmCO}Pwh8@Sk66+ zM&u+u9+2BX)zf6A+a$d=eMHV=(Qha_ed6BuQQd@OJpsS;`E>vE_29qt*9)bl_WSh0 ziu~p__m^Mt$B>V&{CKGTcz*P8f!yW%@hkiYwmrY zf5Wk_?c4%-+i$D%oSO-)cr(wgUx28icNC{xy5=>EM^H>=?k5idm9Flmhrj9EZ0LJ~ zxXzq)2|>inp`-|4{KuQvw+}vg&c#&z9#pr>cFs>};`d%mMwI4$Nl(6AZ~d|h{X84} zUvXOTFdC7W2b0YJGx&G>-<}pS{T@`k_ZtqXYINf52>LjDTdj9r$!RqB>!zFO4_T)_ z`A7&Q{Ef#(2#@$(^_J;#9VR6)95cui zriLT}#!hQ*IE+T0b67eLxKbT|tI>P!`s0r8bg9LzV?qAw)^IYX``bRF_Z+UXJ?=aC zE6L3(xjuZzk*FTQ;e7FggZ$AO`g5`cG9h|bkNv5X6eNzP#0$Q=lt6UCn;%7SNG}e? z^@=6MFi0#N&WPiztg%Hey%&8}afjzjUOA*wTg^Yn=!IAl?k|S18(4ogXT3t;diw@d zsE2{G!&AJuQ9F>xsr*fv%G`Hp{a6g|in%D(SH4?V6|?PhNuqa$I|`*;&yAyHV1D$e z3anl9X>vp1OKCD6>Vwl@-*aOPnoY}7U;7qB)zhta6!YLG3jgQ8FO7!TS-zq zy>I61S-&?u!>@ekWGW2$IWi*=f_XcW=L+*@E{Rbb-F&U_B4^e|cVK=mLs)sl=3NYT z4RfV6NS7uQ_eb)6d=YIoOQl<=0dq0xmA73%@R$%=J<)?Kac%W+H(MjLWb7n4-S8-^ zJX4fD&!y(N+u0q$^Y=7`n&yDKfztbpxy73o#Z2{U{ynAj1&J&#TK94Sm|G6eoVMjj zD97y^4k}=cA7&KemU{b(k@l;w^IwjBV9%?sc^wM@Tm!NdxmM#U+`b% zs(%3M)pEancx2-m0p$w5=q1X=7_f~}IHgXXVs zZS~HW2=4&uqa(LPv5+k9R~2G|uTkTV&z+{ljV2F9>VARN|*O#+jm>Vo~T>Wz5_hJ1nt?pywnvU=f=a!${hixZ) z$h9$kU*Vtc{)&m54~}C6p2eaQzdxT8e!3qYVfy%HY{uxV=rxm)c+kqc-IM6e)}L&Vs}Ti8}zq(e?NQ}KN%Mne|n&z`6+gV%43GS$WJBo*j@SY=C%<5zTbEN`SLAM zG=*T1QvwKYUV_D%LW$x{{?gxYpqVy>QLY+;`Ib1af}6q_F^r)y0&I8%O%X5HjnH%s znTYzDB45Ruf^0~*VCzj$Vs&~L-knU8k4@3CyE-@#hjg@*%`vK8T6h^Z?L(r?vASMb zvb4-HhTP||ruUXrt(`IkAJ1@fz`T&fWUMqSt4M zzFrBGx6JaycjrlUsJqnox1S_ontajP^z>}dVcEI;l#~x;Kqdu+@A`OY1$9(({NG2_ zQZ<8$%XXQSsuj=jTT;fVOTMyN`St6r zp;d|Z{b5ziDY=C!}7;24rKj~#rw$h;_onl9% zkaiJXZ&mN((afSgK`G@Pp$zu&Y*MPW#@VUH|FK>XA{Jz4XOt)WXUJ0p^OY=}kdlRv zD3h!pxr_l!Mv+{~l3ZSqQQnYV$q+f@`AW-%UiqJTh26mEC348q#E;h)&ZDLx}uxA35QvChO!Y;~1dq>8I=KsO(~5qE2Z63l+2rd1)H0 zsk(#Yyo7(qL!kBoba^%UosZ^Y-RgQ zxql`+Gc@e7HN28lk%OK3Wzx!>^2Y5-`dvx}Jvv&=T2>`W$Q4hkZY}#-t$$0FHyN(~ zS@C@1(&}#1W1+dI{9hT%h_cO)p7Xqk?V_Rcl)nDHvE81j^P(lPVS$f(BF8)34?K;x ztQ7kNBg)<=h$Q|~vdDxX$2--K6P|K0n#lc5W#s=)5k@*u$o)=Lsl5N}cmAhj(af+k z%(T;sba6zMELraEX{%I*sgnnY83OrKWpjlv&4DBdZqIcaeeboBc{doR`Af{#o=4aoYY*(sCT( zvFqCw_GTnJa49BWJ1R1yBkNsfT2y^wQe$p)Y3NdX)O=d(d2;4>Mczdh}(^UfI3b-~a#AEBi-}$a>{s_woG4Ynf3H{WPD_&}Iahc+-e0t`^G=EsB8NQxANKAtD9V5h z`2FqzTQnkF0@5HLN(rK(bR!L}pmaAZ;Iedghjhmh(jY3`C0z>AB_OGCZlC8p?|Wj- z`FK7ZKI|~V?Cd>kFx>a`zkcGp^)7?IM2ttro-7#EjcK0`kqz*_ApX_-NHi)@`uvf~ zhe47ky9d)89WJBuswpZD>s2|8XQU3r?9OLBsqF;kpX}V^t4+G$nN-d@$DB1TVI79f z6Z}L4+{e16jW0Z}PA6kl&M){I#tvK$My3}9vd!0CPd-zVYM4$CUyDkp`p}%mT-N;P zpdehNS?S&1=mYN=y6e(tw8Uk7g4yzQ`NxD-^rl|}-+h&4^vLfQz4tFiP8!FJTQd)d zV%jy7Hl++YgIBlKs3FKx(}-FARG~Vh;~s$t2xA zdXYQwl`SaWCTp!gN9rPnEcnW5X-a03+1rye#DU_D{|yx0MdpkP*xzO#kC-h(6UBu| zTrKR*=Xa7mt$C@*Fh)^*k^6D~;E~vxX?60MtdKB?+j42f^-$<@re%u=+ep*DMYHrp zl|s>-F8RLpp}hiDBUV(A!`rcEU!K9A(c7tQxfGCc-igq9yh-WS=EY=8W*zb{4>&NAYOizMWKBOIY$;HATIo zDkO{5yX<9v*oRPgVpi*gorD9YNy=vJijeOiiu%au%F>!L%PdueVY(Ufw?d`Fac_-V z#k47{+^X-l^q#S7zD&xZ#O-wPgpY*J-mgt!4YajI*+AKP6m{fE%HPhNde4Dq>x)VD z_vEY|#*N+J)S=s464}tZ#KCCBKgfs7}>w+2f+mU|)wK zS`0T0HR{6VPk*`T9&OayxzOXddv0}nE2r8Ra1UgUv@!q4Sm=NMf?MGIsjbIhVDP^EyPIpDH;-Bh9Qa&LBh}p4d?XHJrArFRGj=y> zQ2Wly4v}gRo8ft0?S&-FpwEv~%FHE`r&JdT9YViv)GwqT!nUkNY4$v-(^pr*O^qeP z4@#vn7gxkO7@wX@e95&fBD*(#CeZPssUc$c_K#oD`Mzt%p6+9pPh9hjn3S_d4;~&G zo0Sca@iJ}tl)ifIL~Ct)C%BmM2R%JnvtRA-v21-Ae&u*P@9w$$pwr>)=RTo2S%!1L zFHdf_c$HgOT{T+Keda#%*$pW@ovW?B5nn=I$DA!)^Ni$lb#K0W+L7HOl@(+1joRlnn;dQoTh7tio-BgZK<&y&{@)YK2rn-r!m^blh2Kzb^} zMGrs)z78;{W?g@^B0udX&wihY5WTTrq2VN)CDxGE?7d^UiWi(4TzK*^I^g(l#c7@Y=JkQ`j(B^;|I&!(S> zQS0M2-U`y4<$b*sB%>F++!&PVAADRK%LXtt&hgT^PzK72unf; z*2&w?QlRym9V-^Psu?Qp92(lhAAUo_9yuEtfcG?xD{M60yHYbOIh8NflPA3?tZO1H z_c$!)f;T2ru&__qH#HpW5`O<_c!eHs)hsKHCZb+0tie(+&y(vzYD7V8g#ScD#};>I z6X$2K$b^uHzNUK^8k$~tT2(C_&^o3hpLmcufNdCDYt0yDWePyoBsPfIeqOadTJ)Bb-M3u7#@$C2>A^@{yvvQ0A){&oT#IMIqV z(M|&xhbMH!z^l{|<*UeYveYW|)O5$x^f6@k95SRiHGCVHuAZ92f`}Z0Cwrx(TBSv* zr$yn?vh~w4z0!gO)BTTNz`}i+wDi)j^fGQ()nz(vJKbF{BLI`!fFdl7&1ebBXq?Mv zPeXRlX0{{3-NiXP=ctw(34QeuLvxuUVX0C5siE7cq56m_GQuPo#C&O1Ky%jocIN6_ z=JHK*RxBA}BMm^_vUk$5!^W}?!m{@+vqQ(Sx0~U*b4g}a$&5Gv@&vz{dk>liqsL%) zia7-HFnD^7PbUm9p962nAu7w61qD#m#kx9W+Gvo@f?xri$R!2f;Zw&-5!LE>)tFR{ zvefa?ymWO08&BToWu9;gLc}2dVHqMrFrRB6@7_*k{1E_o7ChxCNDwS|q6i0SAFEiX z%Mt9IAkh54G`-Wc4GML<3+oh;bi!ap^Mxi?g{Z4SrORPCh^!GlpZ?hQhxr7Me z;L%h1Lkuws3&3^)wrD{D4jHkH#Hr`8Tjz1ml~g+B@s{O9BGM-3@`i8HQiUb*9@3SH zOXQ17l*9~_d`l}$Zz+}LL2Lkx?G-$HEIao~DV=Ksd5E zmN%uBx3rYE(ZQTR5N{0eacqJ(H+eT5d6z-OuN-1ZIt)!Z!`v*r>j2mh6b~dy?l|~S z7`zAxu%cxv;bn)kh}f~LfPUl;{i=XwC)A>trn;n6k4*t>a70NG?fEo^w%|vfqc1;P802MkR==dL{;q&n z4lm2yskB{au+IQcPed3d&H)8u@oMzUX!Oo#WGIJvtd`Z#HC=CmS;!#g8kxq&6$HAX ziG?XmI9R(?4qC9;N3aYz~hD5kk#5dg1s>?Z(KHx zzO}X$0B7stF~te7t;1o(^Zl*O*R7qqnJfdD9ax=@`FlKZ|2)X!t)K#so8?< z*|7*6`i3)}tgmyKuNKjUTP5s>0n!A*tP#ml7NhD%^LdkVpB~MBs$%I#I%*KyYbXVNJ1kxY-#RS7A48lT zy?Q|YOY-eIM|fOparQhsSOzYi*%c_5o+_TMXbTTP!NSL2R)`dxq2!*}ZUY}eC&4CQ zcYn=QHyGLT2LZhLU@yF2fC(!<*JJ;?$8oPG7z0#Z=iURV_9npZ)F^LLve|kP#M5TJ4e6xRG6=b^^j|1UeO85*MVO9V!U7 z%!GLXypVduCedy41l@&Is7EKV;s|)s;H45}0Qu`?G##Q2vp<3|lEDVXh?hXIu1mx# zW5l5L8MMmG>?)Bx25O6H^gvg7qbq}rXKg_7o{nG^?l^kM3=+FSEU1QZ7q?CiCyMB@ za_s#=pC1PT$jhRK`2FsmWDdPK!$N!9M);uL3x8t{~OWR z6yDP`0A>Nj(<;r@(ZU#xz=x=)BcTYZ09JXGz6k3NtllNB(5ahOaBuZmCLHW|wa<8* zn9sN&${;IU1_5BK;g}>tg{H=wMSl9&4ZWgGG4fe5m^Bp$GHG~Q3Ak;B*a-WM04pT{FnQdIR}C=ED7SR)fT)E-u}JS@DEDth%f7zD@W zK%G|CiG^(0YoHEfgypMiaRVby{;rKiq$YXo+hU**WAXi{&3p99MU{8t_jmVr+R9gV ze-3SQ`K9Wk`!0q{038M`c&PnzFGzWN(qt=EVPCf#@dH_Au?JhqreL8(_#3T@S|5zj z|5RcmOk{zllfal*;(Jz!mRQt(soq&y9Y?7g%iriH-Caslu!6~jA#$vQyo=sAlCxAM+tpZlvJ7y;jvEk!3lCWg$xla z6X&DOa{TAcFbVwvOUw`sUKh69mRVCOK3hdQlwLVUoKfH}1Mm2o@)(JT?`*LlCD*7r z6>mvZR$J$nNS$6pPF}ZTvir;CVOMPwDBs=-sn4j#)tM}~L>5Gq-`U%BnV=XtOKs9a zuCZ*tnW~S(BS#7UH`PGv3(Z_y08Om9To`jxWnK!Jf>=+ir9_VS-&Dj%;rGnFeRKy)(Y?M7`B5PE}kW z({mo}NdWSE&^%9hYFVtRc>np;7deymEaP@R0(t=Q3_Co_dY+-PZ_r@3)Dc9lYj0TV zw!hq+p?mlR{fz^T!QA;0NKC{OSgw1x)EX4o$h|n=NWa#e#ONM@$2wv@k|ou9d6e4~ zOw1;~>0kH4?a6fI*S281;%7IigG3+Znos1<59H!}uCryg3wghno9K9#m1+*H4ZqUF zsw%`WN*y*$_W+QmY@JK{I~cR{Z};OL!-vG1)Q$v58sz;WozbP=K`VRj(3XE5EqBl2 ze0R+=u9+5kXl?QLHX!&6EOr5eH1Y%_k2nf&Pm!>RXE9=tbJ02C8}P7v@i7@Q5*eB& zapZFBPH&zom;{o)NLP=Hi+fQ}XGZ$xY^_EP*K+F~0C}E93j>hnahqcc_YZ%3E=x6h zByyI8fo+%9riT5CLB*iJ$y!kwfoLZv06{_HAE?;|^b8(NLdT4b3|B8Q_FJ~|Nu|%$ z6V#;6k3jfjtDtXK!kbk%zXqA~DhBVXiPjfl$wl?G=-EfBpp>qLbrA)YF#HGF>eYMo z+FIQ^yJ-{@p*d1WRzbcDbjQT8c6i&=L{>;Af-{2xs4@bCIUP}ykF^nUnfK@ob(jYD zCP*G1*yp;FJ|iX`R+qA`DKs?H+@7X!>Ln0OGNf!7(Q&J}*4Fk|$%>eA+blfKLTA&y z4uWPgP(fhnP6^Ac>rwFcZz&yfl!;hqWUv}KEZy|zs;T%|10~&41|bXzSE!F znS7H8%O;_ZO8SI_nWVgO=lzjnapqKGAuC9L2Vvz(z#>3>-HPem@y&Of(w%Z%67j@> zAaEU;=ag@5_N}%|Eh09Ygq#!=P>`To>L`2-=W(b_@DP*4evmJ*;BcwF?MIkaUzvRgAWXfU;qBI>@*#1I$S5J@AYALg_$8g&{hzMvjB@hx2n%%Jn} zO}Jg7+&gOfF}0hYS?03(pC|{t1nxt?j^wakt)~c1Y7k3K4mO4@6hol>g8K<&Z+jOF zg9b>Q<_-J>ZBXD_s^djq9G4=?bw5nxkM|*4UJohxi%VI5g7lCafAf|blkD2|pKRb| zA-za)&()HIHmE|O;@>&saLOgOy8R#Ad#Cn#^c)yP6(M63E5*g-82CNo2 zt%TVG%_O!T&xR6?@5CXhaV`h3m(7b+cU`(Q%#1T2kOF#uB7i2in1IdZSWAXDrsf-?a zJdW$1!6Zj|X;frwze`cHhhtyo_@Ij358~o_3kZeC6=Gb~8kI=%&;E&SC?NjB^*i8&F z-jX$!nVe9QmC&LrQGY%Hn!Ha0M^T!x7iD(+EiYQ4c@=B72edLGMBxJvd=mdF_HX!>htL}O&1b5Q_^hG{1lxtdg;xP8}0#0)|V1QjKS ze>CblN7-)VbiHtuWh6u)${61O)~i;5ak`bkt-^~pnaX;IYKGX~WiV*(~g&_WqYA+IIWVbZ%7?OG>A+Xwox7`hatII1|DWgjC*Z_Ftn+9~fH z!mhA7HJ)AC3PN>?>L{t_VFMh32W9Y~IpFiBZj^&u1(kmr$;kIcs%e>I@Q*@1hWJCM zm(-QJN!s3nZ>3_P*-q1YA0i3LS8tW9+K0dH!&t136-LC}2;O-aiz!k;h2qHwIO_^x zp(8e3D=0n!VV2ZWjhs@I=eDm7Qq4}LW_#w@TpTR6`GO1N7?#zyQ(*ToP)9L5A`mE( z4^8U0^@SdW!hq;j??W)(DGSJgxJtm$Kg)dO9miun$bk`D-C}-Gx`;J121oZ!d|7p{ zL^+0%O{Rh~$oL+5@e9+&?GVsWa(DhyP+1OH_vuZMFO#KQD;Do?Ds--m%s45Jl0hn{ zLH~oul|R4fRl&CD5Eqg{47F4_V7l>Qwb9&TTJfwih^wiG2R`c!Vq^kyeUETFpAt)g^^u|3kGd@*&PYPPFOz?Fk@83F7=(dz-TzFMd_7RjH(wf}4{k?>pi5x6kjL$ol7|6l z$VV}fbRp(?;IUd(sxRGu__893Ea7}x-cj{?EA=uZ7}?Y?|4`oes> zkGj((fiv(aHv=QjB1w-P5t^&aoQ!?%DZwl~CWbq~kQGeBo6nS2+M-1OJ))y30TsqG z@5hV#$h3(2WJ;QLZ`7vu*}$uCAqLONSY=u8De9rKg)igzs88tEwYmwP@7<@q%I#;@TtRO9rH1n7D-^dAE3i8GIdfGxizoty`uZVgvltpnQ zL?=u@1?tr~c}TDtaAS*tUpba~9|ar95P(A~HM)Ro>xsHp-Y+mmh!dyP4$MTck1k9_G03QT`9WfSK(-gDzzaKz7%I){Rv61EH3d zs;}io){I~&%CJbI3|Gq#cdlTNpuZJxnvy2O=_tg{(*J5mK&wPeUqh_PWvINL!tIo~ z$2Dz~q3(u#Y+!1rPkC(Yk-B*EAi*Eyar}@x3W8_X_)l2VL?bZxD2x+42Zi^-OHgg@ zl*tH%xh@A09_3N>6+4j;#7Km=z*UWNG>l_|=-bD+$Huu=0WphUJ8?uPXM|54%U*)z ziG?s`5g4onaV!xSU^Goon!vhl8zAg~=UiHT0v(6Avy7bkr~${Rb`ngE@~1+9Z>ZD- zc*BG?g$J~@)ow%z(jpVO$<#eBM;_e{KA6&yA_#u`XHsf^WZy_t`j4s%LGZ@<X{KPbTE4_1gqFTi(ZM|+m959`8+ha#8`0qPB&EdnEAZ4*I% z{RbcuV(p_hIyP`sSD6qRsSw_~bG+>n$=dp!s3OaX-RXy zmZ$E6~C-H>FD=v(EcV(>bn+X03Nmc=UF`MM1h!fB zFBvu$E{r}f92hoatTdeZW5|>G^}ZM$V3*hxVIInE4NChXi+Hg^o-@zb=LC8*}Gi zq0)G_#PGW8jN97BtxAFk1(sa|mx&)PTd$%3%Q8hO#F^!r^Xw|&+3KwquZjMyQZ1t> zl7mf~7QSXJa+esIZ~=FDy>@rbehWpa`kI0RMkx@?z_?iZXK|9)s3*&)QN@tc-Sk6} zp(~A{dKwG=7KFdk6sTAD9d++XV+8<NMRE0bcm~g+n_I!Cwz!F05h~;pEU_O}fC9jLCLVOBey?YDcL_s*j0Eu-*T-uC} zOHZ&5yEBC~VF`Y9L0~FqZu(-wRKVPn1{zB+=O(W|L)3s$g4Js)j7Ls(k0m7+z|x+Y;>$g=K@j~g~j$BfMq0`Q(f0%rH2c=sMc*g;n8B_j}b zy^tT+S5zqe4v28*h!B?^R>}%oHS!9$e8z-IQ-uV(&E8wJy02;>t7FD5xRxS4v-I2w zJOU9Qo4AM3yF(DbtFHT?;YZE^_CA$$xz1bQjcQ;HRAk@z4os7Zur?*8tlwaMxRu{3 zD<8~lXdP`%+*ZzvcWG1oKe+EU>DV+(+nh%2wlCW>j;wT=tej?nX~%5ZNcK*BcR!4* zG#%J{G=J55w(`jYu+41x-NB6wx@hA)8o|A;Xt2-iefk`m7L(m3sujLY?9u}W8`lKX zezmqT$RKuP^tLfiR`BBV{*68STcMr0rqvuMe4H>j_`5)`v6vyhAm)DR7P~rxcGmV{ zc*b*CH=w~DO9eseY+*Spy*uoIvrQP)t#J+qzn7LiQTC15{%kTUt2TeB zbZYmCS}*|g(Sa@pjOXBpH;TQ|Ir>_q%6_y*lVj7^VcYL#Lu+Z_9{uySgAHxpt2->a zwH)y~9S6XHG52ozP#v=}AG5F=Gs_*{RdZ&Wu?Jiu?*lN4j5D|H7VnKeGw7I?+VYUZ z8Et;d`_UOqa(ENiV1GEhdH2x&h{`g6YRj|8-UrwLzOlmr-}SK5RdshPsR}YVI(d8; zgu(=`v7Z9biX|@Ck}LR?r6%XEaZX}9VK|;((^_SRGayv5%-Un99E8qK)k2)rsoezR zT$pH1lvZ?=<&Kq^v3JByRMjlSK05C#ABexR2-dL_n{ngRgD|G9Tr#=^QDHG>&RS}g zjAQ;Pq-RX>XZkBMmv-*za+c-}?t;_~dZb%{*=L+67}McT^$_RXzs`3pjyYnEMXH_e z-1BhxXwUKZ{7&()E4ACf!!wn8TTXK4EM#uNz2^tg&c322y60fy!DVDf2lPdzlFIuk$P&sa$(kUyJPuFm)hkr%idV-Ece{a@2#aLiMQWfPcIX1)GPPP zKNjr8n_eDXLNRAX#lKJ?zpOXG%7@NEa+dzfx?EfC4%8Is4&Ie9ZpFo373V)o9j+Tv zHt*eB7L8tgP`l=aVcUx@`Q^~4^J9IB>%g8tLU;dCv2Z!^yKD-%Y-0Z9eU6@}K5*pR>JSCKcil~Pn|kGvl;Udzb9+Pm z>qdD6-SNs@_1wOR(;XdhX?1wO#f7e;j`_%W(e(a$-r+B2^`E9g`-;ZvPt|{Ymwb~+ z&n8LFHeeo&)F;ZimtW+3?#EmP3hcXQgNZEO5ru$RK|e22-q9V|ws1J;J@oN6cVTuw ztH$_Q!QjkN-bY-0W-Olrk<=t2TflyvAOge-+rBTb7tG=hH%i3RSAjjsfu4MG&*1Wb zw7MKqxnI`gS%m!)T`%KvNJBWNP3vdB$Wgjq2UGA{pK?tUD5eP8?NDxylxP-fR$Bk! znXZsToBp74`ypQi(f@0d_VdoCh(~^@cI98K2O6C#rA4@?*L#}1KWx06^{{@zD4l%+ z_qDzd{N5FME^NPdA+#PyTivsy;C$TG^k%_Sb~l!Pb0F@vH{+j|uCo4aoay#|E~*zh z0|lS0j+>b8Ki&2nhVDsZF>M4lVz{;=qKBe$_>!E4geD@~B z*!%LW?jnH6*`d1#}D6CV7U zo9Ud!KlsSy4a+#;eS4AJwiBa=E)jJeem@_HjB_jzxejqtwTnzHn1{QLs3=MO8dQJ$ z;K8)AuAQ5fK3eK@+UVY|2Xi7J{O+3P$?Xq&4uEwHBW* z$msAcD~TAE*sE_DaohV)Ez$b5VV8;LK>hGd zAGc@bKKn@eYi_|x>U18>Tzn++?y+?Gw>4$yt5@lyE?4^&LsB7NFzC)D@IM*w#rN+9 z1F-~$h*64g^0LZNN@!C`DHA=^VUb|bqg67Il)U@m0lk7e-4i|f=g%0l%o!9E*k0(~ zRnigGddsG4&8_Xur*C!Nz~#QNhlr8g10{7ad$$L#0oVgA{>D@Ct+k|u@^fDmMYM{X z>q~hrT}_{Vu*Y*7?|)r{hmE40o3*W}fmVRHMU1EwR=^}g(KS>X9j)RXYvwFfFD#VE zDO>pv;63Ea#5IegWa~whGsTQEUjVkp|1pXHY>)q0L^#K5>J-W$sduw&@^otUv8Vy23g7B>s{k#8?pH0fab@#9-T#svHbc4w zo5of@UYYcp+Rm9d&%ALObTZmC15^*EA5MWEJd~y4{?kHWmF0s}Wuw*PBLLXrzd6K9 z#ZUvS;QzoLKn{`kAJ`+=SSuNTJH9}|SWNrbO!}BF`dTfxn=QO^8vQ>c z5L^ExJ;IEzKm}1?5Ecp~5O2a0of8Y*M3q=2)>)<$yJgfmrw95qV0}wJxaa%Z%m+9E zu*bT;^*Rtj_}lFGJFa!QlzLW#0wILgK(P0>;1K_&)Rg9g(CV7_+Vt}GUs75>mDKys zMh4BshmR&loW&)N75U=W)2ZzA!ZM@&ETc{+~RL@0<5KMn68j_jx()16 zYhw&uwfwK=A^v~&JV5_ndme0AX!8xg^Vp%~vig7ZJaR%y#_vGjQ<#}+}HQ@g*&%;znAniY% z$Ke6nVY^r1HG9YJmco1Sf1nl9ADanV&%fN?k_YDMEzHVTdxRwqIyszqAsrk>Ut3q}>w^P4Idbf+uM7Q?l zx37&nsyP=I|9O8~E9U2c?7j9EhVL#(PAcw1Z$3Ily-$+%47ul-JcE8`IMGw*dmW`l zZSRNr^QOvmbZV}zjJ#JZ#?yi2XB{PWM#>|A8jyge-aEEZV6dF2$1EHwhWUw9T_nZljZG* z#{MqNqrO)!d$Ks@Z)W>)!WqsiR3sFrw5vKUebJ-ybBFN9tF9u=4~&2=jUlSC$+uIIY<_Vf+mMdcAC z5`+7hm5Q7bJ+zs5f7RA{xE?1N$A1qz3ms(L5f*aY`;pDjtn@m5(CZ-)g9*rDNW;4J zahq+?f#*zeC9!5Y+S`QtOQ_2CJ6e9LMi~#Ypd#gVTI{@p=Aw`LTW(b)gjg9GJo=&E zsPETh73*V>KK0^80ottj-UR=>;s$(-H9qReI3E{0tC&KSM?@uoy*QBKYU~D)$Ud>K z$j>{^%FT3&We8$@Aoux0?9;@c&8b|4Z&srbohn(pc8knfWfQ69WIp|P3WE==CrOut zY()NOs}a*^#LAKuJyT(n(v%%9P~9!&Pl8Kr`D+)ab6N3Nm%TJ3XfAnLP-Ymk7Ew<( zJySVRP7-FQ|NhOFnyTBLN?Cn_!S34G9WNh$)E<9)SSC55fnQ?v{O+sjaGiG~4Z1{y zOnRh-&2hp>HSUY>^F8F;Hd!4GIdAi}vLNQ8L|{bX(w<{Sa^vH$hR|rnjDce>1L2X| zbpp2hlDrh{V>bitVu(O~|2}U+__78o#?aP*f3VfUTE6bfS5l$d7i1qe&Y%6}tloP z`3tJ$BaN#krsSgT3eCF?VJa0y>StWt=Ti3~NK2X?4qx;zJuAXe2dyzBD5WVMr^SRY ze17>tp-)z|*3U>8NO>>&2fuA5qJA$HNRbcxeIO8%sk~mmINGT<9eyW(j*aJh+RHPO zE$|CpLSDAQO^>ZW=zLGnH?j9Ye)`{?V^Ye6iz??vVA~bRuZS#z*lAcX*DkpP*sqM` zeM7}R>Wn_MSq2!1C?^TX%Z}>TD>u&drJmKxU^3(4!zJ#Vqi#9R`B+8I9#8qJ+9m5m z{b=)EPYh?OE%-!fN|m2h(0ou+IXGoQe&2PB>StDo7C)x}Cv935n?e?Nf7M)Mf`a`?S7=W+)3X8`l0BHlCu2^KV8*s^P^N3;g{3yv|evaG}{RFHnP+o zL?^gqRx82u9`3h(bkXss-4(a``m=SO;ML@(wd>vL%#m;XcX6M+M1G!O>G{+bfKzDu zGf@FzBYHQt3F*O{pFV$R%~<5n?(Ie!7oXm0dYVu&iGOjd%Ve-&%k=O~_6sX3WV_n^ zYT<+jTC3U5oM!wKy`6LI>28_SrJU#_PK6lmf5%tJR~>aiFn;*8aJC?^uoNPF0p7e} z^i|(l#>uHL(Z>;<`Nn2wFE+NH9_|@s3y?~_=KfvMeqXHR5L~uwawVT~lX`IFcU&Yc zBImX2t6Y$+J;xTcNgOmfigk#r=&xE=dDbEB)ZKhB#o%4X-k_DSV(WThmpvu7zES?p zYBy@)T(-NT_MOP&-bf11mz9}QXX`obwI26|wMM3f(Zru?=xNEMi35n*z^>c_-_s%= zZGto7n=^~=Gv9Z;PmAg@+F`Z6nolH(Ds^;zIBgi6n(h4ID7yNSblnu}-crKgz} zP4QFFbN}2kna~DlhEJXXDG%2;=_U%X<`md?2;~jbGdko|phbWv{OR`%Y+0|T+hl=F<>!%aCSlh%r}4{-+RMu0Tvvptl%b06Z`#lrO|GAnbxa z;-&-}RU!~`;qNEUmXL}`3Z+fa^G}1bX3$`=W@!M=11lCTcq{z+b$GE}co~gw2^UTA zO!(L_T7n{?wuG-<=n4cwF z2cBF&7a^1KT{?aF44XdYVSxi3{)C|N!t2JI$lY7;z_+ZM9ZDT zxBJQN(Cm4?l&v(KA0steJ;=z*Q;+5i|pW;E5;ywnfFN883 zrC<@M{+B6Cj;Wz(so`mvP*$VzoY zQVz060T}F0FDgZrkENHBA)*}Nwc;7|;_wEqjHa}IMTGw<%okYyCYbnHJhMwb(}fK1 zJTm+Bkw6hqKbASxpE)X?Rj-~k?UnVl8P<lyltbi!D z%H9k^mLI{7Xy2E{B7f??Kl6HjB>w(N{Cxx}Bk1Toh%N^rk%Lc{6LtxPUx6c+e)Cm%r5Ci@>nAhbMknsvv(2s zT;b_uY1y%k`S-o^#U%0{&F60_q!;w(@0DghQ$)m(0hs_?v86zHzCd-LAbPAIlm-57 z6=vZGtSy2$v%s8ih0dT%!1FMbC~{SYxs#=MrxjVZ6xp^Ed9oyn%#oQX#JTJ^`~oG! zOa~r9vb8iwM?0Z8bI9_XJpP@$iX5asOS&vwe%XyWLZl_T1c4|6A;in_cee9Wy|X2G z3L+%(<*rKqc^*h$Pi(1#cR?XCBdYVC=K&gkhm)1pN|e_dln1S**b1gvVshSX=X6|^ z2XI4dSs*|Q(c}Hk^XNjtSV6FXPO@!Kr_E-NcD7+_i74p~^N; zUqN`-SeeE`nf7j3WGp<2tWZhuLsU+_2_XW$fJ_l=xQ(tcM`sf&A^5@@tXmtXuk#}5 zfb|p&*cK!Zxs-Y}JXS=ABH!<{z%leqSjncqR(LoL9;6OaY)<59O^m*7iluLky$0SU zpC2P;s@rAmi+sppoowv-OGl$OKFc_B0`6}IZFA6gR| z2BC_CMbFZTELu{69jiceZ3G5wfc6sP2#?Guh(3ZxkF|}`w~rDc#tq+(q6?xyWigHg zB^YFhVyX8{c?s7%uE?vT0);4=!|jxJ*tK@-MdYQCeN2o+lvp7M&>w>h3dE3z632X} z)@+%pkCj&GOV{w1I~fcaoyg2ird^n?IK&NE&w54gvR+w6Kym^i=|>@F6@Wc=NB}77 z+^$jJE&9?7e5Pc&#b)-FW(w?mmQ#W;p`q_&G9LPT5zG8i9|n&GA!K&aWf;0-Y}3ng zkcX1_fd(ZPl7KATu_K8iY3*{9%ugC?zZooX=k0u6fm}it1YLLg8zSvlAag&MR=ugd zmpO-?1(1VDobZ!H2}yiq0D7S<3Ih)jg!|)q(Y6^r4DfekeSVI$ezd9cX+%kBef>AM zz6fPPM@)09PqQNkmbd`5N2PeC^{2P>V^A3y8StDo_=WgDK3~(MQt2wX(E{CAfb96S z+u(gY@ThFyzIA?V4&03lLKDe+>o>z6*9VVJP2gOl&Vuma*7niXGF|kCoZs-Fp{g6& zHV<`}?HJTcJ&O@cVzNy3?+YCXWYsG27j4;UE8L$2GODgcn%GlZL+pYXx1-0AmgDlaOR8xR5uH``t6*C|7g8r= zzM@p85m_38x`PHFJmsUm`$LHbLW$v=8Re`vqUBZMCH1)^-#Njkxn&fLhNU^0H#LEG zJ~s-g6b4n^g}%?46!)E!zs_LXg}qh$T%)ppwJr2Jf*tLAkPAlOiQODwdTrf!H;W}6HjNbwg#jq2^;n|U zDlsil@;FEFqWYXT{mQY_%Bk_n;uw(~Ces-OeTB@#{aH~!e~z|k?HYixbV7#)W)yvE ziTrAr1R>J;%-bc*J;rqQ#4|RA1zTwiTeOW_bcpC!WH<<(ya&FsN^G4=Z0893;8RMI zG4PiT@%sv%fN8Qn0)Ih5JaI&;W5l#gPQ$BEjC!>JV|kEdc@SvMK6cVC49dC+9v&kW z_99&#Bl0*(;i^b9x30D8B&Pb!(ACa)`+$}@Iz0tbs^OCz7Cz=8)sZ}gOcsRu#*Q#K z!j{y(E#tmZXJkuzZ@g(mmX5*Sjln96VFQkHvp2pJ;{1s6*zpRhlIn_%6!jSeZ}>~^ zWjoXym$VXd5YuZDPP1j&1u|HF)W(?-Znt#Iei?_!Sm$ibLd9+JWp{C3;p(ft5!oOL zw!2GX*NgYTjXO(d zbnKQ!+@||cb#eb@L`(XLZ-?q$cf<{7uIPx!FpP=6+;$2& z9{kf~9+M|Aa0XP(Dc0HK8I7XpP4!1T+%@NOyXX7puI|Hp8J-4mL&S(J++OgkwfmGo zlXN+U`0KsN=~sW2aYSA>7?`8X)G9Ls7=oZ7gQT~va%N20J6;=nFL`}6V zze+nZgIK=nGd8`7LS7-7K(G6VE4@$G8UJ}6PlI8*{cBV(^+LsDK9hP`1ltQmMk&AF zP2>sP(P3BXap$;i|I_mrNg>L?%twBH+kKgYc4u^C0 z2b{ge>zqCJxIOObrB;`Q#j3V%<5?eF-FdEb_^j{2|LPNoKDk~1xyIfq!*QyX;Epr(PA*gJdz;i`1`J^wRVQt5~FlFN$t;!hT3 zxLco4KgUbJ2eMs@^g~##YuG|uy_3o+^d2TN`;=Y8YxoUbfa~4L3Tv5t_QG5RN%WxP zcwm)-;bQ-H8DnSYqp8rPJ;b<6%ZeVo< z$@**l5Guh*MtsBv6o`n9y*!pmk!BIZVYa*69-xUXK*rTwa_ zU#6^o7ei<5E>KNlm98x7lA|kCP3J58PkN7RzPiWtm3^MIA_ard`rRwcl99e)@L0mCGOIYMH~pkKdux*%5MNzxXfUJyfVbs-1x#dD8C=Jh0mv1>U6}FaX3OI{R5LABUcU} za?gm^_%STPG{y9{Ly?;t#E=bei0QP2ri!(XOSo7E^Xl?h~@Pime z?(-*q_M~5v;FkG!;gq_i1o?{>@2SgDXnyg|sP4yYQS)JAWE!75;Z*;Wh-J{&7sLQb zos~eu7$-s_K5_)w-_LZ|kvpzJO(V;X?b%O!ezUqq6+Y}Be1l>Vp)d-!a|a-Kff9iU zM%5q@K~oNQA(mKr>u1uK7}cApptA|5KKBJtAqRN}@?RS&8fA_BA>>Kv=^C@i!Y}PE z0@G1MlTh3lf$%VKjiVhOb6&isV}WlAa^ad6xEuh6gy6jnEX6OeCBsfTN5*@zZ{5ca zhzE!RIt^?39+6~? z-kdbG=MMaugL;O+$wEai0LL@_XzCXg0iI5%!KZQtEIsd&fg=LCZU-OrUOc2>WQXI& z*Sv>>I@YAq;BE>AEv9xq2<~H;_*FQP4eDm_r)7@HPbj6JOZx6iNC3WEIU!XE)}b(_ zR*(D=2UQ+ccup1fBPwL*k=T`O(c(lqYU<)JBO|MLgLs2k_#@dE-4@ z=9O9S>({Fyi!}ibh>6HRYGufuu@KO@%IJ=bpV_UV^2VX#0i7)jIX^)1ftLp zVx5`kZ_Vm`-aBc36R+UVP?|j6>nBE!P3_NlcVpJmxZ{Lg)akAx`i*Hvcr}&a{^}?^ zKBYnE?UR|Xemuk$Z1BPigHr;7jDLTu65AaTvWKg_uaiBOUl58unJoYqHr;s=dS||V z?Hj5}KYC94@??kF@CzevXf&^qaNn28K^b_>BW*8IE!-A|6LOt=8Y$0rLKqFb8vDqycp9TQ5@3aR3uy759O+v*S zvYyil4du^Mq%RV;b4nZG`@JU!%RI{^FMkMzE9~22+DE=~)Cs@u^z1*EOT9y2~*v)0jBocM7KWh5T}<4TkXW+0#h}@}oBs=SwWFy$Ll# zXvz+T<%;h=*onVAu+mbfrN2c<+*nOXrW=zBebE2b{PCdE0amIuK zR1sv%skJ63oI4PUnC3!0&(K0P4E) z2~s|uzg9eNFD87E&god`GfqI|4up7>-6v)_+J=*9wnJm;;OMFfY_c;RJmoXTnFk!m zz;4uCsUKPpyi6mQl>6{Gu6B__q)7|@SO%p40A<(}vBGEXl{)H_h#L!e`$-)e5`-QA zb>TclSbQxnpqMqBh!aRQBgHcedC{E^!7z9k&41?xfX^-iSZ}L<2Ecs|0`_Fu)We)` zEY2(A0qk3(_vub(5*m=AkEZ)!nK=+Pc z6Ad79k6t&7MiucAu>)Is<2pRrv}}kpQ=bGzs}J-@xn1MyiUF;>%l2*t4e9`vTx};| zaDoGTpYQY<@*+Mk+$c+q*cu#&DyrLRqZ?Nwl&A5N!M%lulX4d0(8(pGC_+1M5Ej5; zbFt>pV09go=Wv%tKXZafny%&jyEc#*@-w&Yd7Zgqc?%WUd*$~=-27n-34ZW+)0>hA zj%We^YXh^i7$+noyjHP7>!nxQLudBwx&+uYK7j!orPWe?!$XKFI^(F-9Ul#H9JV$Y z(}*1>&e0r)(t7J~7{L_)Ucdy|I2^3lkmaU==axRNs#uEG2Pn=^z6%iMBb&h={Vk&p zkC)04_)@7|RH7AYfy%9ez`7HBmO9&(*$5K>_2orG>?i{Z2Kw&S;OxN~n#Ue5o>C@F zcA%&PdnBw_;*6p9q0i&}00bsXf-idNd)F$$HKoL3Dt{Mt>M;=LVq?wS+4N^(t(L&P znvhVx`aiNJ}Gw~0(fc9;#xfs8na9q_ldmD}^XsnaUAMKOpQ6{Gb-9WPsn1Nyt1c@kkHWO#onkL)hWKgF#&WNQX1dFtOd{ z8a(|}*?McbYFzJ>rW~yHMp9*#)@7D1XcpJ=pfQC6xhHrjMKh}by_UdHFkJZ}{vmGR z4jceY!~~)eLJkby1|(31t5+!r5k-8CXD@rj5gp!>59}5UK_x`N<7jaILrOpav3Lh0 z*c%5w*p2Tz42&Jw;~&t1?b%~wSaCb~L82IA3C%fogE{xac!%@3ha+I`@%W%~UHodw zI20tLU^aL#4sU$+B~F1T0YzD*#ngbd2ZkZgnb>jdC@%xWBc_+_)z8IeRgz}=W#>&y z=S^MaX>xJpgLv<8uvho2PiTUVn5@lTFiN~gZwc(rpAd+R=b_bRvP$8vE=_Vu6f6<` zQz4GK1_ckvf^e|}H6X)5+%ss5SSU!~e1RXZ$OnzFWnaYAN5pXo1Xmfr#X^t>zEA`| zlE4nNXn|R@Scnk< z@FZpsEbIu}mUY|$`Y&p>xan^0L4+tf-uNkEg%wZY8WA{eyZ#1oCxiu!yR2e&5gTtn z+)D&ae~leAqlXm$c8NF_6kptAZOOBARBCu!YWTHe_VkVJsX_vdfFRa4j^9`Z)!79q zef_ES^@R0nVE5`Tk!OJx5M`G&51Ew;HA_i?XFqA5^(!QNU9-cT(O>c`1zA8WU2GIx zmP=2U%l|Hy_^j0MSmmoNE9Qdpca6Q>6Eb;dESCuU2^J~H9LRYWU%WAYv1`T;NAMXq zghqm>q#Po4<17+Ep{AS6>5E~do782SOaq(u(h+ubixJi4mURwv!49Fhi?&M+jC%xJ zott#&ix%!%5$gn&np?tTc!G)!xSxG>9ch~#sLr-52Dk2ngB=8xw#3BZ@vd#f8SDhz z7x{x77-}4G$29@`kmoboYk?$ArDgbz271v(18K~-df>x8I7kNIB?h*D$MKzmB(R|S zGYC-t9&=(eb3rs?U9>)USO08BZy=gk%=U|^?ZQ+vwuyZ%z8zgu!wI~WU*KCgWvUgQbgeb)Cx#zjMUwu{B+x8fBbsdNg zaCh~-a(xbPdp;QNc|c%!?ZBUiptIZZc5#L6?J1=1dF|~5lkJBM#CyV>1va)MI?cHh z-RRjCqw)wI(KaHMuJ)I{* zu!Z`tT}LmNt*VynoLLYF!&^!flBp2+0zFiO9)QDVJ@!l zlISi3Upwmb73xN;kAQ^h5TfUCW46}fb!W{R>$v5P$MI`xQ)lZnF5?xN-I19y~}}IGA#QrA&JYFCk7{efKubk~Vy~ zkqB>#0}2m!GqPQB$c15^i$P~JRaZ2{yb+IJ7?<07v%T+DMbBgaGw$J z`0?F0$cAr6}T z{2~{{3gRpi<7D0}-icXk+KI(`8vKy_<`j0WYaL*?{YN(}bk7SF|42Ii*|@m`G8zvC z@~d{|WJhohMze_dsN#CAgQse>r%PwiSl2*x^0Sq^?_bSqSy6#=JRnB;pM3N#Om!FB ziDw5j2%+)s#*Z(BPzXc50WO{{q%o!n)>*cR?BI`r_jn*KO?@K zR)kz@ybOIoejS?;>Q9bH#G#PEU-SQ>*`a5tV?VVQfoy0T3)EvhL&f9Yr6SFzq(!6_#Ms{QVY3_^9v1vfRe~T$@JH1^r4u=h|RN~ zX1*8tdZ4==*GoZ$^;Jpp@TMCq{l8~o@mtbS+jnsR@#doW&T?v?k3IpcEx>tN5K80E zGH>{h{&f}opL;UDUipP5ybMR{ht73{H{Juy=lXp3=JVyB&vL@cuDpP`sE9XX5!Yi8 zLyOm|&A-p?!ppPEe>A=c<_h@uYuEfsKbaKSZ>%|*2T|FEW%C+FE9HSHi>UU=+4Wws zrMh3Ro8^-c$W`$hKrJ|wVz~p|>Gm>Mv{M-@+sp_HL^bQ}(b^$rdE()}j(95LCMh|e z4BinNKt>G+83o<1k#9>!xSM|3lb4v9QT5=i}w(a<$vDyvQC& zSJ!DlA%r?>kigku2klm1x8*OF$&%97k39a!eBYViqc1&qz5gj$4y{6(PT_9)L9O`N z*XA6w%i*KyNxcY}TJ5Rb+7v~Ri(`vcXYse{1@FOR%(qG0hp(#CN&o%Tcuy)lOraVL zq0>|)y(Kg$aDa-aQ+m2uhFC_@kD3(5yZCfk!d{*3*@bC%gwk0w5V&oUtN4%4c?d=& z6nj#hsUuYeOu;sKNad?#@?imK?o2hdeS@Ga$zdjQoxJ!w4^}IPOHM|Qt4lWB5WewU z5TmDnOCFsWA#VYvoat7wehvO^*6TD6+pKjLS-vOF7Q(X0?hRb$=-O=^7Wp{0E!h<@ zojv(ltf|aBr>w$s!(WBu46Dl`T-V~y^>U2oC}3=x@bJoO?s4%b4`wVxz0T}02xW@8 zrYQ0(>)tA`TS%s>4q4c#t*hQbyEUlphPzn$^M-qrmr8VbhV)4=Is0cmeRS%d%G7a~ zQ^(8f*%H$^(NyZfdc0HbPqn&VY?!`knIK!F=G1qASlRE2P4>LsxA=ELxV_&ojOnc= zqYz_={CwcK(*?w$k6HmcY}fT zHvZ%9CL2Tt1U^NSchv{{G0=wbUVfSO68w1nURnCjT6uTPi-zv2g<_BHpF~Bi#o&A$ zx5zA))V8TV>Y5NmXJA<&@WR`dJ;>( z-w_=d#ZDT(yyadUJtv2V^h=*2!6|kNA>X0RO-$N1=+D#**2mjB^^auFpE4`nWJ_?0 zO7vFO4D^3kChPD!TlGCT#7=yg>?ry2;1v~;aXv~hv&&rccx2}8U*JV@d%@Y=Vw>`>K`Qmi`6P zx9OCU`Dgsdyugk>kqy=iR#N3;Q!qmRI>f|r1u{(?ysx6{oJp`J*#_>%_C}STWB@*t ze6M?`uyxSGagca?!nXO5f$NxjmQhAG@doc$UE_nA?@_0Bhoyjs0yT!_ zsVp9vSKpX!&>Wq!Mn2o~X7*v))@09(d;52;tqR`?cpB!tkZ=^xwnX0m#RDZsYW|j3 z=-T}IlzN)N!(LqVQ9>~@Bfc?PENS^85oKolg9wf-P_@o}B&J~eH?NH7h)&)ctzf34 znuq$!Y8uJOQH_)vjE@OF`R-9Aj!`>2dYP!><1&>*b%~Os4SOgkM`oa1;>=`w^YlTw z@be*Vrw8l9%CK}QR8=bf4wc}0rmKu37n{mQj~BEeZ2i5xo~+QN)ygJQU6wxMX6I4%@U@kqXfmx2ehTd_?16a7mz>&)Hh)LtSx?G<-T7@datH>UyWkH8GnS71a3c z57%gNvSH0i7H&m!!zwqVKXUYY@vRg8_+G6{#BG(~-HssDuh1`rM6|YJp1aSU*DeNv zjcW9Do##pfER)N8V=UhDIhZaj$MJgAv+^`KU)CF#$LCtcs|mAJZ+FgBNF-}iqBYDL zwB{5f)3v9BVSG>ZX7--D$b50M%vdoiBkF2?^uqf&*Xr<7ySeZ+?{P1Oh$qLrl5LEp zrhqpeR*u`K(&Jw12DEA!S*m>R!~5%QTBtEIsh%4M$8S>mEq(uEui?u-BK$9&Gxfjw zXWy`*@YVjb$LzxqSvhF>)O&7nIxDj2jr8sz&7Ie~zZ)M*%GJ(dyzVA!z6{JaWpIB} z)BQ7^YZPoUtdJZ{uJdR_ZlRu#r=rh*M~BRJX0)AYp9Am3B6-V9K^0Mp54rpM^7{53 z9jQ&hSNjv!X5M43ywRzYFD9WvS_&s*S zbJf|s zd3_xl)tWQECR=~+rois!M$zM*h4!MwV+R!ualXa?lI#}&%Obb$!3+<`ygI{lNgjPZ zwsSJ@HG02k*J4v05<(Sac9=-y)F||?rG4W^zfAn0)9OudxAYx}rR}?3Q9t(|BO*z# z_+Mu|=;DwT+q}@R&Ly|&*+3@KZ=Vix+-TJMU>9JR-)ykY_^CXIzuTU38_WO{7+ zPL+h)-}^`6r>LPj_jih8;93~XVx0J>=ju>c9@o&e=J+gUcmwE$lW_U-?l#nD_%Aq9H}>DYjdNom4QvyLH~8e12u()83nvpPN~qb2pnWm{tGOK08zv7MLZ z0}fO-?u1i}Eh#Ra=?&I= zD*M<2Dev-GS$X5B%UAkv+!_ncmmcibAMM!%af5eQ8`iDCzt+GCGrpU}f+TC^zeR*+ z>kEvGTm&}vTDQ7#*06=Fn->m*d1n0U^r8W_d$M}JmF^V)90kjU1;edG7s@Ajwn_Jx z4%{n6>991MR6%GuIRcKq77kmqR`>TdV|X^pfq4w&cWb|S=C4kS?!D8h*X6qPDP&}F zkbTF3zA%{9%1l6Wak5n%$(C@w;~+aSP?jTaA-pFSWv@V0D7L}HEj6PAGBYMfczDF6 z#lqU|!X&M3`FEC<@Lh%sTam@Gora3z-*dXJX;`k{C8B9s!W!;=+ONGYxHXewN$s3| z2EBTmUL~7VT+HY~oM#2|U>!!=9uvBlT+L_!ojhHrorAEa(OjPt7)?Og%|kn+%}$i) z6@5F3$8x)1Jszog7uvLn#|s?AfisnsnSPg9iT+>H#J6fXQ2srOat=Fe@hi4+wrY7Z z&v{D!5g_%;b~P+EFrnK-cDi(GYDnHwTQa2Yn(l0S6LFSn>S*w|sr0h^E_Wb7)6X+H{=+W&Z*7RDJ6a&<Gfmidj_&VKFu{q|d^kUE134JV3P8bS z04>hrOOr2&yj@8)6mr%aXBml`rQV18QDykfY$n!a2Vx5QDSv58dbo!u+4n5VO_J=m zj!cIAjpYRyPUDOTm`q`#Wvw1Ar1OggRCmnYb{UE3?o=)lgMWA-_h|rW#T;98i2drl|UNRt8M3cXNVGU)|vwD{1Oz@g?6RvwMAmt-(-*ivS4 zQ*C<&XcNeaWZh5GH6%K)_eAAyEH#ff!Vp%0YQxH}2B z64|ykp-_^WOkGLk-n2o{dc=>9&TlzdT2f|9h~f$xVA=S)zI;m00}`@+2W{RvQYWdn zEiKa>s0h9_$)9Ig&*jeJ&N3ysV`L^f2AEZdN_ci{IA~{iMk*f6l{3r+j z5$KK@9=a-Sa5S{bs<%&X%-Xe<-{m(9CZ8IZMQaH#?|D~}IkXy`w1j{5pj-3Y;+m}S z)=&Z;^B47S6qQL;F`qq?-m}iV;<*&znF)SYvvu&6x2TR($epPw+mk=UvuW8kuXmt& zQn&2$k!STSQxWghqOC~I_uYV+1K;^Ne*)(p4(|QcwLM^=@P*HR(rOZvcehyY841=0 zChrOi9InO-b)*To9b!?FcR7FG*nbSzL4q@l!mA@4t0_C_P|0ci9!6i@IpRJlI!yO& zR4J~~yRU&!pOdq)_q>18^!0C{pxZ`Wt;&78D3Mu3k0m*7oZaN*OUBtxBNFN zUhDp!E=IhoqJ+9VTPBQ{XfkbWsP1=`?SD5dEm1i5mDb#B%dIU{;dY%5%}{>)jYX1Z@C zmZ84$IBWB%Vk>{-`OZSk8Q3Nz&+e0NlU%gJKdYVgc;1a^9}_c=jP!at&TpNCboQL4 z-=n-kEQQEBg-Pd3ht6sl$7&lniwT8__kj20%bXXA_P?5bY2~%a9$K?W%W$hpvZ-sas8}#Pac0&E zVA0d!(X`;vwh}bdmoRhX()JKE2@xZ@R2VLYKO`?!(^Owor)VkM1yFtyV$H=+iKeP=?_wY}5`(M2-)T<-FuHWT9uDxJv zIHlwA|K-}2Ueo55`_`U2c3z84|0i8%bK;1r*ZCd5Y(F?^yq8Ce`#x33&{L?h#OtZ%{4ZUXW2&8P^rXZ>yU^AM$F=j^ZIgXGb8zXp(4gW#ZzPUu zTWVEVYN2g(nw>4H?e#kx^xk-w_qv$0`Z~73oH_#CdY^luy)DLktv=wob%72O|G90q z;h_KPwj*5EBXMrqaW%^SBhGC{dTjrfu5&vGeYTlz9hYGiU2mP9=$cUIl9C6@u60hY zbI$!Jt4o3!l?DuT^*RZ=A?z^4r{{FFRVQg}Cb@X;| z@@#2*WPf3De|_~5*RWfh`!zdru|ILRy>WN4{(FD<@^a2%HJnYa6K*2Y^@kcVR+!VHr`q}mcg!?%%as+HIdD4T>qLuzx+eKnA2oQ60CZv zSmycB+C+Qpr&mfb&E8t=b+eV45F*>j*XX%ggUY9+;o0t=8!Xxdt0y}e7F+D!C)0YF zHY~SGjMdwI=xkc;f_kIvHwEp2&I^O53_UhUC(| zTFq$PZOne)wehj=yl*mJ_1>vY@9V=k3hnof7BNmA)X@bUJ~7R1#~V|9UGG=A zVu*k0_ILYF55|2}obK=WF))$a9;NrD_YyN(oiZ@}rZ1#?x#QX0KfQteuoct@@#9Ye zZz57JJ~ur3H!$$`*TsIz+fQ%b{yM(}{>QcD@}I#w|Hrj~iR@NA;{2Pj)vVX{?vzG# zoAF4?(9KYmcz#X?vZ%WGME;sk^CVuWnynNu$3;hX@dfuv6XEH^FKO~u3?}JvOuO62 zCtLW=$cMD(oh%;KBxfrfb%9-VJw?K~91B-j!(6l8s@;71fMpjI`@E#;0w*@-y&|28 z!Wvue(ZfnlzapOfQu%O;ebdk@#>%pYvjZI01~Jtk|HrkX1&{dSQqOJHt8j5cgPv`ZNPVznfooEVYek6NKdjb_<*Sq=GZo%z4wknRZX;q(tPd9@Um6o zMFv@4@5PwBgS^N%_kJuag>e7Gw z_r$4ZSNq=7_eZ{}k!PE>cIm+imrG6!3z^4}H%I4~NXc&0x1<|+?`)!9Xf(4(#%j~= zzg{N^cD~`YXnikPW!Y~(dYcA+2}pwZ?2BJla9UsE_erZgI zbgt_|-n_|K&wg8USyK5{F;%DCrvJC)VbsIVsrk!_{~EPcw(6y-x;9DRU%717D}Fx4 zUs3nH#;*QR|0y-H{wcb#m1Tu4|KW+LGvZ$u1YFJ4`z~7d$u_eCJl1V!m{!l5gQ}dU z!}uMw5r5o+FSAF%<1)-w8u79;~_zO$Y1a9o=6cF!k*#yP)#p_@WbB9P@|^PZ&Bkj7SX0uiW!M^(D}zEswO#I-6a zK3O%xNxhgV`HvSmVRiHp{K!TYLEG#lOeV<8oEaVk;qsVq!U`W`dY70ZpNKy z$mvO^hq2IdOvwKB%+m-aJ@cp?RtBDjni6Ck~a7rMtY~PEpPVpSUHpq=&|>eWrReO=et6VDm?)G)=1vYmLjE zg~z=v%~)>PQS6uh7Mc5F4%Hd*mhtsT+6=LMdtFoToyfUoKjSlk7ImKwL74EtF5B3r*Ag1c z-{O2?R@o#)-~2_6#h3GE@JAN(GqL#tgh&Kv`>t(2rk)`6{%kSLsSQ4%DohJWT~C~r z8IdRZ?q=D~!Ag8H{?1{i5NShG$x|?4xm=g=l4Q5Q`PYQ${jZj*IlKAruEOloHcNwg z9xD13B1C)3EWA#>S9SwWOw>_N=3W!$_a(Lndv8jA0Op|JBL z@p|PNrunD36Egqf_@BI#-gE0|zayWDklv$DLmDpkHO|no;YPE0q1~^j--H+hB}gks zcgA@C{LyXWe~(;Ns#UKJ^T8Z(xm>o2&kz#uH}E9VGaPo)$kDs5!*2WvV^;Ol3V9~s0qDf?9&%=)U=ZhKr)6nGp2xKB+(gZrccm;lGU{tw!mcgY`Rb8!{r&|GKPfW2Dx&c zv5L*W!ZNWK(rbPyqAI1g2^#lqBEDQ^Ub-U%qLD%6NR}?rD=cXe5{%Qn-h*JD8L$@; z`tc4&u`${5%h|Zkx|9yHCr~8os7#XROzP;&r%5?fp zYNo@C*rkM?ac1Fd5;g;9>N!!qL20%aVIz_#3xit$ONd65t{+0v?`BGOEODVKoVX@J zW1(e9(6hs`c#2o?FzC`no}4GQ{GKwvY~{xd~5uI+49(}V`Qp}^7DS5C_{zPB|nrdpU>{y8QmxITxpyrj&r zzzJ00;6VNf15P6>lrE}>?oYL*8Rumg$a)OZe_T5ix2FO7>bXI-k65-h2JD3bdm>Tq z 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%0DQq0sS`8i(pju0qwu?3wA*_iJPwy!t6 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 z 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%0AiPNz;7olOz&_OcLwqt8j5Hw+$U`p5zcxu3;q}gL z56<$ln(ujAR@xZ1>df9n{@~U%!K>_1v+9;6B4JNmxQS3cIcYtuexg&ZYE z1W+`ba18tD$TTVHYUPlrD^~cEu2EN_-b&ooN<3K?h*e0&SxK*2JucLJQvcIQZdqK{ zT3+6oJ{auPHsMO3cP9d@QaK@oLAmsxMcc!c%C%Kp5i)SA3PE_R&Spac6=a0Xg7Uxb$8<9x}TqSUB}w z{XLI5zcM?xx!_DXiPS;UD_G05TgmI1GxS0DryySKay(oi{6Hr|6hfej=HNp6QCsk1 z?YuaLcoWwAP0<>?z+1yAklBh43oPM>Sjn&7fv=;!+A;WnuN6*LA2D0g`hg!R*aczM z!h~&urR~rYcKkB-*3dOa5^KfXpLD4xHigwU->s!>mt}P~k}*~iK44zf^^nRrpK&x3 zzv}ZIv?oT7N5Sf$@EhBgtH;#n0^3bH)6L5vvlE+5pc!z%u~62&X)nKU*|TX&gD&M< zuurxv`LlVn0zOwYVkAl+)}2vpOohU{~o<@Mnju!{c5& z5tUjQ@sU^_)W%1 z6jSyt-e+5(c&8cNl1?q+eainF ztE=zWhaXkDx+(3Q$_*dNxosYQJ^HhFROaewsqP_bXZHB>;ejyno|%vJg3mgQhvqXM z&7$M231?QImg4KO_h&-Q%;~Dv_qy)u!mVQDtq7ER-Ffr}KL*@+?3$lr#l9c*p6_ubaY??yh@2hgUvV zKF6>u+l*Hio{x6D9=V>|p7|`0g--fAe+bxazbv1;eBW_7A-wxC-t#Bad-?r^3M}AP z*sAd(7qf-Sdfyk0&|g+=J}+5z{5t{?uP>c_{fpLo+3gNLe7I~h^Z!#AV9Vlqc7l>f zxx9k=b*7xvH~eZy`Q0xP`0(tE+0LxBXlD=zo5mk~T>CxQ8)#GX``e@6HL#{oPYUGIf21{e1O9K@kR*|mV*In&;cDS=eyVleC3U+O@!|mfVnJHw( zU3rhHT&^!v?^7(>B>(DQ>OmZb#KnVk+*64(Y8UZ*i(&n?Qi56G0_*x}_2|%xuA0@k z=9F){JHJHs7e9sHSabh%xV!v?jMDAjT0q{d&uzai4>xB1)&j0t`ZxQk-wqT1`CAK^ z%%U;-)8>ErPc0xTKkn!L*=XC|-!Xr5N|yI;`qY~m9|#*+LrBDnsZl?fL~|Y!O8ec$ z&^y{c54{=Ch|{_iCCV1b;d6dF3L2)*7R}duz7Tn@urb$JUm3>QjH25JFB z4l{9*&lP?qC~`L~o9@z2=b5W0iE$+HiCrwe*3@m{xK1(g@Zv~@v2Ad?v(Y8AP5o_P z&zbH5F|bbCZxXwk>9$E*g!0~ODvI>|(PSo1bSTD^bJ%%t*GGf8nJe#@Dazib^r85@ zf_W(-2ahDj<_(_|%hFp#IZ;X(MOlu*+@&Q^!W3zRwx!(V)rUQ$S(V(h#pO+#+}dUJ ztC+3IP9me{AKH6Gcx(FOv`ec!@BQMfWdvqTwcg0TaH$!6UUsv7{&Cq(J$c0jUsEZ~ zEmtjUa!Y0LTJFHDmV-}3yDh~1F9b@DCya7T&o3oP+JCWmO?40mFjQfoU|U322wMh1 z_J)Y${YdWH|6B z;o+VW-&d)#3&BCM3(4bX@kt5(5k&z79-OR5zR(!GAYabt4Y{C`u-ke}_cioixMWQj z@mxNfKB2#=?6xTz`aZp0c~zfN=j!rs&O2{X*aQqL2Kv7x21KYH2=MVK&`4<0NU4(u ztMQBSXwzwV35wrQGhleCeCx5*t!GMi|Mms+g>|+0HEjO&1+=|*0efKJ3G@XX8YB7C zwM53RsKs3nt{ZC&OhY9(KXfy zAP3I10rrjFZVeuP$w4m=7tqn0(9sxIvFq0d$bt2gq2qwA;hKTbk)h41iPMxN&=+tW z1jdQ2?bmIP>qwJv7fhFzvLw(K0LVdvmO{AtlecP5(t*T)j#8r5lXN|$bW^PqBQ1=z zeuj-+w6{~DfkJ_?YK5&~p`$?q(yZA+^@FSBUwGhV)#PDQ>uKHMW8dKGR_tojALuyX zXWt8ugFqlFVEg^0!S9<7+nwo&zzwp3&AlUXVJV4p3|LqGP*FEb(z57A}ry^d> zCwOj!N1^ItLYm@YtCJGz{$>S|n%^b0roa1}6-bP#EQ%5dMY+- zGBIZGP554H($|8_?Q*~#lwH^TwFlR2MZ49d^B*%(J|#vCfBNdrzcftr4-U_LS)cuUF*S7ZZDMe3W_cDlNLy7gcDV0Giq_U6^m z^54q9ueJY6W#H`h#=-H@!u)@44>JCrBnIgImnH^&{=c^eOaEhH;QzM=|6j8QmC8V3 zK&!Tu^NjZsy0Yul%=dYM#voCgRS? zD}~!qs==D;b0IF9VX;;Z?;m zxR~_T=qvhFoflbK%R-N?9c);1x)!#ywZ-sUpLw0#SOl5)w9~eAp}ePIAP3qGf}r@@ zCs=0a$(`oG0vD$z&5LlnkFt|GNSQsEd7_p?v92cauzSy!hz;z!Xitln&&iiauScy# z@h=k|6EIp@>BHjdn%0NYM|DwfXhx;xSi(B)kYN%@qKjs}M_0n-M_BpY2k^*7 zLiKyahe%zmoPTtgbec6)!=Lr6Z)MH#S_n&4TF7^PLFz8I%aF36w6#@X2yv~WH7cBa$y?XXbQdpjI4-B}LS zt>OFRWW*OS4byZ-d$=eN-z2eiPL^$m4TD)rhsDwurcqZXR6f|&lDy@1Qh?;JgP zSOHD0wSefwi5OZHm@DG(dw&DM;c(``JK13$DVtbbQ$q=QpNBpgBzpx)?LO+{c^?pN zfX_zR^YfhviyrY$hDpWfAj|4l-@wF{mDJBN?={UlRmNFw`HLo!xF`GhEOSnBG=x~z zye%^B$V*oI>?Fk;QexckOwpkIW8PL!lXG$zCDDK($)jFf1VAJ0986PSCC&JnF<_i`>uzJPgVWX9!}r@xXrY}-GxopRYbotjbE!(Sy@BkN4MMNcy`mmeJj7S=~jG|@J)Jr)_PYi_hUlbsFxV3fsmU6E5T8snxPDOqL9 zSt!0m-<{N<%`!MEdM?bXU0A$x`^|%_Z`-=Ne$47?5)FuqJ9+iF!-wgd@uLGf0b8Tx z)2n%bcfL_SJgMuId?=cjgVns)HSumMKiVbP5EobCN;mnW+@ZF}O6ty0Xri~sUm@{x zm+1?^eNU*6CDJ$P>}#&bX4tmT$gW-EkEMA1u$1zwg}2`y3H;eRWEWa6;a_BTo0p=L zyEmbVe_~&@xvkzKwyg3fd)FX#=qiT0O5?*=s-eFu-&V%c%&!cg*HNc3Og@&HH#-(d zgN~J**=mD7XbpY;BOmio#P`ucNgwRA)7J2T(iT760^Y!-ww>Q~vWLLyTpQPIMKRxM z?B0pa9cJYmJuy}JHon!e#1f4=mq8T2{)m30t)8&daC#~Clnyx`r11W6K8@ zRW?fzNf5RhyNj}Avr`X~Nw-6})41RKC@+^U+b6>K_A@FGjY54hd7UR(apb!uf=0i# z=8U*UCdx?OsStenfMU$A{3P%J-CeH6yRX7@eW+ynY3TUQLa5ed=ng!oUJF6ST(w4D zDNS)QuOqHGy>e2VDD=bZe8TqFXu7q?LF-}4_A*))0fTu+5_?SK^N?Rl7#(;x(6qBv z2p_Wu_k?3ka>JGALNk7ZKY~Xzu|+(H2q(0R;8cj{%8g(I5(9Hf5j1@feQc4G3Xuzz zk^Xp*c{!2k5wh?5gfkTG}XM`hDRa~ws*$cELP^PbYO zH>O7S*F=kdi*8ro#fskfBpTBZF8etm#;+)5(Ek25E%(5AOciBpxM1vl>~HH>$~R)XLoOpil9+m*VB063~?5Mws&ABE?rMr7xKHOEz(cSgI%C4VUSZ z7=s(m8>xE0D)EaXyOJdPl2jY9cLoN)(^JDP-i6VN(UnlnX`~hSvnXD$D~r(_<4Az* z&H);5V0k$T*k6uJZ+w^jZ(_iW6^5nH@W@WbZlw46XZ)KOXd%o%?q>|Y%W$fKHi%_@ z7R#J+$aG7{oaxW_eh-GDe?NTvju@~9{fk6EUtlxxeOA@`-HrEIG6a#0(#VDeWdF4XrP*j)HW~yE+=snN$fi`vK_PN(80NgJ%3=JH zL*1NB&z-|2o_mJ@eoHBr%P{BOCG1uyjDItii6|E?o-JgU7lOzW;m#9p&L*A7lb*>Y zxXcyU1in4kbN~G3{a{8M_-|t1GGBwJfDxIG#6p>{;Kjv+mHThJUuT)WelUmyzes>5 zXcXE86xyd1{as8_pwy1LC^7+# z(tt5(WEFf0pZ-x`aX`$3C@fAZD|Rex<}NPSER2>ZcIPf{Gc0doAj&Z>FPbR|5-%V8 zQdDvYPybRfs#F1tqGH8MbBT&uOUsdI@El-w_9D3IG6CFlE8&Qk5eLImmF996b$%&7 zxGX>B{*Xsh*_Za=5_q+M!eGPV4kE(&%?f;@D(H*C)TmOz7gdu{6&-0MIoTz|PK6nU zh3H_|^33af_pDZZ#`+mpcrctT8XkkF;e1iUm0rXBq9&}WG_J56$3R#JBK*WqRUlsdxU4WWpd{I_wjiNasijuQs6sBfB!RmmJ*tZOMO7*TQKAx& zT1%aAOPxmm+*%3aa2(pvlnS!PB4|P~ZuIVK<|Yj zcHhX_Zi4#V%4nE|y5KUt479o=K%GEsF03%zuk^t5wl7=hJ?}C;MP|%jr>D7KAgYpqJ14-{Gr9o?L=*!&{gbM5 zJ5dI7XaI`Dg1r$p>JX{1(>*nd$!3G87IUdGF?n3p8c=#A|0CePBg?tC2n@X|)QCPQc#S5J$8 zdF~VTlV?}r-p?bA*>AsG19#fp?lez%Fkc1r1{D`z3-ho=A~!xnk(bASKKbF=(SI#L zr$ds3)d6ufW3`b{(LO_IUui{jRcTl-%s~V8QU=aVO!GQe_1Dl2M+3@@-_;@)yG8ir}0P|R^ z_c4d@U69UH(fnZi@<+T1l3u}hRg}v>RCetM&&`H8;lN(|U>5Tm^T_^NI;fjDBu)re ztoi7(%svdRbh;m^Z1{}>CA8A7G4r(^vzE2biKYOJLVxX<_K3+yKC-aTyuvoE*2<)~%&=wNq|8!j()X&6 z@>gwg+IPF=T8DtXuB-1nuSo{Wi(1>t<3V%$n`6va;=%pVTi@nP4(EzSNZhhvWlEz3 zM3v*MOR6uvqqzyCf5Af%prIOx<`jjE48>X!00=3h4}$xFe&laJ{ewTY1ubMSl}1*< zR&T%ps)&a{r01Vm-^Q{Ex-v|&&WkXQ+O@%dr+rMoF3R&%kHr?gVI}l%gnJ;yEl|rj z<{!P)Cer7teCMmeuHcw!@)co=8y*QT80nhrRZ-E*>Y^h&XffAm5!Qzzc^c9}1o^2H z$u@6Z@S3sTQv+69IZ#TP9!O5tH{6&0?0TZ-t6-1S0x;O17W0~N`0c|oHh&hoKb%P8C z;_m>H1%pz_N#}6=feUAut!L#If*Gx6kDEy5SQGDG5W_(rG9*|j9t20ima6)7Ogb~1 zFF1BKxJO7fr8@$*x;rxAn~bHDuS#>2fTGdPY=qV^j+ht(rqKZ31hPTqghNQOA6WAG zAi8Qv(k50AMKBncN1+D&{+>WqxGcHYN{P89lDzuOA_LR=0-d-AYkJvt-BdbG{K5OW z8IB}^d4otv1DTyWm^EtzhZaGETwutjoXQ1ucz{6_SKpE(u%SB6KyAVNwn zg`=FO81cD_TZYH$xe8_PvuaY_=e>KJS z`)sUC=tp+~BRqkr`l1E@rCmnXK{^zZMC@MRCA(v6y0GJ1qo$Ugbbk0bmS+C_0FtM zC95cyP&Nn;4o$^Rx%srurpq;1R-T^D0u`1(CV8Gsb1u0|(d>7KC#Z1yV*10gJMr5N z88!^&z{oyvC@Vg>_(-7wyVO*; z?yI)~uqd~5*Y_5-^p6_Ej+A8UF5MNLT$5FB<78=1+?dGumIOnI*&}4o#QYA0V)7PL zcW)^(Yh5eXq=QSerO-)HPwInS8w=(woys9>V9Z&ke1Ebu)J`@_ZK z!(Vc}e@P=B(1(e%W#DqJ?F>`CdwrMBpHe9!vgv1G?3cATaxO(yFd?Fm4-68NgR_J~ zjnaey&fQm0Y4;+s9WzB8I>Jssu(zb))#b0EkDS;1cy(Iw zx$`NCgbODFdGWCGB;7ZNY?H~oox&oNiZa;zh>{Zr3Wl{e!7{#EX&ri{lQ?5T6;0Qy z->Pv{=f87nwfkd^^)2csJ>N?yu7DGOP!K9@bu1z0Ysl)&8?VT7VA397h;fn%1b9~y z@PtX8q-C%8xg|+6o`9hMs^@1D%Olq*+9aGTz7~ z2?QzNbBT81W$8nN?_((!$YFVlw@EeNAjr*P87Mw0$bIe;Wik*nFfWR{jb^*$anss< z4*pCxS1?J>F-LSA3<1RqDZ|scIptZ=&f9rz&MFGh-M7(H$RCQ7Twr|0yKF{63L1o+ zpZV#kKrFh~F`(2wN>0w|2dcr3sglV%1w{|PFt5ZVxp{Gj#dbe-MdDGNu)T-!(m+(b z9^?BIn{eMxB_q!U`B3YFz|JdTH1j{vczMtGnHL)=9n3+jbm1$P)GbsQ=4u1y7;$%B zwYWm9JZ8%!iP|L+*i^Ko{Rozm9|fT}mUDWhV)-<^8by_w?Rq0P7|Oa2QeN)LhRIQL z(nWzuf{~2BaZoX+{)l3Bu+pQe;#Y(HBbWX{rGJ3)tz}Iz4sp^K6y#WZH3ZtkLxJVl z(>@HFc${qnEBKAnqI-4YiS3hM1B+}3;r_J5`s;Z24Az2l;G^7wqQC6a zuJl@ap2_qUPgeOCJeD6^4ldv78mS^=@GqWjQP%+|L?t-2n-~mc)j(5*%78)SvJcsR z(S-IrVN9hPI3KhnbnUZZOz|@&eAGnTtEMX*A6C8?BT-ws6q0YjlLXODMmL=L)RVC( zsLUskxrye{H%6GsX|eVy>t}<>t7M>D`yjCSW5%CCZ%QqNr;I}*bv16vsQ068C@;TB zWLtmwaIwXBvF}ck8~Z+PSF?Fg7#n?i{psDu2|z{c&}X>inQ%rm@wZ%1##M9ZU49ER zp^Q01J%1K&u4Qq{w%|!!&}Y$BcL)L3a|lGHQ#1qBMB(}=_bVL|ZFLlfH>}YIJG!P0 z#zwUf%dkT3VQ1k;cZo1|P5-Y`JrVEHKHd*_KtMwW3gFq-g`U3_c-+NrF=kvyrT?v; znv0rW{I<-LY#dFG)L}w2ZD;RAL73IYm4Dq+SzJ z#vusqMq%-Jku~rb2S#e^Tk&HmbpCUB^tZ`DC#7rVgFS>k^a?29?3uMma{uAuypzHV z-*^)hR>(VfdVJ@HkyP0r+65$MlFJAo`O{{~j9{PIdjT8x`m8vDsBu1Rzs^wP-e@CS z)`d&1%>yNa&mL+5M_P0nhxbl2OqjILp2QLFRe_z;f|;p;!RqC31|6Zf%=+n{_+r#$-L!sxf`h+vU}Ny>L1ISwUUq{~3M&>qHjQRQU; zet=bui;^BboE&AmNkl8>T>T1L9dD4EO__vy%JEzSt)Rt9(4ruV56m8z-3bP#o~KZs zT{ytFuy1S+wqonNu|3kesY+NK&y3QQv)155FI(skI>e`>#nJ|1jafYx*J8CtK+emd%^~77GC(P$u6Y zRMMvg#Up=GYSK+C@_ZA_yKa-d!6?1&2XN-shUaX85%bUE6{?$8u45&FWvsbaVFN^2 z9|G;LlQuLk>Ek88+?aqT%j94%gZYOc9bR2fFc+0TXQYw_T13(MWs9=grA^NFM>X3w z`4riQ3Gnv=)67dA1V-6f&A030zjo)BZo770w0umDKoKjnLdj9?SXkfIYYm>dH3JNV zJ{4srd(Hh@YZoaqJns#ZU@!&_)@s zv0uFTbtMdm5nQT#frKi{fCX!~JnTQm=6}wLc;?T@7`xp6{&J%6k*g?}>}pX6OQl0qVqRbdj5>$m^KF9K5)19e~>s9_(dVjr-w zCU~H)`~VShpAG`d>T&^YqY-Kufw72yT4D$6MSDA1F`l9@;Qy{qLMk+$I^2-2)+ixQ35xsEj=+oi|HZo#0sxlIsM!-V;IwQ0#gOR zM5*1Y`ns72OimM+{mmPMJfI7C0LX?$6dsPiM25h8F>HOAz*HmbbUSP(U(K9O#andn z*HaaIBBixdm_=H$(*ttUr?5^dAZhx>hz_MP)vmNoYfUvY!aMX{=m}Os)n;h`pcoeG zKwJSwx-tMn^GK-&{%JF4T9RWdG&ISnp%f&_t;+*s1e)zP2T10XZ>nlik83h`kK7p7 zq}~~!lhd@MgR;$!(2#s1zS3;q#p9KM@Nqq7rhd*y4Xvrgcoky+k|(?&WNE0eXM}m& z`c~rLeeGsn-89*?PYY3g{-Y4CK`#WXWm)+FSBOB>r~n8L0UWTHqor-o2el9$9OOP% z2=EAyXrRkR$rXS(%(dC{A?)X)PxwNV2tt(j#&~dJGAr6VeP~3nwjjBVAOIM!Xl@xa z4;)HsGeW#F0^~ESgu*TJb$nUDJN}IjT$tre6)!p!9|X(?7lsGW@2OC7T$tN_xEHxf zr**iu{e*3Sj;R#Pr)t8^CI`6o?#!65WFG)v4@HnpODoiodeFN{o#r{rX=lRqN?AV% zqdPQmlSEUu;JLrtbN9AM@+7Eetgh?IxU&?@)COi-r|VU$@l-KPn=a(O27!*b{yl}T z>#bU~dl8U(`opJzQ{g)VIuU5#7tTd)@VWq^vpy9YG;FF6b`LZiMKZ0eKfE3|m8u#R zUorJM6Rj;{kZ3X;O=1uo3rw>QXU2X_W17w*nK@;gdACAvFBP3fGJVf)INV!VQ%VPr z2KTZd#bMKNOorwN49^wDSU-c%0qX8oMk$!*$kiD(6%op%^;~OIi0{qAhh4KzU@kyq z1Oao*R!crXV@c+C^-lRhx6WL*)Z8a2V>*p7IS$CPB;&tr28Fp#<8wnMC|ZDJ z09c6JM7;+sNNy~_fhPcLY`|$JdrxbNPG@FLZ9gS2%f^Ivn|LAteu26Mae*k$!(aLJ zwN+r+TsCJcF^3ZgqNtg~|dfMCIYJ57=TOCBYcn_)n zHg?*S?)!#`nP-BTmqxgUhS^TgLa5YDV733jHX4{xzO%3O=pmZI7R^VF_hcS@Q+NqT zINYIIqIF%Oq`{+Bv$#JsN`qOVkVeZ&Sx}SWJ-ITc{c3S%9Zg@j#4>?qqx(U@tj$ol zgg7_9BZI!ptj(Wo!Cz&;h*`QPjOJEbddh)*W`gEGpaD*O%~`+1LW;-FWzxWlzLTJg zCxd5&fZnqIn}E5sPryV16_^|0z zbMeQ0QwSUO?=1_aDU>>Ng?SyULAs*(9jv*#tWC3`L$jh~YxA6QMQwFid)Jzy%ElA!==C1o^xMA0EJO z@T$P!4@3AAY*pvSWac59J!4AqXkJ!354BZ9wwB6}7O>j>fN_ak0YXQk9dL^F64r5Q zM_Zo)KZQ|cK0L&_9WQQ-3$tXdYr!LIam{zWa({P}pJvs9|EFNDHRmpbO3fmGAMXK9 zySxp;j<9>MzNT~n;a#@_(ldZv5VD66GgGqpp}M5zdQ^@3yixCcP(3{k-QycMwsYAu zn>}sDxtyC>YQ|Z%j(NQf1yIMl-&c@b` zz40gBx(&BI#Ecw`mklusR!geWzXt+>GEm1wr}mc%UPHq<$AsRCm^K1E@!hEgYcxA{ z#u7948G};YwbuW$%nY2~7CY;a+8FLG>u}m=yRJN!wlREf!!)%lH@`gg-J0WkbAs8a z_^U$?6U2%iO;?QO)tKkCpSs4V+Kyb!QFB2?h9JCs=#&Y_Et!zJazO25W|$B7gqxe~ zMQ;?k{ve$ncG(@~F!{m1`$KrE$9t!TZ*I5Hb?v3=x{qt^d)LEyw1_mCcG01*-Z6(0 zLK}>lcnL0yL(#!E3%|Pkdg)y85=GbOP#K5ft%9ug8XlAG;!O6&`F6MX(OjtxX{2xZ zzoP&c@%;O~`ouoj9`Xy#!SiHib>;)AXYOBDowbDzDD)19pB<GRxGkEMnJy^mOP4MWaW%3UK0S8`0h*|a_HyOqv0os8-$hUUr z6rtm=|GjyafZKQAT2LT_pIn=>Z~24n&hV}~i{1`piaSfuk+}NGw_fCMy{CkoJ1H4j zbJco$*P5Xi^`X~>NdwI(>Sb7olK+5`Qs0qE@nS-(Fn%}^%W`L3JCM-ZF^M~7nLJkZ zwV^3G(uc0lJ~~k>vSC2Du)abQHSGV!?%#r~kS`#~7oObIThVAZAT2s#74{dbq zP7Kw(W$nhU!vzj*>$yLB;SEIg1Yw7AUm=6u&q;nM6q^mc-K2b z!2NFUiGD-;OZ{{8c4tKa7hR}-f}MXDkQg|-Fv+qRue^xA{KFCRlsnV9 zjT!KssdHm#yK3LHEXDiw2E-Y~WfzMvgo?Z6u?liN)!I}P(7=XDiYOL?yeu^f(^Zc(p_!KEFWa}IOBnCny0^nZX;#mHV#K0lP zV5*>9{ms7n>|Zm)eSfsx8_AP zxoT4_p16}{&hT~lWT@yH;Xsc!oO6vHYhP@lh57y_238-6pX3^}qhZ%n^$woAKd^TF z-&F$7s(`5liN{}O@^*}x(?mQA9U2foV&KLvk`h0m%`rNT_@SmccgwI390Slx(d9Ud zhM@26PRmEF@lWAYXX3xS4wg$s#C`Zq5nHhhUG*5z3ny!)mRFv8roQ2a`#(Nw@f&4I zUgACvJ5g`7H+gmT!A#=^^(EZ)F3-w{A<|O8U?Ndgl&0!^@5I08 zu75hFUQ~yBnHHftzJGBzen|2>90M|G3;A@Yw-1E!F7^Jzy(L@X3tc9vQ1&P zO{zm_6K6V&g#%{>cO764yk`^_Qr$QEhckmNFV+&>b{%Z>lE496xsfzn>)D1hrCj;1 zl^B@wVx=$E^WQl(mjwD7ZrVF!M2T~k82VpsytPkm<}RzyjpB|i$eH4J$R!?hb?2`=84!GThymq9tpbSwaS<7rNQYw)wm7b|oHux&L;yW`Mtw z_rcfkZ^jRlMb>_Qtd=<9U2B%PHD8H)lDB*`qT1qE^No^rM`&F93DZfkmR_4TPS1*o zYScKI$>Ez)xRmfrc(T;-v_nhK+KgnwmGHbvugTGz_ZHLYJpWpo$fE9PkjG+}o49Bn zhKK*&5Blpi(Par?=7XQFjlTa_Ce(W=wnlHuyuX?m{e5xm0wXQH2~K9-+bC(N%$YRn z7`xo6qiqOiuAOcFxEY6(%Ky|n zh*Jx33-c(_Na|8csgj83+>wyrP!XY3&P%7Rh|WCDZkWF^3~ID2egBqoTHzPpNpE8mvw-Z zw&4TgyCI^s7=DXjA+vBLuW;=bu_`{{#txDnABb1+|EIL@yin>%o#>NtK9hISf7wHZ z@_)dCL$ZoZs*=Mym4Cp)-^_x|J59TAS>;k$eE>W({>?1tH7Of3Ki94_1+;^8!*kmL zH9$Kc{{|MEoa+J{>w(6Che?a2ewWJMy27NkI!?)^N6&f8*lt4Ken7`?)lh3w&vwnk z{J_{@(h_JaxP0{hsDtZ*$e4|Y07grUjBxUKSe;NxBnsTw)%3 zhep6W*z10B)bI8%9SL;$S3ZpYD<6U!X8mo(g51CSD<6XX%7?WSAhTeEE;fv;G)o8v zRZOwN+giJnGVk<{p6OwM)wKb6VFA6tuCplTaTId&FMe=bM%k{1xUYJC z3m`!}{wc->I*r>*X~x$w9uf2QtzdRJ^nUwOfFdBJ#ny z(e1&N<$rq%;~N_jhg(2zVSf2)e&uB9cz5@DdHHnvuX$Mg@65x>#?=;J9)4c^H4m$Q z{?l7HIlbK4zg)Ur_}^|G268i%eQ(dT_#JJ|51i%AH3yHJGO09HEp-`RLrr6-tABn@ zxTAbJ&{#9kpZdV*yUKay%CMqXG_z{+vG#B_aE&pJMP2qjh`fGhw$bxZqH0Tn z%se*a#=_vN$j(yVTb@0mxyH>ET%I!7?3~#8#?(hATEqF~m7T?|=78W$7e&ZNcjGtaOGaJW`NUk?JKkV++ujgvBSL%;N3r)~z#|VD4{uw9vBh)JH z{t4G|0>>46S@|hv3Hvj7<`Uc+4S6xmw`vpYD@l6K4GLuSeFzJZjVPB_QlFyfSKX`& zo9>|PEQ?pu1=9REGrS7>Y|~jLO72E@V4Bvl=uewCvO|Tr?32Pc4Ht9NxHs)z#V`YZ zfez*)iy{+kqfGN<95+k+l1&}Qit-&lJH!`R zo5*gHU(zgd^LBHAtN%`K*+k3tekTF_<22vBcI}ld#tzW4l@IP<+PN`oJAL_n?CfgO zewT#9EaDBhUd-EWsz?5OQjDI?)mVC#@p8%Y{X8-$ma|)j#a-=p0N-$NXLwNPzcF^# zQBBAHqsKRdZ45?Bw;&}F3eqBi(xG(d=(4U_Kfa+H!fN*X3egM^@zNQi{!?#J)% zcYgPtbMGJbU(R-R#&)*z+57c)J?}-H$UInHIi8fPTA}O%Dmv~XPrpZ`$jFo(xKFeG z9^V?hx0KjYcdy@+Zo&|_{fy>g!k_NXo;!OxTv;V~&(j3UvQL%woi?MccD|%Mbk9Ph zEFX1yK3Im-;r}qNrO!P-larrgIhT9#qaL$Xvq9}UA#tw0vn((#dn&E=K=AID)hM)CWyf&jbn>8erjc?#wC~1mBcAt?(jU7{HK(M>xmh|U zNoSvH9rjLDXnk&Vb?!`XdEmMzXJeW4yRg$l%V6<>*||H3EAYq4$Ho1{o=a~A4bka3 zt%n;YBk!4|es50*-W%DO`b=?5x%eVMIQn7z!7Y~^rkBxs?(Yc#c2HNaqA#PBV&HeN zD6&uS+cXb2My)X#(f63AC1N>AL$o8VB#LFYxY{9w7-Mf~WWwBe-(vOM5H58s8B@dl z#Et%Nno@Iey!~l^a*1u!soyGvxxpKTyC0<={A2?)JtilYbGKf|+l-6!Q~GkBQaaqz zluqefMle1$!O}~UaF9;&*5_!;d$&v(o7xpFt%oB$36tRVmDp)mql15W8Iv0QFv%lr zM`Zy7v%lf6S_UGPsn7D3^m+UA`s3uZ@$5bJ8V(hk=?CR$W9WjE(x|0#SRO?_ z(ao%O8n{(qveT<<@P;_Bd0bn-nXioUHkD9w+7O>VU+uKHO9s;tw}^G5Y&Xs$he3K# z#Iao6j({(4;gc~_Qgv%hO}VAZX^hzOxW`sL9{F=7x9~Q!?^-I#S*35VN+smHt(YB7 zJFU-`lzfI)68L)hta+J70PnBBRahS1##NmL&<$6q^Z>Ybv7EYsbm)_x>KDpXazgP{ zLYV_0%-&Xy<61wWT~ufNQ$YBqT$ z7Rq?r@GBK(DA%4~L~VHq|E!AlHB6%@_m(OAzLI9eUVO8kZcMdqo!*Jv^IrI;FFBq* z&$;*YLwPImYiARbnYR=vuI5T#oP~RPr#{`jq8P6bdrf}d4)76%`?0fLYQG)Lg$Cxj z$lRI);MJyL-3F*^ikFAa zZf#KHUGO?JJde{F-^@%`Bgw| z9?!vYt1&kzby57GQ8QJ^e*Q$?EQdhc_-T-cl6=><`uj6eY6L$eDjX+sZc6d}-f1eO zK}_U%C{Cu_9#-UQv)+lKyR+1~8B z^^SAJm8miL)=cH(@d%e->cdKgVVlWMH6~0mW(iiaeXPgjnSx8AOLJVzo(v62mwXPM zZ+s=ge#JTFS&42i&K{Z(%dFKY3ZGv-|Mu5ed$)@E!8=m-q3AaCdpCb9_EGUx=CR1! zwQmmkE$!;|q&59&)!1H(sFkC&*(J}6KRQ8tdNNscdV!(uqHr#I+hsM5c9K z{Jjg+<9z;vmvhrYZ>OS@z+SZ#VUsjJ#RswiSwi~r@ds7y_lz72 z7+5eGt{PLkF%lN>Ir>^t0>L*!=nG3`GnEGP=GGX`cC;H^%*urtyZ`8O;XR~}5F5lV zyL?FY89SDD?~Zyp%AULTXgcvY)^0=?`kV-TD|6=kEbtlm^Dm3E&5c6b)8$ok-Rs`1 z!>^IkfhQ#za*qr`W%7Zd<%qGIEbRf$rr_zR!K=brUNOlYF)r-rY2y1a>$&}+fSH1c z5M{1`9_!C5&EPMoU8PXUq4c+2W#w-!{@gs-)oS&_FA7B)gqKaRsGdW_OvaAG_wy!r*)|Mth@Db_*+eO1-)VgojIX?&my1@i}} z^k*nG#UR)PFWm2@d!z&vjB7|N7*TB{l>Wfa^MUWZ5E0!FtB9Zx-!SPDREds^AM|Om z=Y2l92emp+X_dnt_XQ`F8XF7-9dJFGpreiv4;O8}Efz^BN++)xq0tjfvveNehLXqNxbZRd36-{T$xvoSM-@q@Nuz>aeGwgbkv;|+TTy2t?45jB%*BS z#hfo9T;$y=CBSba$Xg_IX7h(HB)m5i?#;gSP9kwNGhujGs5_Q_Y&fy}BJullqNqpW z^p3-*U(&Hcl7L0hQZ?_OVbU7C(8fa2mxa6AhMb@Ml2Lt0d&9{)&GC??sz<|{k(}CWCHbcg<-E>u>47Cn0;2B;QXS~K`yjaXIV#u_R z%(ODf#JFW*gh?DEN$eIgG3X2zhAcbcEWkVrxn=p~WCi$>S}$gWFk}LihL@7r5h|H4 z`7)7w*^!dj&GID8N7>EAna!ANptq1|pX1blIHF7^5J|UqM81jvdly5avCt^D|MV6* za_bj!tL&pfCUzO8{c6@%B@UR9|vFxyL3K*4C35{_H^%XP}2W9Lm zVXiHqk1wHREakW=;kqiJ+JlB@m-1hg0Bh3&fZhUQnP@GP#kh<~sw9E}76J4Ya?3cc z%79D)g;cqsaXHmq*;D=!fh#CAyoAHJTyd#fTdEuw`(#F@ojfYSm=`f(p~>vTNXAMF zsY)y3f94?(U1{4{X~jrv&PeRWSmm)->9kbo8Bpb6TxAge2h2mrRaGUj(qD=gDMcKu zTAd24vJ~Z92Vr1kQgvmum3E`B(%j0<__}U~x>kN-kEJ4C{(3L|T5xVnr5ij$3ZB7V z?S55sJexK8oK@Zs(^};O4j@lU<2dLU&M8BnC5s~^WERg!b~lq(k()Puo(P0 zEN;D6V5~VF+ajF@ySEP$G{HznW8{}xo~pInudAE7YAVfbh=;eu$HNx`YT~78Mpc`T z4o!59HNjHwbmKM)={I^LRUD3KCqU;Xu-WVp`IRqAYhyw_P*S6cYHi>9+f4_>6A z*lg^;w5*M2#B`4@cTWN}1*V<}68IPi91sm5j(N`Ly!9H$@-id=FHqnq3@a6e4ZFP? zW{2-}z1vTCH%-#Bod5;W1Sk7%e=WaV^#9jexK4onHF^Jc?EQsFo~;|?4IdVkkG*^`%uSb`UNWFkUh&H@1za_7}i*mHQ zRJ|-%9yp{0M`F4k5|XVK_hsad)Aow2$isjGYc~qmE(!b-34B%9DAXWL2AV!p$MRUh zj&}y(s15yWTuDPxRkYN)u>_0JhS{Q^Ve8OFVRG#|5~Swn#!*P1JlrzA-fgcah_UKV zPH|NL#C;v=%TD5Aq9ooQ%2$F2(S`z3@Q<$FyW=1p#n5BsDOfP+GFIe+Q(AmKf!vAf;wQpfQ@LuAb>Ov;?*0iW74bf zshcE~q+@k|B;oMR=IIWw7jUSljS#>5h@gxhEkQU4L*JOfQ;J*S*gFGoka30%xj!=x z0Ud!8;kwhmwDJT|I!)X+T@TK^KMpglYfDsZ%ZAsQ1U97NihxOy;Sq=@7IE94+w9T9 z*T%5x@iuaks+}NsJPzO*P!BhV6A0>c^zkPeP2K?UK-DE-n?5oU*T`ai$H4*t8iIyE zf*}CUh?MVhA(XEZyGOX0T;ItNfS9SoRa@-M|50DG>}*It!6J&Gug1VW7(`7s4Y~*X zJF&qeaD`Q1#tkn8KktO4Xu~}*5S87T75Pv6{~;7r#dQ|&DquK&BY4dEdm)oH$x3k! z>pdm=ST-L)cE5>#ghJS?-qv9S7Y`R$e(R(SooA+fox3{R)5NT{uw=FouUZLo0^+dH z4=S)zEP{`NeD!G7g>eQOP?>f#Rd%%DcJyHihv=M`{Ybg~TV%abXI=PDjX8WFgr#kc zvDPWKI06j|!9pU7zmSV;qzNvVkIv5<*C@PLvFh9yTZJ9&K^@pP1>83S(3`cgwQjk^ zWLKp>M!@43(p9%9@6`#!^gmER44>_af4!W$5+?iAT8cPm50)DY=@8ubo{I@$t$dDW zT^K?%`(d_@DaiSH5iUS!LbHlQtun@C<3{B5 zNi8gPZW4#gL{LCozu!bRfCIJR1WS7Xhx7EwJ2ttMu@uncziaF|B&T_kneQ6@#_d{5 zt$F|55UPcQxRI`|FVD)dN@%jFYcj54(#zFHr%a)nF7453V-NR>Nv~kiYPhR-n4}sm z;plT5JJc6d@#5n+)B5g~T<&E@vlZg#=x+-l`Hu?uBTx}68B;Xyj%p1H@j%0>g{vs{ z=U)lK6Vd(7^6!SR19+W10R-n-F)5>Pft_#x00-mq+HFxEY!BYsUB9=-%bfayT9dTl z{%%n7Uc`|0iPI5eTr!_V{gm?h{ganJpFHfnTLcYfZ$;rCYROc&mk34_Gy)BOh1>M! zZ^APJ2er^?e`wp$vfF2NfL7Q|AspWSa(ex1wHQo`1v5|(c>MsouYsA^JATvvp@#F| zAE)U3IqmD4tZ~2Wrx1W!WX7e(zrOG(zTiNDJzc>ZxQqDr;Dpe(ekK`x`7%5@Qao9c%|L85URxQRxR;S{a_&;2+y58BYTE9$(w)Ti^c|CZ z3k1fl-cDhT1<~YE-D5G7x%}n-v(_JZ6tqD|$l4v&HB_)GU7plpa{X%pMMTEDV}ijv z;%55m^plW^3!6h|-;k~(j(IFgM8`Guc7ruixNoi15~D!!>ai-b356f1kpv>o9wpuU zibwR|?)~IKHz#0d8b%wR97diG=DA0+-RsUdx^n8s>UNktCHI@OxS#C$8bm}RiL1Z**dsT{1T^mz|j(i?38Y5ovjEmfv)q zvbczw)OC5CbNjP;OetNiyi&8t5%R{4L=V0!dn_NOC9VRFbmDh-z1=id17-7f0CRvL z#r^AG2))~fxr`yxcEUb9jS|u#-u>N|sX(s-gQlur{qwE#q1$JUn5pFWLMMk;4?1D_ zUm~e!g!SufTMJ67+0_XtKsVlV53_@zlXb%%bTh26{V?Qeq)wc)4mgTtpyL~>%fXwS z<}MZ5Jg2E!_X9mYKHigHc6K@zyAf5MP@JaDD2q5u=3h$*x=sj2rPxh2BF zrTuQ0vg{lF(cPBCA9)`MY|gBI<>w^R;F9;|^;^Ed`>07Zh@FWNTmsv5PjRwS2(2ZV zBl7r$a<@Csmk=#ZDDHpYYR5^$=l7E5ZZEMW3Pe3t9j(M0(fd70SeyALlD5r4>8?IR z=o}Xb;=;)gYxB^kD}pT!KbGAk8wf%urzLPwgwb)c(`};CYCj(*+q7?kapoYfi%7EZ zr%keKqy-O+N*qmODdT!JC!~wM+Sl%5s#(q!*N-Mr;yWOF>uwOwWHkXfX=;)wO{|zZmqyrC;>eM3OaC{Y+q~3 za@;=jD7)$%7_`oMG0c6NIeU1=T7huF&<0YI!+qz;y@WH<>h?R-Wd0}+2)@Hc7&54+ ziQK%=24htWenRd7Q)FTXf#ERWArfABf`U(qD$l)>{kHlUIwMGkDArMdZjsSB%3*L` zu;fS-mLaFaLb2(Sc8rg9xvHL??DWT1PCHtez^orsj#5%1Ql7A-xCk;qoNN=x?!lZo zsYdP=<0f-c@_t(lh+aPXr4&0GbxGBOLpMd5pBeg_@(wpkj5#XB&jMXo?o>~^=lI4x z4#iUrgY*k#3}_0w$W{AGhOG26v1*6GVOS2r^tl_^O7-rWP08*n1fbvL@`NCY z@PLD3mM`=%59+_ktD@GcnW>#DZt5EL2i$GzyZKzohbx)l;0Kr<4FU@zo9>6pvpG6d z${)TWclYaOxV!;2W@-k-MvAGOxf$G}0)c7nY!QaneP=zUBy+uwrY>Apgel+ zgDlJLzZ1B-KUp$g2{>CZ$QR5rh%l{RL~ra3WglWmsdov(2tg>9q}UA zF7`2XES8vd9d+^U7W0Pu?rn)zajML%vb`+A9)C%Y>Dw1hi^q3wq~8V+$P{awPv8k* z^0kkar_)%^PoLbgv2G$SUI+8I*xsPUfi(#CWHTsp1n0WmQNfDA=YdTUxvvORg`23@ z4WCE^nR56aEu?zNnMmYrfM539M{`(kYCD6;s$NYEuHc?1Wj?x3Ud~RPa|Fz$?`p!8 zQJJ~zMOlH03}FijAfU}bOp8OApuP-VVI$$$c5$j!3X^^>aQD6+JTm;@_;j5j=H8to z5UH*|0X!RZgTapEAUJ|GyNgLCoh5m0sgIV|+iO7FJ^Zaq@wBQX>b9`jM+xg8p#nMN zrYcTl0Cj_{qgpXfvV?$QfncajJh|Q$A?K&o`sSkg1B(rD`~3`kFgKbOhWF@Q{T+4S z(yk*e=Wy&qj$$Xu%|7PQUf@tQSO=3FMM|7-P*{}>F9(3n!5nVYgptKnZ?S}&Io09n z?5*)Mjc={CWPeNzUITmcV$CHEFjTxCMQ3qNShtSk>EZtJl3ny|o14a}iU-sWJU^EQ zuBw>axzPey)5(s1&>y(|k%_@@>Bc9*Fdc)k{Wlmx9$foYmhI}-z#Pemkzc=bn`~J> za4~c2NdOcKI*)9}a@C}UqN%8c?;THaZtO|%AxXX1# z9+&9a>V0In`9vJ3jM&M_254x7?L;Vrk?RJ4(-M?_wH69Y_^vXwF!vCAr3X`I%S+k* ztrART?j^U{Txd%%XT6{kdC=Z^wK@!JGEDD5MR&yzyD<{G)pdi$uT@<>j9fWPl%R(kMthGM z>`c!i!T|HjE(yZaAUII)_Fh~<16|^kfohGizOG*Ep22;2_RBO%fP@rTXy-Bf?&MG3P!g;_4gI2_geI*l|%*TL-y;b_WXjLhMY zxO01qjT;040udll??CIDUkJ%@gyC+|l8Les`O-!!$>U>!s<4zD zUhs)w;VKokrgE67VRX_hdEJhIlncmUb&1bu8sZUZA)G|6H!@Z}-fAGDaZ$$hh>(!J z0rHcA6bTZ%fg);;umE)B-H*??X;GKxU;Z?hIWBNu=Vm%rghwTF%_NK(6bk){4oQl(yO3}3nF|q3Ek@(l8qC^GM z8bb_M8R2zlBq{ctYqh*pO)PM=@-ueic^_p^EYNOL^`M8^@}j^OqpGOr2fO1~b$G2} zLXZcl%$+A%8&qTo(z0WO*Ff(Ku;7V3*w!2buwE1WtwVjfIauAvZL7(zUX$M0j7olP?Jj@A4-&;>19v|a}f!U*`F4DE^+oP|# zA@=_o7Ev$gBlPWvL}3vEm@p6wMJXH&jQ!iuM_a@~h*%&O^;4b_F?;1WcpHwSVA6jj zhS3=Hq7Kv#Ty>zLZ7$L*;}T1lp?j~`JKUqiQlXpbW6b@UXM}Nrk0zT(aLltGS++m2 zR!n*s#&~05f9q(bq{p~oW1OmUyqj+w*1i_+7ow<+q*K*W*dqBJ8&eYyW41tKh9uGh z&G1k>7dayWj_yTZ5qKer2odCSQ2-}s6ELxZP1lL^)`?!=qGV>H^l&p$gG7$)IC+FF zTZ1yluSV+*>L?O+(2L-qhPfNcfer{&FHkn1db*0(O=jT(X7=Xd7$(6iB(R^KeHLkl zBP^IA^w!q7sYm3DgRnp>*dg}x(Z(zg9l=>-`>a8dmSLNozV)oZ%{hZvJyY&k%Lcs{ z8B>5d}tORw!LW<62tyq>y2O(bc%a|VR7D2-{ z!5E(&2%&~{F#=)^Gwl_dbxeZj3F;%a=aAmZUPQ)McTAczOuUMhyf8~`EX&Oks@h^1 zdWKQLM=N@M;k@)SJgD%QU;_P}Y1y-tyNDaWUuI-id67{v2(zixnR!7oktj2~+4{3N zGoriJL^Dxln@X$8N-y+d!#BmuHn*Q|AwF+ptnNmwenXhaS`+OlnE`iRww?iS0zW4F z7JE1^`>IHV*)rm@nJ~mj+t`C0>I}qfs+mW5)m)M664JEcJCqt3a8!?)hm>N9VT>mZ za!~*=1wH43-8kAN08#;WkzurMU|>L;=H)i z0;XpV&n^fT95y=2Fc+nG$&V)BlQ$F5Bicc%9t0EUU6@!H>HqeBbpw>K4Yuq*# z9@*NSywHla=$rK55~g+1fi|pvTFDxo5zIgd9 zohMleeqDLi`)^+UPPb2Vu6M(A#JAP;XN2etn8+fob-#K4jS{8^*T0CeKz}RkfmHO2-f7ch z@hA1>n%?vx{ZOr0XKiwkZtFTr#3yXz_RES}85rsZGq;D~nSdWO(K~U6VF`y}afLf9 z?K|+_J85#eDf+uCn6ONr-OSHnF(1MhF=6oy3!K^n=5to&mDZf> z1p0CW0>uO|+z!B}$z6*10=+$fb^`v3@ISgnF*oOdNq!D(f{M>ZiFz|RdPZ4;d-a9k z{Og7yM+C7GRubR0@-+APuv`2n^9=5YM7=#eKO_E~a1r!g*^@o@9s&~^8$r}pwYl&D z$c_9D_SzqI0fS}u!pZQ^G2xF@w5B8W!`7W@f^ym$uM78YVHfUT_j7{x87sqiE@D)F zQE{Tcbj3)L=rD4h@AQ6Qbi?cL$#oK10*>nMpM1c0hU)dtjo+8wAr~jVZ;-hx(jI<( z;xc#paO;=z<_F~0N+4+PeRmG|ul3T7q@rEqhz(nYxU6P^8P<^iPB}ia=faxvwwvRe zqlA$&IA@~mV1gII5C_bU-;EGw!(9ILLbN_(ecD)S?x4!+7^TMWxZ2u(r_@prWnEQm|+@4?FgW)xB zx_n6f%jHMoAr0+IuGa)b@7#Gp-S1`{Go0_@Nus|m6gsaaA1-`7B!A)w{D-#4TqHun z=0i?N$XsdBCwGUAImtcgg8xb6Z>K}_N!Ms>sjoamnP3y#^*5DTQ3$nujH?Gz#Vng!kCJW zOx}Yt4#8CTolLo74qk#vai7W$h6!i(`G0LZD#Aq;rtE%1`9%Xw)nATpr@RHDMQ5MO zZcn+fMBG*O;dXP&sdP)2J2Lh4&T#RDogaC}oTnUm`)PT<96Exh__D?NlEj>`?d-hF zvS%y~gRY&k7y{I37m43_5@YYjbAb9F+HcPcg#xr(eKW`cw2Hhlk^^++eX~-$p1pTNu7S}??(;r} z>$KqtT7h(UAaVr!5dQq0;7mtRpe5#a*HGY#;TOEZYfLulcdFePgd*TJrzs6#F>>d` zq33>dzmt+LVqXWm{BbmB;Ok#>9zNwo2KA%jIo8eE^>@99w)JB|22F-ulgAvf9{I+< z4Jw`T^Re}DeM!P*pI&v2SLX5etMXG_3oa4zUQF@Lg&woCU*=~~3>A4ZxBnbs zvtO$EGxPF%EGr~O=wjISZ*rA)>D1NIlwD%xrH*fq9v)mVbyY=&XT_aIyd=oe55Fb9 zT`BjgF2u)ed*SVmeRJPk4)#9_Yd>E>Vwof$hdWJQ){`P6$o6pVN9Mh(2oB9iz&w12 zgd!{s4BcX$q_91TKlpe9`V{>@zuDCP;}Zmvbo3|o*rVu_3^`z7=h$w<2A9) z=0v8H;fd3zD4!Y&6_aX3fNu3jy@KFhbv}=3G*r@?f5uPNS>an+aMX4u2-x1Jr&<4?X_AjN3X+-e4226k^+W*<{63suy?; z^cLXs$lyr^KlX59{&sfDmxAJ}VW}Ba3wnn=Z?hgTyqJrSCk?pZh@G4`-_SRSdr%sa zBv@(o1X?=GX|sOQ?~_I-1NZDBjf)5DDY9372C0@X#Ke}X}O6@@o^KYJX`VNLl-S&D_^ycd090beyWxZboqQLU!RTold?gZ(4Dl1Z((GO_){( zF<)&>Uj|=IL+6!)MQopxKm$cm0H00UT|0-e+ABC;T_;@nPH{6;;6eG@km^!}P{zO- zwW_~T4P_7g;_kdzl-k*7TMEcy_ZzLeD3&h@8PjX+dDe9|Wv<}&-R?d?dZ+F)@s4Sv z65}A1`L9hL!7eb#j!^FjZIEyuF?AjV^&b3M*bJ^FBQki?M4hXj>~Z(830>f|$S}uC zX5D_~ygOO=VZOR<(XpY_`r{Giw=(x8#FkCJjfw1!&rQhwzP^Wx-tKOhq>E#^KdmBA zaD-DVa{Ae#rY0*kyCnYo{?JeT98IO+VWIZV#B2hA<-62_fF!AE?ctS`l`5`-zHPRPZ0qUHtpM7xVAiK^W8#^*U(Hg71c?wm(cAX~M|cdmu{@ z?wG?4Ie+?)L_sKmmH7pcV0I^Ys+$)_b{8r;jms44pM>nKCm%gv^et$>F=y= zrW3TQWc?ahAg^NkA58FLna$7fhH_k@uVR_D*3S~>2Kb~78o$O<^c=h+m)Aq!priI@?atQ3cuDzkzCvyug~vMTpe11?qLJ37zq>skG$d*N}%$o{?w z(7gZ{$nytIPSTcv00WV-vXu2vR}EHE^!aZIqT_A<)ZSOo-bTsSPv6&7*VE4?$V$^x z%7iCe#x6?sWwe?%AVCt;y`n7xWST^Q`h|MUzxu_07>J}ogP?Afv~s_k**^*L6p$d6 zxlgRK)c;3<*kwJn$@(WjY;trw)AiH=2~w`4(V+@R5W^02qmJjAJvx?Us^)JsEjyms z)#(Bl#3R|k>y@+P8(-%)9xpm9^*;QQAo_EN6>tJ#{Bx@?-(!*U>Z@lSuKMr%Dz*L;+(^Emz4<2-%UtQXI-|IrV_ zJS&43FZ&cAcVVW{Xl)4OF4}E%-?&)R0q(=Yy3Nz7)5qbhj|+f4`kjpi9rOp?O(*`j z58ELh^VwjBS)h3F&wW_U2D^{{kNXI+`TA0INa7AE%Oon^B)rBfG1ewJ+d3h~Co9c0 zwZbx~+CII;Gq=StCpM@F6HtnBSqgLd6y-aHvi^_zu-XlC*o}1G@_rlPHyjnX5F0X^ z?z=k@H^$BD{)>t_|+4OO%bM-^#;cWfK|Dqpn z&nH?YdZ$KKM!&6mxSAin__zSjk6D0z{8{`D{rEb(^X1dQ*2+(yc(MQa_wM4^+49xd z#P^A|?dm~`fv_bzr>5B!;lCdmd%hCKew~C283D3Qik(R2d zBKe3$CzY1!k7deGxY=lH%}kYcnQB2mn%#7rVGDo7Xj|RcAIlVqwW6Z ziLST(OK&4cerj~LyH8@H*5oF;J5Jw?WVD26_H>?MK2{{Wo9yZGEm>@PiT|tluG@d9 zc#!1b)VrQQU|_NC<==Pj{+u6wd;Nau{rmHyEAZDf6rohsOVpd2)$8Hi;8=F!4iSKX zRIpqi?I@pBZ$zVw{5JfUqj@>a$wI1UV|gq64B~E!S8gTE4-){gfp0 zi(WTbigEi3T5*%m3Vr`(%~mQmOPrOl`V+qGCz^7^GwFslk~$gso#oqENRLHp1!QJi zMYbiY)z@70(ws^&rw_Yj4z9V}-wI>`48Q65{bDF93_RTV_Ah-=jgGuMT9OyWzsDPu z2)w}MBu|WaDzeG!cJp$40@w;-Zg1~aA2KlRsh3we6xLLIDBr8YkKpGWQZaMJtCjXk zwRK@F@Xr0$0~=DeF$2GDJ7o>tmS(E!;V(aEc`dT+q=C~{%Wa)uwEF%gkHwMu?Ye5T z^Bck_$41M~a{h;%QAuitZU-N_vbuhZItsnm<@EpY&Sjg4>piG$`*kvyj&u%tkFnm( zqWPWL*FK8JNkHkB4N;Wdw)0zD2qvd>t)28KtQ)_0Zyc(A6Mw zc951LBXn=&SZ#JRZA$H|{Z=bZ;L8enOo^_bMVTj0*=hPAQ-zk?8P~*#v;vO&)H*R)?zt=-RD}f|fHo14$HWX_e>W!Il}W+E_8_9fUCK~?W51|J7deVSU^1Gi(jU6m=v+0CxM_I_7U z_M)fRNaW&?Y*^%t_c3Z##>SIoEC!?xD?5C1 zjTtAEgV?KZ?e??e=u$FB*F5S&Xaz+x6iTx{RTURMNosKVIMHaE&Gex;zQd6{@rggM zy_ig>lqsJvFsG75>RI~0Pb=2d)V5r1Pp!$B?VCl56?rA(!N=03yicFqU(=z^eY~Z^ z{hon;mMA%lbj3zF{=*}Wxe=%7$YSZStdxx5eqTgh6;A;SuNF-3Bb&uN|KSYbfS;yk zF-sj(@F}O1E9ZR;xSnm|hfAE%L^IdR`km}`Vr_aI-7?9@WvP4cX$7C3QQU}I6grob zCY3+ksb;^ZX<3hFYbvr{WZP#EJm7w@_eu4PVpGK=W~PW>w)pW$jgEJD%EoaE=Uubf zI|lLG6{=^CFOe~HF<0XG9w)VXakmW|t@JRE;rNlqoW~2VQp|H_71PG2pRO5?)~k31 zmOAp7c@OAx9JVRdo8&7&=I7pv&Q{9t*O^Cn>hx00+THiuw_u~u&D6ASOzS~BeLK{_ z9wOF~6||QsOk(`;sI0hz#?D^or^=W`Tx*^6xG49t)&>0LWRm6fD+_0m>|&``Hju6F zF@Af7@8MZuEmk>ZDgi6d-kCO8=fjoO+WS5s`kikm1)k-!njBaRHa@-4Xw_3!aQj0| z*H%U0{&e<>QI`ju-z(G(85I^Tqzqd1+J2bAuiotM`HBraK1jv=ewmdx`JU)q;weE8 z4*|~wd&kUv#5YUXo$!%fYSvikg{DzbM_f`!=juy*43hj_Wl{uHQ=CD5`r?1suC{~ty+>EjED{hLwF0ND*PG zy^B+A^r~r8Ar&|OenDXvy_1&6@AkK!fhTf}{Pd20t}fV9wN$W^%XT(lt?;PEw@;$z z{}{r4jPNt*uTMJ3)yihHHY7)_Xxi(~ z8q`G!%?-X7DWBCpKk5ls)~9`NkXur)b5yI*!Hd^2F%RuDr`YG;3T%k6nS65+Gn#KG z94hcZxSkU=lCwF)1&&3B4AH?hc*IU6mxCv}aZY46*n>#c)Js{O(p759Tvgvd~dtRq$EswvJNpF`~l@S`+ zc)p!kpdEtW?Q8j7*g7lnBiF2}ndwTY8N=vyXOU3 z_QWmevgONPXGT+ho3sU9Fd8*DT@TA5#f$DNMr8bIi=lj`_eO=qf;)HpBzV?cjeno9 z=(gKy{XK#BAmnP#ci6_C7WP$@x*zdh&l8RDN3w%|l=at4yQ4QdM_()dSayDPz*GKd zZH-S<;Kk@qt>bsgv_``jFJv?#Loa=Ke);km51L1L%0)a7tH00oLOkR~HP`V2mK1B> zpO5cdXa`+lLQnKODDAA67exHTb$7GEj_y51HF>kOTQfw;u)=JU4IDjvJOvCxId+64 zH~eJ3X$xVplZb=uSDZK2jc48R_!!me-v$EsZ?gcA{ z$K^}-=h4U0eu;ZT5MNI3o0uI>QWjJa9$()s(CEjDp-*6c8~=u0xKdfTqguEtTe!zg z`27NB8+~H%gZK}_LM`;XgV~95(TS6GLSyYb6ZA>hqKUVkCC$M?aqUU_F$tX;kv~9D z*e5bCIg<+>C09%*b%B*^Pa`#9N=FhYTG^C4Fv`tOD#0PECK_n@# za0H@)hS#8>9cZE)G}#CmVT7jKMc+_C!*X6x*SunkBVBYu;1`l@XQ(;s8T}WyxkuC& z*5RI5FfcjGOpzuknReeOP24|C0?(Hw)R87U0%kl)lV?a*kW5$H1$*G&0PAQug8y#@ zBAKDPn66rr4k(ZRN?(}n!W%&(NPvL=yJ_t+jpH)Sj53`hGncwE^aW#XF?B#GwQ4E`T(z@YbrhyN3e#q+ z&>1b)%`KNSu6UGNptB z$;z!!udOhF*Op4vngo=~UsaTkmOZMYE=YFKA% z+>~nEl4{I~uiLq*3WzV??=1g5+8DCe_|&2NkfH7X{`$vNBPO8yShY@b6zYwvUNvG} zyNny?t@e|L!A)R52Y~E1hJvYyY9CXT1N&Qpp&!GLn7|@&7^Y=RG!7HD4&*VKSfrc& zr7yagc^&JT8LP^K;U4@gZmMt*yjqJ_Kud{RrIW+!YsS~Aj8*FJ)<+~&r4;a|(sd=M zmKMeqRp}~C)oOwSwpi7>@lv!WIK)R`s4X^4HYW{9@`i~bjp+z7I+E+;_QoOM4X!57 zb}Y?SK3_;O-&Xsrt$ezI{afFJw?WHqL+Ze0`;cxUNRV4`RA4FDRZdY2H2!x^%vgI; zAXI?A#1~bXnb1xy1q;Tu`=d+Km`V$mOPB4<*N*FcD>2VgAnGxl^~;@&zdJEZT@7Qz zbz{Wc{%>Yf^5$wFotKb&dD46kd_cInSiAd!V|Ra7XWjq7K&GX8CZ)TBv>}dTxn7u_ zx?RX}Ue6eQH`f}Jw{G(8tI0cH_vAJp!;K);>-i32`4bFzxDm*#{rjoi{4>Y*A9Enq zSmIT;woT45ub*VAZvPkvyc@7L$9>_fcQAz$(e?2Ezq6eI)eB+bIz{Q?7u z^%?FR847m>RJ#WPE(Z)GyPL4^{)AT_ga^!b2UJJWO~wab3zMi_XKKrQc%n{vZQg0e zfsL+-a9a5wK#iu7fkj|39;QP+>M##=SWt00%mJ9kfZSY%)`Lg}iRcE_!Gn9m3wVd2 z#Ci0AxIALF`%%pPW)(}*bP46 zzDK+tSNUnYP)QZ$x84IV8&4!DxZB5(_W1&!UqItNm>%!-p@V#A$U4*=OU!O>v~f)~ zk3ztmrjQX>xM-61=4kVVD5VoLW}UdzY3y*XOll9Ny;K9QgL-Md1&*Oxk6!(7BTE<^ zpR6z62&h>If=%(mW7mnJ*@r^M!EWndPYfxk$dp+I)q)$u6;g%gLm}Xb2R9@B7cv$2*WN#k=WKb56pVZ7F z6PLz?#$Hz?9+xAC8%6es1ZMvy*#ZjUB3z+TJGY-x6uH-HgL(tt z4tIHyRWvz!#|!K)HKOn&w$e{6A~+4%R_mnl2Z67Zjm!7!r;Qs5SlFRqe37J-bCdN| zl|7A~SIr*rW$ygbIR2p^k=5;vjchUJ% zC(`gwgi)M}SP0<+ETgkrg0V$AxTWp7N`kS?pkdY>j{|}bm}tI*ZPV zDCF$&0VD)D|HTGjcLdRts#)l1opXZu%0vBvA!G7=1Q&dSG90Pj%cUKb_BF;9l0Iw6 zmTSfr1q;JM(2x+&B28~~C<-Ryuxgz&r&I9R&G>UNrqClFYDcjqAc8x0t~E7Yy&qV9 zAqfjY0z#~x1w}f9Mz}ua7?-_G&&o8VfjjUo@3~X`wP5KLV+Bw!iO`0G;Obt6k%~!u zuIsGH)|e$HtM1aMru$6x9Zj{k4)I}!cgw!EJ#6H7*DA>f51#0)w}%d5NbgRtCx2JF zCAu}62vZ4w*>%=7BvpDW;dBEkS!H1^cwy)xR>}n|JW1*^DND8e5>8>is?~T=ars-a zFz{8eP5M@|-R!IVVe_M|uNKC$IAeGOcG4CN9Y7<(%13`3f8pI-5oUn8qW0Y}`{IrJ z{y1o{Fsuj!|7|pM9oOXD-Eh#cOjWp9^8Mx_JMbp|XT9b^zIRVT6T8319}#=}FV^lW zsHuQ$*mV*h3B5@#hNggkfQSf)fT$oQWm&3dSWlfa$$fRyN!yJ z5N=W}M~B73_2_}ek=lKTP5Y7dRS-uK&~f*O7kgyyk$O{PUQ}o1>eCTkI3xrEopY}` zWaP5K|@E{e~LNbs0Bc<$HH+R7iwt&5yz4u zGcT6aO@lw4iBXe?VCq#6izk4kmSzz_JA=Vyzs7pqgxv9>O~QbE^+*?Q$a!EjEVpWK zsN!yRVX4j;!x$8;N5z>0RwlA5CBmNS-yV?!Fen2_4GVH*06$Tg@*9?JA5MF7lDVje3Qc*aVE}Di%RWOE; z|1m9(yz6Aya+ch|qGfO9(;tr#c>cpcR@763?$&>MqrdtjL)@|}oWtO!R`yNp#ojD~ zHJ!YB_lGw7T(M!4?AI6qu&UwW?q{{p4eJKKCjAdqkeYoMAex$uU#2!GE^jLS+2FJE z<^<<{m)&|lAFk`V+^t@Vc&|?-G(7TtBS+P#WjI1lB+Y$S_B!kA7#E)V=qhGA?V)t> z=Uv>UhxTJR)z{3E03Ru6u3uqL_Y&c53J@57iH@JhCU%%nU-Rt* zQ(5U1*D+-DaZa(C_XJ!XKfX`wi0i)x;klAyLo5^927+{I)xz&4EThF*pb;aYWa1_O z5KWvJfV?iJ$d}gzV4|!=-B6*H`b03gH^sT5t~9SytnDYexmzdL@QMHJa$V)u6emI| zfkG#pK4Zz(IiE<2Z-YRv0W}I12@No}M~BF?RN${he$Z3~H=0v({MN zsTRw}{77EclVtfF|GDKghjyPd1&_Rzx)Rywc4;P1u@vKSm`B^9{%(2CggubFikl5- z)>Zeb+;Vlc1OPU9R3X=HSv;I8)|kkzDe-|Qc%uYUwZ_0IOePcY3sr$#b#rcU%>YV7n0G&=&c%vNJXo>v zMhrhfTB1iZXm&g_Eh)Tmj9-a(%;@a5Mz*XaFZa=(q4f4)Sp>NtTnLIOVP-W*r*NLQ zP4Q$@bw(8cVpRhcSz^rQ34NeJcEgzu#A2dq#Tv)jxRspf@0k>CVfJ`I zwdLVki{$XbGBnhcxgMkiV}9}>lS(ZqjlSYxL!424j0px;6$`6As z{iZM3Sj5x~RoCJMVYcL?L1qPA?_#DF{rNyLF^b4ez(`w1@w0Tvj zzmQf+Yp@kMULSGgA-eD!umb`7o+xb*7?9nh=Zn4`rDhz0wOo*ItV1Qy?C5~p*H9TC zi0vP))3+;>`U0x@nDEKz0Y_y_ub?cFvSjL`=!hcZwv%C(qq|o&)hdgZgnm4ep@tSs zJ%HZ;tCsCWmRljCDOdjyK!e{00obwJ9s4-E$wQ9(EC5A93LvdIjE8uMmKFqpSkzQ0 zxQtX}P|yiZsfK)*t;kczXBE#7(&GIVZJ<>qN`1?heDJrUd?cG7h?_EK`vM_OxvCFf zhyY!ID}(UM-KA1G8X_jh1~p|=zUXn*<3?Nk?F&I>D{^iDhIq$>egL(ek&&@o-mSG% z8is&IEh4q2GVf-2T>Zy!5V;9dNHGxQ`Tw2ldTWkXJF+OGwd;t8C|ecS0Z2yCE>4 z{p3KRS$o!G#fkejmTbi;DSA)gFb>-;pr{W_ywBx!X5@h?5M>%e1SFILxVf})RKML&96U^)%;2+ENGt+3x zn%*u%+2^H}2S^#NqM`ns9s9xh6|yj+V(S4{KMV;~h5^YLL`s+)l|jNPt>?cqc*ALk z`oj`1AP9<4-aLDBZ)=~{J`NL_J5r!os8jkKS34FOyh42Yf)SYP!<-zKA@!8V4C1z$h)PV5lsO{%lPO8k)w+K(1+_)ca8Z*N%zo>|)KLBVB zO9K?cdPj!qo#L+tycc_DC77C3Q=@KwgwBng;6VfhPN3}@Y?qs9P)5^Yb3TX9zqLE~ z;Ci>yrCLg{reuv%Hp^B=7W@rgd=@oTr zS0kIfQR2_6JT+8{rIOE&R*yrNEk;d_BWu3d?A@t3FjENy)53Y_;pBRojCZsT_o-UhwXnsPmxC8>GyAt*)jHYJfH}DA6Nf1AIa&{#0k=Xc zUTUkW4qpxnylJ&%srG4SzNz+vDwGxumP5GRG3e3}V~N)+;{NtVGi(j6242?oUPe!W5^T;-Jv&<@C+HUNqVl&PDf`fA^@ls!RVN>^(|Vl0!^lOyX->n3l;z+r4N|pI)QKmy)ZXx5hNHF+2qu1 zb_NKX&BIB{@)pH#PpT;IKM)3Td8nh0QGgAuRB$a1Vcm^2qO;N%b}JB=v6*SeKAQxTt-viV+x?{6zk-gjyJBvJcMh-+m;D^rmpkbM-%J9 z0g?c!sCU#Po);DFiGOo$-lQfF>xiQYd@D{Zr=n37@noIc4pAp6%4gdH4weJ6w7kIi^tNx=bop3k6!kU z|DGRZ3W}erqMC~vj%{IeDMLHr(Lw4RkYI>wlumrvps0LgU~Pm~3fpQ?1awfNKwl8A5%QDoZ6%T8)_SwP>k#68f}RgS$v*)W;C@cV?<&zFSa8rj>q7i zb!_aWtul?^;!{?VQ}$C+4(U@?#}Us-00d@mLm6aQHf5=8w3UN)5{~qCg!lx+*hE9r z)5{vlVr-&5x6Xk>93z=f@zX7%*0ZB&Rb!jKDXa+3ZtkHZBu%7983;X-Ymz8&JSbum zBzcA+-eeCGgQ3`Kk#SQd{Ei?&xQQ5m%$>(TY8{n41rjX-31Cp^cC*Ps_%|$M5+&VD$>e*iJtmQF< z@vEs9qf;geMs2T*cGJ*Ku*kHIxn7>Rw0Z3+Bl8mN!KV~y267PxGzQ}LB7`yXk{Am~ zS_4CM3I$p+iB)|OISPe8^EZ$6MPQZ^#RfP3%;QGq#qAcv?@^3vTS~fFO8ogkoTN3d z$Xr;6M=k!DH^+P>EG$g2=t>Yk(tFQjsx8H7$$k_sTHqrbGSOb7d~hwgRFZG~Xw-!> z&!#qyq~9P@P!4ly+pkeRFo+8S#47-7j{71C4a>B%k|;y6Is(}|k!%108!1M)w*=aG z&ISYVA3F$e^89Zxfhq$@!V@%Og!EO=@6qQ!8&T=GDAJoYP^Vb>Gd~dz zy3=Xp!~n@#HQkP1zKC1mY+5EA(~EFxCm87$B_vZ+<=rSS*Gp?I+3y0fFL*M*7U~o$ zLJME3zjE+Ko^_fD)>vcGt(^kUVyj;ym934=ESEpe&;OY>AbclIKcrA7{%X!n8r*;3 zm1NDy8d;QUvmL+0!wMPv!<^)Y7sG?lb|~eSc=0HFbgqe{vMu^H>Y@G0!vwq-!dCs! zikKvd-*M%U#ESYDD!SNKKpmwii+Vi0^0>xU@1?CIyPdx5s)3H3Bo?LLwW2$Xx=AYM zD6f(~BdIHpkO}D89{%AXNbN63y=Il9C`dL$rjx>&5Mlq90`Bv7AeSCWna)-Kjxx+x5#L*(v9gUQ z28r*1QnpdQk3qK2Od>vm#Pm!gaTLiyCeo`YsTR;R1n|gWCA|@qyt-jigR%uXWh^)) z-^NRntr}ac#M-Zjmf4A~Z!lQRVx~8e#Z6OK$!_T3A6kL5rdPyqAdS9tAqJPaKF4cV zl=@$1?Pn`>i_X{ZDC;qlSpEj}7f%B`o z_PGN&T0m7LD1H+AN+Wt!Wl_;|J!U*u=fF{g>)E{C;f9FN>JrcfjeoE|sQr%_E z<3T$xpe>*V2WqI7O)F4Rz9I@qp63{(w7zGx{yNVg_}coOtVihB8qc0XV8YsDhGX;? zeyR&UrsO(2w#BE85)cM)U_duoPyn{Q8z!c-vU~g()J>@M4Zt1%;wfsf!h=QfE2C)t zdVu>q%lhDCx}do(PjI4}sPOhSn!q%(L+K8LK)lFHw^<+W(L=mwN>OwW0(+V3C>?xf zdY|hi0mw?=T=L@Db!A&$;>7NW;`hjIq5#BQJa`XGzs$MrDa`Kru`l_6&I1NOq58ao zryay+ypLE9c>q2{$(gnNM?OJ+kyq6ZCD?W&=nkbEJY?>#OV6y`E?wirc`J?|9!?)9 zzFRvBb%eNs1lUn%Km5Z!P&4le8yt0Dv5`(kW{Ej^G85s@HRdgDoHuo(Gvn)!33g^c zljPx#Y6E!|U1^Fi6*}A9CS*V#keie#!8st@eS#9!%x8`*`+={)>tTz>GS7EW(+9yX zJ)-G+N$0T1RSzLYP!zB4#TXu8pP!=u9GwLvDK*`vg_Ck;%KgW==$El zInoD~dF-Nl7&i(u_eY5~9~@&3#IL^$8Gjl2*ZbC+!;qVYa#wdlANeTV_m`$WQ*a=? z`k~bQ03xFQ^eO=KI^*m<AL0v_xHbgc2V4Y+_7|4aC+H29)L1Fvwe5WvxjtPKD_JjvYH;%M-K|>LfU(v2AdtP zDX$nO9HrZ%GFWG&!~+vbJS?t(p3hv=UJsCYaOF?h~g(M;GJ6+s%Jw zc72E_){EQzA^lfR51THrY?ny);CZ$S>C%Ii=k#sQ&j|D{JJy2dbPv~OF5w=pesrHS zU3XN9JpTAN+}us><#h!{xr4HUDcQ~;)@uD&nVYJ`)HCHzP&(e6+nc913Elpr z^o4|L%Z4GZk%C0uT!2erjcB($?S{$D@<`a#(pRlvK5EsN+y1@3zxW!o7u_>6yzApZ zz}GumTDo1zx+k-74I6F;`06)3_hG*2&Rz0wvMBu!o;Q1EdHntPmm2rZi~X&+iJcu9 zqqCE}?;h79-Ps#0*M7Wd`w6_1|9uv^RP+AoBE$@^hYe4=MbBy`t=S5^WzkkS{^pRH9`@+br% zINMAZqWFJ7-#xf zTe|!AEv$#~Mpbb)WVl(fm+=x``)N-jM5>Qf-=fZsBl!1z5SNdI(16fet(>y~f#H|Z z!{S^gM#ZAf*Q7^pzrN!zB5e~{PGTUgMq~2htb5}R+1zSzH@G@wzKUF5VEg)%ZTsl! zLycFBqlU)!u1s4tR~=8I4oa(L>^{W$;`QEkzU*@>b-O+8I^1~^?{O+~XOVKo?Nlf5 za&&hwWcTpS@)3BwVnaLYoB!lL*OkNZl2jqcQRS5~ubxty;mF;?GQFMX7EvX=k0 zYh&H|T~}LWxyPvdR&kq^-&UiG{N>lC&A-As8pG`hdmbNYoYzz-UU%euVte1DHlW~f zZEbk-Nb&e1MEuXfl#8zYuBr#|-kXI@8l`iSn43Q58(e{ZpZ~u%F|ORcszCpkP2pb? zgGSbrM?q2Wks^-_|BGT^qklZ2MR zT@R9k@RzrBRB+aM5~B4m;Gcxh2r$v}ae3?%sODm)<{zZx9bgjRYV7Uj6#T-}^xlhW zVe*a$spn`dKlHPZ7)_rD>p=N>X{97FwQ3p7ivM_sVkNbPyAR66?9qy(EQWcm`u`h- zcx3-Z?;nQ9eCnQ{W>Wl6tL=$p6Ny1+nYI{cR;&G!5KTIEEd~zd`u~v-PTtA?$znA7 zxi)!PHCY?=Y8!txGM+Zl8P~KQFmau-u$wadm&I5&w_UR$VF)L@jW^!bbKt)i!qf7H z-Qzx`uzEkudnr2iDs&!(>pX~k`Y_H&GtN*0ZDACp`yf?ECHJ3=_?N}VurkcFG0CQ&mClsFl;*c*OufAN267%!cge4Hwro_+i;jPSRb@h~3>aT)o)Y{bHU zZA6IA|JaC7QWL{*%~-7`(>x;9993iy9qkZBf)Od+siiOC%bn6bIA@mmWY>GY4G;S8 zJ|O=ejBuHb2pIY=j6m3Kpqzi9+<#$%%U^zo@E;_VF`{4M;)0j|*@#$Fdpx?CWFxZv zVh_fpd)%FAXNayP50iS3nto9c=GQ4tr_DKUNJ zWz!@TQCU3QP&v_1{iEpZ&}{4MaLwpI`!9U;7ZQwU``h1qGS)iVKRQfmV$AoS&kS6Q zPY?aXPyU+2pN)+ES{+W-_1UAt`HNHh`N7D}$jXn=jn%2`&B?X@z=+MG zh1JX1jgy(f{axb9{{jmhb9J8 z_y11}v3&eMv)Ns{ku%rt|C$(izx~~R44a6MFhr}* zvVVqDtn9B=5{4)%mEawfx9^@LVTio=de_Zwl+VBZ!w?>kOPGKTjZG zh_%r4n{0F>46$iltlJ&m*?zjK+UP-apzZ27KWu!ESenq)d3nla{Jx*IyX()z!CG_I zc=!FY-xu-!Foe=|D@5Es4AIFGg|Te=hapOUXE2-pV2EVXfP6R!Llju^hC0rWFhtaw zuxs-FFogX~!T(~2%&Gsu5LW+-A=Li|LkK$k4~EeAUkp)Fy!z(3_pFfCe=$Vce=&r; zs%xKyZM27~$Xc%K7t^)$fD=j*h6vhN!w7&lg|q&HAtK$2*9)1X=Y;PkJ!``h#hX=Z zAToK|HcC%91Gv_i}9P1S>c` ze*c@nq2eAxZvDig%8vR`zGVy7+9%%%>Gdz5)eT>0Enmre<;~)@omT6=NVs=!l&Rb!-12jAtQ2qfw%~jx;P7y`+hb+miR-V zxw>vf9@JGna)OVyy&o&EsC)kmey?@uW{*wdhK8|dW4qCfKMCu{`bsv-nB70P`Oq<% z(>3sMSa3(Ze>we@cZrtVhRooH!-J9T)QK-NlzEPO9_WNM{D6zy_!xtAr}WXGx~}js zl5Sk_n>oEx+w!bKF+EQCeXdf`imushr8B(E-Ncd~pF%HDgKrl@XG$+RseJ8xxX%pJ zr1SsKBdRwd?_XP||GnxFD8>g%Tm<%D#Ux%|w43Gso>AeEqI(^cx&(UF+ruPn@5N`a zjC!{AQQoh{M=IxPoSDfdHr5(v&Xm~&Vo+wqXXMT!@K*i-?vyu=al(VI>M7H^fkfOO zPT@fzAB*W784-7{yMOdxr(HJkA6_N<$%jl_8J9~6#qY?|a`SV!toF%BdnO!CL{c2T zk)eHZBO$=|4a=WQeqONmy+#F|eH{UrQJw?iPwo6MH0SDnBqhQ_)M&qpQVt5cC#7D! zfbofZ(9oL}Mc*?k6tVo2cq&fM`(0rK&)YI2L+hO;qHibeQ1IAdhl1C8zWC1-$H%v+ z3<4eo|A<-Sqc`I{)aW`amLg#Yfko=8lUhbR#ew~3DQ2E{q3cFz7)|GAcoDa*79L>8B|7!E&9&lLf$3Nb)U8PWw)NBG z%&B{wx+zx}osFy02E`uwRXqZ}n2=fT&t)9Ta-_w{cK3d5;V<*!@8AL6iZp7^hDO0F zDxc4MZBx29CNwf^ir{zQ8HbfWAx0dnuv<8Yh2J_=SX?k7v6TL6NY~8@%`}Gfg|* zPs}Lxr0rv4b1VGz<|{IFOLUZ9H~p9EdEXWA>P*|+fKWZ{KWgyyM=9?qo5aHeLReRC zr+)kpypzI760*lEpQ0@GFmg2CnF@uPm}To?bkBvE-k*JTn(|D`0sr7!>chqq)W!RU zWF7p>>{O)lc3D(V;^R^)l$Z5>nlkqSc0IEZ`s~2&W9E{a&}@r__>aiqIMyY%Uqh`F zmKO~pb|YeGp*mf=@`0O6!f#B8H>NM^Q?j@j?{wc40ZpgH-jg?uIXfA%pV%;fxUSqb zuyu{1kkMDWEWf8~SjbcNq2OwJ#rH=6bzEMH8P_ctv|bN=0rc%ZCar8lPI?(7Tyxa6 zQ?%6Aor@`3l=9X9E$d&+nsNd81#gHkWeLqq3rnQe^qb#abDI?Ge&$;nL2Gl!aVaQb zQ&N3i*J)0x&_1jay>lhr*5bX$)a>tHnEU$l7hf`ltB#wpu-c=}Gi0{r?GkG*L!2$@ zE;Bzb;vbBinlgWqclkB_r86SXzQSV4J@4CXMXUZwQLaFCDRljx8ekzrrH^0dvh8gM#T&*r4w zd!Mv_k*hb&xw)1&xl#9&tjjGjc)nQmf-kW1ZRNJ>SBI^`38^YyF`amylRpKS`F?Iw z-;Y;H0wWm|WhJfgcdq`!O&j0LJ$%aDEWi8b zmz}d7A3Em}F(7-1RT}_1V!&9b;gf<&%6%gv#QhSrJ{!gOmAg4U2z#%W@755)#t#-g zs4l#@zvh6fd3vj-6!}>Iwe$tarV?^st1|eKb;BMNk4Bw?+-Pkr-#~)Fe8JLq+k1x6 zQVy1hhbSoD>w9MiZam8|LPyj;-1{Vq@m9!glLv}fQ^!%{{0)ckdbp{upm{*JW#*OV zP_)eYO&j4bkg&9aBg!d2+NBKXc6Qri9bug*=wpKL3%KGR6=^3Y89eaXt4!cEH0o89 zWZ1fFAXF@JKswsw3aN>4JAUAL;y{#|OtdU>^eyY?G-yQjnN+4Q^Y%=1B{$85la&ZKbhhw`4XJ1=`#!O7zy9{bCzh-!g$1f&xqYe^%Lr}^uA(df~<8S z6q#tVPdlGPGk~BO^h{ zQaJtxLnIFq2|OSCUMud?{$Y%|1xkin(|?ns_OAt!c6f2sru`obF_@-dn*O8}=>A^} zu>t1TONak&6N3jq-9*9@aBA1t4EOVlCS_{R^Na?)H@>ECn)RriO{qifQiqsQ2bxm* zoxgeA`o=jhGb$@Hk`&6&$P8-Dj401ciOy_>Q#VUyMVY>NdH0RK26bk6=IcP}Lqe)* z7Q6B+e{tZgc^ohh0|~E%gh@gpB>x9Pv}C=FP=+>&ylroVyl*AdFmgila{2;udYy9G zHK3#>#@Kldjw2UW4)NIodwJ&KvvTKJbLVGs7hAyuj=V);bS|k5;LMQc;+ebNnzwN` zkAxxccOeINAv5RTljz)2%6DGM@4Vo-CnO9(g_)(y^RK1lz;l;6@t2pgAJ)=vV<1RL zs_0s1yk0(wC>48l{=X*1Ts~JDlxq$eD_I~QN<|vJPeedP+X}>DpaMe$f}|#fe4&h4 zp}-sz0my%aBb7A%gCRJJROO3a*A_ksDpH^-Le>^(wH2vd6p=6lLbBMi$3=U9f5fWZW4ie#y;S?SB5(tzyJpdn}+ zrZhCDG?}3cC0`bHQHl;Ki^?wZk*5qKnw9y9mIcL7r8tuU5C3UmWS1A$mgmfs=gpOu z!1Lot3hko2WT-q^v@8k%;U=V>J&n@+Qev@B z^=T_-Ck+Pws!b#vmD0vmum)E~B|)k$TuTqCRhVj?K9%{`@koM-Rzk(T z)r+}6C0(ErBXkO@?+@4C*sM>$)jxD;c&yMM+uopgS*dl| zpvToHK3ti=@Zni-qscJT#06?b{oxfSWeJQjW3If|td7;3$|ks?1XdmSq`HKYG6h#x z?R=H;f=`f|Wp9sm3J!6Cr#}fyH*`ujI8W1e#?gm4m4sqfy{l;aZlKsyDa?t@X|-*(Qm zcg}z7T#W6+5CL7z*p`FncMBYtlX9?=Bm@JeDN?5DW9Z&h=sx1=p1bTi)udXk?5xFg z|Gn%6aAQG=STeD02R)zzqSeJS@6BejQ7hOL2Y%&}j)K#mVAOs|5bq>NFrkI_cMnYQ zou}l-)%JIuuyw4FF%5)K1sXglKKq}0IH?E4xDC8-_u)5d!LlKdsP*C z)hv2d6tm}Q!9kc0@|EqM%iBL@K^zef!#EN-$_--Zo+qR()zVsReWuy}^t^)(jw~4_ zMdhp7+Xs6`L~kr-P4>|9D%{}mXBnwT`-3Lnz zB3fjj=LZrL-@K~o|6NxC_G-TRSSK@Q(A9>1DXBLIQy})OKr9<7nhix@+L1|xK}ld1 z&z?q4ct9QP2>}y~DJZCgt~nQ8iFx154Mkxfz6?G70IKF%+CO`r_yz9<3f&C_(<9+D z7>2Ip*phqupPc4+(<~S=<~bh!82n^b@zuGMw8-C+tITW|66gsIfI-<5vuULwE`(Xf zao`9TRX|(0Z(I51#ru$+edUlKSF0a>5V4%&kt_aIv#qQB+kc z7Wr`V{HP?-2LN;6z~a?3HQCH_dO$Y>2{#nK^88$(0MR&4cZWkvNrT~%AaOUy9D;tX zmbQkf7x0+x>YrFa7=JNi$OqrFns(hXS~R) zsTeo?!i6fN4eG7^PS0}YVKvhnqAe9c<#~e=X_lX`R}f2rAqdFzk#{qLU_Su$5{BN< zOy*&ybY>xJR*S(dmwS=BdfBxM)meHL0}V<_0Alm)@eMdx)X+QHG>q%RY+EvdR}0bQHNI0l8~|A4nKNotfVz_gdvB$0GM^ z=+JZuZu(bzSt0*@(-cJI%!7B^ZYs;3_N{>OXG1r{pbsYSUtX1MY0nok zlr?ui0&Br~e`w4{ym@&#Ilth8u+a7GIc}v=%C05O%~AnQC@G!f<_WR;Qxb-Qo_3UP zjV_(d&#=Y5e=P|?)#9&N(}Q&u5-Un!yk$2lhQ4(I#almfNiW*yFTTyE^};|B;Q1?J zl<^ErTuRlhE@eOGp;4aTJ9Ml|Sej0^%3;n~BlimIpVFT>(9O6X*Lqfh7$}9rtBks8 zsY1uu+n{t3?}89C!|)Y~SE8&seDk;!7S0MEs@f7FrYeWCE=RsDS+vSb2_pQLW zI{?IvJ>sc7dP0AyJG<~~VZQAZ(~@3IDDEq>Xzg~zSI^5)+s)D>z5G|ho3E1R$dG4g z$O*2|36&1oVH|)(59pEzBn2)kh@W$av;)czx(;Bo4l8F54GEKEEP+Y0S=0#XQ`~3O z-=FKcX*aR^9LN$L$(aC8aCj{=4hOw-&fmS53CgaCPXfEcFNu6{noROzFaW(IkPYxJ zalwzETm)#&d76h3i+*b}Y646nz9XnXI8rqO$dp9dY)tu`RG~4p{MAhRtP{us>&g2@ zVtwCBX`oS9Vv!gXU|Bs)*&v=%N>x~6Sv3Osb+Yb`?sv5q7ICZpgCPPLdGDtPY3HeB z{SSsPMfGi2r^cF&xlW@)dC$k+PV5yN?ldLsaeI8O%Ted zasgU5UT$Bc{b+Jq`pMx#vK>5)zDFZSg*6&p#X#K3;HQ6ei&rdsw!KN#MUUKm1+cs| z+5es;V6BAaHm$eqjT3*~*U{qgfr66Pq{UOU2XQ64!>w{n%GG}Q%JSV$ID#tCh?)`_ zaCUu%7eCG2bMP1Jk&&z5FKP$?esA$+aFc65jy=+aDNiw5b|*lS!FM`4U%%f7I0!gc zy=n}8XZ7l5&59yT0ATVX0+^-d_&p;i&op;^CN|YKFW%eyLUUzx`hIULd^y4gH>>k5Mi zb=Tinu)>wQfK0U{FW^mCTIpdn!uVlS(Ub6j8sOQmDuh>4yFoU;-wb(Rm)a#BqlFR4~{T6J{3n2EMdm*Xy5s0oQ z(ocbJ>|fqElJ>+pJxT?#*E$aYCG>i-La@vAgOtmy*SP?;H@<$5xmj1#pt0N2Ullbp zXP;$Pk#)V`$!l6&J?luz!AI~!3VLokP7^>GGeZNGS;r8omg6P-aJpRcaPS(6La9X= zMERY%C&j(5^=O7?nURDc#4=$>pzOIVbMTDs&pGgo`u-VL;&HqQ5+chA4`U;{{#J`U z0M;NJl9-9Z0K;v0h7b=KY%*xg5g(s zf&IMKF2hM#3I;vX#Vb}NrztG@u(i41jyO)ofQ#k3yBx1-+IQo^(T}-w$pZ*vMO=Ou zW*uotzHm?V)%KmGo$@vyxkQu)h=N;BC4#<ZhS{$J%tI(?Th|^ZK{qHQ82>$ z6XkWeZl5l5kA=Y-e_k$KpX=iQ3Ds6Sg)>`$cbqTi!Y5`sF}mPZv%jtNed^j6<#wm^q;V zeO5VpYE){txKNqh*UabfatCz)fQ&21P+wU{X&*>rSuY8;q>8-5OGu?u#{xm@kh_xB z(OPO%%o3I1PwN@!V(`02^!Mj<*4__zp9uzm_7LPca8-&j*o$|W(~uk$Y2q?n(DwoI zq!Jkm;#8sS{+>uH@6m5edV=$&<0U$L4zLRAlz)I>rOAYxD zz#pIHL7Yj6o^oVtxjr0QCB-PyUay3p-ejJAIn5ML#td+KVIY6?0%EajJVpspe@L2sVlqExUJ01WuVRqp-hYsLxXXN@@W(WJsZ zJN}w%gDDvS4MGYZ9xBiS07)PC0BfR*F;9xH%)AW1Ti=}|ZBaJd3(zG8y*Kk>@jB;VRztS8O_D^)o=wyl`n6mGEe5wo0 zfy+Y8($)-

    f;&#YEMgcd$>N0^|r}%mLE?r6dr&qbk?^&bUGE9?7C&1Zolc*jRlw zPQkO5>Bbor;;oX9T60*u8O^A<3!VBPtHE;|1-(W?3T#-x0h*V}*OVAg3bsz}igCE& zj}tV7_Xt4WVtW3;WFu7#22LW4C)P*;3jjEhT~(juz1s#XzY?y6yq4R4;~Q08L&fb# zSDx+o$+|I585r;f(+of{-H1OFq}#Sd?| zqKLi4(MbOLrTnzuZ2X<^OKn+iMj&YY4d_ZH040cswLsYPSMzCNrs~XK5U2>tZEtOH z7y!^wIG8|#^D`ILqSvYzUJC5b@C(>*1@7>imw`!NOwrl;EK`Pwg^;3NwWsT+=W;&# zhw4-D7G($^83sUp4Y5Wcrc9w;z~|%@n;3GX9iK+cm)4)G>Yc^}q(lJpT4rq@UoYoy zp(=qY_FUIFz4kTx=kw-7iWbkPAI_r{G2~Xmfa$=G%(><-lz!H!(|6DE|IyEYW*!ex zh7iV#hScVXaf3flR=@P8u%Dsoh-d}98?Qu^v3ga#1O|Cd-dSuo^t(Bw7RF${`dqff z|8)P!@uuFw-n6S>=q9?H!0c>g^|tUDUyPu}0DZh%xBn=BEDDA_$%7&}K3(ye?;+#W zYaP0e#Sy?WvVtcxWaJD$us@c|Qf0DSpy{V}3imBOw${ZCoicy5a8qhwgO*8gprcqi zGiRL9XA_!Dlkvj2y%sV`(vr%v^$Qf#1PjgPab@rML`Irs2hF7iTp%WFCU!Dgln4Oq zZYNMZSwv!GI9fX##ykq>_wTP^uZ_%gC>(!kT>m6t=^9+NFr)2!U>_K4eUp5Fq4sV2 z0WqOn`we+*>Cn^bSO7={#)UK}UDs}=eX5E*e}?=^j#(0Un}@v!l=ZsRrlP>N_K_@I zu3&sMDyT1Q@rX>|e!>=G3lsnl{*VkHBh81-+PpcuVPdtjNt^HQ_=9%}cc%*YW;O}| z%#`==lnyqjrgotX#-WYsx}a&w&;S5cgYqYDrEeJeJA;wIdtf{Dcg4%$%s6syd}0hk z+tCNgLxuYwq7Q%04 z%E_6oL>dRHl)`&huVmb%xe4813t0y<3U{4Szae)-y!I4yXsIclC1<6I^ul#RoO%<4 zKL+6-?k23DGAgQ^Dxf369wrnE$I^TQ+iP?@<$eexr7HB0eNH)r%*gF;c_HhN$D+lI z%8lA*6;Ie9HP{DrWe*f+(kw@6%Qddq)smy@%4a2|H1)tcl9?1&M}YE zvNiA4p0Xpdy_G)20JP3ZLZEccMbU1UBsyHUui<0A5p*b?wijD%MOht+1CtJ-8#Lld zOZW;S@(0-?tE11k=l#O~>R?F@?aWH529aB-h`J|ycKZNLME;cl6{1Upz?+L&%?*eH z06>8OTp>IH=oQdyVQYeuszB63Pc_nAF}6$u*>+7vITmP7LEXl_2$7B z2#d`8z^K6_OslhC?A$pzt0=d*h_6^(>CzPI$1cOm0nrBB*J&YV+(YE^=R$!)N$VQ# zWDW)?#(s^cOJr%!z;t5qXwssgbg~Y6QUL%L>A4>1H9!$> z0MuO%XOWEek%PoW-FESf*{O>3m4rC$jT3v(q&pfSH`)=3hO>u}YvV`?K~fS4Ksl9){$=!>x!xw23C%@hM~K2s$<=!wt_8rL=fTDC;`I6^L~ zhTy&o`GF7@4A_c5VGO4bHlYxfG>{fDAX+&_SUN^L`>&6vMTusjBm+Rq0iatZ5k{UA zlB*QY&nTYnQQWtra8`#fJe*_@`ohSgpENKUul!MAueACDxr2HNyLhenN5kKf(Htxp z*6d(wfRSE2TAyMH&OSwU59cV1)3-BvftY&A12!@;(ifj1+8UWnO_}9Rfzr|X4~?wl z^sHgiWQ|6~>0mvfX*-r_QWJy5Zp!fXv!_DO^xgh>2vecy7wZvs(!UA>P`qH6vWDSY zkH=}XBYhE&hpVYzNr3dh{W;1c+lxr=WL6zzK@U6=glVFd{p}iK^v$|t6@^G&JWhXg znv~S|2O}I!qyQugVnP%X{wE$pF(`4;rJI6GQV+yYi%epf<%6SyOi=t-kfa{|j-4rK z9y~6>G_w(uVQGRs21#Wa$ZtnH|6>H7GBW*RMAZrQsr^D4c13B=_$r$f--D-r$( zd>tW$;y`*h@(mZ#LT;{5+pOFT;+HvB?q=qPpQ~BWBZfS4^)sT8d`hg**6K;sq zyMRZGOj$fL`6{~*AsK-ZmitQTRS1*ZhVp`}n}HRc;u&n=)@_3?b`;Zg22(}`Gb{^V z#4VqdSrVtV=W#p>3)_}cc3&lN3qSlKCWWkI;}?F?E(jAWr?mB?VPrQjD1l6nND^q` zp24Ku*YQ;fXLd6e9Joe{Hkbk8uoq4j*Hd1eZ2`{@HRC12=Qfq!GB`S1P9Wa09k}Z1W&95|1QJ8->ZAS3;ccVdPad;wZcbO-H%5TefO+= zSxVDciqtMY!`m$J7;uDIF4`H~{uAMX z{VvP;frmP0LrvvHQ_Tzz|qd+r+Qf8cHQ^o#j$TdJUNy~FwNV0D)|ePx zv$xOqf7rXLpt#nx(f2d~8i!!P-95o|k`UZOfX1E1-7V0#6WrYc1lI&efS9@QaI#s7m)vir-QC#%}GU$HC^Lzf5+T1XxBn;|l8CSCnyuE#I2`CB} z1MdPu0kX{r1keS-zmTJ9V65;kGbA7#gJzPU)q@jmHUSMd31e^$CSVO_!C$jeUupURpmW8Mt7n?q}xNqA|N#?S`g5Vp+6JlrNT5t6NA&QWZ)sMV+{pc9 zM=jbgt^!Ms>qBmQyN0fL_8`ryW*AqZCI{~^R~?Mw7RD2VY!9~}e~C=$3x@Ho(ps!BeTI) zv!PXYe|-azF}}n+4bBSOmsfL_d*_a^=A1yiud?e-bsJ1$?TihE$szz45iHkwDJQqD z=4JC%%|nUCCV_jO1_?$(YNMX-o}%qe+2f&nW1V9KGl3!-O2X8+7xGSQj&Us2Bv*`_ zuc2PEZYvWu<=3|P*CuDECMJePd#FE-!%)JepHCo183JbpaP{#s>cLA7=#3|057KIr z=4g{twvPd}F)+SKj(1M>yivxxPV2Y9`fY{%+db#x##6^jx7SoCYQ209$77y*y)#H zb60Q2&q5HFxodao@2<3Vee}V1nR$09R#$29cRD)m-Yh;ctyf9iK4IhT_;}~1vanO_ zvuZh*iI=5?jymeq^k2k3>cKxAeuw$AIGF&(lF9Hm%#;)T$srSRY%U0_edbnv7L$Mb z8R6|C=bgR#kY=sc(7TJh2x+gg$ni(zgkK>ER|`VFJiNRSOVAsAxnEuR{!!g` z%X40ntv8ci?ie3$-=75QJo67hT$%9fGSzLHu~>R(>xLQXq8eHHc-W6SyJtZmm2(bIsigPuCOAw-D;vmH!x*a1)>ZP7Tl3$je3*dN~3{rxf5eNJz%eQnY7#UOJLN;Biaq ztK zrj2@jRUOwPh<`m1{9|7;(#3KrU>@JmFvN{&HLgvwV2lPEjOawY2r1}oB6tF3&e17U zDSGlu)N>HRg8K!NEbnNU?0j>gh>6|UfeH!8^`XGF<DSdkK>)}6 zg^S~4d?Pm#6xiDtlT}0&Ox0hLi&zE`N&JH$m=NhtWqim}O&y_@>6Wi-n6qpgMId-@ zqVIMhY={4DVz6apJ0FluBjQ zpYQKk>w4J%48hvqYhO6@2Sd!5VR9AzjUm1m#nj|2dIA`t0>BX28-FlFN?wd(#__Ni zPsQn1F{aOV2OO23Z%EpCdO#00)!lC~fhL9xfkEAS46#SvG%P-QhF)U*$KqbXY47I) zRE-(+{ZziX(1?H)|js+A~4Ds$#Xnp%2u>~HU1`*yIrq64WjZ;!R-c0<-C$cl5 zjq9_Mi$&44{oYSfw6-83P-MTd+tzols?+gc{dIocgdRD`^@j(auNO z&R50FN5|Vv&BfWs?6olqOavM&Vicj|9{$!h7KlSw`G`00i`G5|`Vg|!A^?d{Di_r# z`$Hmh(j@>7p&O(6zj_FpKXHgZ9>OwH(=|;=35Y`!zgFo`0^$%l?Mjf&H`>Jp7XQQ{ z+B9t{|HL8O;%$82+y03|G`kv9nnC)tfii^pcV$ZeL;Nr>pVNa5Yv}_R;=ssu(b9F+ z+-cMe3S=Sn91YhkB-@k{K6)xj#A-+utICE0afp8yg#O#8zZpcv-wYy4M=AXu24N0~ zaJP%@#-V3P3`*S~j^^wtL#Nc{%=zK{)7*01U!WZ#cjnU=V{q zBEr}5$Dc}s_sQ5hD|8J-!*PVY-B z|0E)stTW1iN`y;BxPQwB|DsUu0l-59+0BKzPXZnSz!1T<+o1r4@GSFc4)>dn@)?Qr z+lqW2l^zZQDiQ6`Va@*)Lu945r$v?5ysxh;Z|%+KfX&5*&8NmqX2xA4r;S(Soc-+~ z5Y2#xXnFWlc2!fnP?H$Z_b(DrHrH4+4v>h#{N90zq1m>D@rKFX_QQ>q#lKa=VEy$# z!{oQIiN%52`GM2fxskp3AAh$Z=B~egKLS+5_VgbWalHDlJAVm;B7S~99o^piz6X$q zqaS^QYlL%Lr!zJ*4ArWi$ ze@H}j2;Q@QlZbAde~}32e@Mi$f0GF4KO|zi))@C664Cgl58-uwkMTE&Xw?h)@pm6$ zI|6R~4~Y=DrM3DuiCDM%n?xW5de8nL5kMcpwiF-{Ni+05Kp(;!=tFq_n?%t6n?#iS zArXvJQH&}8iC~gbmCT$4`VeeDAL8pjeTY(}e@F!LKO|!3B|sv!f}J{8cXNe&A<#Gf z^dYFXcMI5%$*na)naPW?BQA>fiiuwMvX-Q9v)UA-T8Y9-{cI2R1Kb7K_sUB;pcNI* zQ>zYq%8Tx&s_Fs}b5$QO`)m(Aa%O!FYsa_mnLqYW@7iU3Avs*CGbjJR>CiakJJ&E# zG+W(>CS&IicA#;%-Mq|P&Xuwf&Y@eemc(|_9;KpRTfEnzpV6`1!Qo_l7ASW5*@te4 zsq3+$^keETwCdSzHB5V62nvJG+1F^x&XY!LxudtA7ZvSYG>J6*&int8{KPdtd-}R| zU?$wY;XQ7$GJfl6(~;{4(HH*)H8L>@E{WT{Vm!&Kl*@}z<{9M=4JU1y<4O;EgyU06 z-A9+xYEQV{e0_=h;3{!X+w3NBCAEV8<5d1v`f&3LBG35`u5sg%p8KO$OU@z3P4k2r zHJfu61u9iy7h8zstTFL#-(?)py+3Fyx6B*$y$QIUYN2J5t?w%=%p@S?GrI^bmj$hr9N8C3vSNi`0yg z^_~8^M_fXxg39MaT)!@5jQPDvPsNRiBzxcKHXSb78LC|wtJR8MuhW!XijAsCZXLnP z-;o?C^GMtRFRgjH?;Y3P{fet_Tm4PmDDb6}TjQR>^9`I|y)-HOHl zxVbd_@_IIcdRLGrnl<>9J;lS;HFYu5xff~EQ-XX_QkqqK35jGm{K~fS07~^}1ETM< z&fZkFR9vwYU%@|-B4uYG^tyQOU@i`T566hSHhS>}w^X9~l`*9|V%J)rQLijrkSaPZZq6zeR}8c)omdKbmvm zpG+QMgDCdgX*Br8!Ls=~lR1EwF-8%_{8D3ECWUj%39HYFYVM9cO!iWJQ*3C1TeK`l zbts?G;qBb5Y*Jq?UkTr_+5^Gyo`Bo;8S4-rnlvQ)K1`~mHcSqja@GH8f zjEAxIkh1zJ4-t^WlJr{;ovI+L!v>aidYjN}xSMn&3W=)?Rm$atI6*!8!wp|>-#tZC?VR)l2 zMm>p8oRzCCbudX=)NJfCFX#xE(AFAZXhoaj+>EiHRPk9xBED`pwW}pXR0u8DYIjVN zmE^?67+&?6d%W9P_UPou(eIA}`Vd2}yGbC+r9x7Ip(j8I!lbc-XqzPj#xXjZ6*{Db~9ry}O77qeW4(*Y_En)GuqCFE=LF z?-+$O`lYL_mJnjn1LT6V7`&0T%`Z4tfj<%ja`4DM7 z#m-rcMXG{pq*Yc}**UwhDOXli!%|$XudPOQGb)~ry=ytwHkaLd#bQBYcS%%W!)_V# zI6KLwq4&T@wfV`_;!B2SREARO(#`$Z*8<$Dm*SsWxz+BdPP7DGu2xs!AI>JzXHsR| zRj=rIwH5ME^E*Fx(1fItcZP8dExj_dH`i$^^vCiXO%s78^dHQBr=n4y8tyX0TBw?f z=dE$saG-eRt<|!6l%P>GFPrW?S+96wzB!!S-u%p)srF~hR@}VRDT9OYbZ^ihZlyW}9jmsj4n%mx+ zm_-LHnfKd#`5~58JE9bvYD_EWgc<~V~f4RTanTsV)|3$Kqv+PqJ>S!55xbqI; zSUQ#7Wn6gC5AWCkPsz18TRvZ@tU$%vynpFQ*N|n6;x)blOc$VrFGJ>6kA8e-;QN7k zy;Xk=@vkAi@zMV!j#QpwzcgZ?cju#P47T;pHKOiZqbO#CibqaA7}|7$?VTT7RVpcJ zdZ&rzlbpr}EwgXHpQ-fnoc0U3#`7t&$9Jc3Bud^SyvZ3Ca;uvaeXqM_Yq3PF%w0UN zL#}h(0qN8acz5V#`4@fdaIy7e1>LaWt4n7lG?_Q(eXUEB@Km1v;W?eA0i1VePt!(VLJv5 zN`M6wO-bJhGK>raWz6+ad1?oa8!=>i!6DDeCrp5kz~c_(FDDL<&oZ%ZPB#Sfoet3welXAj4_RE zu1_ptTH840b~!uRVp^tRnl55`_UxM>u}`1GV1~qE7sqOSi^bZE6@3*uQ6XFdi9=?H ziwpri$JV}zTZXW$MzX_6;}c)R7rlw!sbF24r$19tOlAuDs&9>)%~K6Cb=1@!Ovw?}y>u2`-nvgB8nExh4GdJ|VU~ z!5)OW@-Hfp#Ojm8q?^QUlf>1Y#M7SiA~WfQZnD5a5+l%u7^zDhQBM-fOal54>})_E zBI$Kz(r6F%NF5G4GVZVXNE_rNa}B&@d@Q$r`Vw`i1`DZ1cYl+Jp;TSnG`%5^ZDN{j zdzyVE8u?k8Gg-Q;$R7{kiIGlG2XZsPYMw|Byh{(-Pj8^bdZ&QZ==_I7L`P+WS7y}X z10jlxKYa*{%t(>U7@rIvQJ1rjndg(yg#V`xQJ9&L7nK>whNsGwO7$XQ?Q53lIqpgi z$k_z^E(rWCF}tHZ`_n>p*Ijl`WwzHD*b5*LQQ*PMoZ9zwHN-;hJX_w5Pu`wF-a&ibvQ6&MUEad}A0c6|o0!Rew@Sh=3uR8EQBtlRRn6U;PV6iN)WENQHZxZpEz1Y7F?C)H{msO&? zSfaXEB3M--a9^TvU!u@aqRn3H14JfzQjoK_F&8L+NpNpx^aSU!fAt}NQ{61|D0rD` zM_D`^Jwg2siSQ6D_g^dzyf24hVmL&X+h&zJ>S0FeVI~%odm^ICqV6k76U$0?D@%gP zQhY0cI7HArdgfwf@2;oX{T73b5NPTSl+5w?F#f57C|?l0>h*#gL>f!ARr-y zPIiEf-BA!bT(DY&9(z#Zp;)_qUlZ+ISTs?4LXH`YUwG(Sh*woh=8Jxt_3_rX2rCO6 z>!6?ovmA-z!#O!7$gghAw+^$j4m)j5}W7WY_NVwc{)IV&QW)+D|pWsjify2}rV-U`b!r6_YosHs4jUr;`A# ze{=!;CLy~(xww=D?lpIVn#qN3#paa9qa9A7S08ImBquIpG17Y z{ypf$NX7jkpZkYC4eOW8kAU?%K&m!j@b&jF#Ce0}ULP0*a+82x|=GQmd1?m;o=K_2a@P3*xu!rbrd!F}w(r~E>| z`Q?c+8VO~`hHe^Es?Ek3Ek~)tG85bn$H;?&86Pn(4!a1Izamk7E=B^|t9K`jpgljz zb5j3ip$^0(+JOYc-NQGjobI_yGz&NeoVM$fpzQN|8Tdr6>SM1uW#1d|KGo{1MQ1e6 zpq9R&oIwS!`x%oHu1c(6sUj?9yLSoEgWV{V6@N51%$t>&nNdiVk!FCEkTVpQneqtg z3J&fyqH`+}AHG7u)v*W51Kp8=VS2qrf2q%26JTJqzo*Hc;snsC;0b$nrCuO#Si3x2 z6j@h5!HyYF2ll}S>qd=S#Nf#-YXxk*fU6I8Qu3VwmY@K8SjupjGe#xW`gDEB6Es{3 z;wu;bP-;@`rC4FN_`y@JJcbwD=n-wv4!bH-=3yXUm4o;S3CHFPT+~xGl2yHZP}AVs zXrzqh4KE&b?)7aPe?RvWo(Q&r_dRDX4m>ONfdi3=i3oqmQ(9c`+ddqPK~uNEC$RXq zS7UjmV-U*n&W=i-jsgM12e1=wn=4S3sKe0>O{}^f2Ys)m6RV9k!Q?kYFE9a<7o>`; z;849ZSS$e9N}-3;eVZf8v#bPBBu={~rs<0yi%1~5;R|lS@z*FPv5Tf6zD{lX_qouv z(tRjPJgAJ4!i+ovThR8Cn_wF=lDzN(gCr(~swxLWE2D-hOHDANoY4VkWnq$Qg9Kg< znqqV5b1tZW>S2~kjWTu&8yTSewEy<;0gXy!VS5@sdvp4FGQND;-w~(0UlFt2x8gZf z>o;ZeSQBvLhZ%|KTi<~Bb&=-lY^lpwx8hRb;s<}s^0?1v zP6cRz1vttWBrjsXHMVR0DwqjX)q^U)VF>zbEU*O}%yEvJ##Q03x0dW%Tc{3HGSD0n z(efs6j1~p1OK5GWSkI2hK1!@P=&cQ@%-d(7GcJM)@WJFrSopt)UOa%KX(z&SE70Ss zn`_F*hQTEci;Nn0gulxr9jjM;(PoxZ*PRYI%GjdYBZL>NA0(;qIrbv4iTe-s*LC=aquG zWYvJpGsODpv!d;sNgM|gFqZ8P8@(UNC+I0z^Bzi-ejOVgfrSBQaKtZSb9Oj%xFRf| z(uRD?u>;);cb#Jr2Z|4dFP3wymi1C%@?vgN9DzqCaPACfAx12*U1W;|sV=~U%@JI1 zwnB4I7>fV-yCml57{KM1_Qhyd9ppEGj`TS4`J!--6I0GLlH#qptd7brzonekntSWw@gC}BBoVBmt?TH$IO^?pp z;b(&w=SIrsqT)?!0g)e(Hd6@53M3?*U)Xq&Q&y8ZixOnXkWb1AS z029@X#SM=!W*2^_1}sh*%DdPY6bD!kgiCP-4(pkx z`cPY1yAkqhx1|<6MC>TAa1Za*ZI(-~%F!BEalid&KfMSTNJQA?|M3uR__)hG{X{Bl z%>(x>^rsUEb4rMzrPCLu&%yf@y%X$?Zc zcLo7B?J;(67g6nI#4$e@G)6k3BNYy&(90B} zGmECOPBMfikZ`>qEYB1F?<9ikjYYrLqw@bG5us$s+wy;th)hkE0k4ZZksy52uPA8P zjMeJbjvF2Erzt0)RmrPAqBm1;f}GdChJsNT!`iO6C}qo4i+xe%9LBQ6T{gB%v%#u4 zLJq6T0n)oFWL@rOl;oG{XLMoFM1uZXgBn@FP@oTi-CUylcOPPz@4{*awz7FpA}y?psP)r2--D>2!aDqbEjyV~GYpMbQv9QO zp>)>1%~V0XV}C5Qgx{xkYXw%f-WNhF=Cb)l5|-=RE8U2r6iVi)G9GbKBr{b$$K#=n z@B}`;rgaMtI&T{-3`{NmlHh6HmtBep{-5KGbHhpCZy4Lc1)x333aNPht-)`Egev^~ z$pYF2#c={-*2N*ZEf{tE&(@(10oD5ERl0MnZ)*-pu(<9g}F3&Kag?X}TFv zs3ee#LJj4YA|X&YX$0PPdv%#-&4YRNZ%E;agtWA@Af-1wGOuL0{L3@(2zcKpar1nB zJIwXsN zLW}eT1zTMj6eeGU0p+wTrsvDC=Y82Th~+9>n5_Kj)`H4+Gzm&oh7ur02_oP%|I@rET<-nE2KIee<+Ztm2Opru3l*aQY*U8Z)2!yT7O9ul1L-sJMBQjF6 z?2fClBveLxuMt(zFN`SqvooVBFE^=ZK{fR1K|u=q3tj|Dk2sLV%H>pDi(;-f8K$K; z9=F!zHm(QRA_#n8%?~Kld%Xn2Ib;zl<+&(#d48{uq+r%8ZNAAW>X{ZOu0cyb@|<>N zFpoiRgHj0;`QM|2Li_jcn~l3k$npZyWDN$&FrfYnUaRfp1jQ4vw5?bd#B|x%EVel; zY~KLUf``;x3!h z`u^VAEAOE>iukv*-%;uhwmw+*&Z_&wyvc1)v~Gn-1uf5 z0F{##gaEykatay$df03B^bXgqeu4%Iz%aC+`fa#Ejshqy=GQgmYl1gVq+^EA_2ID58rDF`FB{ zq8@!CVYm%q<~)C?5+p@9hE6VX{p|Jg_DyHW-c9AbwgE4AF&VM+LB@v{mM5Ij0&^&oUIrtZ%?7=&i#@-!a^J?_8{azIYH;(sM`Q%!t|h#)D%<}rBh%Ynk)Q-{RF}w zqD!T}zTe8~riN)QE|^n_ry`9tT?YBRP$y`)MUymPVYc&qf`nH=@dODU;sW2KMr_i` zF}+onBo2}yXhSCy9<$NDi1esNBy&KaRtb}aQpnbdQZJPvKmnM^?|xIteNTKlj#_=5 z^1dfbc#BSqRb-n6S;`(3zcAlFjN_an^^%U~Jq$eagtCZfAG(0C(m(m6YSUTDHY^DV znepaLMxwfP@HRQyLI~w*A~5}KhoPcQkD4=qCTS)lOe1kZHHmbBstl|hhomTP;e#zG zO2kxOZ#)@x=Jr_I)ZJ%R{SwNsE|CYkKPn+XMq*_};r|kaZ}Q5`nBn6)R`dlZZ%{dY z51#g`o@HslbGAAku<%yPaKn6MwvZL|+k84;A~~Iv#L!aW!gNl*An0>e1>!Zj^UJTh zk{ROX*1XiY*v~^WLPOhbf&YiJAfocw!EOT;3HQS${A4ESb=m>E|seG!US&KvLE<< zktrFI2WWpqsEMJ;x0~rLD9|OhH1j|DqNU`i+GDNRXM{1BT@#cu8gyaq$S8QF)3+$8ZR}u%=bLK zJ>`j`me}R(aV`H`ey8pbC-Sc+mHS95k^OXaElN*u_r~r z6DrO{N~_LogM$ykUT;?@aN%uj>T*G#w;NAd#;`mY17E&XZNHSwsrzYz+|2#hy=R=$ATVAq@JVtkc}q)o=okNj{~Mljke3@0g5Ms=(z}}8KN&iLf`5zT zdfOar{gtxm3k7EyC3d1W;H@U3zxW|xM553$f}cu(+LlnZ=p%Y;a#(tS3Tn6_00|P52ct)8`yf?*vX@$TQI$;b>wuFXCzCd?tE~8zT%VP)J{-%g21cFnw11Qzi@8!_A-K$BFkesFiae zy3r3w^)|wv6ik;XDzJ!x4@YrrD}?eVcouQ^Aw?jRAV`?P!5BRm=~eU!-Yr&AG%HhR zffPhyFGZuhxp!W6xLZ&=0{R0f^Y*=j&>a#qC>whc-*0OmaZoPc$NO9Z68blZ{LkxA z+fW?lBm8&=MR*%j2FaBt(Fn5028tCw`hdMOz#hV259_cPaS*;RGg@7kl{%WfHL4xD zbR=Dt2d|8NhS0)8^qYmeoKfn6P?7xJmz|+;rXfhaN!lKMd=14top^yRk+%)u95Zk*UNWDDOw$7r|jq?8^pazkh<;a%6K8v-1H{oqBs;S z@gr_8zPb#CZ#SSQv*y2@8b;85|E`{H&>n7=hz3vw8}#v?pTaLF)ohT$O>R+ngVcD@ zpKwPaGolAQY=xOls9ofQpO=IqO2W^SfpPrdYW|5QG85G~BO8ok8~h#3?$1hM)Juvd zlKr_|+9KXngg(un>8c#^a*lvKoqU=a;T&4K+&h%h^M28S9PU2(tY#REN|m&)aw$av z{z)VEt?EFwl5YvVGi`*vFtff?cX^TgpiTHUi;ovJVJ`F4@9g3l)t`Amz_w>$h7(~x zG=LR8#dZ9~Z~|2eUsDSh5=MH$oq>#ao(N<0h7r^Sv&y3yC2ESSgo$eXF%U-bsK&hD z8s&+<1SU|a#wb@*a56DHf+AkmOvsd~Q}{(B-31ZzK2xHta+2zhmiYk-j(`>N6RBwY zG|@1dR5P6zH$_6bMhSllAc)j(Q^>eB*9^pP=IzS34iylGm@z;N*9+6qqzX4dnl*{k z(hr+4!I?E=nuW}a8xm`qtf=V#Lc(zN8avzwDda^Tj7=D31YisA8PnA8vtBg&!Qmi| z$x{PxfE3suGEBuUqS_y9myy8vh6?{SNw_0&%N}!MLc=Fx)E#~NoDt3L*Pp>_9^rYO zK^PkZ7H$Y*3!3NLgCY2~Vcc~vind^?c@Xu)JXJ+7qxC#P9Wr;@>lT?kXr6Ts)of-)lS%F3Q#gog!c8~=gt`c_1S78uBTJ~~3xM75^*rmswXKm9 zB%bNBM&#oxx&!BANN;N{b@Orb?B&OQ$IfaSj$csf6s;^Grz-!oy;wyxarRd2nqNyx zV)pGXH8TgT_ELTA<|R!-tzVze?1dvfNa$BtMl@0_x@U~mSnB6}E>>T8&l&_{O*G&M zf@!IvjsQUmR81}T)Yz2)57IO*l_swt>bQX6#LDvIX9Mn3gK3qO(HYcX0mE5h!+EBa zh2v!{Z$qtl1H`iB%BWTtAJ;rv1&krcVA>Fsa|V_3D$JC04k%hUNJX4dYN&c(dO#w4 zCnBu82UfmRsiNm%FYt?RO$G??iJjv)N`W1MjEv8w*v^o-5{>U_kV#B{ECh&j!kE+> z^g96b*lhf(Z$AEbp1dL$&=0=?f}ho`p*g}yGC=gSFa}{{j9TQhfQ7qMWA--q?DrKz zq}AtKhFmjKwmoQjxr-$#i!Lg9M4qO5G7-Io>xAJ(cC;V@Vb(ftQ#bE*>TA=zJ~X$2 zaI^WasjHRYR83Em5`cH5mj~SQC*aaMrmb%~o*? z4J*PCcDJT`4(qN#W~82G?r>9DY90HE@P3bFN)cel9GO8KIlLJ;<}*yH3&u^m#oY#z zkllKn2YX4fCBs1RfedLzJZ*ytKt(V~z3V?*Gp0o|N7Xhz39~#2 zdtMg|jMfvkt-F#gDpOH*DE4J@G^%~>Fer?uR$dIE3OA>Q@bqkpOCmD?u?H0xkWQc; z45r=#Q5Qg|6QMq1AYULCK?@I@o%aPg23@6kPzn2r~&M*@7CjwU^W(Q1)1Q%x|8G!a9o%SNml6U3T4 z_>MeqROYsI3P~kF#|;tR$yi>}YWEG-TQ##YR9@l}13}mqM+X#HxEF~vtZVn(Dm3tV zH*O`^Ck^V0b{bp;jdR!w4?HIKK8@XWJlV1DWpQw&K<^&Mnx zYdc(ApyIGe3wSyS7?!FtZumSVwKMPqA`kSK3L=|0>JPVn76iwJ24fAJVT?Ot%o>x) zJ0Mbz25XOSP1XTZt4_v%G3_s{32AP$y2 zZWe3)Q^?tlD>u*2xYFGhLT>!KAdcOO_+J;{v-6B5$jqd$yjp9fIvD4Kxn!A%Ll}et z36^NJqx9Fz#p`jE-OEemakIf`Q7t38I5pmk{Tf;L4X(9c?e2x3HL|0JPWlx;%V_{L zJP_?v7tal%bIPIPbYr!5ljk7~g~hAv-3K1O%D=Mox-#nCv(z*z6;Cqd>4LwPU6N(vu8--Wm|qlKH(N00P}RdV9{}7Gj`%mxOn&bM5x=1N6t&~ z)J=5U)xZ3P+WO~t+RtF_Tj-jHShpMdxZ87NH=mOWnpxYaL&EQY zc!h(P$BT3*jk7N=jhh3{gKyb|!<=u+%`UU^jh9+NV9-U-Z{H#vx0`TZyWK0;$$ZbV z$AUG#chCo37Pr1R4}VXODDb_goUh^9ZqSH%S>d_0-#k?R_25kNQ+EI|J`O3~^|GGx zs6#wh(ga5A?tZ@shNpY+3Ozu;H+6u4SPek_4Wg;L@Eq{Fn)hp83%KaNh!J|UGroDL zgSb-jJyvrY#QR;c>*gMDVYucQRqj1ZV?6?nq!bCnf1KQ;O`sBUWL;jDE=Y*P@nWom zg!ISJk=vn@(Qg4Hg2!l-_QfXSa5ArnwY^A*EKZn&>!`Rl?*J|}2Ft}ieFz*M_}dE2 zJ+)w&5X?{ODRkP>GhwB*m=$)1mBfBF!&yc@mI&-fgVNb6U-l2|lr?eAQ_4Z5UDelBcmd{tpO zeqE~AT0KfF5_e*O^NbH55r*lG5@IZROY$;0M!uc9s%t(mn27H`nG={{G<*PwXm{J3 zD%U*KUv``C)I zboiwZZ7{0f-0JH)I^f_me`P{iTmAf+(8hoNt%2PGQy)Mge1#`N3CX>Tt?2{hsa%oC z0TRKPcS|4JdVWR|%9J&z8Fto}ZW=3bf4dRa`o2v)@h>wp6W5XEHpb-9LMUU3tf;U> zik6_5 z(%PG)AZ=TI3x-@s##$sfYy-6<7|UeMP}v`1DOFZPVJl0`otr2w{Ejx8pBddznsb~g z%5JP#31RzyR`iEN42vFC3)d{N*N#tiaC`(H#9>5Bd?rVIJjjo;VF(}*dC4RXoaUp7 ze@Fzg?_AA-YL7p7)d4`7iVmZQ7o9QN#cwqEO_} z1<_ZS_UXk4y}20YaE;(H(1(zIbRF#*v*#O^_!;9i)?RhQHz^Z>0_Joc9}Vx}LeYk+>6#IDK5+{xJUYuD`rn@{zL@;TQUN z)wuk49ko}a&E>4AOc@d8oOA|Gl=Eilyuqv_KgQnG#td^zFXlue6PqxEIn zvMywQ5xx!E{qmIggG=564U)9nSK{Bpp$o4}n;@*xR(E*e5h8GGH`Wj2i*>v!({%Vy z)UN}dc_L*)XYld7dYSs!qk_!oiR89l@1Xo|VFrmHHwT**j)($aGe{&9u=q6SB}7;)WTlGN?9>L zS>_MScq{L%t>glgxAm5_^HX;9(($%YbM-X~bcN_j+pvXl8-@v4Me&$LD7Z(y^-IwX zh>>%Rc5oGM1z13`Ltv z<^MPhXr`uJ97MVDrA`UpG!y}+0RfywyQXf9rdg4^d7Gw1z53rs!`d~?%D&0hw#CD- z#m%V9TxCuX(hGDev^7SQtp;@gs$n^&XEUO$x2Fdz0X91@v|F%nowINnakt*Hbl$Tw zTr=0`l??vqq$H7`Az7sQI!0A4S`Sa zPz`;xDl6RzsCJu;b`#(<98KE*s^Mw@P>oi1+bZin#fkw>qghv@VgEl)W5DA-PQz-& zA8;C`3juCZ|HWw>rt61A>j#(VM^zgoL|TStTE?Wfr<9rhDONODrvt@`Cbygjzs3fi zqA=h7Ajc&DX@t1^2)5h`w%rV}IDpw6hB}^nwJ-2$i2CC+hQht!;XtwC57G#2N%^N( zk=FjFSdre56!Y<8Qhj6Lr_9vM{vGM$G)~7ZL}@_;TgXM+kcKW%@2JaTN>P3>U)^! zMGVc3?5!^STAaI{oIKi@I|6LRAz(8W{@9Gek;6Z^3Ls>0aQNe5fBEoodFOWa=h1(M z8UGGd?EgAE`1N!1H=r^ecK=JL;{IX(?C$t_`D@>20A}1^P|DX8dDdXW}N@G zR>l7-n8Ez7R>l8?8Gm5L$^RiR<7d;+#SqSi>YawOAI0O6S2ZYBp<6eh}hKdTu9QF53AW zU(cDSFmgK=WaBAUlZ<2uR1-htJsA@_^>(;e=0eW9 zl+Xre3UAy~p12RDWY0I3d)j^Q6i*o692)^e{HBu@)6`R2Z}JTMDJ9Z+BBX39*Cmww zK|1g5gr|`E@_Z00;OQa$7wJ8*-ht4oTxmR-0F67^Q}v?@|L>2|!FZUzu3l`Lf0}Um zwqky@Ra`ngd6xf6qI9$MFT&Lu`|lD7KT{mvncI%&&r)l3BTPS1-^C34Hu>?_A=#PZ zU0VbSLq_+e?v|IEFI*P=wH*`nSJI33g){3u*XL-?!8D%E}MC{d0 zti1a~*>Iu^QD`?;3qPG+;yIX#zm@C&_wyUcI;@Ip;;#so-PFIA(=K5!XT6nS8I!eh z`(d7b^1Pe$Ts^UPQttQS&cL(*cVeXf8%ZPUL3vDYgyMslEk1NeV&$8cw5SD(lX>rQ zYME^!Wof)`xirPLMrxbL@*U}hc<-l8>bm7*$%^@YgIaKWLVYIB=RqZL+@CM+BA1cQ zHyYkjH_A{MOmXD5Q^~y03~w#AN@rdeHnROGeU8O4MYJc^TG?xP3f~a&Xd3zbTp{Jq zpOA*Btwp8@rbU4;J<>T>{j^Xbq2TATxKTnzB$EoT!gO$9?Ft12$+gEc^ zeEW7nkh2p81u0G?`i}xNi-+~#&4Tcjpad2zxYi!eC(R14s-$M+)nM{3JoZHTs zs0kxBr72`jm|2l7i;|fj@06RP|18juUO6Dfy7c`s8FAy%^EIlGUY!ZE@azaGL&FhS z$aK<$SL&|{JN<9HH3(Od^u_>u5z}W&>N{xy$<>jR@BAiYZTA~`zblFhW4%Xf5p0h_ z;mlCPGOYPQ6vn%4<8eheD@NzlId8{#*pQ7k2=fxXBeYBF@>|Uq^l-utaP(UvRXH7- z<9rt|D9#IAeZYmbdYgTGhgXERc5d&nO?Bp9yTk(G$e>*a$@Zj)HM)WgeIeShx@jB4 zThxH?76q(E*d&eK(wBT=u)^6S2s1@3=B8#dN}wX%?&!)=>v~Qy%0i>HN%?TgdRKa$ z5b;>peJ!Z`TD2i?(PmxXm-3LhES5~dV=0T=-LOukS#s`?DW@M9SJp~Ha&q-xLx3*7 zuhx&jH_C%E0oRC8-G%zH>YQb`?eTYKv<7BAncX$pcDs=8KXreL?{Yr~Ri80^END#9 zdOlJ)Ae`Iq`s|Z+n1$MhJlLh8($Q3sc2;l3@02nXa;uKC)9rTY88)HL6uc{PU#cW!E)8b_FG!b^GypB$8tN*?di?Aew2y|TIC<_MPaur zh>TU$_~$N{YiHA6Rp?ehf3Z0}h43?QVvi@7r?NbG0{V+$^?LQE%E8L& zetlLSCihkMa{}Q!4d32V>b6_7oF958p&nX?l-(F+dzs9{kg5I;pZs3TMbPqW%-7y3 zPk#OkvGlJQLSSRP6q+-hpucn>z4_Qe{M)&z<}sWL!G1vBs%w<{_~8q2%wG>+O$=4% z8r1OX+Ca$}WHFhJPbxIfUH0`)5-sJYn)g$?N+;jia9XjCJBA*(u7{dNtqEC*TGIP2 zi&d`^NI!M3uZ>+_r%?$wH`*;)_8)eH2<@%bQ*69GX=T$JS&o|F^sVxeey|bNi#$F2 zJVMwNDfMITkx71xLd$*-5kM^gR@+v>eJa!#m%OOg+`K3`eK}UG#_&escOybS`WIAwK z|FGvqXr+Si`bK=$K)&!G;Y)_h6|&J(d1A2LeQ-Bv%uw+n&`oz=>@K-;c~hw}_5ulS zYsQ_sARiDrY z0vHU%o)N+xVD+Xp9mXW@y=ErX!pERzrO!QR&RfBC#vq=PEIci=6P)UPj8$}N=msW5ViRQEG-3~(4bYgm&RftP0(MjFw_{;;B*uv%Bu zx9LKkp@KDG!B+EO*WZZwdhxuTMTEQwy__Uk-gNdL77mPzaJ&8s#v17>Oc@p#5z$5y zg&xL%5N3-T3`>Y)d%qWH9m$@$7a5unCDdjW_$^9EI4T!8nvFHO<5e`Hb#yl@+P^Wf z?Mrk`TU6aGe{BYB<2+yUJbCN?;O#zxnu^zIqt=HTnAjSrBAT)Fz&}*c+XnUNmzV;bHLzKyg(Sv=xsc8&3Efs!Uubq-BlUD zs_3jus0XZyK55#T)RIbK)0qTBSR!*lqDfaG({iG!N8*mX^N86q$k}J-HJ=@7OMQ-( z`aSh5=lipKb|OT_>8Bs@XZ|zUheQOUWS0sb%P*p)PkfI;05VU*4iYW!3&*(5|LLW& zb61jx`Ex;h5^IuD{R$q*_T2yMHBJc(u%I8Wo%CQY>GcU43$X5bkj(sk=LKf^h32K? z%l$93e!bB0PrjO-tg+5)_$%2^G8ua*o|FtYAPM^yX7HvFE~SMtrt$q(m{A7y!!k9K zn1BUM|H2IO^p`PANe<~5lIhKEOgX>ONxT{Pj2R7BrY3AgX?jMvLq={t&}n28_-9mH z%B(MAY9(hp_h(82!i@gRLY>TV#*FXSmk#~Bc9+C@rn&bhNC6vI5EdScg^yjzo-ogz z^v|Bs$sV1C0aiuGPBvgwES+4+SuxL9?9ZO|&kmA@c~Spa6+67S-!J9vGv>Ovn zZu#c|OQ#O~bG<+?@KG+LJQvuZzjFzOXeDj;lVBFGt^OP@GKte7@0)*aI2F0?o0Mus z?Ac`&q`<=55V1ROAj~Kt{tGi?X7c3*@)J-6F;sXAw%|fQfl5Y!YHPtIzW-PiM+Kqi z{9qIuuqw1O3Uylx^~(!GcM3x>a1+&{aAKjUZjnK3;qCGwlZ>K!d~gD)_@Qd?gMdP8 zKyj!|;p6gR+wwwN)#95+#ZCh-cPex62ss+BP@uRAxqpDJL=}c_Z@=R5tJYy_SP+;_S+_S6+m5)ZR zjFG`1@&yU49A~ys)5OFRezr=zJQFf&U9Lm@+_F0jP8_hV8y-uA>&-S`+v-i2 z8spH7aTK_Tbj^L~n%JENC;kR@r>b~tRTR3)(5b;Eu*r|Vfrze(cY}uQc;l>qPEy!@WM_ZP)nPLD}r^C3WVzb=MI)x#PRe2X%|ZlMCfxjkBZ%{x@pQJ?N|+ zi}oI?xg2*gG#|yn#LUYW#QUhygZb)9$M#<5xn7swy-w;`iy&AKxjxzkK0ggxE`tTl zy{oT)dCS9saBmkemEWnz==eT|69JZ(pptv;C4gq)ADd2Ma^PgMhIZT0bg?i644u9?Obut!J!wb@iwKbqt5A!SNKB zFR7I`tMezim*bPY8VAcyQXV_Lo3}ErN9U#AjL_@%Ja3r!@9!a<++Z^nrO5%M73fl; zR9PGrj(ZOcKo`}?XQ|&h&&=lXP#Ecog%3HFw&*gpAjs1jaO~i_?}M;#5c1(yb0OjI zVA|Dp4;M`amT<9+sEmg$eCwP#y)^Y#VERSX^r!Ob zxFfjIi7MRd2ntN!`;k7JdR7gd2sr9PYn6$COl5OUG2WTU{8$z!4*?u_Sqm_b76T!0ST4jEG|C)V)3iUykC&iYh&X;Emz5)j7LqK^NGRO#h zuU5MWl@{Seo8?X5sytMlxmBtVKnvf2hRZLZjF%#I;8A>wrRWNoj_H?{r3zATZ~0|O zV^+P808e>Q)ooeAlbl>L8N{SoRpt_m?>t(QV4L=_nG8qNM#zHYy}w$=13|Kz1>i ze=L!Vcr8>BgJ8@aUUWrmSQ)OP2S+zGzJ#>`&kYfS8VaI9?`+d*S%f%+B>G+W7E!5y z7vY0}=gY${I&L4kY+Fmitux<$HvDMGUvs$J$hC02A3Wafo!rU>t z;nW5ZK1T2>Ab;6CxlFk$cTIwgr4hhv z8GKo0#)k|Gq`td)dOwJH|Js%PE3W&xuKUrL?IL+NVsZPjFw%oO>4t6pyPkWf)84h& z6(GMKEb!yu$h#2AyZTu`i(vmm1qYDeMhR5a;qNgSOP>-;z5W2BDO1Xet9(ny#hssv z@(`fz0H~D6`yG*27KCWv(>DLAkGMC75pTeJ6fhsQ)|LBM7IOt-2o@Kf={D<3Cb^2$HAmN_3>e0VOYeXa~(s~bd~J3>tFbp_`RqHdvML) zIeFuI)V}wNea$!!EA8+!P*oGv(wM>OukgN*xIJ+Kz%iNFw+w^$_Sk z&Y}@ZD3+;3q;1(Bcjgnv&|_~(Wjw0Dg1_dJQ$9#Rhepv!mdMjAMF?w#AqA@g>iZJ1 z1HQ}rFIEMw$%^)K{>80p|J|wx=e_ksKUEa4D$;MQ8s-RY{)wLiK^XGsfuJ>&b*|O> zjP#FiRd%8FxLZ{wDX?>;bO;GKESda>ZcPKN8P1YjLxxnT3j~ik97hS(D6dm^x z(ANoulDb|}NoU@c@F`2(9$+iDStO*Od(fA3HjF6L(z3U|1%w&CIfc9y`}Sjn8o4*J zEgEM0M=xV|bcG2gU{Kb^>ldqXwlg1IE3|svOiT@fYl#C~rNelv_3}nSmz1mQw-57g zBf@-cw)tqzZq1c(bR_1eI=|n1aE*uU!Hsxs*@wT^lCI%hw-0-BbH&%j{`@&%O;G&< z6_I~a-#7gjw*WYdK4>V!L4!Sf>%8clhwcV~y; zw9_ivYO9M|=VxwvFYu{ULnqNwQhwUkFV3gx%Qnp;=sp+X;qpA=r7)#Wk=DL}?C*pO z1>AlRAZHFmlCi4OTJ+X7E6C|vi~e>vXjTLUq?bG^lHtCSKAg|{YW&V(@XduaD{rIA z=C;r8UPdy;gmlJe8wNHd!@#Y? zFTAUEaFHoD0z^)}Ii=uw-=p5L??OB4rLPG#_;QUFix&>fEp~QsiXYoN;|4CPd4YI; zwtGDTaHzE0`%Z=@q`8S`H z2%Y7UdLRKY$l7^0K9+$HotE=eVSoNkzh9m==A}otjrV>&g&s~NIBcD0YMNPPYV3DP zDQLX%FNp3%$URWjGlMv_9`=?|b`u={pn}tl0y1f4Vsl=yNp8~;3SyIZ{CtqmM=x>V z_)=~CRM;t%=loC+P+LVXNx)#UMD{@>p0f}QVL5!D^qoTBs>d-1gRZNlC_e)ZqoWyk za4I|CL~Hx})NIU*hsOo1=^qZ#J5C9MpO0Bxa3nB0=@b<11~xJ~gFB?n$>Yx^!Z<SXfEl=_N5&8Te>%6Afs;lU)1z=dsGq0_#2RwYRRp zN%qe?D#vniu$|djX!E%JvTFL+3M&PPsqq|L!m>REus`szcnZg96!^=WR8QIOZlQ>5 z%=JY$jy1@J{@FpdXe?Lvq|!5qv-%V|)5o$NR#hC*@JDb>wE1M?9r3c;TR&Sjt(%3k zB~Z~6dNd7<3c_&MyjW4MUh0H{Y``cR3M020gi%1&FAW7gN6UM6Av;1~6b+(CkO=ew zpwr*9&tB@o&u>)WIM@Zw`MW|Ec4Fna_^PR@Jdw|eBOgQ9;Bg2)$!G2&-{L2Bp+zp<)<>F+Vy?*Dj@MF|!RF~jo z%M^{fYQgbgr@S=X#V#hzars?4ot-&MKg}+|c(cGCfLV;;7<`<=TbDMT&6jDlEZ#fj zg3?R;1P(VdW+lJ=KkV<6Whf`awrsLC6 zL(#OUJsa#&aZMbfM5zi#^Esw+u`}jZce~Dj6R+dy?27e^uESWE@{k&nmevrz?m!zQ zISsV0X>07D5PzocCs1=4uCX>k)TGpEL&>RI&{FW75(Z3wo8lx^#V`!G2FSzRhe^;S z3%;!fvO(HY3(NLUai7i@19g9p7lGn_!soW;@pXyaN7D@M=*|kU6IG>t(XY!6z8bw3 zU)yGnqtm324sKAgYF`jn^|RS%Yfl8w0#hv?_??W%H1-Z6IcNVxlsXYduhir}tV3dK zhhV@UH&o@J)XufzhYV=Qb%~9bgcUZPKCWkn-I6Q^!S2Y@;~^lZ7>SUWyF)iBueYvm z?J?1E?RHNB$a(lCC!7-pl4+KM*T3XuyYl+t!4AfZ-R2QwYUq`igi_e>WlEFcQ>vjz2)CTeD-8ErWqGgF^-UmLKO(+QcPMXw*l~+#DW~uDI>Q zyTu{M@;fc_GC* zCIG5Tj8(xglnQgYVW3u+gI!dIW+ESlh=;uxYARe`C4<`x?6H>ml&-U>?=q`ay4=_2 z7~!ku8Ksz~1W_&YCk+|U-K#Il{9wL*FlRW!3J%AXpBh(tT92Foe1|w4i7e9iSyga! z_PA^6TGzC?`MQ&Ccy+@lSq^ZpzS$WN6POF3r7#h5j{chWsFtKooMopp4Bh0kr-H?@ zI5M`(`d{;Ni+VCuf9!~_F2&XJ<1Q6s)t})OjmwAdlKeqYOYFT51bW30$&a*d1XEJ< z$ePlecn|FY{omc0v~EMKR0k1a6<>ut@HyT=I1T19f|87zUl>G_X0JAcn3qA#Ku|LZ zlS&O#1!PDI*8?S0#1!Sy-hvg9*0pmssqj$XWkl>o4*QbPg#F7#_Zb%9K3F|!4SU(Uf4Tm_4 zrN`opo5QIa7l|gq=krBxoz;uhVzM=cd10bLXbiv`q?$?EkQM<(aJtw-4bb3wYduDv zl<###cUVPLUqwai)9ZsGsF0|l@PT5l0WWj?3F5#LKb+w$3C8GjW17SgI0Ds7??%hpfKd_s>VQ*go41fAJb#4If@hHmt3OM@>i9&hg*km+rU1rH{6PL3j@emmc*> z!BTh%BJ;wp^X0%oeiGENG}3V@@>k)=ub`2iB9RYO!p=uWoR_Cl0#>ENabRVLtqSxo zeB@9D>L?F=go$*->JRLlA1|aHSiM-~jM>EWI$yd0{KcbKXp%gigt;BU8^7$o7{M5N z85>Tf4WEh_+;?rUg zRn(HWVP<61qxNyN9w7||1OFX{;Y!U<4tRs94EHrnPJ_{`v?wmolt(JSGlV{pfIgIm zJ|s{4E;N1AJaSwKy_qnf`+5R9KXF(Ig%(9(uYb@3j*hQWbyFsO%S4(DnHqeaaI~kI z^?Z0}^TELS1GHhnD&d3m{KU@*)B8Z1v14=|81}Y-Sbvx>c}%?>JaXtf;-wAq#lYfr zA}c^j?zC`-e0#T30*aRVml3>S*)voMtK?~k$8b9}Kz|lSK7dEclRwG>^hWcTTpvMv z=dP&PqzsLq&^M-lrc=Za`1kIh7OK8p826sJZ`q>IdC1jBGWQ!-PK*rB_DLmy?W zCl$@84-9VWW#4g(zUy=ySepX#B2T6UPrpnVuU8-PB%3=uj`CcK0AhX{_j3*Eu+)fY zFQPf(_Fw^*h0_P9Q}oD#*G3jak&XtiLJf<0+o*cy>AZ;PqNf&Ep~N+JA8pl@GIrti_^5gM08dlv!5alYX!5%A#>vK{zbG_E%?~(Ht48}); zBksG6UHCB9B}?}~IZOc)COZ!i^COHr9q)N;eWGL#`9mp+HgvX}j1cC8-IG_Riw1S1 zN3xN_MF;4mWcr6GI`wGffxSrDP^7aP!`;JK8J;kCP}nX**eM+T6cG&U!#^kj9~dn1 zMB`8Sfe)`kL~N!auLH#e;b+4AUkCSpMSywD2%^A5cOOAyilBhLFORwpg-*-BttG7I zhKo!tcr!??EjaZ>(v)FdDlkv-^wu967O@8`_sm=87dVF_?@8eG0Yy>*#@=Y2Df@}9 z@za(8RP6CB$&|4k(OXVa_ZpNQc#$8VSQdBDJP^$=vYjb9$CPH#^U0hZY)h1?s zV|{-t#a&E>=NH)j(&QIxGDRQqL6=WZcRp?XiE95a`xjW{Vh<7JpcgKe>2Y~=|+4ROlvNob$>`1=IPcdTvqa8Zz|ABH>gsS!*t@*z*; z{izl4HCs;~hzJNG1S0rAA;NHiU!t8b$xhgQ)z4=&2nz9MAp}IO0s#ST($3e1K=6SG zN!SZv*CMVy(=d=a-T)11lujMAY@qlXNa8Hqym8Ilun(8he^+miIcz_6mY2Z zopb0Z+afdBKC}1(LX0w9@D}9UAwdSTa{C@c4xnGCkl?B*+35Ah1~loRj~N{%=cXXW z_dbi4E^GcJ>4mzx8pZ zaDVNKTzvP}X)wo`()g7RYxcVe|67C5-2pyn0L$XmMYIWG&5-T}$S6ak8SdfaJbvo4 zrDDVryT7m#=e|hN^(c+we$|NaIQ!W8_mNK8P$wR!joXr<1PwEJf8@v4BWpX~YC9au zn!k|!W{zEG?>4Su8|`Kn@dbZuJryDL?dbNmHWueWxvvMe7ez3(^pg-7^0(tgS25x@ zupI5uBt*8#Ri5$PZ#;hE=7v0YGzor?IL+}*uEDB+9*Bp7P1 zc-sEEi=8+QA`$)Q1NYQ9o6jOs_E9d7tBd$EW_QjXt{I%zKg5kZwI9KrIxs%vZHtQh z>|-_gXYJ3Nks^8{q+wA2?J5Lv-Mz8rb7#%+(o^XRv)X=u39(uu8*t| z8W+t*z{(%-0`{vBf4r?vTrQrrKQHcOxq4v!&D-~joyHZ<^B;dW-1LHgk@kKd)g?J0b;3xs`BediPKYBhNE z`xRdxOvv54cyT{i?uU8q;~$YrlZdS$TJU31{A&uX|#y3Qa#ke*VfeI?VlOryjK$dKsu2ybECvacv*-Vf=xQ zk39@xzv|;NX;<{dCuI8M>m`}*?PoE3E6{n7BeC>Rrd{1aF z+_@i?&sNLd1y)=?@bfkKR|G*-85SY(AIJvgrBr%FnlptLU{rmu~@6 zul}xy|2@z8JLL3lxsN^@xj(IM1_?(8qj$iTcEJ&UgM=u+!jNwQYkr9(Cuhmv<0ky? zkD-6=FCIMk@fHRbz8a2NVOv2H!x5*xoBhYCVCRB@O-7e`VlaG;S$)fA--Ta`v{$$H zc$g@_cq`=VT5Vx}JS*c30SC`QErO~qVqIddNQ;QM50&)5>b3>zrYb(&*q59rH7PNv zI@*6Qm}k-Cv9)oqNewd(3-^N8I%|gWSPOBgU{@^(T&osVhd_eZ9&jUJn5r6k>btMj68#B*gcbmTsxvE`kK$A`jZv@O^Yjy2ppi&t{|%lgIg z-v5_X(JE2UsbeNln4fo6MSQVvtu^H2(tPH6SrDf%2pS)T+F9fCg}%u`NwkYyB@{ct;LOPh3&sK+Fsq*pKOzC`HfJQ?~GVK za?JyuYM1Z&r5d-BK~Yv$=sCK~yqk=;+ph3#;9h)9yqPx;X7nF1d7N~gNd>};x}5m$ z$*51WK$!9Em*RWj%*Q~OaVyqynCnPgX*2;MxF3F9`t^SH&9i@m#*Os^3&)N4Rh1{r z`44M83_AQ#p6ash_Wsx(5qx1LHX+z;db>aC!kqhYkI(GA3Ym)w{KYZII+XGv zGx2NAHLPIouzJGEq@aL!0<3AfqnIp2l3Ul9d)UW#vU;Zs-#2RvSb9eUD#>^CZ z=&v6?k3${){%C4G`tu5xlX3qS+@8X42Z7&sgr>jp`SRd(G9fhsy&_ZE35X}|{J%;0 zs?AwA5J>nJJ+OuY1d{pp4+pUaN2zdMkUz(#eM;SwQ$vsW0`}~MOQPDk{F>%`S`P(u zv_*lKLf2IOw(Z$}(1o|Gg@cl%=Xq;?Wh*yHeIqp&U@kLI`Jun6t=k0$eVq`48$SP% z3LU?@2A=je?ESSI1N1%p?)W(vx_dhMn3V9XB+!Zys*mBxt)gnzoQrSsW<)$y|7O=_DIF*1L#HJ zb%U0FF@;sDzG*YiQ<&)2nm#Jfeb{99u*Jl&^fr)GcqH2UCOJ4Y_&#m+xYz#RPOkyb zQ{4G@+i+C(NuQb1gq7{2<vCLo zkiJGD_DX@F4&Ly36cAIG>c*SuL;?VY;kD;LPjOp2&Du2Wky*O4Wt4|K@gIGGtpIuo z`@79fck4VKH+TXig=3SaW0?a`Qds;eDFE@}f0Pu#juSyo7J?k+{B0)#J^KGEqX_=T zU2Lk#Mn+rx6E6y^pAblD+EU z$%e$pp0?87|LQ5oWebfpqfO+`m6`n`wPQW4n~T*G|LG~-HGS=`Tj&{nKhw81({nUA zcuf5`usRKh7c+mRCl80Hn_v1@fu!Q=!tv+n{U0+&YvTZSu`;y2Jh8F);rqti+WyS$ zcc7=B?QMKsIapi$k9D#BKa+~D8-Kp907=Ek?=L6Yd;hbl_;Gl=wZHy#W4`mG?SHQ- z;{U&J7l(#(JU8b0>qlELWTMsr?%{I9${{OEkKKZ;{o^iP3r3Uv2X{ex{NK5Y2aoH%gYM86-51v!CY>#L-* z5I%|IaIt~B|F^1QV6~*M5#TQFy(}*WxC`Ac<>bF7B{>!6{|9#g9Sh(DxQo=y%>Qr~ z4*$4|sw2c|EwvcnE|>uB!eQJ*Z?0j^B=T$8e59Ir`1v>e zzb@-NGiX>pOk6lawP(%vwXriGOB{v_Rxi)x4Yqt=j(S(WKiVfAx_`aXZo_c5_gb*{ zSo1X_4vnqu7s2bdQ@1>~h?iYo>r+l^`0uH=TK_pTQ{L(rukQL=diZsOzHy3lE2QA) z;1PG@6oG&C_fZrl8Ch+2&SQ2Fu99^!y&Q_26}rB1vCv0eUecou20D0`$8eAAelkc} zskQB7eR$nvcW)tlZWqIGx!+SlCKKUms(C6$K8&w58%g*1(t43=l+S3C+R2RjiAA~_5$lxsHreydl-wr2Qu%Sojp%0Ga0`btGf2s`O%c5pJFfXg-%DPK#EvQ?80Vd{%P=5)AcT9ED}A z{ki{zzjNR0eg0^WqsHvO@W%A4X^LZ_tSpVTt4O+(P+!h4cdu^c!_-NRTbZr1r1R6` zn+qSji`yT^>$aVu(*7pbzCFKf_iDN!bL&n^LYZxrBa`*_;Cip%U>9#*j;YJWzHM?k z1s{Y;t#_bFi3`f#7z2CXelPzhS1CH-yJ(3DR=QBLKV%yOQ(pXCYnb`h+DM<{!~G*E zg*Gtv4(f5n0)3aQ!?xS2u=R&yTEASX^H{uugZl1hg$;06Q2*?*(X)!-^scadV#YqwamT9rE;eH3{O7+ z>{y)kbz1Nd*MK*^w78VnT=Lkt&}=x?Pow8?&vu$m5Ayt-c-y*I8 z>yz2^TI^!z2R%D)x_Zaq57vZP^Gdf+@Aqm+!dk>t<=*VslCCd8AK$laM%RQp>1-oXy42lUeKC%c%b9r}=>Qa;L|qmNGm!i zffO0F%lUx*@NmVlWbXGxTrE|2B!R!9B48IC`B+=gNd@-+F6TNG z>fU_LGdk28F7Iom;?R6LFj_e{nm@GkB3@fC3?6Oa7oGniIu@=Nagv5kuvdK6Cz#Y6 zecCKWxGVS(AtY_ei@rN1+ul2uCziheU{+%b?Uf4BV%g6IClF#Q`=qP=B*;8*nRl-= z@+cISMz#3Kw;hT!OvRNp#=hl|e-kazX%^poGkzfYTpf=@|5SX&_xM2egfTP8cRV7K zehEayn1Y&wIThRYef);au6-{=jnWda+Ps_a(+d)OwCGd&Am?_aXB&RcK2Ndzg4?w( zhZ~Kf)>T4dnxxm=PJfH$-G!f`(U1c~=6(`0iZ=Pj;ZLWU%`5i_5=W0Ne!- zO{h)302at=rzh*SBe2J-^`oC}&lBo|QnH*bEgQio1Vp2kWy?mm>R7*kr5Ps2j$iGcP3KC%f zD0maau_qxFQsQ*f_acLDyK85e`Sz)Gi!mW!aTEf z8u}CsYyJ;+(c+Lv0j846GTt&~0fXgy0B#T?6kV3kGs-MLf`!T>B1v$dswg04&$MI% zRmDPob~Gv{;sghe!2XB3NY7c;$@#*Y18j5O;mw(l%ntbvcX61Wd(@Kqdph^;uiQ`? z@IWMbKGI1{E`0#$*nxzYApzV)00<@kVu`wx*fz?{M+RW%1=k%a={|7mKQv6$X^Y*p!!M6vyJqt8~i?TFYaI z*{&Of)9Z!J85OM=6)#m0`9~F$nNncAdOTlc?@@VKK;^(uMNvj&jYYonQ3=OPI3XbB z4H(H!fkl$5qNr61M^!Yw>Lu0cMO}C}86Js)&$d=C4pc>vt0Q-+7h2(aGi6bfvK`&( zqt;iyXI}lzD2|hdL)6IhmSm_C*+Gi@rIpO=R2@cp6}3a2&w$VCl2O3WXJ!pe749Qd zg+CG+Dmxod&Mo%{=|hI9rq^E5NtRMemf3v4M|r_VgL-1?luv+l^lLOn8@0@|8f;xZjbFdQz66Y=8p!>aZg zMVbwg?8Z!{HYXl86Zu<`_?ez>Hs^wvYCs5!%(_Zm*sK0J5`QZ|$h+(?zC$DO-I&Yc zS}SK;%Z?Fb{vM7cxQiYB zH{aFX>>qdRf>>s$&;WAPmznh3>2yC71!7g_2jI4()&)%7E(OW_9zZWTm<6~a`8{48sOCT%)5Jfg;y5B^tWjp!k^!&e_@%U zG7r<3f4dV?lR8|I!Zg*pIiubjZB|E;aw5o8A#R<4*xUf11HgcB)aC_}xl1QU{@T??2Dg@xjUYsW4O5UalfZ<> zqaJnF6{AQ8;^rXwaUC-Bq@wurM!qnR+Z@5A0^oQo#S=KwcVqrJc$Zn>*+VeW6$LLq zj>ws{cD1x;ayhXtTXX_YYGo)1o*X@QRAj+jQ| zFG}X`^U_~WPnd~g+WBKD-^5!L2Uz4so8Y#ZUIn@d)uo@_CuPFRlcr&&lh77bp zFh^1b`eYs{tv)O~iu5GGq-F}F%k!)Fa=)1OJCdL;ze2sSuwfcSR^pCP*!Z`kgfnVq zSOrJNgAiT;#gp%IK5qgB1X#cZHV67(Y&<4jRZ_MU>Q`F$RF5k2%`o|k~PDtksn2>_9sGdZdB2$th40tAdP}FR5S6zETOpg5a3?ono56g(D{Z%{r{exgx` z=F2$}n3Xo3Rj-;e&6u{0hhwc^P8hH+m6=LKF3AXYzmAcpMY?0AyIS*!p#E;D{6>rE z;3Ie(2_6BOtu^4{v6xX)&6nDm3~-#`$jQ%4fZ=R7=13nW*NeM!X>$oHedKku*WWO)ffmv`Eu=OT1 zCI{B+yix2jQ7lAhOWf?}fJLF!LNyTK9kg2yUU2RJdmS_1=VU5xZbI5Oo8NExQ($1L zy3`JK8VQ`8n7@_{Hw-D5uUavzt}f~T*ATx*hWD6Txf_81q3BBreMC`7(p(9Skz7qe(2@R zl33qXv8mFr2%;EU;$a^odtolX?~UQ0*A)e%3YVe$L{hbO)%M5E?bEd)q@Tsr{NcJAz7+p#Z-*H~1#trt7&H)^2Fj!{O1UvDqgle2-(DO=(p}kcvuTiU zYSf*DI-p@e_Yi>;SO~eQh`2h<3%?&U6icg!BOyMPA(UMAo`Vlhd7QP>RUV;%kv50y zG!PvKln(mFa(bAf`_wuQ>mCZpd_n}BvH^3Ge$mkwGi?}Cc9=iOADz`;e=~%nQjj>> zw9eL`jseV@1Z&TPI?_h{NYF;$*$Yb$(bpom1y$>{g*COJ7bap(882!5Z`?)un#-d0 zb5Vo;!Ce%4!A!pB|A)JXQTWnq2@%k0MuG7lRO7}L$H!6Y_gMzny&S1b_%IG}0kl0y zheMp}c}_xH%f94L(c_`sLh)@DIw;p%ZI#VxVm8uk!Fg&Y5}Ap7I`e*XeDxVr?Gf_y z4d+`cdc6sPS3=$^?b;5cNbXtf>=77X5N_Ku;?>qSYIb!kZ^#-8RF`oZYBf8?aGaDF zrf8}&Nni5rsk1X!9EXysEE$-;0;m4SJC%<}4?B-It&>Zy1k4n!%RBw_*;YPv4SM>X z`lI>zp^HL* zxJzTt(<`-TFg zU!q84PoC3U>-T-IFnhpZ z2wy4G)bA}T$x*oP6(s=TcKe2>XW!`ttc>Q*Ic@`x`ibsg)AP4)>pdJdz1tGDm#NEw zLqj-(aNoja-|RK$(LK#L+eCg1OjI(3Fg5QKjs+OL&) zS^ST(6%lLQFsEe6b=>7nvhBXl~zai-o5$$= zRm*HGwy)l)`8(Ap$C^eg$xnSP*SQ1wl*#NWWO*iVsq;F1Ql^xKQ|rCj%c3J^Y$Ba; z-7nI@w*ySVYs#va8XHKYcR#n|3s-Zw+y6&(ulH?Z`(E^!DlHJb6q$C1{tVUZx$E}s z2hZ5C)(9}{LKi=XP4TN5hiJ;276aRM^x+PjVG|nCD`+$E!a&3roNj!{*Lt8@x#Vxr z+N-9uL05GY&Wpn)(}Eq4=mgBW7JiM{sdMB~>G7UV3alObM7-=Me26H$Ma7a@Tc=ZqJSEk(vtLZ}YDfaAV zh1~Bel)aNxC*fdJ7ZCqkI83fnl%dr{a*5}`x+({RS@inppOhX3v6>jJx#FOCbHpX$ zRouyE_+6-F!JS4$Mjf}xyM{8i*i%*d#2_Ztoewcf7d*k0&PD7(l%74Y(gc0f2t*14 zqH{53_3#Q4TBc|rerUhB=yCI56NUnT_~4z{kkO21v7#7U{1rZS?KJ*Eb|!~Gx2J2o zAma2BAKP>KerS%R!?A<+`AAEfa<9|&IEa)2i+03G0S6awm68#L*m~_=pJ2Z3q>sjL zGa~3yP-h}!+@maazQ1eX~M*x zu_%(ldw|VY9ot|r4qoOyjk1OScaZ699||;^UCrlX&>2ljk?Bb9Qx8{T4PHAd*tdhB zb3Onuqc98;@i!u5Mq~6$msn70OFrUCo-aUFSB{OBDw zm~C{JP{H)D`Nk-TIjM_p_V6U~!uBrGinhd#cH0bH2*a<1P}uVT(do;JTP&7hK(28w z^-8Zk6hniY!o7NrA&X}oq!!Kk6&i&+9|?niPK{u0AZ#B|IHx9sj@%p_vo=@)zU~*# zQg7rZxx?7PG4v^=^dL@Jdi&dVU^+9*6;XX_u5fgZ3wPbk4(2CA5vo>u(VTKTBrA?N zM-ca#O>Q!Dg9qRcm&jTkDVZZs6&e9T?tLx|)`IA0R#z4@+@xH67O1q(j=+JS@;hK= zG!C@mE)8KhsIOqAfc+D2qHg%dY<@k!`T9_)&TDh8H@c^1(#|C2Tu9MLLz^z@Hpbkb zEAgve<`qHV5>C#LujNsqz$5<`b@vt3RKPZRJ_(S7CIRWa_pTs)I5$Q!xiWF%I2m*=}1*C*3qLSIZ-#6!+Su=An7qe!~T3iR%?1W_R=lA?o zo4o~7rQ05_+pK_L*P;f{x|FLR2x29lj{sUP`1Otvj)atA6v=;1en=e)>6R+p56U*! zthn$J6fGXB<^j!L@2*iDn7eW(eSnd|L{()f-xvz-C$U*`5^V4yrwCiU@^wpVObJ3w z&AtlyEIE6HNxOS(^BAne3IZFXRFg-ljw(J4GqnEfA5c+XFknX^NT0&;SakB9NDQ=b z`ax}&Mmfi4?za+Dpg=gOoVLt6-acch@NsjPOkdauV-I4Sv~VIVx2#N+dS~fd<(yA`cfK0M#L&VGC{j<4uveXx6DHh6l5-sj0wWM$1RR6tXYxnY z_*Nt8i%I|NL^bxe|G7r>ySwlD;cL27dXv&JBDjdMxh&8fg$oG1?$yz@Q`2wnK#XD&8lQ z85I+)H~sQ0xrhx)L3bvb$BTlSN}W+=uu7ED0EDKw^wAqK;Cnwt!5#}&GuzS|S_8ECbs)2vLNngAA7?WiO%*OB_{q|yB#O^84UHs68!04}V z^ynWPa|_P&YjX^uAtV%^N`JL-b}Wfm7Zr7t`*(3{2i`4(RNsW&csh!vBWgCTxA9iO zfyr3Fi?QX|iIv?kgXIZgebm?&@%RQR^0Gj^f)Tw(Bftwhg-IY9DviO}aH{A^aq9xB zD5CARaF*6MiyZ6$>6C~YndK^(B@)+9Z*UFR@?H!PfrHNSu@6>p_S2IOnx=l2V?~6c zpY~@%M`I>-4N!l8VO_;e#X3CoQj!}7LILefx z-jvC3h8AZ)w>iU^IK$2W^dq4C{3OyH5PSFxGj4__XvRH7KhOlYY|=nW-!Rn~nOGY~ zdNm2Y)bk{Mh&Z(z^8uB5y&jG}kq%UadGtq*{LzVxk6ni>I%oCSHBDb-=m#Jz?Y!rIEYCT&T6h&hdzWVz7@`9NW;k0-S*W3b6{bO% zGrV>)Ze&&xe=S{Ftx%cck2PViBNN6^my z0He&j+>nmerEY=cZk!FjDiAk-6t+U7`|q|n+nDdork*a~$rcZGCoQ(fUdq`ZPnV}o zmp!?cW+dX(VX%Aqg+S|BA> z0u*3hE9{o!Y&-~)gr3EOAYA08U0eYq=JDsqO{33$C!amOcjSbdJY8Niv_ndKo^G{U zl>0*HjsB;Es-dT+AD>##3c$_P=CG244-$kA(kLw7>K8s$?4>4F5>E0*U{ylLTtWwX zX@TUQ#sbskBwDtYnzpLWs~QqWk}Hu!3na*Al`?vjFXs!n7UWJV5^}i;&qDGyK}d$b zXc%H&?b!&1LUb#T5^hLJAR7RR%-=IFVjw|+)*iZj6v%w{5CP>01`kl7X*-~f%wW0^ zQcpsY{1;Qch#9^|bNRJ-YOBP zzj9Y{3oE%`KV)G`Y=uayVkP<^Mv|N6t~HfEZyQ7+?ctsF-bOwpWV8Y z-D2mrV&u0IB;A2lM5c>-8lx=>8gu=dP2Z+lSHTwJv}>q5R=^rtgqwQMZwhz@D*ID(@cA@dZ5J>W1DS~diw!xfZafIJ&ret;!&xg=Z8JhKsO!YDyEZf32k zxvVQZacooh(SF5AejX$D*#=ni(rxL)L9pqwbI-1H%MgSN%0c)>Am$U;0TnNEO$eW= z?a*I)J^%^~L!_j42PYwy^%x!nK*e}jKlwH#IQv>2%ZKph6P}&YvJh{Auoh!_dbg5% zwwT<&1DCsu!rsG@=IVcUiEk{u)myRrIW}3*?irPCU$elkvVg;b>AT{y?z6qww#204 zB@S{y4tt9!cuA@54t|^6;dB6=`7DGzA?_`#WvYC%=Z!1a(<|5$t%I8`zGuOXty%|i zP%I!_epmXwyj(vmJW!iF_!<2}E@@p6x^bR#0BUsP8u29y`EmOBfYZcDUEb-^5CWaY z8qGn(kVwQ62$MBLMw;ZB36=^*Vnx8wTOB?u9)BEk$b|Rnq>8pj?AWd1vNaF;`6H=A zu$WlSp5(Rg$N=Y?|k;u z9y$ODKXQ{lhr%g`@(+Ljpvkj($BkzV_wdwDJhfblfu>zy;iR z%EAUo9~@gApM1ld2Or$Q`;z(wT(%uRjr~u9139OCMfDIi zsIQnpBvUa4U|N|zv&vll3U7}+k_p=F!H}QpxA)gYZUo4`I#N0dP!|lK==;$tiIrmv zkd-?2Z9G#2W|xQ0lx`m@+Y^)<0#s=N!;?`eg8pipSe~Yze>nq$LQrba5Ot}*!&Usn zx1U6^zICp1OmNjXU%R8?&okMnv&8SAo>D=O>`=~gu-DY_*@FO%e&7(IZgN7n&cQ)_ zV75?*P>zGHg)O}8YyQFPodRcB_`BPN*j~vEz^q(OIz~wO-#j?4=nJU~38?xWDt8uK zjSu(oCDd^RwLUmes|-kRz32=MxtKrD*FHK;T353_KUDQ?d>SsFbspy%0>OuNHiXu; z|4t&F%VnLX3WZ&q9mrXEHYcyMj)2u9&pB0p_9bFIy8K~6@3Wx)jNolXvX=(4-OIE+ z+h9Mtzl4@^ZD6$hC$#-dzK1`R@~`{W$92@fRB6u{QDG`}(Jk;mVfbm%-~Pu!!rfmnvEQp~;swtB5Bd7qj-^ zyRaBe2#k(?tBm^%C+w=M*Om!>AcjuJ?77<^uNL-J=mr7oyz(lAS36DI{fK`oL)5DI zdhVgXyBt~9_a|T1-_mg2_S)GZe}OmVU}O1o^5U@i&NB@r(emw+?K}Te#ROc&ZSJ}3 zjo?2EM`8<24~IM?JkOpFK2vxkIs4+ccB+It{*%ThlWp5dgP9}e^OsVq(NDod*d9yh zDze2^8O#3TTxO#&l;&>3pETFyL=`F$Lt6r1(6Y2`1gvweZO$RL z_o8j5xR_XK#QaHee>KLii19(&PxFo8mv4Lwe&0N4R6CQb^60+MYP;2BX|C7X_2cvM zYkiI)+pu>(HXa2AasE|~NK?Z;Z@gGhAWYV$&(kDDJblV^`0cJG>6Pryk2ho(xgx2c z=iE`WdI~%^ddUUu=xK`%9y~|*IZuqVT@FudDlU{aPNcS@)Q>OgocEsim;zs-+^3w> zcP6>Bb%+X2cB8gI@wb z2sn2$>wc|}V4i#JJ-%FL#V{ZWJ9g6*=iQ}S?rrwIQ>f^1n#=bB#c$gcML5>*Eps&V zf;T@#@j|#1m#jT6gn|B@sJ;`(u0T_yG?quHqQxz^ksoEZy~PFU+9xd@~4`Qe*o4a$KFQKx{^st2gkuZsfb`vo&qckB3cd>bGaj z@#05wcE7hq(88!0DU zLO;jRY@Fq*QISCk>$<~+q3fwIpQbet-6x%i5ybeL-(@{~e7~1eop*MZKD)xZZBO=p zm4mp!q#!QEq04y7{Hlu4m75RPRU{qw6nRaoSu}Ln)Eqf0;h5K?==3-{fyZ~RY z2o%5Xaor|J);37Q$V4&VUkgIP$wkrCK=-MEW~iCoV*oB#7@<70+(I=y!+{orWvHjI zzxzE`+dzrPn=Y}E4v~`gqYZ-a7LVff0}~yCZ@rNDM;2=Sn=ELy+*AWLie=sS4_VND zko!OS4+j6E|KOIb?UHTkk!j+RWBMe^*s5I9;J@P!K>y*c(Q_@wGF<>G0R0EI+PnY3 z3husH&K@m6o^4^??f&<=ob?B_&E^fQhb(}Y>D?&<=eJf~bG9xY?|DpF0|^L#EI1PE zJr^DZe01^|4Fbr5|AxEw4}aUw4>gBx8{A4T)Qb8?7Bu2bH51JB;{mc@d?y|73U@W~ zt#q^P?q=V=8x2$-yza;OyCnf?!N#P{*}B@@s?*b|+1H`PAAk#vUBN(&!mGyXKm7+^ zo3RMb@&D>SJocE2_!oaz4s)J+6fpk3tA(wnZreA-f%pS9#|Bqp6OVVs=Qt0f|*+!gt_y6L|{5CB~8Sd8?WM*nvR;vZZHXu^e# zL`N*dKKhvcWF!8+DiAT)*0hAy%#61G!54CJJJWC#4Qb6qdDTNXJwugUKnNoGV@B*) zM(j~y=5%Gve0%<39UvI$F8>LJj?3<V0X3p-~U8<*P~mz&#v0l07sz=b{H|Js5$`}t?* z@a)Il%Il%F_%d4nE}Z_)9K`<@aAEKNaSr1D1Q))&nr(6%FHHP@H3#wk8@RCZf188& ze-ADINa25h3mYE);6jb3z^gx96$j~mq0i_0bSS)}tw~{Fgg0^j11`+|2QDZ*`k!#& zMdN?qLW|aa;KH5MaX~3ubKThc$YhnX4yt2q#e?0HDVfOY*J_8}lU!9H@E2THK6!qN zcKWc1JuscK&&hLKUdY+_gM^Yq>g?V4jHV>3YmZ;r8C2B=fAosv2-b9*a`T+8|5|qT z$=8=YB);|)@fyv_@n$5=?LVuI9V-&;ALM7*4!n75o-PHnC1JUej8%SZEc?Gpdb)sE zkAgfA{`L#*6!KoIeL!yOIQR+Aoo8Z-QyUhP88phU?n?(1!XRhWn%IX2zxB^s9RD1S zaQUVl&`ex2F5Rb+`mh(mD%EwOwUYE_$}HqSPGj;;va(?hU*Gx9TdXw6g!N~*miL54 zBaf3krXVHdGp~uZ`ebGy?k+i?)VD3#ozI&{`ElU zc)FPqcWCCANRv13#S+QQ4$jx!hW_O2#Y?3vYIH6Y{-U;DvF10_nc7DDvuwD*7PIPX zuclGCAEs{+cfU$=CDr(22RMic%*+uTB%!|pjFmo{-VvN1jaAY}1=qVV4UQ6&o;vC< zbmmkpIh)2i^-wVuEnFewNF+9lv6FbWXe!7K`%Dcak-T-&7OVHu3EFjZl>Pa-TEgC;x4(Q&cMOFNuoAJ+CG6N?PLm)fCQH-FfrLctd?)9w@g`%O@>k{8u@hzT->% zQh#I5TaIy%Ut?c$4nz0hMGn?lG*GqXyIT*X#n<^{g6Q=GsRMGCUh{r9 zX_gH=r^~BIxSvrNJK+Wmkg&e%a>MXM+chab>mag7F?+sy=yijqi2J?wgJF}DLut5E zFLQ`-2T`u_^e#?pyJ+L+o{*tzY&vNWqWSB5Ee#QFX8q(E|CL!ceOD(v>Pd6+j%RKfp^M|sl0-_84{MC; z>GcZK`BP;%YGeH^1xrLNv^h>=bc;NuT%K%~nQI~rgkxzdolkXLu8Sr&UCjNOCW%ut zYpJ7U2EH`wg+*~ViXOtcDmW^OLi+~@)IbyPEAN^RfT59uuMe}~ScrxA| zC(RH{eXC*a(v4T-@!0~No#6|oc9Xr z)i^=Z<(JO+Za&%_5pT^$b7=Mk1ND{O#C#a-nDX8;7GZngpxLIA|GoKPy7fYT*H5Gp zTk@@aQm=Y?+X@CNam<&@5Y-u$Y8J1K05RsacK=XY&lLvDw*yq8ir7G8g|C@So#{8e`)pJxNgNEB4l^=b8K0WcloUf z0qnj#^!xq_r}*=6M`d;uWfTA9&dQ@nD~>+bj`MLY3StufUvibZQOTYSU+;YC{xr3}ln(mLZT3Z{-jUVIpNHQa*gmYj4V@ohIn7-AqorhXKt3baQ(`Z=t1R#v zuin#69relHq9|ydS;e;3*v;AV_WZ&r{SC?QmK%;fCh{-D{aw=^AwPev-~N4TYaXvd z{9=`qSyVLsTMu`>Z;n@ zFG+0Ixfqaqnl68yhJJiKEQ~}9;igR{kD<2?vCq6YgU1x5xs*j(O>Sc1DlxOo*WCjY za>}@V4M*@ZJFy3vTc>0HI4KCmFa%WiN-?`3_#>XL-zs*c!M(KUe;HY4hUqxGUT8sk z%{p*M$o+?FlsyES<4^ZJ-G7|ys*MmXRvlNs%b;}^@$D^+i#bwVEg;Df1=WtufT{t@ zO>}fPd`ED8IotulxChl@A#PD&I^vHyA|L07KRw3=jc`QjU@>q>{1zs*Lo%KigGua= zN>;$6!ll!5Zr~JHvtwdiI%4mp$6jBHRU?VZ;fX6+h^@4iEe~a>8M#@#5Xb&9E|C`3 zv=9u_h;PjaWRHsPbQ3?l!Pm18U-2>WO{mP)M_~XieA7x8W0rXv`VTJH{)~GsEZsM9 zW3EH`qZ{u`PGUuKA{UT@aP#d}NP-+EV0e?h!NWE?lKxxCPT#9lBI+2kLPYTXy(Jk3>}tC z{mv|}#Vns+S*Y!dhhbSxH?tjMvrKZcjlwe8R4JE`T(T_u*J~Ih2dDzjP%jh=)s&O4 zn3MD?Cxs<9^%wMC4k9c!IV?A?GdF)R_rG!w&$glE_wp*;^YS~Po&+c`YFn$D+raXy zP9zV23vIEv?e}u)YrtQoQ?_Vx6lHTfUsJKG!T@0KqzMKrU>{k`pZt|S%~J6GSN`K^ z*!U=H?q0z{Y{A?%>@hljDXidM4q`mF;9FSXR&L==XW{N*;ci&L51#h| zT2uIRy6`Nl=yJQ@y?fz@+yat3n14U`3n+(Yk!`vd3~YW*LX^-cmH;^j#_$s6ICu=Y zgs!%PZLA~_@eeNWkCgy92;sa^`U`k9vV>2sB#{75>@NYZLNa%mfM`i|Q`xPtGR2*; zq^7be6ovAqQri3FTD7HmaitQ9BM12f4hK7Uc%twuxL1&cz#@v5b0)@m$kX_a(! zEDHF7mo-%<06B=HovN}Fcv5)vlUjIIcum$$RbE_mj9z8oMNKhlZK+~yu^vUaNo5j> zqEe6I&ZpXji`qM%;PqqGX?k_};dLEjHHm0==cl^P+LBkS&)?+LC8DYW;$R#p#ji$1 z@9K$JC^A}i!Enf$Xp{Q+@cMomMkubLuDEs&ewiGBEqM3K;1-DqU;G;r%4!1kv;q5b!%zTRc-HO- zf&ujchW=+9P%au4<|ztBv6s~IAj(k?<$uA2G^NfA04}U{6cl{HW| zZdg$YRVk`#6xmhP-Szw#RU@J6e}xMz&$>!cPzDrKr7q8n`^#Z)!VsK%dBEj;U*W$PX%vb|apdsT|=Edo&pgjEr@*z{)8 z0JtE*Lh~hs+A{@)Gl74ug@rf4{&d4G>iR+exWL{YihLQC(zSxDT59U2dWYce?B514 zl8;fbqF}_jJ`4g*`s_7x{%cNl_&=9~g1I(9i;AfxnyB|x)1)1%KrZ*nehr^?vJckY=sSJXx2Xr$$sg2-=mX%wMSMOmHtlW#Mgy#)pQ?i- z-RuSRiE4hh2_RmoAJ^7684PDo)I_bqB2r+$J@)|At7at4_PDZKhzs3~KfqyQE?O|`w`d*d~*BOXdZ1#JF@qPStp zqoaei@A8+aPn!Cp40s6ELU_tx$vb_Ce@bjwOEaIBWbMGhR$l@tAQ(7*rD*AOf}RyCLupwFfuMAb&VQwJ3tS)wej0)npnv(d@1| z)r_9{A*X%(k?Y^+zX98R3bmUmEXk|VWvtRSuU0*d;&}uGTOK@4^^Ht7)W4tlZ{#=< zQxPsrQ4>yab!?20cu}jKM^TkR!5R+yp`fS~7zs6eMKxGZjph>q7RFsCr&z|jQ?i#( z^Rs)9zXuxF1Z|_De!BfeafIviock(uFk|A(toVDD$0e%wOBV9s6($r#9#h1J!*!ld_@_WUxo1zLCk0JsLYiPaiY0~JDQmD+=dp1BrYs?)Vp? znyOmjbFIogJk8(>yWYBd65TO@n!RaZShO^Mtm5{56?tJkl@V-on(AFK_oo#Brzfn7 zL{M`esvS)r-zpfSNE)P2S=8$pG%Xm6L&0M_Ccbk356x(G@gn|7d-;Q%K-5lPF)XSd z1~@YvU&Uc!fM}dmM#^IWJFUDpJHqQ#^S*Ve<4Nr5Nx_jzyzp?%8wL z+~zWPfBnlU6$AtZHYU=lf=EG-jAClZ57e?TOboh{%)h88381Sc5P@P4oSQs11tOe6 z2^1aLHnF@fsClQsleb}P-0cH4Z;;(k*QWKS{jdz5ZBybuln)J@J{{3Wlv01;&rS{L z|IO5NK{5^EMpM?7QIGRoa+dt2Fo7^4!TrggLL_;XDmjRD@0pU%AywC%t;tpOXlf3X zs4bLDkIxt3_pftcd>l8KKjy~r|DA(Setem* zW%R|QR5OuNGtYe6tkSSR&;oA0V_s`f|KM+~RN*x$IJb2N!T|)P&l$#*RbAt;Z1XCR zIQMw{hJ+L@@4c46`~Icx8J(8*vw+V%xTn-&GO#)FeTCs&h70pkkNJ8V5)}@cGosgrlUK0=a-cU+loW985&AW=wiXzdmZpwP z*d1RUgh2`=_%(@csFEhdp?Kk&jdAKL!J!IYd%dnODh#g{tHG5fUd{bxBreJOj3OWF zW$n_q*sk;tVW`?!TfQb$5{pO)RWhb>Lmt08T4Xz=9-*F8-+Tek0L$BgYEUAZP&O%l z$`5Rpf?8_2uAnJTw%wbWs&1M{3T+TfvfmWDZ4#rA|ENVbshb7Q|Gp&TiiWJN!0BO= zj!@Cy=xZ<47?e6CG!&UmFYH%Y7$J@|yXoi8!!3E0HbvvAuH~!~9gS+vCMU~4pb+~p zsz+6ulvlTe#qSU6NCD;zKYc$RF&o33hbF^;sx5OtuUHr zeZFsEGcYv5_4E)qwGOBJo9V5hv$C&cX|Z-@Iu3M(COvg@h`iL}1+woi@SMIbt;M92 z2<~DLm6^bV_N=FXp^#c zxUwkSDjvLQbe)B1&22DN${?H&_5-}NVYUi3z9qx*%2Q&Pr8MLW-0@vNZ1SdC(XzWM zy8%5^U!3w&6mt{`!q6p@K+NNlA4zhU3$9&afAwC~Kcp3{L2ry3tT|LBP4V zY&h7p=(`HRyW=2w>zSW0Ehv)GB!}BYSGMyF<9k zPm^e+{Lq-xo*9n@@4sQdxtd(jKCJ#*(S16%YiW0i8uS|`fufwOaVGMIq&P(WFWIwr zO$k3ozqOL@g?{Sbk~AZD-*}P^T+{6xDRYV#>bhL#IGtW8xlqso?x~s2$El}r5vP8& zuIw~){db?k`E?yaR0>9;pUr-}U7br?(hVYIM^N{b^KmR&Lj{CQfm?aJbUC23u{Wud zQ0Y~%p0LRdS+(252-Ae8zdc}6(>LB!L`+9f*1XLiMOTsQz-&vJG=$8Mc-MvDs53Vx z2|ohdWS|P-8o?{Qm!XM3@iFo0VE84AA&3oLtV1pSni)45-m?qL;in3TgCR=Ro)JQ} zDZg|Sw8|oA6G(pOO9B(ibT}M{X(UQ$t%ICqb9F5~2Xkal8rG=N z@e~gRzsX2q#__64z09DHm65zD?`P%uCzE-!L-*Q4Ivcp3{hVM>1*I1jRZ|)T&zsSG zf}6TZyc}a_ zx_wmUk|>+k7oJSw6;-u8ZA>Pjih)NvPCUjzz_c-&G!ka|kui~UOx2Tu!n6=|mglLE zP_zuJA7p2VzZzBNSkNG1=)stgPg3#V)(&kFskkbcLU=#OgaFo!K*z7UF)&ZW8r^<^ zweikjF!jREV%CE{q z8iBkjONHUsE13y6B0xw9)k^(WX$*7UUllpGQ-aIUFdH^_h&G`EZy~5@tl!XanY#SQPJ?MB<)-sbhMK z!XlaOYM_0%K_D7yG5>YA8oA)1v4%?-XRrm_Va-%Oyh)#l+O3~l4}pOpis>d7);3+v zg}Ra$g$eLI=3X|rkOW7TD@Zg&c_iBG$S9zbP`u{!ENRmSaTSD6B@vXybX{Miqa1=M z7s@~w-qBk<=Z#5+zFd91z{j3tjfU`oFmMI^=!`85s;90W4x!Z?Uj-cS645D^o9cZ^ zJ*ulJtK<`NJgh8xKB-%t$q@>7*s~D*DguNXEwrjkJO+6A77RHJ(&K7cF)``};l(mY zLM%vFQ%7M^_KN8G!}=_RbV!fcYnq(atJ%e*)VbmhL64aSxA>0x5oyV&9%G2o6Og{d z*H|6%HI|<`_jaRm)TJr=vA=O3idub;k{h4@xiys6G=rReb&c~Jg}2GPL*vjE&nYto zm6XQBBBGFBN>D#UG;|0&O9sgp!TmG?L0;)7PP~*k&b9lw^EgwUiK}C!T=*8bL^$^y z`MdebEf+1ep~a0BUL~a5CTgHtjw~l`Fy%qDn|0CsbkY>l6##qji63BFC4CL!Rz-iA zbylR;5(?_|@1%-c4Uwq~GI}WC*)_yw9SPo$WN(s*5k+=n#zYAa`M;@!KC-S`p7xMb zBy5ZAXLpf~{E*B)tsR5z$mF3RE@Dj~MK zWV_#Z=SW%-jGrmBZ!I_44*Fm!%dSmQKg$&m<$<_%tar#;P4>8dzSeO=l>ICe3iA1h zDN%7nt>$$w#ZEQ`yYaDo0)as6z?-$qVp7S?Dh28L$s?wU>|G0V^L{*BWSTn@9r0+2 z4b7T#G1c*)Luyjae&xK!tAUY?N;VrRKc5a=npSM$K>V4+hi6BU+2hO?D^VO*T+MHk z3M#xN<>fviyN)FNG!0Xxx)XsYpSyZQ^*Va1j@uTr3dtLyosuaoBhBCfO?#tZ?CAOH z&X9K**3tG}#?KZ%6j~oY^-{?4dqP7W03qo>kNa`k#Y%O!uV0Kyol#_W+G!nrHc9YK(3CETwL)G@8^OH#YBDBTfKG>OW>!0o!~ z+rRH-u>3*Lv89t)_qoQhz&qF{{OVh|bNZO!)L+SHgwc@I>TN8VjDVJ;z&|=qBGZR^ zrhw?VS&TbCw9NRnPb!;v*CX7balfydl#v?fR1jU^c&|{JK4zG$4o0toL0`4`eBgEN zOEvW99WpgI?8mF2@zmPIJcgF2450y9JT zDX)bWuh4yXroX_<2@xZ0Lfb()c0-e+)~*~XP(|i6hBQSZP#_9~DAXEF3dh(YxFWZr zNmvucD2r$p`d^2o6L>U1u`Le#GFHC^LZ_oqBly_VQhM%OLsc*h^3Ef~fW3ImgXhW^ zsyKVu1Y9X;g$*;@1Wm4k=^lBmwA4XVPt_V=&iLhl4;F)l%(9Hzpc> zxF<81zG=Y1@eU8`HPBb+FH|!jEbs4PlJ7|LqZg#~qv9p$eL2@h>Q*(e8fozwV?eM~ zO>OMlZA|svSQKh3K3^{(V$A(kQnfkLVay#aAYp>{N1aRS9hI{$N+S)_Z0|85MJV)Wm|v#?w68kDmqiAthlbbm#sd)1z!;^437K%QkwuQt zjx7$zdI3_Qhd#1LoJ1rAh$>_I0YRfHSnFU|Y_ zj)`rCdXE@PWDM8vQ%|>$e1A>JNRILA$0uq`fSfg~V{bz5P4v4Nezc`?1hNX#CRgO3 zU9%?C75ZIH?`ZZ+9;%wsGtAHyj01w4p2PGZ^9(~~^i{(d`idFa%xHIonTNvBY!&+L z&u0)T)4Y#OX)>WK1vAu!?}0_!vgebs)mWY_oFih!9W=vKq2Hzf1NcHvP9skqJ_IQp zxy5WM1}5s}1HmUW>krV`7WxZ)O11FN8$wEObw!{s-XEn;Kco+AdsqFp9Y0d4A1exc zyb{LV0TKlxSQ${H6xy7(7^BxZtH%HV-k}PhW@QMo#(&Kv+-6NVEX0^2MT#M+)aEh- zh*%C*%fgJq@I9NRnR{{c0B|8i7#3^-vs1=P0S8tY79frHFn~R@7+02nA?5J2=V%5* zE-f6~YCeu6vs_fS3^37mBC`Z=i%kV^(B9KfTS;2ry#?kUW=crQ;RF6!0NDmFLe+&az< z7e8dZQ$8uQy6|e*Xn$k!!4}S9)jDxyLC9n(dDF;#VNzQ7p75%5QX@`w<8rt$8uzK}i_G%1k&N3ewJnU@CNcaaA1|+aE z5?GN|h>YsWYYtm0Z}Y-AYYWh)qD`ZmRwLkSZ4|&OPuMw2;E8|uVO|8gFLTiWI{1Kv z6@P-IuN=%XN0@BL_{*H#7rD=?)StIj?)o}US)%WyuUIF0lR0!ieE}A+W#?gGxie?u zZ1~x}!zlOfJuB;b*_#h?G9h`JM(57B^PYuYLH4P8WcKG|4lxh5>b=1P0~Yg>xWlAWA6z9hisOA>*3RR za}Jk>(hCrAW;@BV?|$>&W#+Mxs&+ww7DPU`Suti3WSg55%1vVAn^xu)PtKNX)>nxb ztY_1z04;>s4LoVFoEePaQ-EXzgNGm6jyP{;2ZNb)Y;%p=0notQznx#Wool&VWMo@p zv|RkzJ?DXYLE$!2hkH@mcD|1-V+we{8!XXgK02|MmF4mFudUeh77sI4X!73C?!8p! zd*?y8S5%R-O^#2ip$^s29SzZoX%b3vW6^LOlAV=KEvN^9tb7P7BoE0xb05uIHhHyS z#_6mNbvAX`9T|3FpT^uRbkZLJv%;MXG`)&~J<5HS8Drdsm9aC47@lJ6tmWQpumwNk z51TVLuQu%B18>nBEKkZZ_c@HnD-C%u>GG)(yIA=Cqa^ktC)SE=e>Mrsh}s$1^I}4H zPib0wD)e4&+ZSoVe!Al0z=;KZh%!#^$%^gt%l(4~w!m$uBl&}}vz_hWxzBC;ywjVr z->{z=up-PWFZTCm=A0#RATtsWA!~e^W!g~EE-)uQ676N61*}XXjH+y!Y7y887>bZx zc7;uLB*8!n#c>X%4B4e2Rj@nY|-nhbRP-Ah5y+V?KDK=sCnn^_w6p+F@a)!%06Z^GGyV-w|n?<-ABFgIa;+ z9`3vHRD&lPoQP%(POOcGx=*~W8y{0u`MrGwrmEU7c!goB_F`=GyO~TdgF-k!Sk5hs zeB;Ko+nek~PL>ax2McXks|jpOC)!^E45R&+@r0XCPn6ns6&sJo<_V^4UNk>XZuOzw z8WDybpp1r5Z!34zsy4l-vz1w|0CgVr1d|eB%fW0YwaB??0(2?mx&NxWN%FFS_ zIoX#pBF^gAgLq9J=Gl!8!2?U-+oH6h#z|5bvHVQ9Rwt= z0yAC17+nKmV8K~$otWD%;@=*tJw2qjeaJbD;p|7jwT~%3{u*ltpb80NM?7MmK4I%P z91q%LpYqdYToYYIYGs-mYpzI1K?WaeCced_zYVH#Jx^^stE<{=u?osaj&S4pW!@f& zyK(xKc&ZojXY9%0FxRPx@v&a7mn{Cov@blZ=#Tt&r)jGo+D249(P{Q}@U`RxesVDB4WKxqGtH=a~81?Dt{y|w>4EOfF03x4}0pdtJG zdQpVqPcYMs!>smzt-gSf#*NnRmkCn8O|D#wYkIMw!P!~FUm@GfO~l`CpMJMI(WJRB zy0MuDgR?^d;Dc(@$fPJTCSKbd0?#0x%5Q5rb$ab}oT8w=hP7$2Ry5m9PFwf}|5(gT zBM zIju1q2v+K%x@WTezFZ@``$2yWJNQ2qyFRqf!abiLsCkngR z!LBoB_m(4B`C@B6UQiJ}XKqX_QutUncx1^(tPsDDuuAU!AOde^X+opCno>c$qI`X` zJj9IWCv!T5Y$#W(;gvwAG}FvqE}^KuZA+0F@`GRVN@Uz6M+V*219A{*P@%2Rt2<{*&f!n8`HP;`ZX*lJTYr7ehPmeoWDlt2vZG&s zDZXWVUm3aYqi1&0vj}n@E|yuk$eLZ%lc!kn0*4ikBTGw>H^7MB)orlN2Rz`IGF0_sF2^TI_1M3&| zO)CB_%{V*4S5~*&*GsSC`)uu%@6X%i8keNrRo2Gw$dIdkTSMV>}pNVh6)vx3Fed1A(zUCiTs>NG z->`9N#q!ocua>%VYAgHGTWxJZomAI{A)eHzIj_8Mq4cgfo!y~**=&}WvSE)9?6dls z#bxiJGgPIpwzt^hP1GLi%&dhLLSW&Q1jd4ZqgjozWZ<_7QQkj`qYaM zdpr5Xre(Ke_i^^!p5w3SOd%|&<6j~iy<_n%JHyp=x83&<%@3+iUUL@q62oQJIep%& z>V1~2#9HOczsah+iBA-N8l8Tna9Z&80riA4@!5k9YvmpACsh#>byl6sXF^V4qLF3; z_6_tIuTE1_wDPRF;H|4?pTA$5-lTG)GRQAznD4tLC>mff zzQSRcAt$Wf9FI*{JC@AtDIffP-{H^3eep$Y-3u{m-yfEgi`5z;wbYr?#EkilllifW z#I&sNKNcxjZu*ZIQc{x5ou7%e>!DVrvX>n52Bka449*fV<(`+zO8t80rX>S_X+Xi*>B{rIT~&b6uC#X z{Lh48&$kRcv$k4_=XXD92j$UbP577TaFQ{4o3)59&mzZ8I?FXI5%>t(tB`g}!}q-} zo>6wKWIPxWAzyo+RCdjsRS7ovR;JmhTVri>!9p$X8(r!C0Mn&L_<+b~(OjXu{0+LX zetIJv$E)?i<}h;g{ISLe%AxApceG{76}9tkYr0-zTNwVU<`ZG#>_$A_b+;&#sH+Gy zKynCGzH87jbH7vX{Mv2Hq8{=*Q?@r*@+srwZyj?l6EbI&54k#+hL?FQ$5oPYnq#%< z5|{wPCFef(k9XvPi`H6ZTpuhFj_w!W-Mx@_tN9Z z;o`V;+VqKP(VJRORpN*NJ7~+wDc7wyKAct&6y>@S^Xc8|Lb-65;}8AYA*y_wy3t2Y zj7mXWR%=i0KGHU9FiBoqTr-=mZ}F>jcuc9aYGl??v9fvZ_piZWnf4xtxKq&gxOrsd zPfUflJNoU#7giT0Kg$#DF|)4M&*SJH?Nzuw7`m}+I+^7j9*Dxv5aZQ2=q+FMB`&af zcTBOouPKa8eQvT1)w~dSpQ+gEV0OpVp|JJFb0URz_}UGJ)faMa`fSS${>Er+|8KnA zWl&rH!{_}ZSa5eQ?$%OV3I&P=cXxM}26va@?(R^almbNy1lr>6R;+kwv+3{pU$T4e z-m^QivpnDt!(cPyob&y>Uvqxx&!bG#ohgQX2Xm-U;;<+LIBxTLoK#}$(DpAzJ!99% z%;40#l&a{oICOAnpFF+vsbYp5dN^|=uGOha#_X<=oE0`jxR7g$9fX?Sele41$V_B` ztdICk9@puMK8Woxu%s7Bar5sW|L)H<;49vVE3i2q)g5tooXP9I0DbChq*Kxyoz8bM zy;Po2vLu*FZ}f^|j#aqiU!Es1!BW2n0OWF6>IrOMd3f@i%2$|D?p z@^5XcA&0@=&S_aOhEuvcD9Pz{T?Z@*x;1zQpFEbYe3DUgHwyT1^59_OvG@H@y+md0 zw@KhyN2O1{JjR@8y4M((3)jqkMIA~QRNt0mo|kj-wea)fn`~mPlKP@n@V$ zzG}ietgl_8)%RJITZ(GpU_sM5@K1nh^(h}$1XV$y@lF4~h z4)?gn@e}xKi3$PJiMl2?;jgc`_#Bx!%Q}|J2exRWn3Cg!hZ{W=fJvI z;QH<<@X^|l%zkL0;A)*-+oGP~Wt9Vm?vK&Lp086Z7XzY=7f^P-`Go^FJLb!k*C3uu z?RcNIefVRmlC0>$cba3c8qIzN@Mn`w$ZDx53TpU$X_%y-N`8!FGyNIal(64#Hbm2%^`G#04 zN5h4VUAcf+Im5>}{y(xAQNbINXU0*7A$L}q4qs-}evnamg@o7iw%DuG(R%iL?ScnF z_Oky}6qUvrP>p~5S9mrwDxzZq6iT%k05u{t(pqaJeUN}L(}BKh*o2Tkqq zY*YNi6D{2OC(_ZW&DQb4+VPy_#g)&g-|=m-d)|)_@SAt)4T}or+~-sCiR-Wv6R6wg zub@~M{NAiL&kSZ8IYeJa$F^{(p|8Gv_pEd4<7=7>?+F%>;wrA}wois3OWD0G)Fr|y zcq+2AkMtFG3u3QzU~3dOGzHyy$(AqlTAr7xXKn-KN}omQe;%hZiPe}aFe|??I|UY5 zj8oL2;EU!g1Voat-&%0F&~rGHNcBDAR8%BBN&rWdblp=^hLOB9FLR5uTq_`fG?elJ z;Tex8xq68VgVOVSJ+ShMk~M##O>{cS_c`aU83H3Mqt=Qz_eyX5Qdxp6JD1|=KGp%&8}#o+@v+qXz@L@+#m8s?c#HDT~@)IJrxUT91}r_Z7+Qch3OKLEz98d z^U`SyjLe$>Mg=lD7%Y`E2cI&;MCcoT6Mu9rX{M&PHaGcWtoQp3aXUV`%o~O(rf0K< zgv5{EaQBPZf6y8Q6ZNOkDZkd2<~O85HOJgn7{4j+blM{f$qmlfq#F6Y!pC&OMkLBy z0d6#Ya@I+|k3}j-7G5jmmcZvmFH3mMs2lkVZ!o{moC2^;+__XTlvvKyLziwwXlMb) z)WIR=`ObKj$*4tPP4d|qpPrC4%|thfRDj;hgrI=8!=Ns;Trt=T1t$+AjJxv23g%>7 zxK+v^zUf+9=u!jAOUdqYX8wg&phB}$_rTqEfW~3p zM*cRgyaXSZWA0Buv-pYegt!O~rRrwQ+)>e#F!=kB7%NJmsgGb8>hGdiAuSS(Qf5T; zRdq*fPB!GYifk|Hi+L3-^=#|}$xhIc2z@yc+hJf-wY$kQP3@+}L-k#-Z7&SI)*HM5 z%rc}AG&Qr{3=-T7I)+e46upXDTjU#$Yqc|kk^W&Sl2)X85GP9(&(mKwGAOWnde3+U zsH)h)%Ef1M1KI1julOa|t=uq+2M{SX+Iw?D1RiNKN-ZQ>44W>>vs|Jhk5@vkY)btK zjcaXoGD~8^O4UcK?yt3!o+)Lb7m~;2aq&9{PaQ>GVe3v6;z$@9_gEv@I1Cn)7Cq(x zZ)kYecj4s6B{rkm?UZ59j$o0slP~O=lB(E33YH40Ry$aL1U2@B^lu%i((qYOd}^Id zN+U>Yp>f;I0qc%Tt4g=Fr4D<|wRt?Zw8q)f4Oie`kY<;QEn|;SJ~e!Qf_OG}Ys1dr z#MGnC5r@r_yRfIS?n&IS0Cg=iGOH4J+JeCX`CRp&U054eXRT5`YjyO#G!kv3JR~ta zJYX;HjDy5t^NE_(#-Q?r{|jX;$p8YQ4UZb>TLV=RpumT@vm03I@Cx58hfXWC8pO)15QD5HNdQ|E$ano zb7pgyH1;4y2!_?++>gW7$i~#oNrPfMofFn1bFQoi|13qRUM|YECvK7Dcw}??TmkrT_hH^izt@v}+q%Ru_ zPBvP7Xngy*UhYkEDqkH9Me#jOt_in&SM1h8XzqtjE-`etG7UjSj=&=n`T)m2pc`E%(@J{YDc;|DXh^)V6|b$`xy8+Sx&Tc+KMd?+rp zpDquRQb!ALQFXcMg87_&+s=hiQWmy7akt6wx0s&6F-B2oueV4Yh4Hh^>X7RyFA8&G zN?b}6mmfwpwLU~ts69VhWWTBEmw>DYQlY7ef85CPtznf zw^+W7MS|4wiMiT=m{}TbNpY~KDB^jNsz~&*DXZj4zkG8b>pFI^g+Zq7#Y&p2BwIa* ztI^r9di#()N%vJcTlTV7o}hptv6-AeK{A)_>n_hrR7aMX<9w>tu4_m%l3PXpv4KMWi{~vz6N&AF7QBJ^q5dTb`@Cw4g~gR6iP0lX(by|a zY|r*3m3FE#R)2QKRGgZTNbk69uKdA{?`*dg$tX|$HHa(my%53YGVLAWmagX=)=d<) zgn~Fj2m0G}`5_jRdyeEol;jv|q>U#Gy@j7Td7WlD7ZB2>m$!?6;2Af=1h-UE^2kk+Q7FXMBv8rc8^LMQt2t~ZO#$Dq4vT}wMtXD` zvtL}k@y#rxn+8*!PK3V5u7_h;m)y7sKd$z(la1(R%`Ecrbtj*lr&YW<=W?MDE>hHc zZoQgVIY_ ziV(jPU}0B8BngNmRIr6)xCO=N$V7uNRg8L6wB9S}^=PWqzp*U;>nB>h*R-$ELL>>ilAJtJ z?VUOT96EhGyMydHoQ(TybcdDoKkMksYpcSPtjGS9B(R^>(LL0+IyQD#wDMT6bRPGx zJ+gM+vvWQ6G2FC#JtP|1?XDu8s3H@ir4XYglc6S+ry-lE{U%dWHcwA6$4Dy{Q6g|K zjPbBb)_z@Xpjc&~+F)l;W3Suopx5nU-so&y<6_?KV&3gx)!|{)ssxgJLG0E z8tC{r$Z68YW+dn@q_`Grzv72T5_nC9Snr0|?Sxn#A(8~X7F&oUL6%Wexp7>KRdlvh ze4ayEw)eXjudH&5q&kPpD!a^9r(8smpxHe)I;f^Ope)pJKGbariXapn_d=}@C4yu3 z=1{+}NJNPsWGU5SJ2Wk!Gc&XEU3O;6xt&dvIOP!#iWda~2nQzC0?bGn+7TMA3d zhcbJ^784OAg6PTg=*xu6>59Db>c5cUKN*4!`1{K9rn2Rxf_I;?lBcTkM>^{!KeX?U z<&coN2 zf3GZFPfed5j2-Q)-0b`lCOBHSxm|iZojLom`7^`A+C^8X!6kyY*grlq*|@PC{n zF!%c(EXB%?{|}M`T?Wu^e=Wtnz39#VuoUTR{@qgCvi^T%DTccCupSh=4A8UH@Vg~P zSc)`z2gPh43On@(W{T3h=-dBgl7RiNs=NnbDe`639wRKp$GO_(5cooE9maoHiZgqU z%m_>Iz%ln9OVRSLrPwwXu+R!CMOccc2um^YSp8(LW0kpzD`PE+L%(_>jSXQbsu(tw z9d;UK_w4m>xSC#s{7n+j|F0}X>)tbjrFg3KVfmjVf#yF+f<7*Ur6}7t`aR02H5Dga z8Pa~)e(E7c@IHuNlU&r$Y4YK^O>Ode;1vH0kHD}1OyFfs>jVghIV1km*FGZ#nem(v z=a-lDlHvJf)UJSz=3h5?NB4O~Ld$kaKvv&XTw_6G5Cd0S^W1Vl!b;8Acgf}ep(PU` zZYGqi+>K2wFFvdW->nCYMz`lyj1UTidCB*yZQXq-^M$eeT6T?qhd#ad@NW(gnb{=Tp^NR7_W#w8i|&Ku!k7 zO@(Dl8pdo(zr=mz;z37c3~&7=O~@Px{r%M>ROjFoV{DQOUxs;tf!dZZJ`>`mHO;VmS1mLGKf)Ja<;*{wc$fQbjluSzi5mUZk)%IBXpgWr3_;}EA8||CM;kPH)pOs@D+0?sgnII$`21A7Z`6WGKAWG3Xc$|$({oYBgR^VD0o~KWe zfTM5M&&B;l?>?__=kGLRhS$ev>HFS|fm5xz^?W}4Ki_baT*R5a16)?I|KQPnVZi(c z^?S|^ovE2PyT&m-Fzlr6I{RSWSfy`h@Q2i;Dfg1QT)dgNWelnc@?=#591OU z6{*Rnd+cACdX?wX(i^^5XLAZ`$|u#3DXm!7>uG8-Af6ru=xp=bGQo3PRla4#V)nsk z=BB*IkE-^A3^kK*!~EvsLX2{lcgMcgrm3st^}Qa&w{I&Y_OQ_qHYojAKlY8; zm}sH#cn+n2F7!xUTJ@LTw>Xfucu8&Qm)u;sdY`dJ2GFIL z5J$Kw&2qk!oipZcZDy!HO{SWgSMafKBwsyEZuXrU-#uxf)47JG#MQai6xU?!;^Tj=#qLVsxB=lN8uaz!+wvk)T%M` zwQ3>mQOi_feCd)POYZBsgli5+L_)bSB|lL+X=TP{p+&pJme-9!3~1QXq~&nvYRiDnvl4Ic#IX?e94p$HJTyI9t^p~Wgj3*NJNSo@#Af0jTx^_s9#J#ZA;M6NPziC&FCfm=1)j`mAD9ITlQmJ zT}+I-N(?1P+9tCAStT7DvXqgL9d{?;`z69srB#9A-PeN4a>*afai12GpSsC=B51G1 zD1Y0%{NtAb&Pf5r;$s{o6KTt1`g5JQ(f+U_J?|#@OoFpTCqS{3O7oCPN1paoJ>PDObz`^lZQ;x*i6Nv^maT<$OA@O zbC%QlEPekB=Z6fJ*o;?iFlGJU`Ppar>Awpi&uF=L=TDxkfR3rKl;!@A5zLlh^CrFR z0%O&TmOYk{lbqxZhFt_jb(TVNL0F3ao+Kz<`u8Nk5^A3Re`hH+)u49Pptk4aIj5l7 zyXAG)v@7(Yr}4tGqoOK|gGTsR=uOf!nGB{zg?9~KVB%oa00YkB; zTv4Pgkr%SevWiny-`a&8LZx6 zx#^EXS!W#h#bfEq+VW(nN+ZSQ%FQZB95{BfS!}uSOr#}Mq^blDqj#dJJh!E(r`$`i zC2gW=Ag+-BvxYLS#p$v1Ql#m^yh$XiNo$sWJq75VQuGL4`fDkQ^tOquv;v@FG_a(i}vk{j5!J~{LwHC ziuCgekwl6~kBh7(5zJ->SfnrzhDr%3eH>+H5uw~_#vV&S{q)dP`GD#wg%)AhjW`?~ zrPQ5wlvjC_=USW}c9NTl*`0BcTY8k^nvz@V|2{u3zuX_y)-At4w5R+erysp%;t18X zIe%)Yr}0bkT*4!M!lTZ|r&Pw>O2M5@>5D4{;|7A+`v%#KzzEjOAFo5B4o$rd z%{>Lx4M9biVXX~duK`~2*5OY8(014`N+IA#vtiP}76oPS+vZ`VgkdP&P+txzh1rK9 zGb{u>8J-bg(r3aogk2B8v@#m8Q6BM>!dy2aWPX$CKS?LHgKg`EHqBlKSq4vwlxsU+ zXeyQ?X5L|Ls9t!b^_zIc$S5sc>(mHZUV8SG$hgtJ+X;101U zABMil6I{}bhSzmR#&_q|^!Q#B25zE>JWaUcf!Ez|R|c@9IVpF$S-PAkxOcGa-Ow`F z>oyc?`~oU?6K1`d+~N5H1unt@fH{;uSGrE;~EKYW|a+cm;mb;C8nlBd0=es9Fm z8$?l-fa(qfm++Ra9XF(4)HNGa$sE`FWwt4xCR4mT&J3J~j^+--PH9k@fuj0tj_LlW$o}x%Ic_c>;CqH~1-Ap(Ck1sh zWt!d`cdHoq@;7)3qpsh$Ar>*`NEx4`LR(2$rLYfO-&$;rd8WPw!#b(f`>^b4F!#BB z5GwT-n+%2XE@P=LhoyjZCzgrVmKThxY!#PkJ}f0d!2V_{-Pi;@Q!A0YYuN!y`YPqq zafoCVnm0Atw_oVfDT~(M7hT2Z*NagHR>9oI;AFbGuPWo^X0vH=wF%HcM1vso;*)U+ z*01BS&bXSsB^8VlR0uC6@R_a8L5#M3`J{1XF$Z{9^PBLff@R!lk zhPr}@?XDl&z0^DH26bi<8)eK=ehRn}>yGhZj`GYklDIesEMXqO34n zvOXMjc36%B4uJwYHs9Vjqs0Qs{hS&I4a;%!z;S>vGCZ(c;U)nA&KML3d!OeF=#fmC znEJEhWrjATislPJn_E9!aQT6-M8okGN;c7)VO!=c1!2EV_y3&M^!-=~>GtC7-goI< zEPNjl_?e|dX$uPUDF$<6EDEmIB?r|EHVl#h(0=~*8|J28E5=@j{e=`)H?alcfdoxJ zBDG7xW+0s#5OLC&vKdIkb4dul)E2w4haQ>Z zennIS6xq0n4aWU;ihoy#woZO5n>@^^d@vo*^0fXP_oO*vqD*oMh61ON4{3U#(YrN( zJ^tZlwYh8D41mQ8B%cAG@&fBqR##JQ9hz20d9MiZ&@5;9^_y-CO((IMQoZ0eSad%r zrEasO&^-n)c8gbO^zV#5hEe1L9a7%s)T8Fs=Xkj-b2x!ZiowyF^~U05(-;e14H^?R z>*d5xLCDJ2Ff0IK)Jq3M*f+=!bUX;=9-eUq{__hM76=AlO!}`x3r7wXO!<=6rlWQobC( zs!Dz&;6;2E5IzL+I}BI(w`U-|z|0U92nrxhf%hVk1kDIS5*_eK*{IL^8f!#`Z027{ zf<@R8!cr_^3n!G{sY0h-$_Jt&N(3nm-`b^*+oMmf{g0H0+j-ZNDA#*)yOFTXAGny3>k#YSkj$|U8EABIhFf+1Q&5Hye%1#`*KGLN79ET(xA|}5>Wfj0>I`Y(Br7>L~{`OD) z%b#|074nAODIHd=;Dy>{@eq@t5^b=WS5apMWhBfLTPZe z>J|AX-~jWM!D%KNSj{AiOw*ud|Qp; z!QGZW`Q4rH0h1W0beqU;;2z&(36&V%m*=Bbh+WdS^{dl`qA85=hoXp8S5UdhoeF%L zosezQ(hSwm)YAS;Sw)U2*ba>Vqx#XMzY!VVMN%AyC3vr0_9y^*q#JvU^5*&YEP>K3 zVU;f5`THvJ4l24&5#Mp7%#*AJ=r46$%bwk6xz8xy7;OexZgdKBXAc>1A zRSS=|uM*MoExI(D`yla+dVwmFn!~1#%{jOvLMbmWIAf7@nS@h!kqw4F{V8_fgciGF z(wG$^ZT-||$-x^$L&;DTL^q&y9?c*q=#Dv9ac+2Vp?AY*M}(%6 zLbGu{0Kh>8!a>EGlm$Y-)|4AMWnLM|pb#digTO+Gyow2@F6i-4Vp7~v%1AKX zpva6DP-IqxH#8S?k+pW8Z)M%%-sLkgy{$-b|F-R<-vUJfn8kWz>`12#q@$gBCoAWk zNEQnXPPNmT8g5m4I^l|M%> zn>2=N#5Lqs)?TDyZ~->B0_b?$ryogn3M)rr(VVs;!9z#fY0p;d~c zs8K2cPw)4gn0rYLz!g0$N%4RTf*w+38HHe2L0}Cz(^o(MO$u>X<(J|>qSWUs$A!_a zG6D#wkF)V!p@*2qairmup|Pu1Rfp1%uRj=c;Sk{JojvEcia2Az93l~MyH7YDZ^eh zGhdyUcKEEM(#y)uJx(QxX@x36EePMnQ%R61^801@)cYii3XRYw*_c@XK^L&B#zCy$ zRV11x1yl@(8Ha)mL$eK#klJt*=RD2QApW`(Y0dy0H%Q8^uLCCL#qs*dq2A6VR|+2= zmPuGmN07C-hVJ4{eLYqGe(DEiWV<=0A@2ZSRlpEQFf+l`?f+PM_u* z*Aoyp*#-*e#gSUc5|L_A0=PE)X2KP_6_utc!ld24M->nm7;MneL2+w=51+ft){pLE z(p*9LBkI(XtXP!*y26mGG@W>Nse78qO@PtyHPEVBUFr+|s8D}uqRr|y!8<#EkL!L3 zaNuIf<8Ur9u%3$gygMN9&wR4$Rw!!wOb50b6eEKS9YsLT?@MH>7@ZiJvKs*KGt}MT z86M&Tn30#D^Ac$#y|VtVPzEe3B8xMVgCH?dFZQ88qAq}}$R-d;5W>iM8H&q0^aZ-# zRs_d#Qm2ognj|w$T~~l2m(vjz2rcpp9n0{_u0&&RfdK0^0<_2_8 zy}OWNOhe9du2^;(&B2o&SI1HEE6&HefcQAC4PuPN1-|_SMT6TZo?c$-FJ?0cP{6zk%TCD=B74uF^p0J>`Pm@48$1~pXf#YHM^$Z8qo7eMHM z#zL%3td1CrUr<x91-nW=gniE02~z_Up(MHbD7xFzp8Z0p}&hAglsOw)NB zPJlUxS-;-V8vQMbAV;Ys{dfWtpF%1ZxW7X?Iyy#_lSDbU@V@{dUi zmHauTDbNCZ#4`g`W)2{uFWv%)q+;`#l+Ud$U*xs?&|y)o`5Ei8@h(!)dKq4+7RT+S1@`;zRUaW`OqvjBGi)l zJ8J;lY7c+{h61UwWdt`Jh ze~R@$=NyA{4Oklgc_xojas&V|%m-i|mcnsDr7qi$6}uzAEex*i98uk30mUe?7);oj zP?Sx8VsXuTN*crMcy|RLC!4Mj)YYpObyN&^@thJf26<+#gNY&91tvh~KO6<71AK~i>qfJV zK{oJ|>|*Fbk4+0ME&C$_e%6js6Be%+6M^!pB<%3@>R7gwA2Hb+^-n^I2!xw+53pCx zc*DzU@5rk?oS-TDT0mWXIfZrCtb&#U&Cm@H!&lsv6R)~ifK!Ydk69Xi@p)IOZC*b* z+z2g@jG03n@dfj`;$a(=N5k=G;Q2_=I!gee<_Hx4g-vmqxd$#>2^C|7p<0{w0@JxzY(dYnDXs zF4?(BhY5`Ww7(=u34by9dKJbVX@rIl0qyCg=AKVEcB9TEMA-pQ%?=~^z~Q`PNE{a+ z9sm;W1&Wi@)EeW|H%=9}6F}9;P0`MtJ6khLu^G9$j3FOSnI|IVG+Ti^mB?ir4RQM- zXfx-HLfRW4AjA$e7}7|a`=6fL1h&6qH(#4ya) zk;V`dZG}iJGNeVSS#|`}mmS8o2tg=i=mijxwMb(aig64`U^CL9Im%0Dj5|Ks3d*=7 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

    9v#cr{Ea(x=0Yr=Qc)cqe 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

    ^Z_`FpFn_5I~e#8ZAM8R^z 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

    A!5BEYdRV*uH6Jux06)T7 zUj1#YRaA|hYY&!&4oT_cqaO-2e92y7iN_H7Jy2OoZde6fBU%n zt)Ww)=S(3t3ic?HMnpB`Z$Iq<+F$G&?FxyO2K@R#P&xY?``0x9wt#V%0oZ!Qx@bkzH7jplrlI-ZmEhnbXc#fPz{{dtv?3-~`#$i_GFf!xMz*!2+0R;0S zB?Glb&hPYoIT${?#T5lBpn-LxY2K1)zGtT-*{39(FtnGaEHDgr4-fT5()TTcOB`ED zhyGy`p3BHVG)*6AXodW4Db7=NoBQ?*3)isQj4rIkCv8=6bbUC^t0l={AbZfM7g;)t zaA?|cxW8(KrGbsN)su2+PLUYU~t+V+zERIf;pmL zRK7GT4Dz}+E_`qD6Az>x#erXv;c?`4jzL&B9;V&~r7{^hi=^+|Pi~c=Uu22#`NO_+ zZb8%VC!r7jv5)*8sO0S9Fq-B$C}YAnaSY~T*zJ=C?QgL!kv z4xkRSL%ofbqa(!4G4e*)LuP8aZp10U63wa<*%}X0^P&&oaSFvw=fGRngXoCP4iTB*5we8g15VR^tV*h?7JgZ{)1zJnt{-;7i$4L0&cmegxx`l8`>D2N+~ zdJXiEbNvJR>bwUAL(E}~YL0b1n{ZtmR1qSJO~ zuPhFPjA1~&M8Sq|j4R7fTqpclL>pE!?+q=|3t*zqH1imGmtp!|8Pu#SAOA~_j|+J$ zZ&nq>H*ODA&Y!?Y3`oFv!GfqAz9LaLxKJg~RyX{RN6eSNeL;{uvi1rdCiiCTp-$BU z-_jToysf?Pw$36iWX0^mdi7UY7cxwqt4hpe<;!_#4M2Q&EH6KKx*CFM5BXcW_c_l% zW9z;=GH4k*Y{B?MVLQlWyEJNL&lk>l0CNVx0QZcJ>*ME@t(;I^qRzHk=1QMq-RHr) z@Xqb%gG;2p4f>f?A6u&mFo*}yI~aLDEP+ayGp?W@E+}}c?#f~5>^?GY*1noyWS_5+ zhg=z6qrCm*Mah?zRghy@Q|2DAbNg@PA_@<0kVgnOmFh;c7szMM1JkS~O>4%bVPi0E zG|e34XQFOd9;&))5I7~@FCT<|ahx0O+%+6QX)f~O>DY;tuxLzv9=h&lY3<$8yngZW zJo16Z*g*^(Bnh$Gbg+OqJk2g^E%f#+;=mO-3d2wsSl}}V4+G?7OcB{9E^_Hu z#vV4~lyncuq4q_J?QZ&)hOiH?WZz z2cCR(2JWC8TBdn_PNp4R`m@aaca%&kG)_Cdbk0v#JTPxi`Jhz^#mJ@EM-7nH5GF~yM>wnF6H}YzG20!A!wBCMMJt+0j7xOnS z&i+avVwNnrgJ`+$rW<{=d>6$j@Q&K($a*kAtca#@7?mbvw~nLWWOHo7%}2B9;+|4u zP*d&CQ)nmHp6mP8J5K>S%y#w*8l9)|AL+z_U@Yj!?9R^Hwf;?c2U@HTWi);BD?XY^ z!}cG^*ev@0it}_fZHiqVrK*SPq|SU?=mZT

    )!1P(nsX6J6DqC9hLuN21;n0Cg;}-cKALN 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

    dq@u83S55xza@06c#Ll-h> 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 ZY^tTH4xJj5;VjVw{*ON^rW1m!28B< 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 z z1p8lkuzxF_%B-Y8~V-NU)4}4=sKtIebMnUzw^@RpE*9%y(dr4(=e~+eylONS9vcB&l{?2 zmF(;9uV<>oxoy-%wte1d{H6JIz4Szrx>0rNIB=`KS6%(dm<>7!`8IAPD0DE@%c6O_UeT^OyO_{kb+j-4QS;=__nBwy?K|z&caIKM<1Paj zBq+e7tIvLQ8l3z-a}jiojAyCL1D;yrhV{HswZ?=IJpM8LEPbasiCq(M1+cG^nY(pdV zt#s`9*a{`OnWVge4cu(sdMbCzdVAsS)Xkr+iIR}@t%-HK_xViR8C^x5m{_M^VZP$D zo{6f&xWMPa0$-zgxJOWU-`|3J-z563ypuKXiM_{vQYxW!t~Sx*yolg0Y~ZD{;#vkz$I^9G#dES`lPPC$X0G09}382&)|;(udSYVqa^5Y!)YUH6j!)Vx;5sdNJwb0| z$X_Wo``mJ1d)@l+>$FaM#FA8gTUIZ^-gdnLx8LVQZfdn z<7xQe-dCw>Z{_x1l`<3WGgw`KTrGZ;{LR%FTrqj=pqLz7FJx=iINAU1LycaXi~SRo z^8?i10-kq77-lA)_ ztD-@m{~sVnh4YdgvyvXC`fYX%Qx+99p{sNV$AXu>R`m2lubGS9u#`46J#S_&Z0IU| z$4S!k$-f{R-*eU`m)wFc+CEXW4_0yTQ?|pZ{T~pHj*p3c$Q{$bn|dy8dd>klu7QR= z0cL(~CY~<$J#If!C0ugADbi7#$5FR~Vh#PCKYpfOt8n#SD2`r*%0DPh{U!ZZN~W3W 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

    t{PT?kDp^` zJ%At6FhB=vg`vblQ~U`h#B@I`=_cO=*;?8kq1s5GNkmMW;RpH^l<{|zpee-7Bwq&s zfH)9gX#glH4~EG3rOCJvS(RS|c`%N7oroD?k~xoAW*UV;)FrU&CWUMUF*SI?c_2bUMRK5#+4N3#1N`twJDj@PLn;2;)0WZ0MBH|wE=@g|2?FkkB1O=!v`)_mwih)^7Fkt;g zwH2av6o#HeeQ#e{IVd;ST$@h2?{HqHt*6fq0dXCnX5Xh~BVa&DMV5hwlR{SV)nbkAM)soBYrIv!YU`EaXbc<+XKg5Q9Vwq9TZ-c2?)7WSUi6_CccoC7M)|raGywXKJ_+h@2%=V!M4Fq1JMh%blhVRtFzFfl5oSKP#t+J zize88AL8zZe=biU5Rm8kcq$`&)Dq)M?psnh_XW)I13B=_$M0S$=4wlX2YTR#RTKS9 zAQy8h=!xpgJ)JZ?p>QYQWL1Bucz6H_f0U&0Vjh~LHT=-={;w9gV~glBB7`OeaukSn zK<2WDg}>Mjf6)W+lgE4cL8#UAX$rKmzQwP=b9;}&*PLZTN*O6{9F{-X`4OW(k)44A zDv+!u(yS%8I^Y-{{x4E8+_-^#@+g16fXdJDTQn0trCzJhFzPAw z$H|X?UV)zy!qvSe)PuwM8^SCc9#VQBmLwXZk%!VfAgK}D{aTu*h{*@8;Re@@9=J|W z-GhkQO;Y`hAa}k+1y=%RBLYV7o@Bt4jE^t}06@OdjszA7#*18nnbM2iT8Qvsg4{%7 zz!XZu27vG5fmxJRA`o;{f;l2A9{^#vM`trQ&M7>R&s5e+d+ms>##&k5F)dvElD_!- z_#@!7e}VDkJ5!0A1k-{hGLx}t79R97%)BAY%mgPa8y2EGBa8+a7KMeE(U=p%?oEQu z#XKncaSArU;V#WQETSy>tiae)ZOWTt!0Ns5VQ;;YKK@x+_;4<@4oAV05t-F%rKw@F z!AZ4&@2CB!+eDN{o~DI`WQ9@Jj{4cXvX}|8)Ss_ipfLD!Xx~Dk#}D~O@M8~=aUFY=m<)cD!l}x z2+{;aK$@uZE;aPfJB9!WogmVsN$*IL4$`|w?;z5;uP5;Jr(fMWL>WyR z>YsMWzbB5D%sw76- z8jEA>poLt0uNQO7FGH|uA)4ponj_Qf#wg9hX)OLsjHMX|Y$fIezWU!eF7kQqHeHTd zvzXElV=jz~62zqdeQP^S`a&of?4X_$rH89BFWsdjs{uRG{4x*>L9K!K5yl(wDC(p@ z+R#8bj@4)BKsv8LY84`Y50 z6wG*q6>awLv2IW)zEu)hm;(Zgw>)Bp2+RC3Al1GP8_|bh^iS6e%D{Gq=*E}Dl!v%o zKM>afv`LGlaP*ohGv*NtV@)$Hm2MX0u4^(quX}1~0Ji$b5AhJkz!8A=To~8sdFz6Z zAWIPcA&OE1r7w%m8*Qeqv4UH(>O-pM+r8m2X{|Y8<$Aa#w7>3{u>J@J|G2kqxj1jU zIqiL_d+P_&^}m^Wz5b39CuBBPnQ1_tcUM?$VtF!Av1OnMt%ZlZaMs?<$TAckVk?o+ zm`8Ujc^J+~z7?B?;(?;*l8lsKpaphRrqxywjrrN zU>h!ojVb2u(7d~#!Dn_IaQvwApHOcE#7;v~G5%eFHa;H`#eM#hX>x%TVWGGWWT@C_ z?A~d_&GQ%7HI^+jb?-Ev27UwEHwCQLqgUse0~wJP-TQ&evY>^Dh4HSfenz8|$3|-; zM$06N{3B*#_zvL{AcMoX5z##^X3LQP)c7CJJt*KF%^n}p=z9Wc#UE7*TjUblyB!&_ zi7?vg8-`DGZ7rzpjijSqEokzcgIb$We4(JRp-pv0)I+YV)LQ%T7dCwfyWAD~{R#_9 z3A^K^sQo-p>)!Yr8pN8Z%Q>>Q5U{}a*oX`3#N`EIMS%Fp7r2;hV!=*Xj3CxFo7gfG zOWgt;!oFt`_^=ll+hW}|*-y0sJdX8(_-L#%oZ;K< z>uQalxV@ZN$x###6n#Npefm!Ouw8r04sXxVw?#X?DIo9rRaWNTx9RG;j1>#?g3i#} z!^Z*^EV?$_vU^-ultiK{e*!3F63&U(k}N-d^2&J2*oGwuBmj31fFC`{cjZR>mTPsD z$Z+M>T_sGkpb%SC32+y zAMK~^&(wcE!MJj5xV?#Sla1L|n1XZ3?mdnELjwg7iT!?wcBg~>?((p|W4())5l`=a z_%+m{?bL;T!$t7>4(`oa=|g*JPXV!AUI7%VEQl@1aRT2V4!oVY=op_4f>nh0eDyS( z##itk_un{EbU-8Bbz@3Br`JI0(l#GCoI4d<6-iwmd7j@oo$WA$dSUYIdh)!S6c3vc z&KY_Gqg(A5;a-@HQ|zrrIQ6k>;!gP2qmXhVtfD8I?1k%7`^fV154Ss59WQjx1;%qV z5#ycw)um}2i2Z7pK2cj@8`W7@;(2V(PSJad5~j1N_dea)_Ot*HL5w>=qC3UZ74!1R(ajuc3Z#XY z)+e8C7w|KYz3zN<9m}s9*`=%T)s-6ww6gvaEOs%V<5lS7Ro&{9?d0PGv5yzQe9Fk=lBl{@6A3DWa&=yW`X^?Z7W0(f771&*(eEH5cR6$Zx%yC)L>K#UX^+g~i%)~42)#cjKY2n6o+SAK#EvJ==KH-Xr-^6b_GEJ7~e|6d0{=++6Vb9Z4-fE}VWh2u(~YYq7fL{0pYq zX!VpsG})Ek`ZMzqAwR)o*47yLTc)92b2r6ti3P?98?lv<9|S>+IcYPwdqYL8mBXcO ztjddh=47wLvFj=uoSvGcj(>f|i!Hvo9_%mpZmi2EyK=u6 zH`E;IZ=-BDGW;Fa%);-@;F25qu>0m&Vd=SC*<@=MT$;X@PYRQfpF`o<$+myI*US$);3$M8_iu}hhsGf6d!O45(_RbjTD~I^}-Q~v=O}7 z&ZH3~XWQjfas8~Ekk1xor^ zbTYWQKk8+P@N@2-!Upf3<@G>YktM9q-7hfStjSr$gHL7|23{#QuZne4? zsr#iZ=LlO%^DQg2aW~pmA59kfbGrU=@%qV5>HCzF;>7&74O<2I>F-p^c3OP11pi_? zck`ZFUhPrCdL@tge77VItF6`jes417OZ}O!>+3l9M)cn21UE$^ef~4M?)B-gB&q+I zb$F}HRfkQK|M8q_#?5Wc-rW1AFSFv9TCX?91gLI6T(S%dcmcC>>9;qK1fWob{{e5t zwQ_Eo3`2P!RgQ5r^K>i0Q6Y-@dU;={_bHysh$^$x&wWP=*<%7&Ap0OSp?R;w>?dPLk^BbDUV`vc&jerC!DK3Ihn1$Zu3@g_F<1)_uI%H zzfkq?U{5$~%1>2D?y1=O5=_?4DZ7#LN^bPnyqB2k+4EpJZ?mdQK~*mK($&v_m!nyF zVO$D@ovP?sK}#SIz;b~H`1i;6?+FQl12Ga*Vv;OR6{#e(?@Ox_i@s)&6lYaZdhkq_ zPTrDUN%N8T&TyS`EO(^B!$e(U@CrLB#kjkmn5kE)B8wx_K+;+?h0Qwydbam!$s zS>PiRjEXx(%Qs5ZO{(gDl9fDZ`C74OWiXvI8RN7UhMyGvLso1OR4tQ~ZIb_stR!ey zCB0U~l}GaA)#{b>>Q(h{WF=SipI7?o*%AGAP2DaX?I}(5 zaTTk7UPT|?tEsnbV6|>+J7MlH;$XOE2H&!D-n2LAvk3iyP?e56pP zS1K@6tulI(hr=pXdWHXjBkE0XoqF51m2U97e_qA9-qohaUcb}DsK?!S!q=|T*LDyW z9PzdK-?b4Bvk70UzZSGR{o(fxj3sUzA<#-W5h8wX{_+mWq#@ZL@e1SC3$l-X{nuY z;oUi@KMHf^ni{98i~4KIR|ittzgLcRHtnuA%-4<$RsU^o{M%b~(1WupLqF!*ZwI?B zrv|oWdwRD2!&ioJe5L1fVgB#z^x5>l-mit5-G%Fo>67F6tIOG|-ND_#^)+07WPEFL z;%H}K`vlh?nL9cfI9~rhsFnZfj~uVu9O3#So44D)ul~1MIsd!9wT1I4SO43q{D09O zx%j_%mH$`$k-Y!rRsR3hAIVPlCEUXGM?iG&5C4z-ku=QF)>gqDEuF3YfBGZsIoric zUv6iMRQ_9kgtca;yyw67M^a0gi*Wss{6}+qpGLF|QmV%&EcR+YG0d@lT~@^q&&@?<0!8gJPuBc+*bCG!*|LV*X5< zKb~~6aX6i|cU?G{QxA&zGHw3K-`&pkt3&O)N!IQBN|fbN>5@z^bqkq{LdQcgX}R|d zVoN+14rY;ozpB1>k{y|gKTT=;E57>t#~xp}rAYwK#wVic80qj<5(%Xb@6SI=-4N!+}TsXLN9IwXyglB0HNQb6z$#~c!coJTJYQipv1RVI+u^ld=V1Qx>Eai{rI zkAeSY1@XSc>2%f(P9}4WjG5W?agA!eA}!rzl0NM*q z-SB3ypMa`(wd-UF_#AUBf_HQnX}S^m#Z?m|x5*o|_;hzA>#r8c4DQRbG<+92^o2+T zoRMB><%b{D%}`WX#&~YphO&Gz9w-WW%I+8&cI3K3d-X%cPt`e6`;*$h;AD&FV*1q0avEJn!o3Z@*Heo6?mV5?kT5gfX!3Y%zNCc0gGa!d@k8 z0Po50OYKLWLhUy^%$`vAc*P_f5o>aj&D{3;k>-c7y_=c2_T~y8kI87PWRqKhe2>C& z$Rr}UxAWj7UxAhbm_wW;5Na|B-2Uu7ynsdI~>5SnXeVfB;IVkgN z_AaD*Je$%1UaH{pw#4FI7A?2YtDV&+Y3Y% z9est8g#O}fsOQhhA{~;y)X=vO}`>Gw&q->x&eS|HI?Q%#A=bmykIxRCQ zarkS+t@qOyUg}U<AZu*URD9NUV>ycu5exbY*L zS1~f{C49=;BT4EaCuncx0o3b#7QNH%hhF7)XxTq;oFX?^U z)&Uo^$!1MeviQ=Q4al*9`Oj6S91Y)kN?#2{WK5%LrEfMg|GEN-)dT$>%FK&uh%{-D)1rQ_$ad1W>x{H`DSr z6X=qqQj?C|`*prU?4%fk+CVYxy9{BB#Z&HH?1Hne>EtdLjvODe{%*XAWF)yn{boR^ zL_G=2Bz+y$^7??pTl$uC*5|Ov{>R0DN1{y1Xi<>r*|J?>p~<*j0a1G8VV&^)nYz6f zvQd%vgmKups$uR`#^s`>@9jZ-qKE(~zk4=tpKm8e%s$ww;h|mNXy8u@@mFhsf#UX-F7@=PwpV~3r(BMCyP?leq z`e&hE@?=Bn9-+ngB5r#_!_PzSj)nHJhEY8aTQUoaqX|n<3ZfeiQ|ZP{`3m|dF=TIs zZMlX&KMyNX3jaJEZUvPwfJPLe{A`3Gs>OL~#X0JdBGM`&j7B3`Lb==E?Cs)_aV|)V zOJwgRS3eEc;B;izQKT6^*vIIpt7&7RFoms?2HF9lw1O&0<1X0V-J9L@1 z$++8Kf?^v&((M%UtxTL($s*$3iwfp3TSY-gHe0Z8JS z{S5Q@Y%UAV#x0hwz{NqbaeWX8A7b&@Y?;e!v27BuZ|SQc>0I|XP)Yp1xv7>kh)v0% z=H8h=LIT3ejJG_QcoLcTDH&QRndh_##`P&?dI|Sup%j<#q=b1muTnXa=XjZi!zz{D zP!w))o=?6{CT`3=-*5I`f5ZogHERO~>ldJX3PMu~9%vAKy+sgp9Ts5e3bD3CANBuv zmHuUN`69!$8S-5$1xFpvO9_4z9;$v*uq`&Lpiq)NjRuqV$4IJ=~FV$P*Q-+GfmDovne@$l9`(c z4LK}bPRR-oEL+tt`_+)OE>Y%Z3gNi?ynk6HKnV7hB|6bBKlLd;Pbsf9C0@*6KF~;VJOtaIo-HaJmMG~eDlI^k zbn*~%%$67tmR{&p4y0sQ(IqfQ=HlsR*)`-j-d+~DT;_e@fd-CL$y`;*(pNtlsPfeS z2hRc}ldF}B;}}MOmKtC+`WiJmuqy!Sim1^|tzrhONv3 z4Z`y!s0Qmkwx8xg_aWwA+LCN!mzg`OY|nHz^_pi`+YYHavOL=bI? zLp;TmJJ6bKC{1cH)i!RXIni?~!L1M6M&D#V^0}S2$+QCO41nS$z6a?cOQuYqD>l11 zs-M`8v;^_fsm-&zIX_3pl`lxTZ!56x>%sU05Yd-Oev;r@_K%0F#oG!o) z%ZdJt9~2v_hc19Df}Qe)owkTht2Q8mDcFL!M*X@|-LINKwgA=kO}nJ7Hn}Q7FbiQz zNKsOJ&D(b4+rVSc*3m#%EQ^cYbhFb}b{Exi6xSCbGdSn!22)CLZIBVkq9LK?k3Z5? zvrVp-NzN;XJ+aU$-fxw++eM}N`I1f8AY~%w$&V^qB;FRWi?~WiCU|JBFa5eNbGOeP z(dw?(l=qHI|$-}2*iII zgq3M~rC&q#uZQ>NYmTJ8pYVOxQ7K^Niwl$J^4#eVO2%CegUv_4KIBl(2FSD2k!N=K zzif*U%BiGjRigCyc0Aqqei_#<32aQkZ1zKwfkRARjDJ=D=XZxX_!>SLe2b9H_W|Gx zB-plsco<8PaN8ubKy+^gJ0{UQCbcjo@t6F(gXF}PSiZD8ND!A@DOXY(@5VyxM!<)3 z69USKE;A5Xp9#8INC0v|hhe~wq46DI8>lJcP6OdLJ_3S5lY`jW#GgIsETc?F$iiUe zyOPWz`eD;BXg~$T4uL~IL_M;xj(_jsVCDUpX3?nFF4MxUWnwB?S*j;w{Yauj{h0)# znYxjJud?Hcew_n-KuZARHz7F3|FhKmX9obprvefLC@9;@_n6K1&4k#t0fUTa>=$Uh zHq-9>A#pB+n&?k~`3O86N=&>7!!+^-Q#)M|M703Yr}gc#}5TXF(GtN}Qk^66~hvy>EA zFy-@>R#GN1+g010knU|@g1+Oh!oh-~AT%P`v;dMMe0A6XiU?Zth6aK6aNCbzbC zCUUQUm>l9~6NA|a!Co&DbN=GH^g-6PvvAqzAOtbYZ|szk^ks0nASG##DHsh%u)K^f zw}UF}$A>IK{xHOHdVk)C9G>bU=`&5!QYV?mlIW(B^i_=YRU{cXGF|jWJoupBVnhIW zP|2)Ps?%TMZa*-moO!^F;v#hYhene`3uk_{zrAi04cWH(*t5rVZKt~T!pZFV2svP7m zZWDcu7Czce`y$j51^Iea?@-p@!Z$f0K~TS+QH&gjX`zz51GO^EtY7?c?Y+OXUs+f` znlDHwVuNK`j+;R~rN{@bs1tNWWhU|-QbiL|`#@FI!OQ?q^hMLjtqj>|8M8TKB&*Pl zEpweGU|VV@)vdn@Bb${6$T#cHMI#9<$szHud!*l6*_Xbg%{3H^WE3$I6wK8{EJOS> zh6mbyJ-iDsLk?crbhAqivK14$HvPQXfvS^0c=|{dm~&1wj`3ZN?+mc0bdVrN&XD9# zwgxaP;4>%bFGs*H99%6MoX}}*#iPr_(+49pcFphZYs3(aG1k9*`bS%N$~X*~&kS`q z1b(MKU4ad{MV2`Go&IRJ>*I#2RTVf?h5=&mb`(K6yq9afy<-aha^5_%;$@&moR$3yO>2OzvK0g=Uz?^V0TFQ zf?t|{L*kp?k7DTXA|CFJa+oafuIj#%=6#1GT|W8EnsNfaQEiT*lLoC)EORajk6=PQ z{fYnQlzVQY>S<3LaJdfx8+EN%4VH$gz&Vv7_KvPc*~;9br83PvS}BD2Q`v^}qR&

    (U6KdxpIuEA2qM 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

    7G51m!djUn4 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 Date: Thu, 3 Jun 2021 09:24:22 +0200 Subject: [PATCH 121/188] Update README.md --- README.md | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 54 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 7e4181476..82596cb16 100644 --- a/README.md +++ b/README.md @@ -32,13 +32,22 @@ Mava shares much of the design philosophy of Acme for the same reason: to allow A given multi-agent system interacts with its environment via an `EnvironmentLoop`. This loop takes as input a `system` instance and a multi-agent `environment` instance which implements the [DeepMind Environment API][dm_env]. Mava currently supports multi-agent environment loops and environment wrappers for the following environments and environment suites: + +

    + +
    + * [PettingZoo][pettingzoo] * [SMAC][smac] * [Flatland][flatland] * [2D RoboCup][robocup] +The animation on the right shows MAD4PG solving the Multi-Walker environment from PettingZoo. + ## Implementations +Mava includes several system implementations. Below we list these together with an indication of the maturity of the system using the following keys: 🟩 -- Tested and working well, 🟨 -- Running and training on simple environments, but not extensively tested and 🟥 -- Implemented but untested and yet to show clear signs of stable training. + * 🟩 - Multi-Agent Deep Q-Networks (MADQN). * 🟩 - Multi-Agent Deep Deterministic Policy Gradient (MADDPG). * 🟩 - Multi-Agent Distributed Distributional Deep Deterministic Policy Gradient (MAD4PG). @@ -46,21 +55,25 @@ instance which implements the [DeepMind Environment API][dm_env]. Mava currently * 🟥 - Value Decomposition Networks (VDN). * 🟥 - Monotonic value function factorisation (QMIX). +As we develop Mava further, we aim to have all systems well tested on a wide variety of environments. + ## Examples +To get a sense of how Mava systems are used we provide the following simplified example of launching a distributed MADQN system. + ```python # Mava imports from mava.systems.tf import madqn from mava.components.tf.architectures import DecentralisedPolicyActor -from mava.systems.tf.system.helpers import environment_factory, network_factory +from . import helpers # Launchpad imports import launchpad # Distributed program program = madqn.MADQN( - environment_factory=environment_factory, - network_factory=network_factory, + environment_factory=helpers.environment_factory, + network_factory=helpers.network_factory, architecture=DecentralisedPolicyActor, num_executors=2, ).build() @@ -72,8 +85,33 @@ launchpad.launch( ) ``` +The first two arguments to the program are environment and network factory functions. +These helper functions are responsible for creating the networks for the system, initialising their parameters on the different compute nodes and providing a copy of the environment for each executor. The next argument `num_executors` sets the number of executor processes to be run. +After building the program we feed it to Launchpad's `launch` function and specify the launch type to perform local multi-processing, i.e. running the distributed program on a single machine. Scaling up or down is simply a matter of adjusting the number of executor processes. + For a deeper dive, take a look at the detailed working code examples found in our [examples] subdirectory which show how to instantiate a few MARL systems and environments. + +### Components + +Mava provides several components to support the design of MARL systems such as different system `architectures` and `modules`. You can change the architecture to support a different form of information sharing between agents, or add a module to enhance system capabilities. For example, you can update the above system code in MADQN to use a communication module by wrapping the architecture fed to the system as shown below. + +```python +from mava.components.tf.modules import communication + +... + +# Wrap architecture in communication module +communication.BroadcastedCommunication( + architecture=architecture, + shared=True, + channel_size=1, + channel_noise=0, +) +``` + +All modules in Mava work in this way. + ## Installation We have tested `mava` on Python 3.6, 3.7 and 3.8. @@ -142,12 +180,22 @@ We also have a list of [optional installs](OPTIONAL_INSTALL.md) for extra functi ## Debugging -Simple spread debugging environment. +
    + +
    + +To test and debug new system implementations, we use a simplified version of the spread environment from the [MPE][mpe] suite. +Debuggin in MARL can be very difficult and time consuming, therefore it is important to use a small environment for debugging that is simple and fast but at the same time still able to clearly show whether a system is able to learn. An illustration of the debugging environment is shown on the right. Agents start at random locations and are assigned specific landmarks which they should attempt to reach in as few steps as possible. Rewards are given to each agent independently as a function of the distance that agent is from their landmark. To test both discrete and continous control systems we feature two version of the environment. In the discrete version the action space for each agent consists of the following five actions: `left`, `right`, `up`, `down`, `stand-still`. In the continuous case, the action space consists of real-values bounded between -1 and 1 for the acceleration of the agent in the x and y direction. + +### Feedforward systems

    - + +

    +### Recurrent systems + ## Roadmap [![](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Sequential%20environment%20support%20including%20OpenSpiel)](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Sequential%20environment%20support%20including%20OpenSpiel/vote)
    @@ -190,3 +238,4 @@ If you use Mava in your work, please cite the accompanying [robocup]: https://github.com/rcsoccersim/rcssserver [dm_env]: https://github.com/deepmind/dm_env [pymarl]: https://github.com/oxwhirl/pymarl +[mpe]: https://github.com/openai/multiagent-particle-envs From cc5b0e1108d0142740f19c7cc501a3e130a8609e Mon Sep 17 00:00:00 2001 From: Arnu Pretorius Date: Thu, 3 Jun 2021 10:21:31 +0200 Subject: [PATCH 122/188] Add table of contents to readme --- README.md | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 82596cb16..8fbf6f517 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,18 @@ # Mava: a research framework for distributed multi-agent reinforcement learning -**[Overview](#overview)** | **[Installation](#installation)** | **[Systems]** | **[Examples]** | +# Table of Contents +1. [Overview](#overview) +2. [Support Environments](#supported-environments) +3. [System implementations](#system-implementations) +4. [Examples](#examples) +5. [Installation](#installation) +6. [Debugging](#debugging) +7. [Roadmap](#roadmap) +8. [Contributing](#contributing) +9. [Troubleshooting and FAQ](#troubleshooting-and-faqs) + + @@ -28,7 +39,7 @@ Several examples of system implementations can be viewed [here][Systems]. Mava shares much of the design philosophy of Acme for the same reason: to allow a high level of composability for novel research (i.e. building new systems) as well as making it possible to scale systems in a simple way, using the same underlying multi-agent RL system code. In the latter case, the system executor (which is responsible for data collection) is distributed across multiple processes each with a copy of the environment. Each process collects and stores data which the Trainer uses to update the parameters of the actor networks used within each executor. -### Supported environments and the system-environment loop +## Supported environments A given multi-agent system interacts with its environment via an `EnvironmentLoop`. This loop takes as input a `system` instance and a multi-agent `environment` instance which implements the [DeepMind Environment API][dm_env]. Mava currently supports multi-agent environment loops and environment wrappers for the following environments and environment suites: @@ -44,7 +55,7 @@ instance which implements the [DeepMind Environment API][dm_env]. Mava currently The animation on the right shows MAD4PG solving the Multi-Walker environment from PettingZoo. -## Implementations +## System implementations Mava includes several system implementations. Below we list these together with an indication of the maturity of the system using the following keys: 🟩 -- Tested and working well, 🟨 -- Running and training on simple environments, but not extensively tested and 🟥 -- Implemented but untested and yet to show clear signs of stable training. From a59e4bebc9d18d3956c24ea59b51c44c5580140c Mon Sep 17 00:00:00 2001 From: Arnu Pretorius Date: Thu, 3 Jun 2021 10:33:05 +0200 Subject: [PATCH 123/188] Add link to launchpad and minor edits --- README.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 8fbf6f517..a9d8210d8 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,11 @@ # Mava: a research framework for distributed multi-agent reinforcement learning +![pytest](https://github.com/arnupretorius/mava/workflows/format_and_test/badge.svg) + # Table of Contents 1. [Overview](#overview) -2. [Support Environments](#supported-environments) +2. [Supported Environments](#supported-environments) 3. [System implementations](#system-implementations) 4. [Examples](#examples) 5. [Installation](#installation) @@ -17,7 +19,7 @@ -![pytest](https://github.com/arnupretorius/mava/workflows/format_and_test/badge.svg) + Mava is a library for building multi-agent reinforcement learning (MARL) systems. Mava builds off of [Acme][Acme] and in a similar way strives to expose simple, efficient, and readable components, as well as examples that serve both as reference implementations of popular algorithms and as strong baselines, while still providing enough flexibility to do novel research. @@ -32,12 +34,12 @@ At the core of the Mava framework is the concept of a `system`. A system refers

    -The `Executor` is the part of the system that interacts with the environment, takes actions for each agent and observes the next state as a collection of observations, one for each agent in the system. Essentially, executors are the multi-agent version of the Actor class in Acme and are themselves constructed through feeding to the executor a dictionary of policy networks. The `Trainer` is responsible for sampling data from the Dataset originally collected from the executor and updating the parameters for every agent in the system. Trainers are therefore the multi-agent version of the Learner class in Acme. The `Dataset` stores all of the information collected by the executors in the form of a collection of dictionaries for the actions, observations and rewards with keys corresponding to the individual agent ids. +The `Executor` is the part of the system that interacts with the environment, takes actions for each agent and observes the next state as a collection of observations, one for each agent in the system. Essentially, executors are the multi-agent version of the Actor class in Acme and are themselves constructed through feeding to the executor a dictionary of policy networks. The `Trainer` is responsible for sampling data from the Dataset originally collected from the executor and updating the parameters for every agent in the system. Trainers are therefore the multi-agent version of the Learner class in Acme. The `Dataset` stores all of the information collected by the executors in the form of a collection of dictionaries for the actions, observations and rewards with keys corresponding to the individual agent ids. The basic system design is shown on the left in the above figure. Several examples of system implementations can be viewed [here][Systems]. ### Distributed system training -Mava shares much of the design philosophy of Acme for the same reason: to allow a high level of composability for novel research (i.e. building new systems) as well as making it possible to scale systems in a simple way, using the same underlying multi-agent RL system code. In the latter case, the system executor (which is responsible for data collection) is distributed across multiple processes each with a copy of the environment. Each process collects and stores data which the Trainer uses to update the parameters of the actor networks used within each executor. +Mava shares much of the design philosophy of Acme for the same reason: to allow a high level of composability for novel research (i.e. building new systems) as well as making it possible to scale systems in a simple way, using the same underlying multi-agent RL system code. Mava uses [Launchpad](launchpad) for creating distributed programs. In Mava, the system executor (which is responsible for data collection) is distributed across multiple processes each with a copy of the environment. Each process collects and stores data which the Trainer uses to update the parameters of all the actor networks used within each executor. This approach to distributed system training is illustrated on the right in the figure above. ## Supported environments @@ -250,3 +252,4 @@ If you use Mava in your work, please cite the accompanying [dm_env]: https://github.com/deepmind/dm_env [pymarl]: https://github.com/oxwhirl/pymarl [mpe]: https://github.com/openai/multiagent-particle-envs +[launchpad]: https://github.com/deepmind/launchpad From eb0997f52618ad07e13601e5d0ac0b53fe6b024d Mon Sep 17 00:00:00 2001 From: Arnu Pretorius Date: Thu, 3 Jun 2021 10:52:23 +0200 Subject: [PATCH 124/188] debugging section and resize mava logo --- README.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index a9d8210d8..906b38ebc 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ - + # Mava: a research framework for distributed multi-agent reinforcement learning @@ -198,17 +198,13 @@ We also have a list of [optional installs](OPTIONAL_INSTALL.md) for extra functi To test and debug new system implementations, we use a simplified version of the spread environment from the [MPE][mpe] suite. -Debuggin in MARL can be very difficult and time consuming, therefore it is important to use a small environment for debugging that is simple and fast but at the same time still able to clearly show whether a system is able to learn. An illustration of the debugging environment is shown on the right. Agents start at random locations and are assigned specific landmarks which they should attempt to reach in as few steps as possible. Rewards are given to each agent independently as a function of the distance that agent is from their landmark. To test both discrete and continous control systems we feature two version of the environment. In the discrete version the action space for each agent consists of the following five actions: `left`, `right`, `up`, `down`, `stand-still`. In the continuous case, the action space consists of real-values bounded between -1 and 1 for the acceleration of the agent in the x and y direction. - -### Feedforward systems +Debugging in MARL can be very difficult and time consuming, therefore it is important to use a small environment for debugging that is simple and fast but at the same time still able to clearly show whether a system is able to learn. An illustration of the debugging environment is shown on the right. Agents start at random locations and are assigned specific landmarks which they attempt to reach in as few steps as possible. Rewards are given to each agent independently as a function of their distance to the landmark. The reward is normalised to be between 0 and 1, where 1 is given when the agent is directly on top of the landmark. The further an agent is away from its landmark the more the reward value converges to 0. Collisions between agents result in a reward of -1 received by the colliding agents. To test both discrete and continous control systems we feature two versions of the environment. In the discrete version the action space for each agent consists of the following five actions: `left`, `right`, `up`, `down`, `stand-still`. In the continuous case, the action space consists of real-values bounded between -1 and 1 for the `acceleration` of the agent in the `x` and `y` direction. Below we show the results from some of our systems trained on the debugging environment.

    -### Recurrent systems - ## Roadmap [![](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Sequential%20environment%20support%20including%20OpenSpiel)](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Sequential%20environment%20support%20including%20OpenSpiel/vote)
    From 35b083535e2cb3715bcd7f1334fb251762fa8644 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Thu, 3 Jun 2021 10:55:24 +0200 Subject: [PATCH 125/188] cropped version of mava logo --- docs/images/mava.png | Bin 40368 -> 65101 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/images/mava.png b/docs/images/mava.png index 63c9fca3acb500e83025f8a6a53a4bc39e5f0a20..41225ea4b8ba43ce3be3b0d47721493b8ca074bb 100644 GIT binary patch literal 65101 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%0An6ZODLjV;6Ac{M(Gu$X{KeG--8B-1 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 z z+l1sCC(3ZMOh2c33C#5#v1H2Qf#Mz9S=R@~r|<&cy1O)aG#IqS4r2w!acp?bf5b9^ z56(!x=Dx2*22E3mt-mBbn-?DC;n1#skVek_z18p`qr0no2VI#0VK(1Hw?=!X_kUoZ z-v|Gd{8KnucQP67D2Cy@&s+|r(x|Crn9DOU;3f{zJ@)^3WgSO_`74hifgSK5-TOt& zmcO+LuCC}7tCjWsu^V%U*cx4hSqO)hPAwTRyjn3c-MoE_!Ut;qu>+m@l#5Hl_gsq? z)t@62QV^(x7}@(~<^UH`R3AxY5HoN`Rz-DbbX%)XTeui0P#YP>58BJL6T~*1q1I*Y z{UVV+CutyxnE?UoM)(|rBL`=t%*!8iV*R}zltY~@t%_9CkHes4n3?vx1uM!!MA7~V zcq)l6Oj%w;Wo9ih?cQ4H*9M9>qYKO%z-_=98eh*Qmft1Y-x@ms~)VHkJ?wHE1GyESorcBRw
    GXR6$-yfR@t^m8=6JtRI;0{E}!l4 zx;F`opt_uY@%)a2p0e$zk1`~_00o^1Ur9IO-W}VN_Eq_}>HZ|d*`^4OCQo5N)(AW@16yM z9C?~aC~!NkcWAWNWWGi=YV^N!;sP33cU}WWVnLj?ky!4(o!N_PQTGECjI9tL6uJ=f zdgr6*3p&c)0ZAu=NH?k9*+fuTAz&STE_(c;hcSf-@h_`9(B4yy608BkXH(0)N6ZijVPVRl7*JDr7|C z0Y(mfB?phVLS7+LI-OX0qyZx~Bl#ShHZffSCtD!!DT&;`LMWruNQ3=Z6T_6Z=MZnl zY45QE>$`B`mS~Lj1?!)LWsV_VDege<>pE2qpCWqsw63~MPvW1T`UHc7`b~{X`)DcR zIONfEpiHih!A^{-^5V&K$hBI{W+WErz)z1=5$iaq5SHB%rWs$GVoB@*sZ^}evyUC( z7L#TU1=Wf8Rxf{52{ix7^aOMf&@p@TF-S$lJ#@zYjW<}o*rs4kg7exg|2w^54v-Wd z7@t+Uq|%plU8TzQ1srKeWt^H~FGKs^M-kpFRalGYM}X$Mk{A5k=gtuX2ESg&ZA zwdk?XWA$WVQ&g(Q!f>M4C**w#BJ+v-0+a)axT;lAw@jh$##w`z2vS-GG7Psz-$kRUY9?R(#}X7KjCCLT^0P?t&?(4Q{f*)ks_w_e zmiR8m-wpGa=VV~$p#ggpLqp{FlV+^N<1M;oWU z!YJSi;U4z#bXU{`k3q9nRSI6lxD|)*-_cJJ0tb+sKtTzYj!g62h|w-GYdr?hD`rU* zY4C%6Pk(Q4{Pk-lQ|T`^q7=?Nf)Wenr0`1IVX4C?(6ru*yQn_%{K*3Vgq2#7tPeJe z4%6MjB@0j2J_ggXc+lqQ0)FTBO$Vk|zhA{s4f@~?1+?_B5h_h(i6tiE00CB7T^^s79nTJS-0p z%0H5!+|ofC&xMPH*$DphNapzha^xG*YuEon7`}tM2*1k`n;4ZY>63gHF1tu3dNvnz zK6fW+SygMZ7V_o8R0E4emCqj>2ptYNX70~5Z7D6J?@r>nONNPNDbFr~Vme&NJNp5v zhhM})ZxObr&HYt%>8*Y!>>8{KU9H`NjN%~!=T3RqI&yR5*{k}%sY8E8PXERjwAeYY2W}TyjqPJX5P^I5g0hMXRTvOTh;yvrv}{kKe&NR z5cBkaVG}mxI|9^C`o6WgmR}HT)>o6sZ|9{31rqsgl$FJ?p3b_Oq(3px-1eved-%CZl29j4H zm9b&Zg3SDEXf5J3o>v6_LNABmTC?7xZ||5pua}9#BlMUkN~$lHB0 zQpx-Kbk@O^z}c;cJ3XdxOLe_LzLXU?0&+LW z{i#CY47>GRKlP1IhXOlS`VLJxFX^$y^irVBAC}f4A%{LBzLeBNdfz-@^hlfX^JfL| z`<2)j$_nN==ORQ9XESM_v69qo1wtCaL|(zJD8St)zJvyH8Cl4K(nS)sj;gV4CvEfA z{Ca(X2+pA-A6KLtr})G;1(r{xRs-zE{mk_EzfjMV?qbRnkyDoSW9k50e8c@G8c-8A zQ;}zyXgS(27yt6+O!43YS>Z7Z4p8dro9%G9fvtL~umEW3bNm?G^|6ATS{0IxeZus4 zSGi+38pasn0meWR2StAEsmU`;65s`j5mC99~9l4@p7dP-TV(XG(hiz#e$H5!+D?65U8|! zdx~hxVqsW7tIYl?#PcXHlF!_RmDh~h<}Ff~-+#v9BaP)5_WbIH@OQ2a51gwVB)J&K z_P6r0CDqAdzhg_V|ML>I7?Mav{a_-ZmR~kfWpQ+pOJN0C z(htumWN68tHsY2vfCMUo+VwK-UuK^0+jHBqVF7Xfe?}n ze{XeCuU zusj5vCVIlu1Cy}(eM+7z!Wc%m$c;UxG|{+}=96PU>Rw>daOWoNADSBdr|>ZMx1>|R z-;MbS!r$+!+u=uzE`vPWDXIc5y}lGlsA?^3H@2g=Z6U*Xbd83 zgda0q`TSIm+tIU?_kSIQzCXa>4l6u| zIgj5))Vmh%ylgke$LJl4r2(tGhE2)wHJGK)$DH~51586uyKCL?78|*$;Nso4=c}rH z-qCsNqm~pDHLOQ$Wo@TREVykJ;s)ALt!I=<-x)UDmgm%f3^KLvlJwOJcqPzP9z}9Z ziY5Ek@uYw(_8g~gW8taNF67a=&uqcKuJ9*!akHsNXT?Tc+Q*A`LXh zv^Rqt8XD%@rxhjXG~CEh6r-QFkue4gnx}Rga(EQEHF&42YG#8g<--x zZtRi|KhMo5l^tYRjNAsir6cc}#NJ}Y_2Tmwx8ms1d6BluG zW2TRnIQ`&dV(CbCqtJPwNJ}K~Th4aed@qW+Ax?pB)4S&`3fh@xS-?CDmmG2n9^#uW zuv$WQkW~?Ofe3{OyO7cCS65b;yC|ZDHo(CUx?-h%?!Yq~*myCd8j+E%eK#90X7gVL zNhDn>RcQKbFIo_;NGRZRhuF~C+X21;8g;i^)*X4)n*gC$r^STFT2e}G%p=&Go zR}mJ0&m5sq9PgH+LZ@uZ8>18!^ynvuD#CRJnoUI-;qw2B3Bxc<_z7S_>eGsB>eK{27+Vr<#q3s6 ze8ub$_+}rqmDd081K}E^nhB`Yi+7p6H2B7+dlclyZYTyqb@;s*1#0Kq&n&@Mr`*3! zT96LYrW^7V0ER7+?_n2-;6Fl8&wp(_F-eZ3ebP2e&%i*y8E>7A4B&zj(jj5Q%9BB7 zC4Bjdue~kkPmZOu=thLk{sM`vakg}aAB-k2WYdu}I*+(KK-m#{FDYn{oeXoGzF`;# zz(K-QvbxXN*rK8w1*rKkh|@8&f7zk{=>u@P>7kRw^N^|vm85MQgF@!wO@bLb4P?Rh zQFi6P^LRh-b#CJQVXf`0_SqPqr*xcvZ=g$W7hkOJ(*d?L+>j33z3D1e_(2>1z7?u+{xvK6M3ZVErt(yIDiELS=q|7Iht zdpxIE-V7SPL(W76({X8iT#d5)K+%0NYy@Zq(y7M?YQ2)^>@Heb)F~gd z^91v7f4!{}!%_}hfBl?x$IcsS={SyE%t+Q4q~KUm1Xu1E<00SPz=vZdn}$GHyPrg&cfUKkk~ zMEvM01_!30A|Kbz=?=##myOHKI{B6&UBL4AOB8i5s*>&BPmW(=cRkIY?nI5n8owYW z!7*9M!3>2h)-kJu!W;i6y%L)lQH*6~01FtFR=?X3fshDaYN;o#`yS8&HL|Yo{|f|f z{uc;VRM7?`u(7hP=6hOGsZESo0FIDrMQaZt3Kq9(BgQqX`k_jt!Nu_$J2DTm;bk*R ztfj#fUgy9B19f`gIx6sQaShhmRv?sMjlg6pj^#pn)RxjD+lPnmhEW703Twhh@shhB zcAp9nVrWzUUc)JN7y4F*w#{PxyX{cNkf z4dCY1N4=mr-~a{Ek?u)Fe_ori)SL z*6>xbb2upja4}ef2)v|^A;`kzDUJ))fZUr+^YYaLk00ktP}%RDcHROtP6kByIOGl= zMV||=Ac<5V=H)8-i;A*k^QV`xb z&(^A;3U(WIAdDYe7=-}`%#=HT@LSKox7M7hkA06@W)$}gZ^)7eC~X#S7^f3Iqe9^V zWg)Jfq;WrGWg}IQ`?GV*-b!LYAuz%4LV}F|MMCZ$GHyGa9A+xmm#>T7HVP!vi4Zdi zY&V&b;^Bez^cA-*9V=K9Sqf789^75}DUkFETqX|vJ0*T7Q=5yf#u-xQWCJ(dejs!C zZ=6RpEgb%yO^%~DF&>#9)Dd5~2TX)N@$BN4{&%PsBrfP7oxp9buC99u9#6!o>dHvG zPZk1oL%$a6ppax9+$wK=d4 z1j9joU?rI)+EUGH#eI%f3Fs%A@3`))do8PsH;bWi*eQJGkO^B4~5{w^b=B(6IuI{uyL|Fp z%iMkYYkJk*#(UieHuZR;ZRits^f&`G_cTi0>GZt8`$pK-oQ$;iN2l=c&?Id5r$cH$ z66EVGB~YMm-fM4c@};VnEdIqgj@8%h-30|wg`l)%>Bh2#^`BfLlaK+k9!MxlB9nFU zw5<4*_lyl4C-(8D{sDCE2jBGi+J6Ht@%VQ%pQEKO{%tyHO#k>Ta6LBz_^N<}p_%5{ z55^3GO@D6C5~gGkja}?7n45TU_^C|HY(f}s)aSCNkA3We=lU!G-|f2n!zxfQAVoKa zA_i7LN{0rCB{(8_9ZDs77OX_HOmIQ)(6`jEDB*d1lf+CbypP^X1h;i7o*iQ!Y>lHc z$_p;RXO}pe=hltiUE;~9!SaZ8cXJeCWPbU&oaf(fgP4`%G;Y8e)^Qh;s)2ASBy8Fq zSouV4VO$3{Ebx{Z?6wQjIKK6bhd@{!S*gW=A~a;C>HZok<0bylmt6&}3h0SgOMvuV zYat-u9WpW1g>7yqz@<(LuKLcxJ``o?*o*m6ZfY-!%BsX8*-Cf41$B*@&>p@O z7=R13M!q*Y&ra*9%PD(VhX@1-JSG>IYeD~~y|esltLgfE2^1+%+)8mT?ocRF+%>ps zDeh3*in|8C&=$7@hho8@xVsj2hn)0!?sM)x;yihk7x`rGJ$t@OX4d=`Eq2CR1h4o% z&IByb<^$&#`$JRtP@aEXJp_bmh+7oOQ#Xk$ls&=Gm9g#e)P>Z?tv@|<58p!IUh0Yv zk`4&J=`g_VlZgxrzmLK#l?#jDZWAM*61kn@a283SW;0gYCO)ZtW#YZ|h_*NTI$uq` zE~9bc*+&zXUwR*$lY{IIu~ZB%+~42m?mbg-&@O$h1bl{v!}+sSb77AG1HY*2;pnd=dirf;|5~9Sh#GI z5nYz(xnOA{V*T`Tt6RigAhOdUwrXpPQx0M;+}0@lBk0VInV_Zuzxcm+`@g2dBb=QB z)L51__%Abqb|^F_#5s;Zyx5o}{S4?_E^l|4-;MA{+QiCHawQ^j zglbL)_U$)2wblFtc4M2qnS1(`P^H|OwIllY9csg$T=ihQwE8LEo8;vNKRh;ByR%?l zwH7XNc?A`%1xWA?>mVOD=@|DTq>+#U-56MrF5tRT=!ME~J@3R^d#kSfyn^%KG7{?b zyunZ>sUeynL48faIN7tGj?;mS@zi6GL&I)>@hg_G*B&#-P9)s_X8bX_d{ceG4pfuD zo2XL-KPnmDa8jS~RR&>m+i7NZuTToCJ)pIH;~BgFjic}qD8>kQ-&7bw-|hbLg17id zo%Q@zuqgV~ZI4DAkY_6FqWb;JfY|Jq8$;p2d+RWGIT6EyJ;jp1>?cPIQPe2&1wGgs zc-xk`U}98BWfP$C0d^UaOI6a(alVI4H5$~wK)~Ov0m|C6;2-DISGczQuS^T%zF|B- z7c55k@1Q@$0ZaaWz4*AEP*7R17M)(vnwM5LNR0^PEb3};yTTh@K@^1aM!=ILVfc41 z%=~nM-jW=HKnyB?l$|HMS{0}9dzx#!b?-Hy(s8F&=WAO-|0mS(Q1stVK5*?tcpsMR zz*i)uM4hee2B7>XMM6LLTHh2hs@;1{GDFjavI21zbJG5gISZ%1Fb~AuO@?OmVCH-e z3XTKOpT&=cySU5^xiMHTHP3#xjl5$Na zkF$;BaX#+Z%E;Eslx|p}8j+DXUh?}2%JeNPWDOYXW^A`PmPX+$^|fq@N)IgmpNv%V zT^@@O8J49(8;+L8npSguMg_gh!&rJVE4b`34ri@(;$AGK+8q3dsXechnmW2eqL#1T1qCC!sz099fb;EkAHzKFj&rK;}z`6_!fFw*zlD9J2+ z`4ii>gpA-{OwpmG`EFFvM`+#I1Fxw!lpAKRop|x9ub5UvG(20_beD}q8iuOUll5+z zCDl;@key|3@%clXU`GmaKDydZE80Eu|GrQaFX|o$i)+HC7!m{f1 z>xNl_+}EWXB@vxgj1mA~STp8aHILEmu1yi7Z#(OzD!M`f7#?m9y@VcywbPn{ z&OgRC-ZpkRV$M7*XGok?KH;$)>gtc=-f0)({0b2~5KcbI%N+sc7rWvD5Y z7aetO{J_ta3K_YU=2zod=~VWsXiYx6I8}_XD+Wr1s!T~g=RDbPtcFV^QYI^MuQza= z)pv?~gApcC$_nkMS?`<#^NLdG?M}QYHT;d!n{hxUR{w0Kv^~`glJnfoo*kS^;APO~ zz7|Ct(LBT0?3&WCeCxW+hFx822wJO*F`%S^KQX30iA`$rkBX<+^IT$L9UZQp{1Vc3 zpf!OK0`@dHG8$)b(!6?#aSKU~|0+h(OIqU8kEh!Qv|FQC_?ifMrC zyWci{7Oanwp}fPQ5anQAZ^h9B_I_xwmDyYwbk?Xozo|N-s({p#YUBTby}P7iYXT#0pxYs1}ittL{pD*Maq@W5Y+|6 z%*_kZI|s0)PBS<+CiXoXC$;uVu}9a@xIUl>=xyZ)$ne`Vjf%%oPvQQii-svs=vdBW z$+12fP%|L|pgu=*rqwb7Mm}dw#%=u{X^3PaLVqp8n-}SgJJLPIvS%(g+#ehB3?uyI z?Tp`6^aCGa4gtwMRRZl_-Ud3NMroIdSW!nL;LQV;h?f2ZjRRpzfuZU@oH@_r&U~Ar zv&$m>dTI&u-&W=i@}!`ENOfzq6f5SqRe}*3r_sKPHB;6!$~TQA#-%t#0f*INaHI!% zLHTL%=|-S)j_~wXoq27N)Ixbn0`#?UopFj$zCc>iqB;tdjuw3T3)z36DxUEtcaN50 zFa`4Co&N3nUWR7y?r39L0i1xU?FJaVrM1(apz^v7&|1<o(YZMkG7fsu^$P_^4F5XJ%Sq9h{v0`%{o9jgN6V0~M&W63x z*^A0&#v1t>wFoEOqDb34yymqC(M`AZ3*a`(88tclqh*+3VHa|m_rAOvye%;X$tgj~69<8F16P8>k>JFFWu$SA<%7g@9F6;d(J20oD|o~H5; zgHW`sNINUDC7w-Jsn0flKtBVhhy=BQgq@)HOgTFk#G=@_cacfWt_#IWNEl-|yX`A{ zS3Y7Imw*F@$a_{>nk^v#6`|jQnCLNq%}~%`pqp-&quuT^SC_!<>vtz@D|gw?UT|~4 zgOo(0nhrn1J#P~5i*mbrpytgG)E!lfk_^e=?Tw4s=GYV&B>B$5YK{g_ng+JUXbNnS zU0=Aav?qzzWG`_^qeajq^WPg@w4xj2tN%UQ;^jRQ>cWg(N6%dNkZ!RwY;Ak`KGKsK zT`u@zV=Lb}eoFiyc1BJhWU*WZ%M0o=&_17X9yr_hX)v2!A^%}?ch{p%siYJ97aRj? zsv}vILH}7A8*bVW`}eNzTR%w%g$uJ0FoZrA%`4^FpUs7>zc#wi|WAWTBVl?nm7|-F5PGQg^g@ z{xu3Gx%I;1W3_68*|)JbDj&oxx3*V@eco7Mf-JFH7P8 z`G<|aEJYaqm!*uXzbw^-kmiLy_-{qi^OvH$Da9TDAXF|>JnLffdXtzY3%lxtiXkC6 zKu#K2r4%nN8Tm1iC9xhoBl*%VpmxGwKc6pyA{{hD8G+};$!-N@{?}dM;39n`AD=_q z7v;|iD+;aIazk^CJe`j;fR~f49*E{l)Q^@n;FKQe*&1;50B>tl-+1Z zT$1Zsv*P`eUqvOT8EDElevvUOoq|~XvVjlD2 z=yZk&SfDYv@lcP-*mf9aD$nu7%KiSXh=JYFj`ijNQNrF1(*kT(tT;~|mxA*nJ4MAq zonGTZui6m((`-J27evNari$eBFNnhZz?*;C_FM$hp>vF=>(_$$KmMg~S#^^a!hG49 z3U|{iDS_rfG3kEa^4)ftsL<0hdU)&_$iCVU4hhh+AE`Rniuh&q6?tsAdX5*c48@IL z2mT@nYQcEB1G3U$bs+|HcXJ>hBT**U1Nc#Vgu~vkSY`bJUBxN;jG#{XP6_^`T@lPc~_Ou@*CT|N6EgTii+rs>wScA7pz&Ltc%sT2M7ab$_@L6e|>Xv z&Rexfn!Xt;1;U1UY^`raKD-tY^QutJ$7!}FMBuH0VoB-VLLecn(e+rco{84 z*wQsZwC|S?LTp9>gksL8rP-an7+v>Th9pbs_RE)FV)|#W?&t$ive095f+H!GpC6f1 z@l8{GzxA>;KVIGVvJueB#gs;}Lm1x}$Q*uCbIU0z{oX?>{7)6r@Gh*;;yhs2l_(W_ zzNC`ugkGSDvG5t8wP6Gm|goW3kEh$zXd!a#YZ=t^n0TCG=n$GL}{)e zv-4AIkg5mtIdl12Gh51Mg44?HS2ePoQS}Op8~EjB#9KL{LM=!N|HJ4LoKe-YHGK$~ z$Y(|Pedmj6s-dv|i>McjK`>lw7R`70Pz- z7IW1Bd`ywcV!JLIgo=N756}9lbl2=C{j7NqhC}*A;W)H1{Nfx>HLc|_8#qLhe>^p8 zmFfZ)^hUtl_M7|=n28RYfKv)8P1qtRY$V_B{4Fxzw^df-n(;Tr^gns@eEYhOhS>33 zu!+uC^4QnM)t2twV`^m++|vVLLAEc^ADS;ZH1c!8|7J(HC}5Qy)$CkWkzva-FG>Yz z&5EL`k^M`jFVVRSsFwx0-#OqD523;)LYQ-vC*Y#@b~L3T2+#RB-5uj9fkSw`Q}fSFawx0uhj={M_0xzM9dUz+VZ!~fU4?doV^>nU4Nkfl8f^CuE}Ys^4Lt< zk6cJ*mFbz;*E(xuZ_x#0jfut8?&eZJj}%p|;o9P?Jn*mUv;x#+K8>Y=N98ju4MOb> z9lms#jUo(`9o;<86fn~|cecB_)i58sC4XU-vUi(9{#GhmsR zIfKb0xcf~!+1PIA(eQBTHBhwtt9IwY^72^One(6@cp)k5q)#7}S-R2+Ur~azKL*>+ zkVOS?g`Gq@;4R$E_anVPcHaG364aU~*J~B|y^u8~2%kd?06l`Q80PxVVbvF&v6666 zeNoh2;U9bR__cDF{vv0Oyj9XW) z15-h7tw+W@RPUlsR3N-fAOEEN|J-LEQp(kmLbp-;)o(BgmeTxTH%ll%{P^xn#Eoi9 zufR=Sz*NdzT9~dNWbLj%HzUh_yE7IE6+a@dFnd#xnn-RAu+sD64FY>mR^_8T5MLq| za>K6|Zpa=ImM!%B$)>R}0fOhykdQm4!C_Pve=5sIZvt7$RK3^AxSe+0kB?h00h}cC7RN_bCmoip@gF2ic;wyWoPsK+Q8t|p0 z_L&I!gmJ2oCvCJ+9fBSm*2^e-bp)_)+tpA^xnLU-?Yk6yrs_RNF*Rw3wAp*^d?07r zPm7RgGw;Ej>pawUN)F7RczqPI%9$4)Z|)o!w~FX0&@93R)vKVNXer1(;@2f?38OJ} zbMwUm$RnmW7%^^P^Ag4Pt6Pu9HEkDKFS_=&Qf8Z{+e+2ce+t2ua*04Z%$j(913zL)sfd|P1#Tb2v~Z&#)JcH0LCs+(-wn=v`9bvST{*hf0J zM)^Ls|8+!8Ngh=5={*U9>iq$9)&c4sVesVcohOR~GU!yH)wHuEtIi!b&9V7lz`e@$ zVGUiuf?~+0DtGD?l}Ztk!D;QXjD~6~aF;{og!KH~62bW1(766&qz&8;YEzbey0!;@-4Ob=vjb#+R7Us=>=TmTVlvIt6FJB=Dzqdb#@|3Un?07 z3CWOr#;D%^uF*CgD7ex{F)0r3V8XB8$y5HkRLfhF5#=L)t09!w%!w-4 z)Je?a3@Ot;g+)DkwT0%rg`X_~mJ=y@jHeINWxZVe5q*3dz83zj?Z(n>+P3AZNzWt> zz%`l}>D#WPpnY=9B^sgi3JLu(1OIkT|9S+U_&=-sEFn7)O%})Lr@eP znDpW+NbFepIky4zyqf$y*rMwTH|vEYU3gkwJFapq8PKoi8#QknNFHT_z?D!>{1DUp zj`Z^u9srw>Jg5_P%|1fw!XT6Bd4QPXQiNM3_6kssD?mn^F*g&JF{{7m3v!$M z_|(k=b?qF{D@POhLA%&ju``)%e4}9VG(&Uat1Lm$yg|Tf%Z^zmNgo2?kJ(_advH-t z4ArQJGOb9%b64%5`%enX7asmg*Q+m%L9n%S@!;vaC)~=2?}ElmnLeh^x|&fQratOnBq{##a@@BDR}z4pmd{IEbNv8%LU|U((fhnQ>5=}N zCcRuXIPDDxykA$ICbmLW0u2n56MkVSc?s+|Y$ckMpYzcD<8eDnzF|*>wQ~RU`LeLb zkR+XVk2$AKeX*?C%5Hu2A*J%d=9jfF9qo2^yIpg0 zK{L)c5;@rUrHW+%-4-$zNkh%J4$CcB>SxMiq>)vFI2ZV>OL^b^a;jh9d)s=vZK!bfNtEMW zw*2V^ZahRZBel>u6L?+MH>Q4y2#(wcaV|P2DcOfS_q%cP0!HZ~9O}mB4c5)rulBI8 z4i_hL=1HUK5#~5N=40w3D`r`Z%v(2~4F}7f20nrQ2I{ST*v~(`j1H6Pb8Qeo#J4HO zc9QMm^WFxvB>jpsB>V}yq@6Dmt$U{DWB_=m-p_@`h+OARmDq=-#2F)a=uXeooJjQw z0V_z~OlPPfh{gPSE!6|&B@5wJQnvMlU$Cj&d~#vlc$K4lw6&P~)f=W}s{G0&<5@oD z<_U(+Qd|y{hx=1>mj=7=od!>Gk{(MfOpBKLYQuYtH$=4+lY{z)Al?L1Vp1QJPPlOZ z&o=g3t$!v*)%@4zhfu2>p51g6DqF!7COPP#?d1g$(*|R6MCHySJSl33x`x6~i{E_+ z2yn}n@=Fj=w*qT_BCV$=Lp6#R+KpYrf^?z0o*l#@1kH?j2mO9KX^W@}xuHCSU+-pp ze{ZU*WWBgLZwbYXZo2)#DK)Na#{W=qT4xO^uP)Rf^3kUwl?N7*_XIm876Ks*V9e(P@tTsvpddwSs+T4bRMH-use#dd@A^H0Ii=82NW~{Mm8eNetO$j2ubAQ=GT5&H zOmt3Gl*7UN8Y)_WRv%I}o7g-tEv&G(?7{szatbYq(jE`W0ja7{TRs+pB79lF+z8y{ zYPnU@{ytlUUvu%J)QRTAtQK^=@&<&Pz>c4p%!s2e-bOT51-M@2o9Zvja|3VkDz-QY zPoJ^fkLi00rkjb}+b8BqE#GR`SBOxjYzjc&mg_^z*R87LTn50`d#^vKB;l@i*c`}Q z3n6yEo7KZR17&^nr6W$l#{PL#8xjhT&t1eU36haHPDtq#8ai@z z8&fXr=ThA0{DZ`Fvfp1J5sI&O&WS9h5{(SNn-A?xq{u63bWVQld^t3>Fm>)u(M!ez zV9N#vp8E>|*RnYE-7{}Wyvda`#*2h|_$+AWnIcU`ct0q8Na(UvsUCjpouoNU{-H_2 zm0c>bu{u3g{Jqt9QJ4Tff22Os4%tDUz5BkCNpt6i%K;)^icyWjLoP!Z45CwEGsm$xNv@k6*z!Y73CkXy_d$G4PquV% z%`GUv8`RU#$3gG&Mu|p3?eghmc2{Ado%+!f>fgH}Ised;mWOOI&)1#C&$SrW{=hfB zQoC~P(hBi?`1&XAN#!VJlxO2Jz8}v&-$|eM~{w zoc`_7%bXnCXj5V^tA1b_@_7R#UIVFmL#K;_s|t&uGhk1)cWlv zvSa=6i%6yAq%&-0aFTpA;__TU<0p~T+sg}PlJwD2Kl~e!OQz1oZz)IH&Y2Gudb<9e zwwKpFC|eoUM_jDEB$xNg<=ivakSAU9V^MFfCJ~LE*CS8kn?R;$1*?})5;cl@9Da29 zgSod@Oa4S#iqUGNgJz`cT$VzfeM@FLzGEgq^jIz-!+DNM-E%4O*V5$+?FmC@Nbpe= zMD;ZjX04ba^R8M++Z^T=iMMiaR($@1=HosN8G3ZTQOp1_y@vl#4IpFoL}cE|nE;fj zeya`@j)z+2F|=2L7h82HLtr2x(4zvOG>khW8gp1 z76fT=DGqAX5qPm-@!OT+b8g#A6}l6-NJABNRG8mu2lo%EoV=Eo{;rAyKR-je6!(~0 zJ));J|9Ir?jThW%F>_9ceiB4<(UI5=H5wrGS=fdO@Ns#deHW04o4Y-DZ>f}6vlBi# zl&$luf`!KaahvmG>YDoTBx=O;U+IzS_4j0K9OZgw1}VkoX5*YqHDV z;sNq>7w~*`Q9Z>yaBY#9pMbDZ_fYI}#Jn2>WrCxRj<6-StFz`fj4n;j3#2=c9?SJ4 ztGp_Oxc`hS)tL_ci3PwuqcIU4w9{WngV$eY*e`5@I9@KwsTq~D;&oa3CvF|UZ$FBI zqMiIqXoY@8qO93_msX6FyNZdr?>w}3xWfNu-Y&Gy)=pbKBeL$dj2Ol1m-^RfSgfY` zs6ni~tmeztq_6#!RBs+sDC+OH&X5JtyS$QgOD_!Sry;bhr^&AHVv6hI5Olh+T};J0 z$^Hj?m0EPCH_m1;7IAg{A~s!SXMXsh^87pPPfWRH;@KCT&vv49dBd0Gghea9x1hAX z>M~1(eIwz%U{vF_7g+DGO77$MIJ_2@l-olPiz)c@a^=wR-CO+^C8gc0RakO3mMd8t zte|6KJca?}+Sb6@d1+~91$_F7u_CjW^o(1na$LN%TM%m|@%;Iar-HF;yw!@Uc`ZFX z`k9+E1z2n}PI+&aAXFkA|JiVGHZ34x{9RtXN;k0ut;8z;8upzeeKJ|;l`E$Oa7Pe~ zTO!BA&Wv|$ZH8?dDPBQZ!Z!5z6#yF*-bduPFw^odZ?IPtc$Q%8AQ><&#$mA z!ydQ4^g<*NbG{rm?Z`UqjS)dW2iv&7!jt@oj-KDHfU+&3#J0DlMgXji-gMLMaR*+| z&J}l+$R8l~J#ct+arYzElJxwA_~(AZPMfuAOu56C?ZK`Y%KN4hmGyfRip-fI(Io4n z`-;20Z^;L9DAwAefN03bJ6|imfM)Pm**X93HxHvnavnRAa-+4`6oUeVABaCl;NzVX znx>)WC3Tjvt|Z-;Rd;T^wEQah!N5N9ez*8^yP0mwbWUH*dza&Rjl|r`y$`Y0et6!F zfW4P9A~-o9z;-HT_`{y7+54MJdRvMcUpD2Be21vc;vb!2m+7hf*@X?-Akvz;yX)P%ky z9rz}hKyh%!8H4tDRV5c&i`9;w#QZxj?KW~p)AFA~3OPR-^PM@rd`%TX?I&gEu;Jib zVofC3{dV9l9RQ4$JbF=$nd_}?E%*}ATSyCP1#z2GzoF=*oK=IIRFIK-^zZGwL1H=V zQ_{t^732!H0dC)4Tg%748~&c%z&g%q|J(&PLH^~@;qwV2PkEi4bm*)jFLJpObR2hH z&qfywWHUB^521v-EFm>J?QbH)cWoDZ?B=q@?vIdO7LHoK?6U2E=sOwuVPolKJI@bb z7UF$DJ@+b{w;mqzDS_}X;}tw?htKT){rbP-@c-!~NWc$*Vc`!?yqT@O3Va3s$Vn+n JR(&=J{y&WRb|(M; literal 40368 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[Kg`+8y&(LQT=csG0NDN|FS$ z)(616^BGDrP6b_S!d|ob{&U}w1ExLS=R9{K5rclfyEGDYTRS(vK&W+_7Rn)a0yD^~ z=wgsN{3E`a7pbEkN)CSm<@qpz-^@l^P;y25uvL$m6W8MezmZ!Wj|#EspnCNb7YNvWPAc4VM^Ugz*JBZK zdVFpu$9njv9qq1;X(vJ~1kWl5Anm5Z*FX;Mb_6GP?{AI)=$1O@7hkin>JHhb&3Yrl z_3CSVx_%cX@*u+yuNDOd^#M4&Lrb*uSFEd2IEvQg=jUSy(H>A*4*#UZDN4LCgH7Vf zNtdxhl-sC*oR=PK_S5!P7@M31vt{I0rqSDzFLmO_G?&%^JMcq$KkGU$?^bh!3h43M z9-xI|1@-iU6K@Gbu3rkTp7HScM)j)MK2DxW zWOBd^YWV)EI?~q#qLY^?Bj+~7hdvZ>A-ANq$N1~Y>%mlnmDrno-ls3Y2uouw=~KQR zjebo*T-qXrbQ%Qj->0=-)Aheh-{B?sH#J7D_75lfH;^g&V_JVQBK`6?%!SHje&D^1 z3~wV)ntMTfPc?v-w2?qo3Jur zLQooUDDCur#HQo&OoTN-(3dt5g&%J_EwrC%A{Ki|Asau=;)l8WZN)6S$+j=6G_GF} z$tYS5q>C{pJvTB$FFOTf7D30=n6gzr@JDSPP=|Vn=!cyz0Wzzw>fq-d1TH+2!bJ^F ztCnBOafB=Xmoi|BJ~m1!3@2b&*4Aw#g4dM@Jeh~Z_o!90r~ zWM+T=Vi?Qi8^SZ7-q|Qm6&c-H4%W(vuVmOuu%5v~5$ZdqLY1c3j!liL|g@# zpxo8rq^u&0pr-of5aKf*z-OK?KB#b}p~5-MOk2jgJ$lt+0zoluBX0_6z-Q7u{TO=2 z5RULC!rw&!A7p{EBrUV>9AI)X{H18`hsbRZ)Vb@koP#}AEh%E7&!r4sC@ zj&ky#_2mN=>}Er-L9qsop_(OrW`e}bg*21iWe`5VX*f9(!L6xhUX?GaRFO)oxHXPN zj)6Ue3dbugW`9;^&6}$Or~CwbQ38f@0xD%A8(~f8!WzdCFFM~+PLGIi`evBO{}WlOIW*f`hmX& zcM8h|jVC=mqi@x7?kKZ$FM)A)wuld{+YR+YFYtp~y`kd%hk_4Yj20P>!v9NPPkuzL z*ij9lHF|6qISr&Zl%pTUj$Z3>z*mLSHYmTP5n@CdoE=VvT{9+)2hk>qBh1O|%uk&9 zG%i1U7Wwc*we(Xn+9}|J1+8rVygO8pf3ou?>kn1fcbU$_ph_dzIbkLcdYF`hJG#H;Y+10_&tYk^S7oBzUT!CJYkoPhmpB}PPE zMKj@yqKTb%%`7Q>@mEnoG3c>P+V@lDIpFjC&T}G0t8h;?+pmyefU5g?IQVX4%1ieJ z4In$60)$+|n@6&{o5p#($mhGa2-2$o#S<+Z@MM2Oe(jUB41$N@*|C*`Z*1?DD4smM zpMT{0pr-=kSdi+FNtZ19JS2%Y^Tz=RA{}ZTZn-Oz!mFQF=-#wma9fKW4^r%<$ioR` z?t4hk0YC7+i|2f2x~5EY)ovPW5^@81NJGOXTX`>sF75zSrp>MmBV;akE;2x zGn~{T%k((eUoU??eJ9nS`RC)^8$ps_+PAJ)Ce|?T!yTQ;OOctSfa3_U8ORKn=rXQn zeH!?xhyy-K+_^!|FkFiMsjGFEjep$}VVtWX)voz8*_0 zWCqVFc6WRWL&fp(DB*98<)Mb>JU0 z(|7fQXB|zc%2Za_0j`g9AFEf{7H<3QVoF5oSb6}@5WRaXPC(ncX{p^O$!SUwMr&sC zuS%J6>P-@c(w+gZxr+#$?C7is6}%OXZUC!7{^A0dG33B$_x#zg4wJBz)&~h8Pni92 zjDS8T%O34I5vd2#3~uQpCD1rn zutZ~&Lr+Q$zKKi+QQQ1Uc=!oRsyKo-87Y?kaUtn0$oE~lz>}>HE-d634-#?$A=Z@{6|-)YvjUD9q=ZlWv z_;pf_U1=hJH?`P9Mu+L*E)n7w=E0JFaaAGcA4EdH#F4JZ%`4H+5gO`nJj= zj6mQg1p$u215N2q*5s6%G)Y5gJ(KdrSoAGi!??&r2^lvzh`+Z&o7gvzQmB3l;(n!t z#aTdx#gmm#tT?9j(Xo(Rb(DjN`w7!V&!sjE6< z3b6>RVK$SE%Qovd$bRwZ8-`bt#?M z3iB|_CYha&1#l5Sb4|bLf2K0ql8J#gmmia=rm4DI>I$hI$p$47#FNJ_04Aq$+OD3j) z=R;tTc~-FqlUo7=bZjhtk(LIu`6_k7;I{ePE#Yej;}7u%r*CZ7T! z>S=6N^Ap|G43E^fmmVU*Ok!n!;wT_dZYx$zKM3DffJiB4zo!z+7d3WCdVtqb_7>2H z>}YU73z_tB&v7K>3eoQ8CBE;Lexo8VG>R|=Z`C~q=o4;%#Q^kyhUJkb{FJe#O^Skw zagq&7D>`mYM*cHewsJ(=k_=dPF!ai`OsFB67z6eQu!}l7rh=GtQ{|}qREGG{vJf4X zN|VquA2H%myq;#g_I=C4^(g@T!!x@m--K%UMS&kXbTV8~R>9T)U`4X1@)*!~%!c zDHdv2h~$J7{Q+Lksrhl6-n4}zggo6p$h#BgR1efETop%j1$dt^4D@3_c@6mxX?vUvEtZulSi%Rb(XMh35E zz^+>|&7-`M|3~3->yG-8vD^Gq+Y{G(p$1wyG_l>`q<;KKOud$E-HA;`mb(4gUw5<{ zg|vqZ(LZ7gXp?esul(M z>h28@t+$2temKdqAVHPMg#y3pIQ3!9D zv!_^P2~TZ=1w*E1`?@n*`lt!we0SES0oeb7o#+%D80f1HSW~`o{o)fzT63!6_5Liz zHzS;@mzG)4IDsZUOe@Ck2v9ANcFHG-lhS2KVzu|FR;7+jQv<8u<}HD)#;`*5rR9^D zM{Ta3>KGo$|HU4=h#Zm=S9>)c%{L$85^Js;qe|C6&aR~Ca$<=<8UDGxRoRXQXjuoq zK5U^0jzh*f=P|*vY?rQ$Kn%!1>?LsD@9me{87tM%2H0!)gFO|{HgXMcQMFVLC% z%ZEd;V-MXjdgelvE6yQ3|27s?+7WScV$jJLcS8AL1R1?fkuB;I1g3i}>dX(^ zQ}sy4488*bJ|_fs`O+xATJ{U^0tZt1t-o$>3bkFG#d7u1t*`xsAa#7$Dp9lw!Fsgb zP=8<{9Hr(`-OKf?R4Fl#d*T2rj1_PxY4q7bMTpUQP}J+ahnRVQF-I}ApCP>r(e6ZC zOi6p)I=MHsxdy8vmn_Ne5NON8VX$^QgDKCIXx|X(e3MUsTs8e>UzGfEaJ7L6D>-UeoE6og=q_nYW69{%G};VSg%ebRP6Cso@Fvjx z(lP4x@!^nL30>Q>vMAYhVne?pK)X(5IZQL{p!~jj-XouQQH?>kBRYVI9CJ(hZ)Kc6 zhKw#@?Wb+J+}+GE%=Kbd4ecO#OaDahs{5?SRLS>-s2sF3|AY3@N9Vv`q1?kJhq*4` zx0(3kbeoeS3xsyFpCl0SfNKDYzSDw`R}3LE!P^mznhU6vMhTsw$iri@^KB$*(4I<$3*=1~NwVD_=PfSRzdVD74bTQL4$?`C zFtOHB{z#0u}!lJjCtV`}3{R-h5K)#X!ytLE+Dp z`-%)HExE0?mp8LD^6XcIiTRArS}@9Swso+iN7r<6&}roF;Aph&$~;o_K*V!J_WL^X zv5{*_y1Om{K~EHA?^o4O{}*&FJ>OtZD|I>WMm##rk>ZiH0{boL)q2&=Zknk~lYcxz z4d=pek`Ap1?bjXpPLH3v*ZH{#JpMJ$+`3-^AF8wd*^!&POg_q+KdS^hUe!dp9vBxM zbux3r$A^m!Kc6P8OupJx%CL9H9@KRE(IQ=@H!x%Txf3a}X2 zE!bOvhUY$o;AtrfIU0AMu=KHVelz?-R7nXQa+s;4C+#Af3mdfH%IL7c`dihV`P0 zE)x6ViK9T{gbW95e|NPH@A&K7%>)i_F-HZo=J0cn=R0Gdp%8}}id}6QeVQ)CUpz~> z4ME@R!o=l2^UYXrDVm;w9EJu(K+D5ksWGQJky2^&Twglcc@k+p1M+VGCL5#G&DRr?=$ zrCzXhvuFZ>b@(ELx|LmQPXDXb&hZ@oy~s{H#*=HcJk7u-gNdJ$)k3C$_-~h5YfHUb zq+QQaGUb=jrVt67tot&mL-s4<8-DfA1ls|1qA(z}?a2XaeRPMJAoF!jxc0t{#&;c2 z)+Y0&93U4+CiZevI!`X!?7To~?Fi&=Z`0JD6@-6b@FG!srvdgya5%oIp zXw5;7wN_#)L`Oafr;oQoR(hNs<=Qm8L)3BlAZupT1GH5np|obeHLTwe4~@xYQCaa*~-NE&H8B3~cs#`BL5S)3qRjxNq!J8%OWk zfl#={sqRIVG=1-8O~hC_d_BWsd2!?Tx$gf&UozvMp?Hyk)9&m3Q1R&5D&a<9HG#(Y z@VGMqg`Y%GiE4*Ufb(*H4}NNMErmF*QK%tPKg0+;g_TA^QGD{aO)3vJ0=(o~m!6@D zV!GAa_BR;I+~c>T_s>l&z@JQ(?JEC31thn}t@*G2%55b>Z~ul%!4rAkOjUdKd2&;L zKX?n+4@!~3h*RS%Sq~MfZHJ6^=tuZ1>oMj^Lt&t@sUl}CsHoY<xe~onlAkpW@OeH!dK7<2Pn9!6c+^I#75lxf+QU^4_9zhc zkLFU()M2kV=gv>hBmM1bnNIhVMp>~xu3+&4pQorbtsJ^%Z0jcetPJQK5GMxJZ~`0i zxHo|F_5tVFN7;+k^!+xkFJmBh*6*czUton+qA_VpaDamz-*|0C(o!2npw(YZPCK$P zyfX%8&Mz`d&S=&I78}2ud#L7O@}+cQR+Gqn1aHm!uTQVV=kH+gFpVx1g63kRwU_GE zPm<~3w7L}k$6oBi4@CE=Fw23?@@-$qe4TzZkb_y~)*+{f=3S7)r{+94~9@1jOd8<7vMn?`O0lkIL!?9b!;}YIxOm2D9Br^Ko zp8aL|*=KC5~?eEx=BRg%xB`NNAXG`aT89>u0WvIv+-j58%=xLq# z@4PF`ZYK5980~nF!vnV}&qPKTNI|8I!G~Y%E9Zkj7mNy!izq~O!nag6y-&3ywim(M zZTpicHJc!A)Bfv=h`3>~k}_|jdq(31pS(Ohp84X={{B~A@i)ZwF4Z}vHoh*!-07Z8 zFB%B~<0Q(!0;twX!oNT$Q=-5(-OFrPfHZEX?n4B6xnu3DMR*I%5$LMKvo(do7dc>0 zz((jHmYduSA5o0wSv0;W?j*V8xavUsk-r>gGY_kfppc>rR;5Hi6i(V8N`vA4A-SQ9 z+_?_`WkL5s6z+46r#TF+T--xRpHHlDv&k_T-=Vv0WnIpEB7V>utJM)lFq{Zh(w<3u zc&P|8-~`RZ`kP3eeu(X+_h%PTdyU}xzP_JL4edr6GgZMugeR{U9`5Vz0I`d+R&w2S zK#f&)BCuJG9a>wOJy5j5bUX;Wh#>5?E(S=ONh-lI(RdP(37vi?TpDE(;GI2BhH2Ba za44__s4RK=U9K>SK5g0xsJIG2vAb2SQ-C@ZLJHr`H#iEFVFAnJy1Kxo^L>VinlBtqt5 zkgyJnu$xMS2~CYloCHU0B$i}??iv2|bU(oWE9aTXi|Wy;C4qLScyZM)8Sh0BKby82 za&rC!oYZk(SkG}pL%6^XQN9m|IQ!l5d0ocJj2(Fp;+#fYT#uL`cFEZfQ^g6_=*SX! zeuQWGdq#4t-|UE|!EWEF&g8CRJu4tp=z$`*0}q}7>~6D`3IgLT&?x6++<*u(jBJvfdZ>B+y4Q(kA-0>2$lp8n~e->bd}UT3J{ zw2VT>){tz5j-C4m7_Py`c5h~H+gGfX?NmTeIhUloqq{`!?m4nrLv|Ewx=-bChI!y`4I3o>a$Jo@)Q_`KRx| z$Z}ezD$ke;Bj|h$qLKgHftCG!%Yj`Y!*Fs?C2WdGm##duTq*~aPuaE}!7>($B+dw;coJ%IN3pBBN zNyQ|;S!{EQHu*cu|3Mq0KTfOMom;fkwGK;WKbSc{QyndYW52&`Ab^+KRLlmy)S37W zMi}pgDHfWUIk1LK43!y=n1P|n*Y?^aypllz%r3O|eqXky@g$6*r7(SZeP$=z=L0F| z9;ylr3ADV_9)h`WFwha~tcuVVPVbErK}Z^@=E>6eZQCReNo-mkh?233q^P+XRaAO2 z#K#Q)fX9dH24o$8c5w+g8fD!g%$`p8K+w70mWu+s!4K*2exjX^B}Nb028|n!Vyk*~ z@y5`MkUg)&hJZbhkcl*?T?PLI`8S3L-%`~b#i7vKw!uJJCbKmf^e`Kob#a?@E%R^Q zBD)B!($;`nyBorAXcTX!B@ouUhdN^3=z66E`q>|YDtnU)^!fO)6_-Zu9k-qjY^E%j z$~Y;{t%^mCeVk8xF#Ok^Y+m(%rcw86h=L~6KtyQ!tU=@^a3Z++FS%6%a{CqfA9BXztxb^&Fly55fg-)P(B2J!q z0PFDXg0PlT+7l^_!gu&vXL3|Q3}~8zkO%c2N&QZF?{DiWJZtm8C!iOj{a_Zn(-Z^a z!r-ncFf0bYowTrWL8-?l#o!b?pdE7UX^D{eecxhaaruDv*33mfqZ7D|aFW)Wb0--; z1Q9cKsFhgykx{s*^!gFV!G4;oBz@*vzGeV;M?b`KrpTrij`@>xC;?X?zZ2j_juJ~W zpx7?+@$Sk0X(Ql*fMu&cabi`SyLd^RR!5s-R$YEm<6^-^wix-#a-FMfq5ra+7PiT@ z7kjxuRpIq=5C8yG#Vi$oo$r)RR0m4|Xd&1w9Djz3u0AhV$TG3M z>u(1^2^N$tR2a#wOLhd&IoUb2`Bl0vsl#djbajy^Zd1AJ#dPBn^|;0WMw~H!2?kMWanDw{N|$T zh{kuueDaa!M4&ThB8E>HOTiC6hTNP6zyg2F9I6sXzL*+uDseDv1kjjock5*~f1s)U zgB9R?U`S~hXEDFi_HaLK4dj{(u#=y9GgAz_Z`OacwuBO7^eG3@{K+}Mf z&$FNJ>&ii>tN8|@E#(hq@E@|1P*K^6OS)6{@;9?CkX53PUGN6ubQtQM zz_X>Lc*C?qQ*e*`;%Z59t=RO45YpA@Q3Nu}#97VDsN1%c7g(sL@0l%X!i_3KcL3cX z3LnqCd5g{pl=bUN6`^o-%V{2YCXO`5b6Ie`o^?PmjMYJyTOksIf?j^SR`ijZb66&u zhdpu%C;lS)Ibgf8jrx7rM8YKbtNFE_4i=%KJ{>JO$LfY~OA&%esNe$j>~0xP48~tK zn6sDshwz#~;J+{)v`oqz1oAAte60(vNB`iBn#%$*Q+9Pg<4LT2zT<~=5QW!7nSlX{ zGiV7<0PMryi2{^EAJ{O7gIGd90BTinYQ35QGhKa1=8MlmMQkRhyw(BU7-P&R9gKa= ztFrAkp|>SBQu&F5s4#3`prgMNR+tY)gC{ira&=8lXhlBDf!II7rY^@_O60c~cRlR_ zX71O2G52Fc13VvTmr??u564s>&JTK$F1N0fvNfdHe#zOJ00veS zhn*1#d{XSisOYX|z}~dJ-QTnaREG@IH30TZVdT$Mrg+eeBOp6sPVltii0Z4I<7EOn zW`HP{g?(A#yd%`SMr_=fej3HYrF%iXh!(uw5);2Mcn>v}xg!pj+rEnjWG3g&td&5_CJ!esdr4byxTNalBpJvlFIo>~0(q zXF=c_-6L>6-h z$sf)`eTqbNt`z$qm5Kr5a=f~$`AXK%0RVvbD`kc9TO)H7D$}Y;@78Puc9(z1E#XYU z=^I48BjAybo+LqYYPRcRZ{<(-&H36g{?kV+@_xErh@x;oqv1D9W0RR6vpwnsA`>6J zSpNJB1OOPiEAWWf+sQqf~)Yna8pU*DFUc|TQ zsv3n0dt?}Cy0$q=CCh)JR4Bqjb+cDwLJ?K^`a$G{)VrK09*aAp=CbAf*cuNfoEl%K zSrQ+pCxx<^64vv1W9ttv{UDF%RViBg&Qud5w0S{Bk4?`JBdrX2xED0)y z-6%15udYhU%%vj#!-%}uWg^RAHKKoe7o&#ywu>+ zd#$5kqD^c`k0MOn^9ON*8%1G$Lz#X!;W#IJJw?~;wbK;rM9IquH{5)r^w{h)+D{nr z6PQOiQ8DgO)Kmh>Q?dHo!cqD1!JLD0FumU(#n|+DZ)?AU){#9p_ZD#&bD@T0LaW90 z6PY4m{ar65Lxx#ql$UaOayoYx7;VTs6IGIEu!Y27em`@-s?9Hqh3hW@JQGY@u3ye> z+|9C7A4a6$VSLlpn>Myq^b#Hz8!;0GEvvd>zNYx9dB>bHUi-?Zp*eBAnW92eed&{R z3}G@!BS)M(A%^FM$QE(w5otNb7z+{z`$#@sYBtmGSanBhLRxj!G25A9&sW9wy{v}O z7v9}!^9so;Ccw~31|spp$%&Gd-8hzE#aex6Gj)uF*VD_C5szKaxLDK~N7;Ao6rf|T zxlPA%p?jIKjJ-OLCd8QZ%2r099fvhgxSGat)P`{8xa{J_-qeRY`yu~J(7%m~ILG}GiWU)$;B#pOzcrke0AokxWSQn&rI_8l%0SEhN28FUqlTyW25|KxrDe-z0RX=8|AOxjzp-*rY$=J-Q=WS!isGSurm}1>3lZA#$-VLq zL#%AX=idf3(2?PSM1%f67loy2Mw>KU-Hhx)>G$7hf$;0Rfm3c9v2Zhv9^@t~q#(*@ zx^{sI#7-%)ODob0tI|r#y3a#vJA&Ce(C?`8Fa91DYM`bU+~QA2|M7v#mp-Qqyf=^1 z9w%+r+=ZwA1z?&xB8&iYz4?p!dd%6cUEE#OgvqnF&aOPD%gLkR%^eYx0ED9fUmFdG zy`RuxY&~{=`H@JR{fl=7o~dhVOC6!BE#u?y2@Aaen_k=!J@nf5*wd?LK?= zK57@9PI)rHdUZn5IRId{(OxDupOng@alJ2L4KTsE7GrCqsHrgLWWFEbqTCtgGm{E9 zi_|>3y^OE?HkQ09x*nk6WUz@o)j{QI6amNQwxl^(LcPN~hFiRU5nGcz3Jiy(OO zokS(d!j)@Hw&y6Y*MB(A@in#v{9n$~`NMgy8V1J8L%&Kgl&fu>IXsbrSt-v~;Ths} zr&sQ7ci4T267{)LjRcO|JVt+LF_c6{K<~7QJIPhR=fAAXbX3({L)`LI#Ty#{uj}p4 zpOKt3@_fmQMbE4%!v5XLOARgYxrwzmtVWTXorP_4;?%*n{-pu5Cf3r{L_t zJ^QcT#2Vr{cKO(HF@HIZPdfcJ_(~WVH5}Bu+sxYis%z4%VjFA`f5v|Hq$Y*_px4xa zQAMz5wK%mp#g^xkNPkXyq5mbU4ptWE+$mU^Afu6;Ch*B$IcG@C=6BR@B%>MhdSw=4 zuE?nb%=sjlj~D?BJ4j1U{2lK6OE-te+!w_S2E@+a zbQVn+$6)zInt87n6c~*Uy9sw!sk!DvUEvusNisiR!<}aqF{(J4CBH7B%qe{vb(V`p zg?BseVpg=g?>kOF-$I0FptQ)oqqz@>(QkQm8CvJB0%5-YOxQWu@G2Bndx!j~w;q5g$1pb=h$RD6ADoRH)P4 z#AEnANs&g|C%u_EZ)g=nq6ZS&&T9BYVg-?|g*H~mdbTfO=%sH^Jr;}tpdA51dp3s{ zqxgC=O&m}fB$*HL>$Y)@ER3UHvPunz9iMp2#4uIqgno3h#1pF`-r}^B$HRyj`{3c< zk-4vFA{23!U^dgPMN*{ep+WrH?BYP2>Pm~!Q%w)&#&gFNbUz?LP zO&8I`^0cU72w-_X0{(~#$`51nvs31T!KF+IR@gnp!ilL^cUInCO`Pk>e3tnv#9%nf z2XVbs|I2kqWfg(SPA7t_!!ra1LWe-Wm5Vg0Gqf7@Fs1~{3QIc~D~`Qtx}2T4hrLB< zD?MtB%R;z?w+;CdrF`H{tN06vKxI00v!qsA>qI`j36#E=Es7v+feS-mRYt1>wJ;u0WuIF&6TjcHm*B_R%@Pt?{a_wd7s>&bOv4hKr!iePD zf>*FxL;{ajK@tx5-Zg|4XkdM@|Drw6sPR=7?SRJxO5JylI_7(&(tl}g?fehT&H3{c zZixz_1`(n-)c;y103zRm8IGGeIAa711}05BYbp-yimLS2A_aqnM-z<#<qFz(MVApH43t+F$bqIMA@=p8P&dXEn zU?d5KV@(dR%BpP07Dln}?_nkyyVTzY%V)vo`WJVoYP1P|ad*7&>16CAQ5wP>Q-6C- zg+Ih~-&*P+uJZ$2$NtF$a9xs95<}V_uCp$I)hvu28)+DX%9w8)+l5>Fvix%DD{Q&% z&|z56fl+>A6`8ct|3p}vBiDsr376AMDbbXBI|TR|F6_9XMdhPlnP9>Gj#Woj*ZN&aB3 zmiG#K^H?HxOG8DFKVSjACkfS9>|9TH605zqAe#B~OB~yH)5lZ|3Y&LGymOcmv^+Ce zwnY}I_G0nU?_}MXc~;_S_R=7|t2hv)E)yk=afA6cle86s;MYrk?`tX8Uv4qE;e2bl z0cHoDPAzv2kk1FNTs3u19++O}W3=L(VShYY$g(L$(i_vU>n2?7P=3yxn&QK%h8g z>*${U#L6LYvih(R37p+X3}=FF%|bJTz9bz8eW&!Mg|+uSoZ5;7*L8}E`U=Q~a=&05 zKBI2&TTB>v+ii?!MAcrR8V3-;CtJ3#xkpGvDi-#0>rIx-;PQS9s18!T}@ua@r) z@`}|PdnrI}{()S@(*HoN`ayp?d?ba9W~9&v#Qyhd(%bo-t;Ukf9isr5yTV_K!{*`p zPYXvFa!bg9>X=kMu*X7zqeyAsfrB6S^XGsNv1<%7!a1<>>xLZR$3(%W-WeoYnoj0T z@unVOaFxhzsYrX8VHg(@cpUK2Q{v#ryC05e0=6s4fJ7Dn2Z-!k)@z=qX8>~B=A|)4 zHB`5+5H}!n1eQ#?oJL?)qxcIZ)HnONmEw!a0f_qb{S@Vq@Kbi7usTFB5k&G;u6Xf3 zGOJ$gJjIc7oGL;iE_zS4CofFpRMQ|eoI3k}lZ0|9nxUW28f!sOt4Kbw1hbaTM}kU)hK)rb{5+HdM2^sN1aD+1U$H2KfrYWAQ%(^1$FC++g~k5LY~LwyUxxJ*tctu70rOxfUj;b=O%rh(MMfdOVI#<9vkXK zttgBZVnfY(Z|0l@0Dl7PxM|a3zJ?s`nz(2)gC8wmmVH0Td^uv6H%Q+HqD)spEatd6 zje@DXh9GfeX-B&fS8F~QD2eDOcpXAS(%q#L_^O9i+nwsi=tx~C*M*_Sh^bfUPiXB7 z7H_WP)&Idg5O0$~MEVMeDH;^q_$Ur@rV!eW;NcdkY~p_jZX$jEzXW%7|1a8B2Z9{q z9$hCA)h~W?bCt*<|s@&0xP<7y+qoe*$>}>80K)jmv!Id*RY+eot52ye@8Y9581T zgNlhkZfHVr$U-K)Xo$P$94<&4eT;+Kt2G^r-}#~k5++v~b4aiQld}r=g($-Ol_?{; z9nJ8CxPk8raNYSuyXo zE1nO5ndL|t7<;(Agy9zB;rP{XfRTx7CoOew3Z2XgEMB@X16<=DI;k2-9N$hQP}Ohv z%Whg1EP&l^N0{G@Fu(T<&|A+!2>V@5&(seq{AfLW-xihcSfFgKIQp**Sc2UKl>?JC zqOzX?og{9uN)}8iyuCui3RlGTomJh*z&h!qzb`h^ivp~ff{O}1KYdRb(DZq}qZ%jd z_t#;vB6%9|DOFv{>}ai5rb`pP4WqzPJbC&4&1S8n&GQ>!S~V(6%p*r*Et(?TbcC*k zSF|?G*@k;fYbFE)R!0Faj(Bu4Z7oU(g9tfDOQkg8JJgv7OH*T!^W}Mx-I|m?R)gL+8nP zT513W@-`D#_xbn>Ll22X58Z5#J&=#1qsBd0YOU1Uz0%WO-jFcUr3zr9KI6+h7sp!t zS4?lzLyLZ(L3RJLo%J#SsZQSQl3casMi5{Fi)UzH(JA2?`TL?7?ds;e*St1f+@Vf_ zkeN$;Virv~iyY#I#JkP>9OE5tK}KLM+HR^U?Ivxl{V;u{Uk%udDTs0!nE?m zm8&_3DZAAl<$;YihiHupr8A=S`Q*ZtgDw4fzH*C|t2RL{$f#yFYX4B_-5k%gkj7sL zX_ptz3s$q}Pw_|neP&iS4gkd*JWwS$Cx4$MX_=M@a{e(~ED@szB z3Yro`ZQzT7CxY?@243RDC6NYq5RH41_l?tKo|u-X72 z#)G!F%$zHz#W~)oFA#DO?aA(7PU8i##MN@VSe&hk7*HVCSes1bE5c(|E8~?T0Murv z?T7XcwIRK~rnX12#7KG?AYHu@(HMMTfN_pwMT7{9*+iL$&`B~a_PE%L+jR+YvO&8{ zXXc!E1Ez-2pAkF000)(Wxb!CJaXdREN?&%wxUnT(nhVL87!Yzr05u<``g|+LIJyb& zh}PIypY@v>4s!hq zG?IC>%%{fjEK)&V%x{pOINZ4FQ%9EQdK8?amH6cYXE<)`iH)7rT*sEwNV1I5<3W$A zaIO28W4&Wt_Ky%Pa)d2fmA;nO+q$!wPw7V9M$@}uwM3bL`ai7Zl&5BD_=Z^!VznCs zZQ#jBx8Y2v0md#Bd!hamw3z5rH&@Y(zZ1r)k-mjYw=LN76%HHRIEE#`gZAW(l0acr zPB_R+xj<(6u=2#PLKeL_`pNJuLd0!SD6~Eqf*q4id*2rQ9|7H?ysQT}t0re0bxl<= zwEPwTBCEJJTCP>{tQ8zL{O<96T~e@I>u;f5p$jt%b$Yhm)Gw!hv#VWcCphaUk#jva z&)YJkvWpvl)<~pM8$_?u)06-XgY0j>CVvGPLOVVxnVt+N!SBHAoM<~HMlRqev7~@j zQHynsf1KDqWZa&@Zs7t6g3n#5`;8Q|ArAjh(0BEzULnG?PygXHN36YPUgN|cJ7C;A zcX&7N6(5>FWjKTSpzi9pQy^#la)vly(_tPxqr&y6PeyJ|!PhV|8ODKCEl;!c^Nrm9 zk)o43x1n26dgoE%%I$NI6_uS>jvHFvJnv&Ck-#2=tqx=l4^Hppe z^o_cK=6xx;G$ltrEf>_)PTe8ECD=Ta5DS-^ZN@51GRFKk?(*GoK+(5WKB|k;Ae^{+ z1f2|=J_)J|5AUw-ryb223=s>UH(-Tq1nOQv3?SHs>{T#VcgaP$Jx=R2`}}1Otk%%0tA6dm~ z{|;zw_jn1ai=?#a?3}f3D%cfJ{0D~>ZPE6_`qBFz)Q>vH#V0yEcXGyk&GoSfM8ikM zpN6ya`CBiverO#=P#QPsq&3hDwRRNCYqMIv(7sPHokSmHDoAa8BLw7b4aCFLaG&bg zM-SD->%*aN47}1>ZXP;$b2Bjrg_;1+>$R}Lt5#W8JFG6SaCS(UYeIYi>VjiU{Q5zYr?JPXTrtnw_>~`l zHpR8wdnXL`it_R8vHB>Dy4vZAK@yud;u4mJk;gW6J#Sb`4n3bKJ(j{F3?Ytp;h?iq zDZz~Ir04_8n2=E5XyY(LbYaOGOG`5iKudPMg_-$e+$JATWG=PYeXRoNSLKR+KDem_ z8hl#6_>;rBGYU;0nxs&<+M%Y#C1dv@1)3}T$~PQ7Oli6V_^sA__?IxBSX}MWa-bvC zeJVL)>96E8!`57OuN%D#zzwzv2adR#1gL6S#)9FYDApr@K3rj(iTn?@DvJ(Pc@HYo z8M2OjP5vRzJQt2XDm_;DW+7)>Tzb)0jGiRG@&pJ+#m6Ff<_xM!aa5)sy^{hOKhxrw)WR6npg zZo^oTLq_!Eiun!D{&k3FAQypcoVQm`;3oXRGGDH@NXlIUZVWbzP@nV@z+`fyWbs9@ zpu$}7-ke<`d?eA-%7!_)T7!u>dGE-Q*F|NfwEVP=j&9BNuZsJ!$9Y)ts695;D0t^r z7blkKWRP9ps16i`j>+D@Jo*)R?1#QAIiZiZFw z$EWPcJYs2#Fd(k5wexm9*w>~-b=h_xN2u}On0`Hgx>5JZJ?;S%cU}d>&YKjkq zOc)n=$Uayv_>+u6K0?_$p`eO&_BX1%891j0aX|C3=F|xL<_}wtNK0AQ zM$7n|)R2ATV*m+jT-excaxIQ-UIsz6`9$J}25be(PdP0N#~j{-OET^c5eVXBT99ye zRyBf18}$7;*`n#)?P}!e ze*DUS%HyHBS?FEmJ3t>_u0>5>dR{?Wp8MOc`0~_crB?RXgAyZqKk$F3a#`MKRah6a z58dl232+DOG(plGtdxL+Is4fQyY6$KdTRmE8sA=ZN1w=l<8^B}(d>a9oB5MCvsZ_oG) zY>VZDuIV*t`{nfaOi$XhO(Dg@JL30|;4-1{gEDk3qYEa3GIpgDcg+9s4|m)D@HVVw zci8fCiO%@B*$TIz!z94>K)YoVm#u-sqB%l#Yiw~x%!t93yuDeP{%ZJ)3u;j>TLyl& z$x^H^8j8cwkJE6M8FL%|Mq2+(;NN7@K;eg0Fd;!}>KsR=RC^6X;0jh(>Jz!#9H{gY zB0@c4rh^W3(*Ho)N>i!`TuU9(=8Kug%6Kkje7q?e!BGs-rN$MDt<^WJj7epHt!L<+ zp@iSByNSpB7ZtqyQLRDp6|8?YLYO9=qXU@cn!;f$a|Mn{ii7#9cwDeZtWkuy)I)Q9 z8puwF@l0s=`?s-}HYJ?!ggb&2^u_}aMio7cXpI#%liYJjwe8zFH#B8%*(=k<55suND zAbYeaYxjY9OpDrro$Z+)x;MHt+T@UarnA5ex!6Jn9nH0YgP4G{F zfR%E@k!F}i2NWm@2PF4BrYm!Bck{VHLha~iA@+d(HI=vCgJF_j5n>iV#>V$8xYR6~ zdAn~;5ivGR);FDR7FWCx50OM)>NT|R_Yd;uc@dba#%!5m!XR-Fvp&Cv$uom07^Aru z;7l9fZ|s8ByJP^hyJ|tFr*_-JQ0MV&;us^%(K4>`d&D$?+fkrqn*mnN`I^}d1PAc) zjl*E7!wU0W_f5NJK$yDd1gzxg&|;k)dvGSw1gzPDrC%jefQEhl(6Fxb8%PFNC$DIi zds_Ib?H5bdH~U8;l~piBtoNx>t}Elsf>*p7?nzY-)Dk`u+66y&%SOn|!l_oqsj?u3 zjE0&QWwq>_UqAJ`sJW5^G+yR#IrI~0{g}hUy6M2HXf*b1d~sYlNr6A%9L4^^X>K+b zreW1hBj($107u!@4sNJ%&YXjK*M!VCT&rcRY@xZI`43#asC))hi?gx5L0?22DMWIQ z6wa4p&QTgQz%&Gs5Ieo?Zly$hzwn^-$5>ZRMHF?ik*P1)XGunmcYJt0m68pnyZPIB zzYOF0-c%_v*!X#|kqKEeRhZjKE&ia!R6VfF7^A{8h<|o&buK$@N#Jia`@8ic=Mk-j zT|iUO?2>M^8=z6AZFWGT-~OS|*AYhL4S=Z#+IYk3y>h?A1MHO}{);{A;e`4xe%pL! z#x;dv#Ff(t^4M%!m9`dfr#Wsfvp{CmSn`kntUVLmr>3+-l8p`3r_ASddB2KjQHcn^Cx#AEW^ZbFHB)M^bQQMy9n_-L{sa>)3GB220kCcz{op zIwEW5$Gqp1uh~_s)4;Nk0O;B9`@9Y)!YaL!e#hSPQLZ(M0w<5}N5Hf*v1>YMSBAi~ zjb)Ok2LVS{b5CRLF^b7Ul}5*WtJhh+?^?0Bhrzq>3+eXk%jmxh{=(hrfQ}FMN?JnvZ z^-xHkfUmzL#JR@~K1TUmI6y7Cn}}20NEOO%5>Tb9=jjOP=bxS!>vUI;p*$AzSwdjf z&(@oH->&IfZ4uL0_9fCxbY?>|uYMS*XPKZ?gcQU&9|`#2e(d`A(;^9CZLUuzEhn+X z=>_v_l$WRM5Dzo92#os$75kZ_3L zlYUoVZ5@W&wDFK#!OCQsr7z`|<=H5BYuE(->Un ztPRP0hkk=}MS!+7Rd4=d#TCw`x&#(eKwtUju7~9+duNj}pcUnrP{ynlB;-8VwUYzX zL*%CY88fTC7VP&K4s24zNTY*XaE)NTfpm!Eu&vvR8h+|RxrwgeFI#(Fo}Oxpoe_tK zgn~A|Kh;Tm^KKdtNS-TSLG!`uB_Ci}lGxYfAk2;kKm{(C%_wpzyG?BE$*wI2u{{3( z7KsCtqZ9?m)P6t!Gkm?yLdEry=skTE7`@J!<7Nkx8lpmZ;9U%Gt9_d%M6U6sk%G6z zPVNh}Hvc3_TzS+(ZHZ1r6>pAUqD=v^UpOK$@lZz?=6LRAxb4U{Kob)Wr75hY=F$dvjEnV))_$ej%gGuW}q-vnT@ zoqE5DW;syFwRLkgPX5dB!%Dy{+~$+xu*M@(KygJG;5%#~(E=a^qT6oO{>`yw^20cu z*}*M~RC(ek-Z1uA2OTP}Ac*ue1 zR_*M=j*P!^NyFw}nD2lPS(W=LBRluv1UNvc5iha+caCwG<)0M&%baU=5)JG(-f4&8 zN(&sv5MKcf)(mbJs(x5!8E7qOB}d(aic^61 z%VN#zx&s7?-d z7A@fY8vgZuSsan-_c6~Cb8hqeM5y^AtTs%bp-C%FBTi!SgO*1rG@vpyiMosf{|a(W zZVBwq*7YLV8Z*Jlhd~Hzk9e~=ST(|D%-+NaOMl)DRIQ9nV?p;2*59Bk%9m6oTZDOm zc+ zQk@3Lk;XDV?>wfuj}PL{tPz0=?1q|~{_ALF`p#VA?|e?u$R5IM=+3w27{I0jnla7d z7p9K38%%ts(@49~FqPos2iScOCJwnfveFGpLA|MOKv%{FxPKx<1CCp9@hV$UD$^8F zzDiESreg-CCTTjgpC+;N*}{ub*{m8%!HP>~0vWUXL_y&wOM)(bcRScAF3}j56Se3X zb2%oO|6)#nrGG3vN;7ci7TL3@#bt+qTP~x)S|eJ!V=I7YpHJE;=f#T0Fpo9Tqk*E; z6~E=n{)gYb&1}AL^X5I5hN=-@+rhM8KO>GBSUOi)e7DHk`0*La2EW;?7L$198(i76 zh~BfS@h+Uy8l)7@sH1P1S+Yy-e9ted(=xXY=HtTYK*aDKYx7O1vmd5fq`gKQOFrhU z%r0`-JSWlIdo_Gk=IqJulaJf{ z7zDTuG?>(X0LNF?K%18aoiNCzL4fTk&6L6{c<(MKuf2hM9EMAZ?0@k_S^giq?f4$c zd;vx-;?}-%7U^%E-KUZ3&D7H=6-8|_CCwCHKrNs?3T(e4*nS&_00?kp5a7h5^WSCy zCpU)cpB%2vCk-+Sm6T9ht7avuT7v#kxJ>$0EeKFte@(PgKffKIIG=YA#i3tOoV`%U zKNQD&Vv<;L*3N53aSAs3(UvJVifsci1p?G^EEI?G@Za3}yHOh5mQI@=P|t#B@dWMb z)vg@{N@agB-ZPhZd2ufN$PpnIwIjgne8z6TNvJ$22c{p6v6zju^0j4TGn6qL{UZc7 z`v9Sp0b8wq;I^$F$!Jf1+$P*M*yi8kd{YhNdTK6AAl`49fzH+KM9bQyLukq3;G}QEr3}Y=)VHFuT_rLdasAPfj6?%tieXB#OmSOhhvZ7LD4SFK#F>Zf zwvWBQ(j{64=hOwX=!@H$j~e(nGajD#-3c2vMb^w~>i%T)qjL@S^p`8ztmL)<2& zG}4USz}iHU)U6(zO6eoSeD=#Yga+9gT)HnIaY~o*v*=gh)vaTT{{~DPSTbw?3NRd( z(Oux4-zk(#Ua9I*04p$Y`oP2;J}u26(dOxIn*9&zY<*m$uTTfyyGEVs{}*)}0ChwV z>ck<`QQ1I8ASqpWmII;gNCNi?b>L+vLm<@YR1?^)1Jot;f(j&8URv*Ygj2r?gu2E5 zpblQTs8g-H-Gz&Rck}(lt6oS}KVQqL)W5Q71=1+1RNlZC!z)?kOZBGw?Bd&d`>(8e zo7P)`C)N_!CXA);d(IHmawINojzjDoMV(K8u>))5wrFA)*0(s6ik3c7I%s*i0+%RU z9(bNJrOJJJJ^!HYoV?H3LeaeFw%qag zP0E7V_uSYP;jT#r{%%tV@+T}Hb?9`>p*RKTS3R(k9OD`W?2h5{IKggCsG8hzu%GrYx8cH^bG`9V; zw4HlRD2EBsRu*~Yd%@AK;tgGHorl?~La-xuxq{sys5l$!>loh81HF6|hLW0w^Lq4Z zr#Mo=xHBXA>8@~D%I&>wm@4=TakkClxTmLkP6m-94KV!dl~@H=u;j0DnsrvfkAbW4 zKl)e&WlY+lGY<(suz}8`XMsxK*PW7?vjP}qSfI)8u6AR-ippl-Ktlub!n{~kHrUcPR5HjIv#!&1P#q}BCxVG!S0 z^nWb4LY_w@fvw@c$fNE#_lQ93rVZ$&WB&+c5btsIbZZ({-koo@@S*fV!-%@XQ;wax z)NAit*X;)wv-vZ?{7R$HUDr5fUG0Y{2Dy>h#?vNBM;4t7X zylvQ`KlcyKYsTV|tx6(XrL8nh0|(`b3|UjQpmVoE(E5s0C;PTml~A#G<6tq9DsM7% z%(DQ!Kbb3zBQ?5QaaTq_T6S~8(P?BV+l4+OcrGKPu#3n%Jra_SdBm6o~ugT8A%z^e;l{li8t&~Ltq9`ew$Mw>|=T2kjf)1%Qi_$^QFFFXaUrGsz0ej zawDJte{X4y>JVIU_nF@qCGO&>=uAe|7Pj03+Tyo+JozYv^HJu{gX`GY+y;LKMp3!R zc4c(&r4fCj)u`nQ2&#j;-Byo+zn};)vpIN<-Im1d0jL>PdM&kN3yI69q$@MuJ_0vO z;w82kf1C^5gqhc5k2*No67H9@;!x^k1C?tB-fT`YpYQ$OuH<%b>%cWHWf^~0CRWjc zwn&ut#4STp1*?cpyixg$PVS!+7JWh6RU1kv$iB3RO)IWNrf_t~!!rLDfn)%ILl6Rm zAq1v`GIS?Q5YouNLsTbDx)8{Muab(uFZ?b+aAQUyUp_pv*K|s~$~RVbvK>FVC@Qd~ zVEo)Z_LT(JA1!F{s4#QYj;h}R)tMX9<+oMZ4j7b z3W5y`<+?HG&YBxn*|)KIU6^vtmmt9;X1l=XS^^yxAD00=iCm&yWOQ}TmD*OByH)Ej zWF^>LBhTnxn(Sv=}7mN`c8RQQI__cDjT#X z7SlCA?IXP%2v$knE{9Vk!gRmfuelum?s=ZU_tiwRfYRv%g7Qv{(5vfJg-4ca@zLSkh1`gBfKWN7sX)Jw@#e(-Fsu78I92W&12a+SU*L~ zV)7gwcl6yYU{L|btOBBbC|ruHmnscdyb$Czhm2U|*$10*_MxSn-DGV%NNsH(g$^t= z{gKyZV@LN{n^UQ`43ygxG9#B>25_eW$Z1)x{DIsQfE+jibOKZ@@aY4Ka#9%XJY$lM*GREz{smy!jAW` z&tjz{0|D1r$b;T{=8Wh{m47Pe_@@F-8#coIRq|`p_>3tosxEUryS?SNs-^*>wGsqo zgq?qt)^3uehfr@xm3p5abT6(JeExVgN!}kUe-s*j2=n~mE0`>ki|c;@_WlJM8=YdX z+9^=km0^Fd?ibroD=_bUv5fq{qPLZAlBuS@G@03dKu7Dsq3w^v>;In1d}(#+2I~4# zwoFbGncuB3DzB`Ti@`N1ZhQ-#(du7?cjf#zZYC)~U^BpSgPD`d^=R=Q6kgR#46e|2 zV-%@SX9wvZ#_~w2+J1`DEr$P4Xd9ye;t7MwZz_^m*fkL^UT>=$ZC?Mk zNW7?xxYS=no^uKAjvU|ru{+d79&8h z3Z@G@xYx!TQZ-8598UKfv;64Z@ zq^KOywxfZVk@uOY)Z%!eR!iSCZ-ckG;<(%g+UAc^Jj?EEi2rs8VOrlYW9&!_Z)?NL zfxKMq*qsa5wU%o857JnkNKNVDM6OsU4pjynwm+uMM^mjC*^GO!uw#o3}z*lvo+Z{@|)wz5^f|hCzBa#7(^b7xvXvcq9L^u z&?&e*Q6&Th=GQf-ZX8r=(|>>CX$XEhibLny0;XFGnxX0+UeleP?=ErZI+IP~*<)T3 zTbd-MzPYL!MsjZx5xI5lDck6B6_<*|r+6L`AFqC3qGRC(CvHu?GvC*>uBDSbI-#$; z$xYE}DoK9eUEkuqxt`IXRJ`<9E5$p^OfpOywdkF5a#{|izCt%<`O>>VdrqosNCz$x zAXQMP4Q2riS=4M6+K@mXmLc`dxn`D_*vP>m^)VojEaQI22AwcX1$`Nsl_~1EfHlHl z%riZA6T&3f8uhq~I%=8k7jFH08V=KQ9(nbZu*3FcEyZ481~^R$<50B9qT;e7gtaNX z&l)qenI5bTt#2?f!5MbVoUbsFteZWyvNps(W~KnA$hjQwQRUTl{ad=23-K^Kns6FYvgA4x_j71t4f8^euYNxcIY*>lYpmI8}<+8-!+d1eM&@N%vbZyT5eNwH4(S$?!4$LssUgHKzuN(qnG^ z=-yzJ*Xbyx_~HYGq&YV}%p8KNKB_?B=5ON-=4!IwFVA;rcCDZrqL@nWaQ9l=UwH*; zn=Mbk=+N{5Pl0mw9K}?)u|f=Px%@%imGO5cdG=L~GNgnopR_D9lKtVHbB(6@_<27q zJ~8-7R&K$N{TAlzo#fUjA6wUMn~b`WIKsl-LF4zvE^g|B2D;$l0JS{soiZ+ITtp|0 z!7*ZfY!V-YPwzpNDeIWYe1DZMd3%Z?sLaNnDZM}4hFIS6cPIldnRA5_O(=Km{-;M0 zb{Zz!3uSfx!shc1{@u0Nom7olp&8*e&<#Qh?Ct*pm$@epT-HNlA-JH|OF(d025@n1 z{|!zDk~)KqZ<6qqEXKcLcMX*0aOc5})K3f&aj}UO*C1&l-U=Owdl(;d4%pA%)e7K) zhPHMz7;xpmH;vE7n8e@;nC=b_FX1Y}r%H(K3ngflWcGg=KY2!sFhWt!vQhn_*Pcu- zR6$>6(~C?X#83c~WE)VLKvA+8i~p5Q>WC4$Trl&@>>BFMCLk6i7lP4;NYsE^iGv{+ z&~kd+=(m2@gZSk3Y*$Vxs5E#THwROB-CLBTu;O z*-;T^q;p*?aIK<2Oj!f#ncN)ldsA?8i6Zps=%4I4=V_|)wcUaXe(tsH8_ykg3W%~ z8)!XrgoxO!{Tqt}1ExCMm~@=vL0<+8Tq~4R>}fK|#!4@esa6~i0!<$fMIpv+EiIc2A+)F$g;HQlJt~cu&24e3gIrEpT!%v!268m;=y;GUAMAJoaZKj zMS4JAMjkhU2vr6zXfZ6R1%AFjXXzYy*DfP#*?7iFKpl{RAaM}q{ng?V?Qt4f0BT9+ zLo^FSCuei(M9kf<9_62rkwK=03?JR7i)6pJC6$Fh@djAt#kk@TZU(6pMc1Ob1|3C&=oEDwoXr4*)JYAMELtt6uh{_K+=-=DzQLm2#lCHXmfDt zf)&=5O|R)62w}IHv2PY1)mX`b)(==GN0QO|8!lX^p}@@qqpa#QmX+6tG@?1jo4=iR zJ7WT{q_{KN1s9;$ii;Azcm>Ch@ba;Bs5%9M3nbW0&+CFV#CGg5#zwe*ri`9EQ`N3N zbRv#UVu)XN-vcMd;I@WPsB_SKsBVB0SwxNu<_3IP@$SZrXim+5A=~;%$RckaGPW{l zu^`Ur0l(yw9&FZ4GTl|iF*By3I{Ou>M8WW%eR1*xojrzsO!8O1XmITy@hlk^bEY$D z;imm^!32}W4#MngYV#ZbtojUOSX_j}Xte3iYOK;hYX+!F_pY1$@>UoA8rqfCkpw=u zY2{@ND7ctrSXIe=`~wQY$fH~h4TgJd|G^DaLYdiAFts+o&D$B=re`;rngE4(Z!z_b zmS;KMRVyz)f*1rUxUgr-E6BDNI8TzrhR6xZO}(N?6VB<4>gH4sEkmosn>lYt*s@aC$V(Qf9S&^0_F_if_lA}< z7PAQJoxmP{rKfGT?#z4nT_2&|^Sz@Y7iODkbBNWl&y;1Hd(Mp6OuZnW8v+t1OShKb z$w3(sa%^=5RA=op=N?z1m~y3{tsUmlQr#_kGCyULYP}t|=@?4P=_Jl)k7j?MI%=OL zYUscA_x|h^qK9sdb~3O4dU!lY7wK^ZZ;#Huu%K^eYph|dQ+m`5ZwYLspVT3dIDJ4s zTU>p!1;*F;&RRjlgw@Ti@gp|v11w?NB#gc)_VC;mpzzOF`D=iG%)oF)`jaj^EE=Yo z&X@#UF~MXz=G3dQ%lz9%d0yuec`d*TCkxIgsKr$zE8MU*u=%ySxz$5}a5T7XEcnhT z-KfnOcFOej=zH(~i;lKG{)djx7bxnX+y8Nrb3dQjO5B>EN89+6J4-5d02`meSUB2G zaD)jQxByo2=*7iQ!0;>}H3LjqC3dSM*ADH^ETMr=!93TZoX zyt^lHXgno%{0kS{O6IGN0|z?1qXCkx8uQ-=4y>{u!3WY+I!Bl~G`XT7xZm#rh<`0A zrJ7~Zx#Ps0g$fV`(N;<`Y`>y-d|7$xK$vT&T2O+9|5tX6Bgfms0NZmKC;=i)4_#TI z!|W5*J*$XS?q(Hn4z$`R-mgMJ?}_W)YSC6BH@E{n+#*tL&vvR>Gnnq}F8KZd9sB0M zL1idLLxY9%V`8b-C1~{kWNSnuy+=AY&$MnWzYy(OyD0mYqoM+ge3(7p2R#1Zx|08L z!K5dSXsVf+87S_RLeZPp=4zb5E$Y9l9 zo$k9899JFZ=JgZ%0!0YXgWIQOmwu}W|4EJd_GfQ*f~NDyaZh3Ar@UD_VXrQ$U<(h| zQ@s_1k*yn)V?)bv$s^pKGV@Mbr>nAZSKPUhO)Uo~pd4+)`iqqUT@%pIndh4x40ic; z4pn^XbY}qRO>|b}jPN%I*N@@UbEM#1Yi+`hMtf2LX}Gf++sHm_F~riVn|< zCMLMd3KnmO)n%T7e#iUidx7GOp9E=d)a`4Q&SgrTtRFv;vZ(5SFf)6uw508xt<<%f zUD@XOQEuP;u+zluxT09b9u@8s#^_N%O7Ld|W>%IK>w5a)AXE*ZQ0){{_sX~1;_-U5 zUWGH=d8@C7>O^764O_Q2_l3iOE8a_@UV#$hNvC_2qbrd@z`vHrxG{&E92E3hlh zG&zkze8zWUq9lR3fR36KVj^Ih=tJ-HmplVmB_~29h}_AYZKQ9?>qn9Md z8S@i-7ej=w7iXszOdYRbhHsZ{A6ACbV%F_{)7XXefD)w>f+XM#$(}R`2S-c3_gG%Y z8w{V_%9ws4kH`Y>Beu}VAxZUenRPb&yqbPRa7!LyI%b;qMMNe3d)V3+!%k%h4 z-2B@vO&vcEKCD{kxYa&Ps+#ru*q!Wj2~SvV5Rm<_B2`($W!LA#U9~&ov6PiOxtP1Qs+t1rT#0t zX*M`U3!M5fP-xVaA#e&!zVo_n5)K8HBl+0|lk`b$ZNPpEU~I9QX@7CveC*a%QQ$h4 zJi#*&vv53rahGd|UqFHeX&%rfH+G?#xTic^a`F3*K>8#DMtNMMpg~YFDYY3N3K>)R zeHkWrcSI~7)#wGki47{{F1UI6L*&-JopD#AO$795vs;$N7BiX4?eh_JUh$}>L z!W4`e_{2R#^>UgqZ(BwWYP_w30yqd%ghUcas`c&ruYT6rBed;+Wj4=@an48Fc=}-A z)8$ZC>5&5h_lx&mRP?70V;1nN+H>Wsm))lc!MJ&&8(gOSK}SlQLNx7~%S~B#U=3%6 zLtGAdQ1*5%Psz^6bHKG7yADC{ZGjg-(Nc$G`;Sv{Sc1!X+~+#SeHZoXaocV=HlO|W zRCTVc-qe}mw!^WPg)jfMH;Q!036UIwS2O7A+HD&$7{<(z&?kOk^91nBKdM0612q9}e9XwImIl=K=o1RG|%19ZU zW+NPH-S(W82xM9h;^M}%O8nYl48Og(3>p5_4b#Q{4gMcKcn5K$h$HOR1dVm#;XV+G zkzBc~c@Ig#zP5{%d)rP~TW$8xx_*FK4 z{<$CgcJjNrsge*Rr=dCS`W<-zwNEZ<)pee&So=KFmqz4rhypei&7GM~wO{x3&P=Wb zMkLsy_dYkli7e}xzYWF zKCbo4kNxZs#FXE^nE{^;{l1MJ8PpT^npW5keoj*K(OKC*xI(5!;94w^4E zR5}c;yZrBA34G(q-=A(G+cp^*Z#r`-XAkQx6wgwb`{pX zc~!kkMnu`8%*PuAfP7Gkcd$_to-`6N)t|mMKC)Imb2>u)%N&t6TZ6nw zfjk0z(xrWvO8Eh6cg6-5zA=IUJk?R^WYTRB{N&bUc~ALwz8Q{-Aus@dOdS7|eORL; zv9R@f9}9sQ$9H$Zl8%>?QfAG(SeWzf7C#qhd>(De?YGH~n5o(Z90^fB8>3GN zJ?|A-*fM>UOLP%z?Z*c0>6r`i)Ro=ATa)bf9HSpDk zxa6GV>%R;gYa$dd*?47le)*D91BY*~w|qya29A!hSD%lU%=dz|!ud(Zc4`yU9 zjVw=JP4uHUmeRvL4=j)eyI+Lt2bLm9gc?-xMNSDN zpS?oMi&7vfR>fAkl^bQ7&SXN6`pT||K=sM(;v$`2>n!Ic8Dq3>xqsA@_m>1@3ph5; zxR!UvFSi{ktQmTBSubPWTorjq?cwp&Fn_z7yB1)#n#=m2o2S&BXQeLwft@_U|NZlS z>JE5aCJS)mLT`_|WL?v6gXsU%h5X<5{{Q(76yob5=(3`$Dn8YhgO(~IAupaUs{8i; E0oZaGUH||9 From 6b0c453e9a6a5883b7263407d4ded7329e5ecf51 Mon Sep 17 00:00:00 2001 From: Arnu Pretorius Date: Thu, 3 Jun 2021 10:56:40 +0200 Subject: [PATCH 126/188] resize mava logo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 906b38ebc..a7468ab02 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ - + # Mava: a research framework for distributed multi-agent reinforcement learning From e94d5f1f75d168f31bbfa51ee90e93838a6fd2df Mon Sep 17 00:00:00 2001 From: Arnu Pretorius Date: Thu, 3 Jun 2021 11:00:55 +0200 Subject: [PATCH 127/188] Add link to debug examples --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a7468ab02..c1ec10918 100644 --- a/README.md +++ b/README.md @@ -198,7 +198,7 @@ We also have a list of [optional installs](OPTIONAL_INSTALL.md) for extra functi To test and debug new system implementations, we use a simplified version of the spread environment from the [MPE][mpe] suite. -Debugging in MARL can be very difficult and time consuming, therefore it is important to use a small environment for debugging that is simple and fast but at the same time still able to clearly show whether a system is able to learn. An illustration of the debugging environment is shown on the right. Agents start at random locations and are assigned specific landmarks which they attempt to reach in as few steps as possible. Rewards are given to each agent independently as a function of their distance to the landmark. The reward is normalised to be between 0 and 1, where 1 is given when the agent is directly on top of the landmark. The further an agent is away from its landmark the more the reward value converges to 0. Collisions between agents result in a reward of -1 received by the colliding agents. To test both discrete and continous control systems we feature two versions of the environment. In the discrete version the action space for each agent consists of the following five actions: `left`, `right`, `up`, `down`, `stand-still`. In the continuous case, the action space consists of real-values bounded between -1 and 1 for the `acceleration` of the agent in the `x` and `y` direction. Below we show the results from some of our systems trained on the debugging environment. +Debugging in MARL can be very difficult and time consuming, therefore it is important to use a small environment for debugging that is simple and fast but at the same time still able to clearly show whether a system is able to learn. An illustration of the debugging environment is shown on the right. Agents start at random locations and are assigned specific landmarks which they attempt to reach in as few steps as possible. Rewards are given to each agent independently as a function of their distance to the landmark. The reward is normalised to be between 0 and 1, where 1 is given when the agent is directly on top of the landmark. The further an agent is away from its landmark the more the reward value converges to 0. Collisions between agents result in a reward of -1 received by the colliding agents. To test both discrete and continous control systems we feature two versions of the environment. In the discrete version the action space for each agent consists of the following five actions: `left`, `right`, `up`, `down`, `stand-still`. In the continuous case, the action space consists of real-values bounded between -1 and 1 for the `acceleration` of the agent in the `x` and `y` direction. Several examples of running systems on the debugging environment can be found [here](debug). Below we show the results from some of our systems trained on the debugging environment.

    @@ -235,7 +235,8 @@ If you use Mava in your work, please cite the accompanying [Acme]: https://github.com/deepmind/acme [Systems]: mava/systems/ -[Examples]: examples/ +[Examples]: examples +[debug]: examples/debugging_envs/ [Tutorial]: https://arxiv.org [Quickstart]: examples/quickstart.ipynb [Documentation]: www.mava.rl From 9487c079d5a0375b5bbf8a6f2b107472d277a208 Mon Sep 17 00:00:00 2001 From: Arnu Pretorius Date: Thu, 3 Jun 2021 11:25:38 +0200 Subject: [PATCH 128/188] Add roadmap section with poll --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index c1ec10918..cea5cf74a 100644 --- a/README.md +++ b/README.md @@ -207,10 +207,14 @@ Debugging in MARL can be very difficult and time consuming, therefore it is impo ## Roadmap +We have big ambitions for Mava! 🚀 But there is still much work that needs to be done. We have a clear roadmap for expanding our system implementations and associated modules, improving testing and robustness and providing support for across-machine training. Furthermore, in the near future, we also plan to implement the following features (feel free to vote for any one of them by clicking on the name!). + [![](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Sequential%20environment%20support%20including%20OpenSpiel)](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Sequential%20environment%20support%20including%20OpenSpiel/vote)
    [![](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Population%20based%20training)](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Population%20based%20training/vote)
    [![](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Dynamic%20networked%20architectures)](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Dynamic%20networked%20architectures/vote) +In the slightly more longer term, the Mava team plans to release benchmarking results for several different systems and environments and contribute a MARL specific behavioural environment suite specifically engineered to study aspects of MARL such as cooperation and coordination. + ## Contributing Please read our [contributing docs](./CONTRIBUTING.md) for details on how to submit pull requests, our Contributor License Agreement and community guidelines. From 9749fcce41758df775d7d9baa92b1491f11fe7e9 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Thu, 3 Jun 2021 11:49:39 +0200 Subject: [PATCH 129/188] add tf logo --- docs/images/tf-small.png | Bin 0 -> 2150 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/images/tf-small.png diff --git a/docs/images/tf-small.png b/docs/images/tf-small.png new file mode 100644 index 0000000000000000000000000000000000000000..85e775f12d342c8ca30c5fb5018a297f1ec0c387 GIT binary patch literal 2150 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 Date: Thu, 3 Jun 2021 11:50:02 +0200 Subject: [PATCH 130/188] update system readme --- mava/systems/README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/mava/systems/README.md b/mava/systems/README.md index 3a1eb1378..fbaa19d6f 100644 --- a/mava/systems/README.md +++ b/mava/systems/README.md @@ -13,24 +13,24 @@ setting: Agent | Paper | Code -------------------------------------------------------------------- | :----------------------: | :--: -Multi-Agent Deep Deterministic Policy Gradient (MA-DDPG) | [Lowe et al., 2017] | [![TF](../../docs/logos/tf-small.png)][MADDPG_TF2] -Multi-Agent Distributed Distributional DDPG (MA-D4PG) | [Barth-Maron et al., 2018] | [![TF](../../docs/logos/tf-small.png)][MAD4PG_TF2] +Multi-Agent Deep Deterministic Policy Gradient (MA-DDPG) | [Lowe et al., 2017] | [![TF](../../docs/images/tf-small.png)][MADDPG_TF2] +Multi-Agent Distributed Distributional DDPG (MA-D4PG) | [Barth-Maron et al., 2018] | [![TF](../../docs/images/tf-small.png)][MAD4PG_TF2] ### Discrete control We also include a number of systems built with discrete action-spaces in mind listed below: Agent | Paper | Code -------------------------------------------------------- | :----------------------: | :--: -Deep Q-Networks (DQN) | [Horgan et al., 2018] | [![TF](../../docs/logos/tf-small.png)][DQN_TF2] -Differentiable Inter-Agent Learning (DIAL) | [Foerster et al., 2016] | [![TF](../../docs/logos/tf-small.png)][DIAL_TF2] -QMIX | [Rashid et al., 2018] | [![TF](../../docs/logos/tf-small.png)][QMIX_TF2] +Deep Q-Networks (DQN) | [Horgan et al., 2018] | [![TF](../../docs/images/tf-small.png)][DQN_TF2] +Differentiable Inter-Agent Learning (DIAL) | [Foerster et al., 2016] | [![TF](../../docs/images/tf-small.png)][DIAL_TF2] +QMIX | [Rashid et al., 2018] | [![TF](../../docs/images/tf-small.png)][QMIX_TF2] ### Mixed We also have a system that works with either discrete or continuous action-spaces: Agent | Paper | Code -------------------------------------------------------- | :----------------------: | :--: -Multi-Agent Proximal Policy Optimization (MA-PPO) | [Yu et al., 2021], [Schroeder et al., 2020] | [![TF](../../docs/logos/tf-small.png)][MAPPO_TF2] +Multi-Agent Proximal Policy Optimization (MA-PPO) | [Yu et al., 2021], [Schroeder et al., 2020] | [![TF](../../docs/images/tf-small.png)][MAPPO_TF2] From 00e48fead4d344c5ff551ffade3396ebf3fb685b Mon Sep 17 00:00:00 2001 From: Arnu Pretorius Date: Thu, 3 Jun 2021 11:52:00 +0200 Subject: [PATCH 131/188] Minor edits to system readme --- mava/systems/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mava/systems/README.md b/mava/systems/README.md index fbaa19d6f..c42964f48 100644 --- a/mava/systems/README.md +++ b/mava/systems/README.md @@ -1,6 +1,6 @@ # Systems -As with Acme, Mava includes a number of pre-built agents as listed below. All the systems are +Mava includes a number of pre-built systems as listed below. All the systems are implemented using [Launchpad](https://github.com/deepmind/launchpad), which is used for distributed training. This allows for easy scaling of computational resources by changing only one variable. @@ -11,7 +11,7 @@ Below we list the different systems in Mava based on the action spaces they use. The following systems focus on this setting: -Agent | Paper | Code +System | Paper | Code -------------------------------------------------------------------- | :----------------------: | :--: Multi-Agent Deep Deterministic Policy Gradient (MA-DDPG) | [Lowe et al., 2017] | [![TF](../../docs/images/tf-small.png)][MADDPG_TF2] Multi-Agent Distributed Distributional DDPG (MA-D4PG) | [Barth-Maron et al., 2018] | [![TF](../../docs/images/tf-small.png)][MAD4PG_TF2] @@ -19,7 +19,7 @@ Multi-Agent Distributed Distributional DDPG (MA-D4PG) | [Barth-Maron et al., ### Discrete control We also include a number of systems built with discrete action-spaces in mind listed below: -Agent | Paper | Code +System | Paper | Code -------------------------------------------------------- | :----------------------: | :--: Deep Q-Networks (DQN) | [Horgan et al., 2018] | [![TF](../../docs/images/tf-small.png)][DQN_TF2] Differentiable Inter-Agent Learning (DIAL) | [Foerster et al., 2016] | [![TF](../../docs/images/tf-small.png)][DIAL_TF2] @@ -28,7 +28,7 @@ QMIX | [Rashid et al., 2018] ### Mixed We also have a system that works with either discrete or continuous action-spaces: -Agent | Paper | Code +System | Paper | Code -------------------------------------------------------- | :----------------------: | :--: Multi-Agent Proximal Policy Optimization (MA-PPO) | [Yu et al., 2021], [Schroeder et al., 2020] | [![TF](../../docs/images/tf-small.png)][MAPPO_TF2] From a3bdc92b9a99a1d5e3e00846932e864a2fd1f7c4 Mon Sep 17 00:00:00 2001 From: Arnu Pretorius Date: Thu, 3 Jun 2021 11:53:38 +0200 Subject: [PATCH 132/188] update robocup link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cea5cf74a..d158f69d2 100644 --- a/README.md +++ b/README.md @@ -249,7 +249,7 @@ If you use Mava in your work, please cite the accompanying [smac]: https://github.com/oxwhirl/smac [openspiel]: https://github.com/deepmind/open_spiel [flatland]: https://gitlab.aicrowd.com/flatland/flatland -[robocup]: https://github.com/rcsoccersim/rcssserver +[robocup]: https://github.com/rcsoccersim [dm_env]: https://github.com/deepmind/dm_env [pymarl]: https://github.com/oxwhirl/pymarl [mpe]: https://github.com/openai/multiagent-particle-envs From 89d3b67742194af392c13f84ced97d6fad055932 Mon Sep 17 00:00:00 2001 From: Arnu Pretorius Date: Thu, 3 Jun 2021 12:02:45 +0200 Subject: [PATCH 133/188] fix broken debug env link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d158f69d2..6410d9225 100644 --- a/README.md +++ b/README.md @@ -198,7 +198,7 @@ We also have a list of [optional installs](OPTIONAL_INSTALL.md) for extra functi To test and debug new system implementations, we use a simplified version of the spread environment from the [MPE][mpe] suite. -Debugging in MARL can be very difficult and time consuming, therefore it is important to use a small environment for debugging that is simple and fast but at the same time still able to clearly show whether a system is able to learn. An illustration of the debugging environment is shown on the right. Agents start at random locations and are assigned specific landmarks which they attempt to reach in as few steps as possible. Rewards are given to each agent independently as a function of their distance to the landmark. The reward is normalised to be between 0 and 1, where 1 is given when the agent is directly on top of the landmark. The further an agent is away from its landmark the more the reward value converges to 0. Collisions between agents result in a reward of -1 received by the colliding agents. To test both discrete and continous control systems we feature two versions of the environment. In the discrete version the action space for each agent consists of the following five actions: `left`, `right`, `up`, `down`, `stand-still`. In the continuous case, the action space consists of real-values bounded between -1 and 1 for the `acceleration` of the agent in the `x` and `y` direction. Several examples of running systems on the debugging environment can be found [here](debug). Below we show the results from some of our systems trained on the debugging environment. +Debugging in MARL can be very difficult and time consuming, therefore it is important to use a small environment for debugging that is simple and fast but at the same time still able to clearly show whether a system is able to learn. An illustration of the debugging environment is shown on the right. Agents start at random locations and are assigned specific landmarks which they attempt to reach in as few steps as possible. Rewards are given to each agent independently as a function of their distance to the landmark. The reward is normalised to be between 0 and 1, where 1 is given when the agent is directly on top of the landmark. The further an agent is away from its landmark the more the reward value converges to 0. Collisions between agents result in a reward of -1 received by the colliding agents. To test both discrete and continous control systems we feature two versions of the environment. In the discrete version the action space for each agent consists of the following five actions: `left`, `right`, `up`, `down`, `stand-still`. In the continuous case, the action space consists of real-values bounded between -1 and 1 for the `acceleration` of the agent in the `x` and `y` direction. Several examples of running systems on the debugging environment can be found [here][debug]. Below we show the results from some of our systems trained on the debugging environment.

    From a5ba9b50d29d284232d4d4a726670b7994d73635 Mon Sep 17 00:00:00 2001 From: Arnu Pretorius Date: Thu, 3 Jun 2021 12:20:27 +0200 Subject: [PATCH 134/188] Fix broken link in examples readme --- examples/README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/examples/README.md b/examples/README.md index 909c8fb6b..2eca91531 100644 --- a/examples/README.md +++ b/examples/README.md @@ -4,7 +4,7 @@ This directory includes working examples of Mava systems. ## Environments In Mava we use a variety of different environments which include the -[petting_zoo] environment set as well as a few custom [environments](utils/debugging) inside Mava. +[PettingZoo][pettingzoo] and [Flatland][flatland] environment set as well as a few custom [environments][debug] inside Mava. ## Continuous control We include a number of systems running on continuous control tasks. @@ -78,3 +78,7 @@ We also include a number of systems running on discrete action space environment an MA-DQN system running on the StarCraft 3m environment. - [MA-DQN (recurrent)](smac/run_recurrent_madqn.py): an MA-DQN system running on the StarCraft 3m environment. + +[debug]: ../mava/utils/debugging +[pettingzoo]: https://github.com/PettingZoo-Team/PettingZoo +[flatland]: https://gitlab.aicrowd.com/flatland/flatland From b1c27a8071735201f0e646a7db0fb3d8f752fe54 Mon Sep 17 00:00:00 2001 From: Arnu Pretorius Date: Thu, 3 Jun 2021 12:29:01 +0200 Subject: [PATCH 135/188] fix spelling mistakes and remove unused links --- README.md | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 6410d9225..1dbd236da 100644 --- a/README.md +++ b/README.md @@ -140,7 +140,7 @@ We have tested `mava` on Python 3.6, 3.7 and 3.8. ```bash make run EXAMPLE=dir/to/example/example.py ``` - For example, `make run EXAMPLE=examples/petting_zoo/run_decentralised_feedforward_maddpg_continous.py`. Alternatively, run bash inside a docker container with mava installed, `make bash`, and from there examples can be run as follows: `python dir/to/example/example.py`. + For example, `make run EXAMPLE=examples/petting_zoo/run_decentralised_feedforward_maddpg_continuous.py`. Alternatively, run bash inside a docker container with mava installed, `make bash`, and from there examples can be run as follows: `python dir/to/example/example.py`. To run an example with tensorboard viewing enabled, you can run ```bash @@ -198,7 +198,7 @@ We also have a list of [optional installs](OPTIONAL_INSTALL.md) for extra functi To test and debug new system implementations, we use a simplified version of the spread environment from the [MPE][mpe] suite. -Debugging in MARL can be very difficult and time consuming, therefore it is important to use a small environment for debugging that is simple and fast but at the same time still able to clearly show whether a system is able to learn. An illustration of the debugging environment is shown on the right. Agents start at random locations and are assigned specific landmarks which they attempt to reach in as few steps as possible. Rewards are given to each agent independently as a function of their distance to the landmark. The reward is normalised to be between 0 and 1, where 1 is given when the agent is directly on top of the landmark. The further an agent is away from its landmark the more the reward value converges to 0. Collisions between agents result in a reward of -1 received by the colliding agents. To test both discrete and continous control systems we feature two versions of the environment. In the discrete version the action space for each agent consists of the following five actions: `left`, `right`, `up`, `down`, `stand-still`. In the continuous case, the action space consists of real-values bounded between -1 and 1 for the `acceleration` of the agent in the `x` and `y` direction. Several examples of running systems on the debugging environment can be found [here][debug]. Below we show the results from some of our systems trained on the debugging environment. +Debugging in MARL can be very difficult and time consuming, therefore it is important to use a small environment for debugging that is simple and fast but at the same time still able to clearly show whether a system is able to learn. An illustration of the debugging environment is shown on the right. Agents start at random locations and are assigned specific landmarks which they attempt to reach in as few steps as possible. Rewards are given to each agent independently as a function of their distance to the landmark. The reward is normalised to be between 0 and 1, where 1 is given when the agent is directly on top of the landmark. The further an agent is away from its landmark the more the reward value converges to 0. Collisions between agents result in a reward of -1 received by the colliding agents. To test both discrete and continuous control systems we feature two versions of the environment. In the discrete version the action space for each agent consists of the following five actions: `left`, `right`, `up`, `down`, `stand-still`. In the continuous case, the action space consists of real values bounded between -1 and 1 for the `acceleration` of the agent in the `x` and `y` direction. Several examples of running systems on the debugging environment can be found [here][debug]. Below we show the results from some of our systems trained on the debugging environment.

    @@ -241,9 +241,6 @@ If you use Mava in your work, please cite the accompanying [Systems]: mava/systems/ [Examples]: examples [debug]: examples/debugging_envs/ -[Tutorial]: https://arxiv.org -[Quickstart]: examples/quickstart.ipynb -[Documentation]: www.mava.rl [Paper]: https://arxiv.org [pettingzoo]: https://github.com/PettingZoo-Team/PettingZoo [smac]: https://github.com/oxwhirl/smac From 87dd47deae9be1808d7e5cfdad626464968b30db Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Thu, 3 Jun 2021 12:48:14 +0200 Subject: [PATCH 136/188] update discrete results on readme --- docs/images/discrete.png | Bin 63365 -> 55476 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/images/discrete.png b/docs/images/discrete.png index b8970d747a4f9244b5424c18e39a4d96c77ef596..25aa1d66bea029fde493b55ad706bf275f13dd09 100644 GIT binary patch literal 55476 zcmdqIRajh26D>>v2@o8Dd$8c{7Th7YLvVNZKnO0u-Q5}72_D?tT?dE3`8V(PKj;43 zo{M?dv)R+r(_OWyYIUv9@A48zpYT3GK|vu&Ns1~#LB0P51@*2P?jvwVXk)1c_`~fi zrs1q?XX@-`;AjFRXW(paZRc!lVMyX?;^<^yXUodK%D_xVV(#p0@5IB%X!Cy_V6byE zV_aQ*x&j7)x0lp(f`UT8czeBrN=?Usf?6Pz5*1Q$Pd{08ai5(f{(Aw@b)%}DTwPtA zBFT9lkS!S!@H1NwlTP#l^k-z%iYiqTcfUqR?w9vQ6_AM$LVU) z>Nx+tlYj(8AgW|6xl}AUCh5lq+n;Y&QcAvY@BaLEB^HJFzgskp#!&zJUkn*E$=gG* zVFb8P|6Qo;{Db;$jQlSWAHV%?Fm4v8|1L`Y#r!`!)L|r5;Dj3nxfIQhx8<3lmCNKy z3B#lDM(664uP)rM)M5&!bBw`jzN7T;MLZoPz1r$WyzO)$lAfNPPLsVquuhIIPaaT)Mn)+DK0Nf=4f$I2 zmd>XuDK5uzyYtJGQcCYgya4m_q#sS=G`qjt)oF329__f;9@qwhN3r$2{lmi%k{I<( zPgj}`oOuLZpPZmxAf2xut9gbXBz*Ba@yI5>SAovwTYOSd(x>wt6zcg@PCFufpBv1J ziwidEg+IshRjlR{BsA)kBjbXv5vTzPwCb0qt!Fg`Js)XQOM9R0uW&hS39zuRydS}h z@wDnuJ3Gb#cN@@c?d`a%rii;k3ES6))71B}Sw6R#zU?ltVENMwZ$dRYQ7SR&3pn10Rf@Byd28?>5ds#GqdZ1$p}JTtnWc{TU%RP?&l;@Qc~3O z4;#Nw%-1`7hC2P8Z`2702{r32G57ZNpz3T_Q^zuRS)KM|6B%@+6KGVKSXq09hG0k{1`zzqW|ZKlOkKD>6L zt;s^QLAh3am_#(u#mnQ_bddrv6oXC^)VE+{LZu8&&ueqn)0NPY5{sdRp#<8ZCw^w; z7{Ev;+B}>hA|ofw+05DS5D^j07i%cY#xvz`g&(VcF^o)2#itA9l*gvc+3IYTu_DEL zQdrF#A8r1Smq5kx10d0!`1kKOD8MA$FL$I$ecm={IFa56_|39e0vU(XMamuC9+dLw zlE7Vf6cpIMgM-x5k8OOlbTl-d0AnnaOIxV3P;MCr4h}9_j>AAh6EZaXGFz%D18K|7 z&X!&NBBiuR^#)aX!@y{YB`Pyz>Wp$w#wI3xW?4S{z)SqwHz+EFOyi5KK41$Hm5byH zWED^l5M(f6e*gZxxw|Vin#w-iUX+l4Ns|!P;qy3ErQhis4QgyuaBHovX9sqePN#`! z^_hWzA*J0|Ds~OZ5l%KXpWy1|#srvlo!vT-n;S&s@e3K51z`7OY8CJQuC8YIK0h!6 zMu(1p0sOEcy>?G1>e`mf;myUCl&CN2ip5jfK^JvRDg`gftr2C?1>tUjFt!H~^NZ-fAAI0M*dj zo6qfZWfQRR-v0ie*XJ`oi!o4bZJzi2Oj5&G*q}WOQ_~-U^%7?bP_` z?xI+Q1`0qY_q%gaz$^*?Lj~LH!v{W>GvA%mzJ8Ulq(AFd414zzS+Y{VEb@0ub;x}#sIA57cMRwUS3{c zz6mtn?(g@rsC8S|-kb{9(a(%}=^/UzQr^@b9~Jn?e9_Ef=_yI)dql%#>#DkVx! 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 X+AMP|U7wkPf7FzSq4nJCP| literal 63365 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

    41#j$(aQu= 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 From aeea5780ac4fae483152459388d700df6abef08e Mon Sep 17 00:00:00 2001 From: Arnu Pretorius Date: Thu, 3 Jun 2021 13:28:41 +0200 Subject: [PATCH 137/188] Update license to apache to match code stubs --- LICENSE | 222 ++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 201 insertions(+), 21 deletions(-) diff --git a/LICENSE b/LICENSE index 11b8c5047..261eeb9e9 100644 --- a/LICENSE +++ b/LICENSE @@ -1,21 +1,201 @@ -MIT License - -Copyright (c) 2021 [...placeholder...] - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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 + + http://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. From d9488c4a04f43d5d35242ef7fa12041f3692538b Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Thu, 3 Jun 2021 14:44:43 +0200 Subject: [PATCH 138/188] removed qmix v2 --- .../debugging_envs/run_feedforward_qmix_v2.py | 175 ------- .../debugging_envs/run_feedforward_vdn.py | 4 +- mava/components/tf/modules/mixing/__init__.py | 2 - .../tf/modules/mixing/transformed.py | 75 --- mava/components/tf/modules/mixing/weighted.py | 44 -- mava/components/tf/networks/additive.py | 3 +- mava/components/tf/networks/mixers.py | 108 ----- mava/systems/tf/qmixV2/README.md | 0 mava/systems/tf/qmixV2/__init__.py | 19 - mava/systems/tf/qmixV2/builder.py | 327 ------------- mava/systems/tf/qmixV2/execution.py | 283 ------------ mava/systems/tf/qmixV2/system.py | 436 ------------------ mava/systems/tf/qmixV2/training.py | 366 --------------- 13 files changed, 4 insertions(+), 1838 deletions(-) delete mode 100644 examples/debugging_envs/run_feedforward_qmix_v2.py delete mode 100644 mava/components/tf/modules/mixing/transformed.py delete mode 100644 mava/components/tf/modules/mixing/weighted.py delete mode 100644 mava/components/tf/networks/mixers.py delete mode 100644 mava/systems/tf/qmixV2/README.md delete mode 100644 mava/systems/tf/qmixV2/__init__.py delete mode 100644 mava/systems/tf/qmixV2/builder.py delete mode 100644 mava/systems/tf/qmixV2/execution.py delete mode 100644 mava/systems/tf/qmixV2/system.py delete mode 100644 mava/systems/tf/qmixV2/training.py diff --git a/examples/debugging_envs/run_feedforward_qmix_v2.py b/examples/debugging_envs/run_feedforward_qmix_v2.py deleted file mode 100644 index 2dcc6dc88..000000000 --- a/examples/debugging_envs/run_feedforward_qmix_v2.py +++ /dev/null @@ -1,175 +0,0 @@ -# python3 -# Copyright 2021 [...placeholder...]. All rights reserved. -# -# 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 -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import functools -from datetime import datetime -from typing import Any, Dict, Mapping, Optional, Sequence, Union - -import launchpad as lp -import sonnet as snt -import tensorflow as tf -from absl import app, flags -from acme import types -from acme.tf import networks -from launchpad.nodes.python.local_multi_processing import PythonProcess - -from mava import specs as mava_specs -from mava.components.tf.modules.exploration import LinearExplorationScheduler -from mava.components.tf.networks import epsilon_greedy_action_selector -from mava.components.tf.networks.mixers import QMixer -from mava.systems.tf import qmixV2 -from mava.utils import lp_utils -from mava.utils.environments import debugging_utils -from mava.utils.loggers import logger_utils - -FLAGS = flags.FLAGS -flags.DEFINE_string( - "env_name", - "simple_spread", - "Debugging environment name (str).", -) -flags.DEFINE_string( - "action_space", - "discrete", - "Environment action space type (str).", -) - -flags.DEFINE_string( - "mava_id", - str(datetime.now()), - "Experiment identifier that can be used to continue experiments.", -) -flags.DEFINE_string("base_dir", "./logs/", "Base dir to store experiments.") - - -def make_networks( - environment_spec: mava_specs.MAEnvironmentSpec, - q_networks_layer_sizes: Union[Dict[str, Sequence], Sequence] = ( - 512, - 512, - 256, - ), - shared_weights: bool = True, -) -> Mapping[str, types.TensorTransformation]: - """Creates networks used by the agents.""" - - specs = environment_spec.get_agent_specs() - - # Create agent_type specs - if shared_weights: - type_specs = {key.split("_")[0]: specs[key] for key in specs.keys()} - specs = type_specs - - if isinstance(q_networks_layer_sizes, Sequence): - q_networks_layer_sizes = {key: q_networks_layer_sizes for key in specs.keys()} - - def action_selector_fn( - q_values: types.NestedTensor, - legal_actions: types.NestedTensor, - epsilon: Optional[tf.Variable] = None, - ) -> types.NestedTensor: - return epsilon_greedy_action_selector( - action_values=q_values, legal_actions_mask=legal_actions, epsilon=epsilon - ) - - q_networks = {} - action_selectors = {} - for key in specs.keys(): - - # Get total number of action dimensions from action spec. - num_dimensions = specs[key].actions.num_values - - # Create the policy network. - q_network = snt.Sequential( - [ - networks.LayerNormMLP( - q_networks_layer_sizes[key], activate_final=False - ), - networks.NearZeroInitializedLinear(num_dimensions), - ] - ) - - # epsilon greedy action selector - action_selector = action_selector_fn - - q_networks[key] = q_network - action_selectors[key] = action_selector - - return { - "q_networks": q_networks, - "action_selectors": action_selectors, - } - - -def main(_: Any) -> None: - - # environment - environment_factory = functools.partial( - debugging_utils.make_environment, - env_name=FLAGS.env_name, - action_space=FLAGS.action_space, - num_agents=3, - return_state_info=True, - ) - - # networks - network_factory = lp_utils.partial_kwargs(make_networks) - - # Checkpointer appends "Checkpoints" to checkpoint_dir - checkpoint_dir = f"{FLAGS.base_dir}/{FLAGS.mava_id}" - - # loggers - log_every = 10 - logger_factory = functools.partial( - logger_utils.make_logger, - directory=FLAGS.base_dir, - to_terminal=True, - to_tensorboard=True, - time_stamp=FLAGS.mava_id, - time_delta=log_every, - ) - - # distributed program - program = qmixV2.QMix( - environment_factory=environment_factory, - network_factory=network_factory, - logger_factory=logger_factory, - num_executors=2, - exploration_scheduler_fn=LinearExplorationScheduler, - epsilon_min=0.05, - epsilon_decay=3e-4, - mixer_fn=QMixer, - optimizer=snt.optimizers.RMSProp(learning_rate=1e-4), - checkpoint_subpath=checkpoint_dir, - ).build() - - # launch - gpu_id = -1 - env_vars = {"CUDA_VISIBLE_DEVICES": str(gpu_id)} - local_resources = { - "trainer": [], - "evaluator": PythonProcess(env=env_vars), - "executor": PythonProcess(env=env_vars), - } - lp.launch( - program, - lp.LaunchType.LOCAL_MULTI_PROCESSING, - terminal="current_terminal", - local_resources=local_resources, - ) - - -if __name__ == "__main__": - app.run(main) diff --git a/examples/debugging_envs/run_feedforward_vdn.py b/examples/debugging_envs/run_feedforward_vdn.py index fae4ea2a4..a420de188 100644 --- a/examples/debugging_envs/run_feedforward_vdn.py +++ b/examples/debugging_envs/run_feedforward_vdn.py @@ -149,9 +149,9 @@ def main(_: Any) -> None: num_executors=2, exploration_scheduler_fn=LinearExplorationScheduler, epsilon_min=0.05, - epsilon_decay=3e-4, + epsilon_decay=5e-4, + optimizer=snt.optimizers.Adam(learning_rate=1e-4), max_replay_size=1000000, - optimizer=snt.optimizers.RMSProp(learning_rate=1e-4), checkpoint_subpath=checkpoint_dir, ).build() diff --git a/mava/components/tf/modules/mixing/__init__.py b/mava/components/tf/modules/mixing/__init__.py index a6bab6bdf..deb69a39b 100644 --- a/mava/components/tf/modules/mixing/__init__.py +++ b/mava/components/tf/modules/mixing/__init__.py @@ -18,5 +18,3 @@ from mava.components.tf.modules.mixing.additive import AdditiveMixing from mava.components.tf.modules.mixing.base import BaseMixingModule from mava.components.tf.modules.mixing.monotonic import MonotonicMixing -from mava.components.tf.modules.mixing.transformed import QTranAlt, QTranBase -from mava.components.tf.modules.mixing.weighted import WeightedMixing diff --git a/mava/components/tf/modules/mixing/transformed.py b/mava/components/tf/modules/mixing/transformed.py deleted file mode 100644 index 23f1aa7c6..000000000 --- a/mava/components/tf/modules/mixing/transformed.py +++ /dev/null @@ -1,75 +0,0 @@ -# python3 -# Copyright 2021 [...placeholder...]. All rights reserved. -# -# 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 -# -# http://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. - -# TODO (StJohn): complete class for transformed mixing - -"""Mixing for multi-agent RL systems""" - -from typing import Dict - -import sonnet as snt - -from mava.components.tf.architectures import BaseArchitecture -from mava.components.tf.modules.mixing import BaseMixingModule - - -class QTranBase(BaseMixingModule): - """Multi-agent mixing architecture.""" - - def __init__( - self, - architecture: BaseArchitecture, - ) -> None: - """Initializes the mixer. - Args: - architecture: the BaseArchitecture used. - """ - super(QTranBase, self).__init__() - - self._architecture = architecture - - def create_mixing_layer(self) -> Dict[str, Dict[str, snt.Module]]: - # Implement method from base class - # TODO Call mixing network from networks folder. - return {} - - def create_system(self) -> Dict[str, Dict[str, snt.Module]]: - # Implement method from base class - return {} - - -class QTranAlt(BaseMixingModule): - """Multi-agent mixing architecture.""" - - def __init__( - self, - architecture: BaseArchitecture, - ) -> None: - """Initializes the mixer. - Args: - architecture: the BaseArchitecture used. - """ - super(QTranAlt, self).__init__() - - self._architecture = architecture - - def create_mixing_layer(self) -> Dict[str, Dict[str, snt.Module]]: - # Implement method from base class - # TODO Call mixing network from networks folder. - return {} - - def create_system(self) -> Dict[str, Dict[str, snt.Module]]: - # Implement method from base class - return {} diff --git a/mava/components/tf/modules/mixing/weighted.py b/mava/components/tf/modules/mixing/weighted.py deleted file mode 100644 index fbb625546..000000000 --- a/mava/components/tf/modules/mixing/weighted.py +++ /dev/null @@ -1,44 +0,0 @@ -# python3 -# Copyright 2021 [...placeholder...]. All rights reserved. -# -# 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 -# -# http://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. - -# TODO (StJohn): complete class for weighted mixing -# https://github.com/oxwhirl/wqmix/tree/master/src/modules/mixers -"""Mixing for multi-agent RL systems""" - -from typing import Dict - -import sonnet as snt - -from mava.components.tf.architectures import BaseArchitecture -from mava.components.tf.modules.mixing import BaseMixingModule - - -class WeightedMixing(BaseMixingModule): - """Multi-agent mixing architecture.""" - - def __init__( - self, - architecture: BaseArchitecture, - ) -> None: - self._architecture = architecture - - def create_mixing_layer(self) -> Dict[str, Dict[str, snt.Module]]: - # Implement method from base class - # TODO Call mixing network from networks folder. - return {} - - def create_system(self) -> Dict[str, Dict[str, snt.Module]]: - # Implement method from base class - return {} diff --git a/mava/components/tf/networks/additive.py b/mava/components/tf/networks/additive.py index db827f0a5..c7398afe8 100644 --- a/mava/components/tf/networks/additive.py +++ b/mava/components/tf/networks/additive.py @@ -26,4 +26,5 @@ def __init__(self) -> None: def __call__(self, q_values: tf.Tensor) -> tf.Tensor: """Monotonic mixing logic.""" - return tf.math.reduce_sum(q_values, axis=1) + # return tf.math.reduce_sum(q_values, axis=1) + return tf.math.reduce_sum(q_values, keepdims=True) diff --git a/mava/components/tf/networks/mixers.py b/mava/components/tf/networks/mixers.py deleted file mode 100644 index cc1884abf..000000000 --- a/mava/components/tf/networks/mixers.py +++ /dev/null @@ -1,108 +0,0 @@ -from typing import Any - -import numpy as np -import sonnet as snt -import tensorflow as tf - - -class AdditiveMixingNetwork(snt.Module): - """Multi-agent monotonic mixing architecture.""" - - def __init__(self) -> None: - """Initializes the mixer.""" - super(AdditiveMixingNetwork, self).__init__() - - def __call__(self, q_values: tf.Tensor) -> tf.Tensor: - """Monotonic mixing logic.""" - return tf.math.reduce_sum(q_values, keepdims=True) - - -class QMixer(snt.Module): - def __init__(self, n_agents: Any, state_shape: Any, mixing_embed_dim: Any) -> None: - super().__init__() - self.n_agents = n_agents - self.embed_dim = mixing_embed_dim - self.state_dim = int(np.prod(state_shape)) - - self.hyper_w_1 = snt.Linear(self.embed_dim * self.n_agents) - self.hyper_w_final = snt.Linear(self.embed_dim) - - # State dependent bias for hidden layer - self.hyper_b_1 = snt.Linear(self.embed_dim) - - # V(s) instead of a bias for the last layers - self.V = snt.Sequential( - [snt.Linear(self.embed_dim), tf.keras.layers.ReLU(), snt.Linear(1)] - ) - - # self.linear_layer = snt.Sequential( - # [snt.Linear(self.n_agents)] # , tf.keras.layers.ReLU()] - # ) - - def __call__(self, agent_qs: Any, states: Any) -> tf.Tensor: - """Forward pass for the mixer. - Args: - agent_qs: Tensor of shape [B, n_agents] - states: Tensor of shape [B, state_dim] - """ - bs = agent_qs.shape[0] - states = tf.reshape(states, (-1, self.state_dim)) - agent_qs = tf.reshape(agent_qs, (-1, 1, self.n_agents)) - # First layer - w1 = tf.math.abs(self.hyper_w_1(states)) - b1 = self.hyper_b_1(states) - w1 = tf.reshape(w1, (-1, self.n_agents, self.embed_dim)) - b1 = tf.reshape(b1, (-1, 1, self.embed_dim)) - hidden = tf.keras.activations.elu(tf.linalg.matmul(agent_qs, w1) + b1) - # Second layer - w_final = tf.math.abs(self.hyper_w_final(states)) - w_final = tf.reshape(w_final, (-1, self.embed_dim, 1)) - # State-dependent bias - v = tf.reshape(self.V(states), (-1, 1, 1)) - # Compute final output - # print("hidden: ", hidden.shape) - # print("w_final: ", w_final.shape) - # print("v: ", v.shape) - y = tf.linalg.matmul(hidden, w_final) + v - # print("y: ", y.shape) - # Reshape and return - q_tot = tf.reshape(y, (bs, -1, 1)) - # print("q_tot: ", q_tot.shape) - return q_tot - - # hidden: (256, 1, 32) - # w_final: (256, 32, 1) - # tf.linalg.matmul(hidden, w_final): (256, 1, 1) - - # v: (256, 1, 1) - - # y: (256, 1, 1) - # q_tot: (256, 1, 1) - - # def __call__(self, agent_qs: Any, states: Any) -> tf.Tensor: - # """Forward pass for the mixer. - # Args: - # agent_qs: Tensor of shape [B, n_agents] - # states: Tensor of shape [B, state_dim] - # """ - # bs = agent_qs.shape[0] - # states = tf.reshape(states, (-1, self.state_dim)) # (1, num_states) - # print("states: ", states.shape) - # agent_qs = tf.reshape(agent_qs, (-1, 1, self.n_agents)) - # print("agent_qs: ", agent_qs.shape) - # # First layer - # w1 = tf.math.abs(self.hyper_w_1(states)) # bs, n_agents - # b1 = self.hyper_b_1(states) - # print("w1 before: ", w1.shape) - # w1 = tf.reshape(w1, (-1, self.n_agents, 1)) - # print("w1: ", w1.shape) - # b1 = tf.reshape(b1, (-1, 1, 1)) - # print("b1: ", b1.shape) - # # Compute final output - # print("agent_qs: ", agent_qs.shape) - # print("tf.transpose(w1): ", w1.shape) - # y = tf.linalg.matmul(agent_qs, w1) + b1 - # print("y: ", y.shape) - # q_tot = tf.reshape(y, (bs, -1, 1)) - # print("q_tot: ", q_tot.shape) - # return q_tot diff --git a/mava/systems/tf/qmixV2/README.md b/mava/systems/tf/qmixV2/README.md deleted file mode 100644 index e69de29bb..000000000 diff --git a/mava/systems/tf/qmixV2/__init__.py b/mava/systems/tf/qmixV2/__init__.py deleted file mode 100644 index a74c659df..000000000 --- a/mava/systems/tf/qmixV2/__init__.py +++ /dev/null @@ -1,19 +0,0 @@ -# python3 -# Copyright 2021 [...placeholder...]. All rights reserved. -# -# 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 -# -# http://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. - -"""Implementations of a IDQN agent.""" - -from mava.systems.tf.qmixV2.system import QMix -from mava.systems.tf.qmixV2.training import QMixTrainer diff --git a/mava/systems/tf/qmixV2/builder.py b/mava/systems/tf/qmixV2/builder.py deleted file mode 100644 index 398b0f1b8..000000000 --- a/mava/systems/tf/qmixV2/builder.py +++ /dev/null @@ -1,327 +0,0 @@ -# python3 -# Copyright 2021 [...placeholder...]. All rights reserved. -# -# 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 -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import dataclasses -from typing import Any, Dict, Iterator, List, Optional, Type - -import numpy as np -import reverb -import sonnet as snt -import tensorflow as tf -from acme import datasets -from acme.tf import utils as tf_utils -from acme.tf import variable_utils -from acme.utils import counting - -from mava import adders, core, specs, types -from mava.adders import reverb as reverb_adders -from mava.components.tf.modules.exploration.exploration_scheduling import ( - LinearExplorationScheduler, -) -from mava.components.tf.modules.stabilising import FingerPrintStabalisation -from mava.systems.tf import executors -from mava.systems.tf.qmixV2 import execution, training -from mava.wrappers import DetailedTrainerStatisticsWithEpsilon - - -@dataclasses.dataclass -class QMixConfig: - """Configuration options for the MADDPG system. - Args: - environment_spec: description of the actions, observations, etc. - discount: discount to use for TD updates. - batch_size: batch size for updates. - prefetch_size: size to prefetch from replay. - target_update_period: number of learner steps to perform before updating - the target networks. - min_replay_size: minimum replay size before updating. - max_replay_size: maximum replay size. - samples_per_insert: number of samples to take from replay for every insert - that is made. - n_step: number of steps to squash into a single transition. - sigma: standard deviation of zero-mean, Gaussian exploration noise. - clipping: whether to clip gradients by global norm. - replay_table_name: string indicating what name to give the replay table.""" - - environment_spec: specs.MAEnvironmentSpec - epsilon_min: float - epsilon_decay: float - shared_weights: bool - target_update_period: int - executor_variable_update_period: int - clipping: bool - min_replay_size: int - max_replay_size: int - samples_per_insert: Optional[float] - prefetch_size: int - batch_size: int - n_step: int - sequence_length: int - period: int - discount: float - checkpoint: bool - optimizer: snt.Optimizer - replay_table_name: str = reverb_adders.DEFAULT_PRIORITY_TABLE - checkpoint_subpath: str = "~/mava/" - - -class QMixBuilder: - """Builder for MADQN which constructs individual components of the system.""" - - """Defines an interface for defining the components of an RL system. - Implementations of this interface contain a complete specification of a - concrete RL system. An instance of this class can be used to build an - RL system which interacts with the environment either locally or in a - distributed setup. - """ - - def __init__( - self, - config: QMixConfig, - trainer_fn: Type[training.QMixTrainer] = training.QMixTrainer, - executor_fn: Type[core.Executor] = execution.QMixFeedForwardExecutor, - extra_specs: Dict[str, Any] = {}, - exploration_scheduler_fn: Type[ - LinearExplorationScheduler - ] = LinearExplorationScheduler, - replay_stabilisation_fn: Optional[Type[FingerPrintStabalisation]] = None, - mixer_fn: Optional[Type[snt.Module]] = None, - ): - """Args: - _config: Configuration options for the MADQN system. - _trainer_fn: Trainer module to use.""" - self._config = config - self._extra_specs = extra_specs - - self._agents = self._config.environment_spec.get_agent_ids() - self._agent_types = self._config.environment_spec.get_agent_types() - self._trainer_fn = trainer_fn - self._executor_fn = executor_fn - self._exploration_scheduler_fn = exploration_scheduler_fn - self._replay_stabiliser_fn = replay_stabilisation_fn - self._mixer_fn = mixer_fn - - def make_replay_tables( - self, - environment_spec: specs.MAEnvironmentSpec, - ) -> List[reverb.Table]: - """Create tables to insert data into.""" - - # Select adder - if issubclass(self._executor_fn, executors.FeedForwardExecutor): - # Check if we should use fingerprints - if self._replay_stabiliser_fn is not None: - self._extra_specs.update({"fingerprint": np.array([1.0, 1.0])}) - adder_sig = reverb_adders.ParallelNStepTransitionAdder.signature( - environment_spec, self._extra_specs - ) - elif issubclass(self._executor_fn, executors.RecurrentExecutor): - adder_sig = reverb_adders.ParallelSequenceAdder.signature( - environment_spec, self._extra_specs - ) - else: - raise NotImplementedError("Unknown executor type: ", self._executor_fn) - - if self._config.samples_per_insert is None: - # We will take a samples_per_insert ratio of None to mean that there is - # no limit, i.e. this only implies a min size limit. - limiter = reverb.rate_limiters.MinSize(self._config.min_replay_size) - - else: - # Create enough of an error buffer to give a 10% tolerance in rate. - samples_per_insert_tolerance = 0.1 * self._config.samples_per_insert - error_buffer = self._config.min_replay_size * samples_per_insert_tolerance - limiter = reverb.rate_limiters.SampleToInsertRatio( - min_size_to_sample=self._config.min_replay_size, - samples_per_insert=self._config.samples_per_insert, - error_buffer=error_buffer, - ) - - replay_table = reverb.Table( - name=self._config.replay_table_name, - sampler=reverb.selectors.Uniform(), - remover=reverb.selectors.Fifo(), - max_size=self._config.max_replay_size, - rate_limiter=limiter, - signature=adder_sig, - ) - - return [replay_table] - - def make_dataset_iterator( - self, replay_client: reverb.Client - ) -> Iterator[reverb.ReplaySample]: - """Create a dataset iterator to use for learning/updating the system. - Args: - replay_client: Reverb Client which points to the replay server.""" - - sequence_length = ( - self._config.sequence_length - if issubclass(self._executor_fn, executors.RecurrentExecutor) - else None - ) - - dataset = datasets.make_reverb_dataset( - table=self._config.replay_table_name, - server_address=replay_client.server_address, - batch_size=self._config.batch_size, - prefetch_size=self._config.prefetch_size, - sequence_length=sequence_length, - ) - return iter(dataset) - - def make_adder( - self, replay_client: reverb.Client - ) -> Optional[adders.ParallelAdder]: - """Create an adder which records data generated by the executor/environment. - Args: - replay_client: Reverb Client which points to the replay server.""" - - # Select adder - if issubclass(self._executor_fn, executors.FeedForwardExecutor): - adder = reverb_adders.ParallelNStepTransitionAdder( - priority_fns=None, - client=replay_client, - n_step=self._config.n_step, - discount=self._config.discount, - ) - elif issubclass(self._executor_fn, executors.RecurrentExecutor): - adder = reverb_adders.ParallelSequenceAdder( - priority_fns=None, - client=replay_client, - sequence_length=self._config.sequence_length, - period=self._config.period, - ) - else: - raise NotImplementedError("Unknown executor type: ", self._executor_fn) - - return adder - - def make_executor( - self, - q_networks: Dict[str, snt.Module], - action_selectors: Dict[str, Any], - adder: Optional[adders.ParallelAdder] = None, - variable_source: Optional[core.VariableSource] = None, - trainer: Optional[training.QMixTrainer] = None, - evaluator: bool = False, - ) -> core.Executor: - """Create an executor instance. - Args: - q_networks: A struct of instance of all - the different system q networks, - this should be a callable which takes as input observations - and returns actions. - adder: How data is recorded (e.g. added to replay). - variable_source: collection of (nested) numpy arrays. Contains - source variables as defined in mava.core. - """ - - shared_weights = self._config.shared_weights - - variable_client = None - if variable_source: - agent_keys = self._agent_types if shared_weights else self._agents - - # Create policy variables - variables = {agent: q_networks[agent].variables for agent in agent_keys} - # Get new policy variables - variable_client = variable_utils.VariableClient( - client=variable_source, - variables={"q_network": variables}, - update_period=self._config.executor_variable_update_period, - ) - - # Make sure not to use a random policy after checkpoint restoration by - # assigning variables before running the environment loop. - variable_client.update_and_wait() - - # Check if we should use fingerprints - fingerprint = True if self._replay_stabiliser_fn is not None else False - - # Create the executor which coordinates the actors. - return self._executor_fn( - q_networks=q_networks, - action_selectors=action_selectors, - shared_weights=shared_weights, - variable_client=variable_client, - adder=adder, - trainer=trainer, - evaluator=evaluator, - fingerprint=fingerprint, - ) - - def make_trainer( - self, - networks: Dict[str, Dict[str, snt.Module]], - dataset: Iterator[reverb.ReplaySample], - counter: Optional[counting.Counter] = None, - logger: Optional[types.NestedLogger] = None, - ) -> core.Trainer: - """Creates an instance of the trainer. - Args: - networks: struct describing the networks needed by the trainer; this can - be specific to the trainer in question. - dataset: iterator over samples from replay. - counter: a Counter which allows for recording of counts (trainer steps, - executor steps, etc.) distributed throughout the system. - logger: Logger object for logging metadata. - checkpoint: bool controlling whether the trainer checkpoints itself. - """ - q_networks = networks["values"] - target_q_networks = networks["target_values"] - - agents = self._config.environment_spec.get_agent_ids() - agent_types = self._config.environment_spec.get_agent_types() - - # Make epsilon scheduler - exploration_scheduler = self._exploration_scheduler_fn( - epsilon_min=self._config.epsilon_min, - epsilon_decay=self._config.epsilon_decay, - ) - - # Check if we should use fingerprints - fingerprint = True if self._replay_stabiliser_fn is not None else False - - # Mixer - if self._mixer_fn: - state_spec = self._config.environment_spec.get_extra_specs()["s_t"] - mixer = self._mixer_fn(len(agents), state_spec.shape, 32) - tf_utils.create_variables(mixer, [tf.ones(len(agents)), state_spec]) - - # The learner updates the parameters (and initializes them). - trainer = self._trainer_fn( - agents=agents, - agent_types=agent_types, - discount=self._config.discount, - q_networks=q_networks, - target_q_networks=target_q_networks, - shared_weights=self._config.shared_weights, - optimizer=self._config.optimizer, - target_update_period=self._config.target_update_period, - clipping=self._config.clipping, - exploration_scheduler=exploration_scheduler, - dataset=dataset, - counter=counter, - fingerprint=fingerprint, - logger=logger, - mixer=mixer, - checkpoint=self._config.checkpoint, - checkpoint_subpath=self._config.checkpoint_subpath, - ) - - trainer = DetailedTrainerStatisticsWithEpsilon(trainer) # type:ignore - - return trainer diff --git a/mava/systems/tf/qmixV2/execution.py b/mava/systems/tf/qmixV2/execution.py deleted file mode 100644 index fd4041306..000000000 --- a/mava/systems/tf/qmixV2/execution.py +++ /dev/null @@ -1,283 +0,0 @@ -# python3 -# Copyright 2021 [...placeholder...]. All rights reserved. -# -# 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 -# -# http://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. - - -"""Executor implementations for MADQN.""" - -from typing import Any, Dict, Optional - -import dm_env -import numpy as np -import sonnet as snt -import tensorflow as tf -from acme import types - -# Internal imports. -from acme.tf import utils as tf2_utils -from acme.tf import variable_utils as tf2_variable_utils - -from mava import adders -from mava.systems.tf.executors import FeedForwardExecutor, RecurrentExecutor -from mava.systems.tf.qmixV2.training import QMixTrainer -from mava.types import OLT - - -class QMixFeedForwardExecutor(FeedForwardExecutor): - """A feed-forward executor. - An executor based on a feed-forward policy for each agent in the system - which takes non-batched observations and outputs non-batched actions. - It also allows adding experiences to replay and updating the weights - from the policy on the learner. - """ - - def __init__( - self, - q_networks: Dict[str, snt.Module], - action_selectors: Dict[str, snt.Module], - trainer: QMixTrainer, - shared_weights: bool = True, - adder: Optional[adders.ParallelAdder] = None, - variable_client: Optional[tf2_variable_utils.VariableClient] = None, - fingerprint: bool = False, - evaluator: bool = False, - ): - """Initializes the executor. - Args: - policy_network: the policy to run for each agent in the system. - shared_weights: specify if weights are shared between agent networks. - adder: the adder object to which allows to add experiences to a - dataset/replay buffer. - variable_client: object which allows to copy weights from the trainer copy - of the policies to the executor copy (in case they are separate). - """ - - # Store these for later use. - self._adder = adder - self._variable_client = variable_client - self._q_networks = q_networks - self._action_selectors = action_selectors - self._trainer = trainer - self._shared_weights = shared_weights - self._fingerprint = fingerprint - self._evaluator = evaluator - - @tf.function - def _policy( - self, - agent: str, - observation: types.NestedTensor, - legal_actions: types.NestedTensor, - epsilon: tf.Tensor, - fingerprint: Optional[tf.Tensor] = None, - ) -> types.NestedTensor: - - # Add a dummy batch dimension and as a side effect convert numpy to TF. - batched_observation = tf2_utils.add_batch_dim(observation) - batched_legals = tf2_utils.add_batch_dim(legal_actions) - - # index network either on agent type or on agent id - agent_key = agent.split("_")[0] if self._shared_weights else agent - - # Compute the policy, conditioned on the observation and - # possibly the fingerprint. - if fingerprint is not None: - q_values = self._q_networks[agent_key](batched_observation, fingerprint) - else: - q_values = self._q_networks[agent_key](batched_observation) - - # select legal action - action = self._action_selectors[agent_key]( - q_values, batched_legals, epsilon=epsilon - ) - - return action - - def select_action( - self, agent: str, observation: types.NestedArray - ) -> types.NestedArray: - raise NotImplementedError - - def observe_first( - self, - timestep: dm_env.TimeStep, - extras: Dict[str, types.NestedArray] = {}, - ) -> None: - - if self._fingerprint and self._trainer is not None: - epsilon = self._trainer.get_epsilon() - trainer_step = self._trainer.get_trainer_steps() - fingerprint = np.array([epsilon, trainer_step]) - extras.update({"fingerprint": fingerprint}) - - if self._adder: - self._adder.add_first(timestep, extras) - - def observe( - self, - actions: Dict[str, types.NestedArray], - next_timestep: dm_env.TimeStep, - next_extras: Dict[str, types.NestedArray] = {}, - ) -> None: - if self._fingerprint and self._trainer is not None: - trainer_step = self._trainer.get_trainer_steps() - epsilon = self._trainer.get_epsilon() - fingerprint = np.array([epsilon, trainer_step]) - next_extras.update({"fingerprint": fingerprint}) - - if self._adder: - self._adder.add(actions, next_timestep, next_extras) - - def select_actions( - self, observations: Dict[str, OLT] - ) -> Dict[str, types.NestedArray]: - actions = {} - for agent, observation in observations.items(): - # Pass the observation through the policy network. - if not self._evaluator: - epsilon = self._trainer.get_epsilon() - else: - epsilon = 0.0 - - epsilon = tf.convert_to_tensor(epsilon) - - if self._fingerprint: - trainer_step = self._trainer.get_trainer_steps() - fingerprint = tf.concat([epsilon, trainer_step], axis=0) - fingerprint = tf.expand_dims(fingerprint, axis=0) - fingerprint = tf.cast(fingerprint, "float32") - else: - fingerprint = None - - action = self._policy( - agent, - observation.observation, - observation.legal_actions, - epsilon, - fingerprint, - ) - - actions[agent] = tf2_utils.to_numpy_squeeze(action) - - # Return a numpy array with squeezed out batch dimension. - return actions - - def update(self, wait: bool = False) -> None: - if self._variable_client: - self._variable_client.update(wait) - - -class MADQNRecurrentExecutor(RecurrentExecutor): - """A feed-forward executor. - An executor based on a feed-forward policy for each agent in the system - which takes non-batched observations and outputs non-batched actions. - It also allows adding experiences to replay and updating the weights - from the policy on the learner. - """ - - def __init__( - self, - q_networks: Dict[str, snt.Module], - action_selectors: Dict[str, snt.Module], - shared_weights: bool = True, - adder: Optional[adders.ParallelAdder] = None, - variable_client: Optional[tf2_variable_utils.VariableClient] = None, - store_recurrent_state: bool = True, - trainer: QMixTrainer = None, - evaluator: bool = False, - fingerprint: bool = False, - ): - """Initializes the executor. - Args: - policy_network: the policy to run for each agent in the system. - shared_weights: specify if weights are shared between agent networks. - adder: the adder object to which allows to add experiences to a - dataset/replay buffer. - variable_client: object which allows to copy weights from the trainer copy - of the policies to the executor copy (in case they are separate). - """ - - # Store these for later use. - self._adder = adder - self._variable_client = variable_client - self._q_networks = q_networks - self._policy_networks = q_networks - self._action_selectors = action_selectors - self._store_recurrent_state = store_recurrent_state - self._trainer = trainer - self._shared_weights = shared_weights - - self._states: Dict[str, Any] = {} - - @tf.function - def _policy( - self, - agent: str, - observation: types.NestedTensor, - state: types.NestedTensor, - legal_actions: types.NestedTensor, - epsilon: tf.Tensor, - ) -> types.NestedTensor: - - # Add a dummy batch dimension and as a side effect convert numpy to TF. - batched_observation = tf2_utils.add_batch_dim(observation) - batched_legals = tf2_utils.add_batch_dim(legal_actions) - - # index network either on agent type or on agent id - agent_key = agent.split("_")[0] if self._shared_weights else agent - - # Compute the policy, conditioned on the observation. - q_values, new_state = self._q_networks[agent_key](batched_observation, state) - - # select legal action - action = self._action_selectors[agent_key]( - q_values, batched_legals, epsilon=epsilon - ) - - return action, new_state - - def select_action( - self, agent: str, observation: types.NestedArray - ) -> types.NestedArray: - raise NotImplementedError - - def select_actions( - self, observations: Dict[str, OLT] - ) -> Dict[str, types.NestedArray]: - actions = {} - - for agent, observation in observations.items(): - - # Pass the observation through the policy network. - if self._trainer is not None: - epsilon = self._trainer.get_epsilon() - else: - epsilon = 0.0 - - epsilon = tf.convert_to_tensor(epsilon) - - policy_output, new_state = self._policy( - agent, - observation.observation, - self._states[agent], - observation.legal_actions, - epsilon, - ) - - self._states[agent] = new_state - - actions[agent] = tf2_utils.to_numpy_squeeze(policy_output) - - # Return a numpy array with squeezed out batch dimension. - return actions diff --git a/mava/systems/tf/qmixV2/system.py b/mava/systems/tf/qmixV2/system.py deleted file mode 100644 index 85de21e64..000000000 --- a/mava/systems/tf/qmixV2/system.py +++ /dev/null @@ -1,436 +0,0 @@ -# python3 -# Copyright 2021 [...placeholder...]. All rights reserved. -# -# 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 -# -# http://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. - -"""Defines the MADQN system class.""" -import functools -from typing import Any, Callable, Dict, Optional, Type - -import acme -import dm_env -import launchpad as lp -import reverb -import sonnet as snt -from acme import specs as acme_specs -from acme.tf import utils as tf2_utils -from acme.utils import counting - -import mava -from mava import core -from mava import specs as mava_specs -from mava.components.tf.architectures import DecentralisedValueActor -from mava.components.tf.modules.exploration import LinearExplorationScheduler -from mava.components.tf.modules.stabilising import FingerPrintStabalisation -from mava.environment_loop import ParallelEnvironmentLoop -from mava.systems.tf import executors -from mava.systems.tf import savers as tf2_savers -from mava.systems.tf.qmixV2 import builder, execution, training -from mava.utils import lp_utils -from mava.utils.loggers import MavaLogger, logger_utils -from mava.wrappers import DetailedPerAgentStatistics - - -class QMix: - """MADQN system. - This implements a single-process QMIX system. - Args: - environment_factory: Callable to instantiate an environment on a compute node. - network_factory: Callable to instantiate system networks on a compute node. - logger_factory: Callable to instantiate a system logger on a compute node. - architecture: system architecture, e.g. decentralised or centralised. - trainer_fn: training type associated with executor and architecture, - e.g. centralised training. - executor_fn: executor type for example feedforward or recurrent. - num_executors: number of executor processes to run in parallel. - num_caches: number of trainer node caches. - environment_spec: description of the actions, observations, etc. - q_networks: the online Q network (the one being optimized) - epsilon: probability of taking a random action; ignored if a policy - network is given. - trainer_fn: the class used for training the agent and mixing networks. - shared_weights: boolean determining whether shared weights is used. - target_update_period: number of learner steps to perform before updating - the target networks. - clipping: whether to clip gradients by global norm. - replay_table_name: string indicating what name to give the replay table. - max_replay_size: maximum replay size. - samples_per_insert: number of samples to take from replay for every insert - that is made. - prefetch_size: size to prefetch from replay. - batch_size: batch size for updates. - n_step: number of steps to squash into a single transition. - discount: discount to use for TD updates. - counter: counter object used to keep track of steps. - checkpoint: boolean indicating whether to checkpoint the learner. - """ - - def __init__( - self, - environment_factory: Callable[[bool], dm_env.Environment], - network_factory: Callable[[acme_specs.BoundedArray], Dict[str, snt.Module]], - logger_factory: Callable[[str], MavaLogger] = None, - architecture: Type[DecentralisedValueActor] = DecentralisedValueActor, - trainer_fn: Type[training.QMixTrainer] = training.QMixTrainer, - executor_fn: Type[core.Executor] = execution.QMixFeedForwardExecutor, - exploration_scheduler_fn: Type[ - LinearExplorationScheduler - ] = LinearExplorationScheduler, - replay_stabilisation_fn: Optional[Type[FingerPrintStabalisation]] = None, - mixer_fn: Optional[Type[snt.Module]] = None, - epsilon_min: float = 0.05, - epsilon_decay: float = 1e-4, - num_executors: int = 1, - num_caches: int = 0, - environment_spec: mava_specs.MAEnvironmentSpec = None, - shared_weights: bool = True, - batch_size: int = 256, - prefetch_size: int = 4, - min_replay_size: int = 1000, - max_replay_size: int = 1000000, - samples_per_insert: Optional[float] = 32.0, - n_step: int = 5, - sequence_length: int = 20, - period: int = 20, - clipping: bool = True, - discount: float = 0.99, - optimizer: snt.Optimizer = snt.optimizers.Adam(learning_rate=1e-4), - target_update_period: int = 100, - executor_variable_update_period: int = 1000, - max_executor_steps: int = None, - checkpoint: bool = True, - checkpoint_subpath: str = "~/mava/", - logger_config: Dict = {}, - train_loop_fn: Callable = ParallelEnvironmentLoop, - eval_loop_fn: Callable = ParallelEnvironmentLoop, - train_loop_fn_kwargs: Dict = {}, - eval_loop_fn_kwargs: Dict = {}, - ): - if not environment_spec: - environment_spec = mava_specs.MAEnvironmentSpec( - environment_factory(evaluation=False) # type:ignore - ) - - # set default logger if no logger provided - if not logger_factory: - logger_factory = functools.partial( - logger_utils.make_logger, - directory="~/mava", - to_terminal=True, - time_delta=10, - ) - - self._architecture = architecture - self._environment_factory = environment_factory - self._network_factory = network_factory - self._logger_factory = logger_factory - self._environment_spec = environment_spec - self._shared_weights = shared_weights - self._num_exectors = num_executors - self._num_caches = num_caches - self._max_executor_steps = max_executor_steps - self._checkpoint_subpath = checkpoint_subpath - self._checkpoint = checkpoint - self._logger_config = logger_config - self._train_loop_fn = train_loop_fn - self._train_loop_fn_kwargs = train_loop_fn_kwargs - self._eval_loop_fn = eval_loop_fn - self._eval_loop_fn_kwargs = eval_loop_fn_kwargs - - if issubclass(executor_fn, executors.RecurrentExecutor): - extra_specs = self._get_extra_specs() - else: - extra_specs = {} - - self._builder = builder.QMixBuilder( - builder.QMixConfig( - environment_spec=environment_spec, - epsilon_min=epsilon_min, - epsilon_decay=epsilon_decay, - shared_weights=shared_weights, - discount=discount, - batch_size=batch_size, - prefetch_size=prefetch_size, - target_update_period=target_update_period, - executor_variable_update_period=executor_variable_update_period, - min_replay_size=min_replay_size, - max_replay_size=max_replay_size, - samples_per_insert=samples_per_insert, - n_step=n_step, - sequence_length=sequence_length, - period=period, - clipping=clipping, - checkpoint=checkpoint, - optimizer=optimizer, - checkpoint_subpath=checkpoint_subpath, - ), - trainer_fn=trainer_fn, - executor_fn=executor_fn, - extra_specs=extra_specs, - exploration_scheduler_fn=exploration_scheduler_fn, - replay_stabilisation_fn=replay_stabilisation_fn, - mixer_fn=mixer_fn, - ) - - def _get_extra_specs(self) -> Any: - agents = self._environment_spec.get_agent_ids() - core_state_specs = {} - networks = self._network_factory( # type: ignore - environment_spec=self._environment_spec - ) - for agent in agents: - agent_type = agent.split("_")[0] - core_state_specs[agent] = ( - tf2_utils.squeeze_batch_dim( - networks["q_networks"][agent_type].initial_state(1) - ), - ) - return {"core_states": core_state_specs} - - def replay(self) -> Any: - """The replay storage.""" - return self._builder.make_replay_tables(self._environment_spec) - - def counter(self) -> Any: - return tf2_savers.CheckpointingRunner( - counting.Counter(), - time_delta_minutes=15, - directory=self._checkpoint_subpath, - subdirectory="counter", - ) - - def coordinator(self, counter: counting.Counter) -> Any: - return lp_utils.StepsLimiter(counter, self._max_executor_steps) # type: ignore - - def trainer( - self, - replay: reverb.Client, - counter: counting.Counter, - ) -> mava.core.Trainer: - """The Trainer part of the system.""" - - # Create the networks to optimize (online) - networks = self._network_factory( # type: ignore - environment_spec=self._environment_spec, shared_weights=self._shared_weights - ) - - # Create system architecture with target networks. - architecture = self._architecture( - environment_spec=self._environment_spec, - value_networks=networks["q_networks"], - shared_weights=self._shared_weights, - ) - - if self._builder._replay_stabiliser_fn is not None: - architecture = self._builder._replay_stabiliser_fn( # type: ignore - architecture - ) - - system_networks = architecture.create_system() - - # create logger - trainer_logger_config = {} - if self._logger_config and "trainer" in self._logger_config: - trainer_logger_config = self._logger_config["trainer"] - trainer_logger = self._logger_factory( # type: ignore - "trainer", **trainer_logger_config - ) - - dataset = self._builder.make_dataset_iterator(replay) - counter = counting.Counter(counter, "trainer") - - return self._builder.make_trainer( - networks=system_networks, - dataset=dataset, - counter=counter, - logger=trainer_logger, - ) - - def executor( - self, - executor_id: str, - replay: reverb.Client, - variable_source: acme.VariableSource, - counter: counting.Counter, - trainer: Optional[training.QMixTrainer] = None, - ) -> mava.ParallelEnvironmentLoop: - """The executor process.""" - - # Create the behavior policy. - networks = self._network_factory( # type: ignore - environment_spec=self._environment_spec, shared_weights=self._shared_weights - ) - - # Create system architecture with target networks. - architecture = self._architecture( - environment_spec=self._environment_spec, - value_networks=networks["q_networks"], - shared_weights=self._shared_weights, - ) - - if self._builder._replay_stabiliser_fn is not None: - architecture = self._builder._replay_stabiliser_fn( # type: ignore - architecture - ) - - system_networks = architecture.create_system() - - # Create the executor. - executor = self._builder.make_executor( - q_networks=system_networks["values"], - action_selectors=networks["action_selectors"], - adder=self._builder.make_adder(replay), - variable_source=variable_source, - trainer=trainer, - ) - - # TODO (Arnu): figure out why factory function are giving type errors - # Create the environment. - environment = self._environment_factory(evaluation=False) # type: ignore - - # Create logger and counter; actors will not spam bigtable. - counter = counting.Counter(counter, "executor") - - # Create executor logger - executor_logger_config = {} - if self._logger_config and "executor" in self._logger_config: - executor_logger_config = self._logger_config["executor"] - exec_logger = self._logger_factory( # type: ignore - f"executor_{executor_id}", **executor_logger_config - ) - - # Create the loop to connect environment and executor. - train_loop = self._train_loop_fn( - environment, - executor, - counter=counter, - logger=exec_logger, - **self._train_loop_fn_kwargs, - ) - - train_loop = DetailedPerAgentStatistics(train_loop) - - return train_loop - - def evaluator( - self, - variable_source: acme.VariableSource, - counter: counting.Counter, - trainer: training.QMixTrainer, - ) -> Any: - """The evaluation process.""" - - # Create the behavior policy. - networks = self._network_factory( # type: ignore - environment_spec=self._environment_spec, shared_weights=self._shared_weights - ) - - # Create system architecture with target networks. - architecture = self._architecture( - environment_spec=self._environment_spec, - value_networks=networks["q_networks"], - shared_weights=self._shared_weights, - ) - - if self._builder._replay_stabiliser_fn is not None: - architecture = self._builder._replay_stabiliser_fn( # type: ignore - architecture - ) - - system_networks = architecture.create_system() - - # Create the agent. - executor = self._builder.make_executor( - q_networks=system_networks["values"], - action_selectors=networks["action_selectors"], - variable_source=variable_source, - trainer=trainer, - evaluator=True, - ) - - # Make the environment. - environment = self._environment_factory(evaluation=True) # type: ignore - - # Create logger and counter. - counter = counting.Counter(counter, "evaluator") - evaluator_logger_config = {} - if self._logger_config and "evaluator" in self._logger_config: - evaluator_logger_config = self._logger_config["evaluator"] - eval_logger = self._logger_factory( # type: ignore - "evaluator", **evaluator_logger_config - ) - - # Create the run loop and return it. - # Create the loop to connect environment and executor. - eval_loop = self._eval_loop_fn( - environment, - executor, - counter=counter, - logger=eval_logger, - **self._eval_loop_fn_kwargs, - ) - - eval_loop = DetailedPerAgentStatistics(eval_loop) - return eval_loop - - def build(self, name: str = "madqn") -> Any: - """Build the distributed system topology.""" - program = lp.Program(name=name) - - with program.group("replay"): - replay = program.add_node(lp.ReverbNode(self.replay)) - - with program.group("counter"): - counter = program.add_node(lp.CourierNode(self.counter)) - - if self._max_executor_steps: - with program.group("coordinator"): - _ = program.add_node(lp.CourierNode(self.coordinator, counter)) - - with program.group("trainer"): - trainer = program.add_node(lp.CourierNode(self.trainer, replay, counter)) - - with program.group("evaluator"): - program.add_node(lp.CourierNode(self.evaluator, trainer, counter, trainer)) - - if not self._num_caches: - # Use the trainer as a single variable source. - sources = [trainer] - else: - with program.group("cacher"): - # Create a set of trainer caches. - sources = [] - for _ in range(self._num_caches): - cacher = program.add_node( - lp.CacherNode( - trainer, refresh_interval_ms=2000, stale_after_ms=4000 - ) - ) - sources.append(cacher) - - with program.group("executor"): - # Add executors which pull round-robin from our variable sources. - for executor_id in range(self._num_exectors): - source = sources[executor_id % len(sources)] - program.add_node( - lp.CourierNode( - self.executor, - executor_id, - replay, - source, - counter, - trainer, - ) - ) - - return program diff --git a/mava/systems/tf/qmixV2/training.py b/mava/systems/tf/qmixV2/training.py deleted file mode 100644 index 7616b80d2..000000000 --- a/mava/systems/tf/qmixV2/training.py +++ /dev/null @@ -1,366 +0,0 @@ -# python3 -# Copyright 2021 [...placeholder...]. All rights reserved. -# -# 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 -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import copy -import time -from typing import Any, Dict, List, Optional, Sequence, Tuple - -import numpy as np -import sonnet as snt -import tensorflow as tf -import trfl -from acme.tf import utils as tf2_utils -from acme.types import NestedArray -from acme.utils import counting, loggers -from trfl.indexing_ops import batched_index - -import mava -from mava.components.tf.modules.exploration.exploration_scheduling import ( - LinearExplorationScheduler, -) -from mava.systems.tf import savers as tf2_savers -from mava.utils import training_utils as train_utils - - -class QMixTrainer(mava.Trainer): - """MADQN trainer. - This is the trainer component of a MADQN system. IE it takes a dataset as input - and implements update functionality to learn from this dataset. - """ - - def __init__( - self, - agents: List[str], - agent_types: List[str], - q_networks: Dict[str, snt.Module], - target_q_networks: Dict[str, snt.Module], - target_update_period: int, - dataset: tf.data.Dataset, - optimizer: snt.Optimizer, - discount: float, - shared_weights: bool, - exploration_scheduler: LinearExplorationScheduler, - clipping: bool = True, - fingerprint: bool = False, - mixer: Optional[snt.Module] = None, - counter: counting.Counter = None, - logger: loggers.Logger = None, - checkpoint: bool = True, - checkpoint_subpath: str = "~/mava/", - ): - - self._agents = agents - self._agent_types = agent_types - self._shared_weights = shared_weights - self._optimizer = optimizer - self._checkpoint = checkpoint - - # Store online and target q-networks. - self._q_networks = q_networks - self._target_q_networks = target_q_networks - - # General learner book-keeping and loggers. - self._counter = counter or counting.Counter() - self._logger = logger - - # Other learner parameters. - self._discount = discount - self._clipping = clipping - self._fingerprint = fingerprint - - # Necessary to track when to update target networks. - self._num_steps = tf.Variable(0, dtype=tf.int32) - self._target_update_period = target_update_period - - # Create an iterator to go through the dataset. - self._iterator = dataset - - # Store the exploration scheduler - self._exploration_scheduler = exploration_scheduler - - # mixer - self._mixer = mixer - self._target_mixer = copy.deepcopy(mixer) - - # Dictionary with network keys for each agent. - self.agent_net_keys = {agent: agent for agent in self._agents} - if self._shared_weights: - self.agent_net_keys = {agent: agent.split("_")[0] for agent in self._agents} - - self.unique_net_keys = self._agent_types if shared_weights else self._agents - - # Expose the variables. - q_networks_to_expose = {} - self._system_network_variables: Dict[str, Dict[str, snt.Module]] = { - "q_network": {}, - } - for agent_key in self.unique_net_keys: - q_network_to_expose = self._target_q_networks[agent_key] - - q_networks_to_expose[agent_key] = q_network_to_expose - - self._system_network_variables["q_network"][ - agent_key - ] = q_network_to_expose.variables - - # Checkpointer - self._system_checkpointer = {} - if checkpoint: - for agent_key in self.unique_net_keys: - - checkpointer = tf2_savers.Checkpointer( - directory=checkpoint_subpath, - time_delta_minutes=15, - objects_to_save={ - "counter": self._counter, - "q_network": self._q_networks[agent_key], - "target_q_network": self._target_q_networks[agent_key], - "optimizer": self._optimizer, - "num_steps": self._num_steps, - }, - enable_checkpointing=checkpoint, - ) - - self._system_checkpointer[agent_key] = checkpointer - - # Do not record timestamps until after the first learning step is done. - # This is to avoid including the time it takes for actors to come online and - # fill the replay buffer. - - self._timestamp: Optional[float] = None - - def get_epsilon(self) -> float: - return self._exploration_scheduler.get_epsilon() - - def get_trainer_steps(self) -> float: - return self._num_steps.numpy() - - def _decrement_epsilon(self) -> None: - self._exploration_scheduler.decrement_epsilon() - - def _update_target_networks(self) -> None: - for key in self.unique_net_keys: - # Update target network. - online_variables = [ - *self._q_networks[key].variables, - ] - - target_variables = [ - *self._target_q_networks[key].variables, - ] - - if self._mixer and self._target_mixer: - online_variables += self._mixer.variables - target_variables += self._target_mixer.variables - - # Make online -> target network update ops. - if tf.math.mod(self._num_steps, self._target_update_period) == 0: - for src, dest in zip(online_variables, target_variables): - dest.assign(src) - self._num_steps.assign_add(1) - - def _get_feed( - self, - o_tm1_trans: Dict[str, np.ndarray], - o_t_trans: Dict[str, np.ndarray], - a_tm1: Dict[str, np.ndarray], - agent: str, - ) -> Tuple[tf.Tensor, tf.Tensor, tf.Tensor]: - - # Decentralised - o_tm1_feed = o_tm1_trans[agent].observation - o_t_feed = o_t_trans[agent].observation - a_tm1_feed = a_tm1[agent] - - return o_tm1_feed, o_t_feed, a_tm1_feed - - def step(self) -> None: - # Run the learning step. - fetches = self._step() - - # Compute elapsed time. - timestamp = time.time() - if self._timestamp: - elapsed_time = timestamp - self._timestamp - else: - elapsed_time = 0 - self._timestamp = timestamp # type: ignore - - # Update our counts and record it. - counts = self._counter.increment(steps=1, walltime=elapsed_time) - fetches.update(counts) - - # Checkpoint and attempt to write the logs. - if self._checkpoint: - train_utils.checkpoint_networks(self._system_checkpointer) - - # Log and decrement epsilon - epsilon = self.get_epsilon() - fetches["epsilon"] = epsilon - self._decrement_epsilon() - - if self._logger: - self._logger.write(fetches) - - @tf.function - def _step( - self, - ) -> Dict[str, Dict[str, Any]]: - - # Update the target networks - self._update_target_networks() - - # Get data from replay (dropping extras if any). Note there is no - # extra data here because we do not insert any into Reverb. - inputs = next(self._iterator) - - self._forward(inputs) - - self._backward() - - # Log losses per agent - return {agent: {"q_value_loss": self.loss} for agent in self._agents} - - def _forward(self, inputs: Any) -> None: - # Unpack input data as follows: - # o_tm1 = dictionary of observations one for each agent - # a_tm1 = dictionary of actions taken from obs in o_tm1 - # r_t = dictionary of rewards or rewards sequences - # (if using N step transitions) ensuing from actions a_tm1 - # d_t = environment discount ensuing from actions a_tm1. - # This discount is applied to future rewards after r_t. - # o_t = dictionary of next observations or next observation sequences - # e_t [Optional] = extra data that the agents persist in replay. - o_tm1, a_tm1, e_tm1, r_t, d_t, o_t, e_t = inputs.data - s_tm1 = e_tm1["s_t"] - s_t = e_t["s_t"] - with tf.GradientTape(persistent=True) as tape: - q_network_losses: Dict[str, NestedArray] = {} - q_acts = [] - q_targets = [] - for agent in self._agents: - agent_key = self.agent_net_keys[agent] - - # Cast the additional discount to match the environment discount dtype. - discount = tf.cast(self._discount, dtype=d_t[agent].dtype) - - # Maybe transform the observation before feeding into policy and critic. - # Transforming the observations this way at the start of the learning - # step effectively means that the policy and critic share observation - # network weights. - - o_tm1_feed, o_t_feed, a_tm1_feed = self._get_feed( - o_tm1, o_t, a_tm1, agent - ) - q_tm1 = self._q_networks[agent_key](o_tm1_feed) - q_t_value = self._target_q_networks[agent_key](o_t_feed) - q_t_selector = self._q_networks[agent_key](o_t_feed) - best_action = tf.argmax(q_t_selector, axis=1, output_type=tf.int32) - - # TODO Make use of q_t_selector for fingerprinting. Speak to Claude. - q_act = batched_index(q_tm1, a_tm1_feed, keepdims=True) # [B, 1] - q_target = batched_index( - q_t_value, best_action, keepdims=True - ) # [B, 1] - - q_acts.append(q_act) - q_targets.append(q_target) - - if self._mixer and self._target_mixer: - # NOTE we expect a cooperative environment where agents share - # the same scalar reward and discount. - rewards = tf.concat( - [tf.reshape(val, (-1, 1)) for val in list(r_t.values())], axis=1 - ) - rewards = tf.reduce_mean(rewards, axis=1) # [B] - - pcont = tf.concat( - [tf.reshape(val, (-1, 1)) for val in list(d_t.values())], axis=1 - ) - pcont = tf.reduce_mean(pcont, axis=1) - discount = tf.cast(self._discount, list(d_t.values())[0].dtype) - pcont = discount * pcont # [B] - - q_acts = tf.concat(q_acts, axis=1) # [B, num_agents] - q_targets = tf.concat(q_targets, axis=1) # [B, num_agents] - - q_tot_mixed = self._mixer(q_acts, s_tm1) # [B, 1, 1] - q_tot_target_mixed = self._target_mixer(q_targets, s_t) # [B, 1, 1] - - # q_tot_mixed = tf.reduce_sum(q_acts, axis=1) # [B, 1, 1] - # q_tot_target_mixed = tf.reduce_sum(q_targets, axis=1) # [B, 1, 1] - - q_tot_mixed = tf.reshape(q_tot_mixed, (-1,)) - q_tot_target_mixed = tf.reshape(q_tot_target_mixed, (-1,)) - - # Calculate Q loss. - targets = rewards + pcont * q_tot_target_mixed - targets = tf.stop_gradient(targets) - td_error = targets - q_tot_mixed - - # Loss is MSE scaled by 0.5, so the gradient is equal to the TD error. - self.loss = 0.5 * tf.reduce_mean(tf.square(td_error)) - self.tape = tape - else: - # Q-network learning - loss, _ = trfl.double_qlearning( - q_tm1, - a_tm1_feed, - r_t[agent], - discount * d_t[agent], - q_t_value, - q_t_selector, - ) - - loss = tf.reduce_mean(loss) - - q_network_losses[agent] = {"q_value_loss": loss} - self._q_network_losses = q_network_losses - self.tape = tape - - def _backward(self) -> None: - loss = self.loss - tape = self.tape - variables = [] - for agent in self._agents: - agent_key = self.agent_net_keys[agent] - - # Get trainable variables - variables = self._q_networks[agent_key].trainable_variables - if self._mixer: - variables += self._mixer.trainable_variables - - # Compute gradients - gradients = tape.gradient(loss, variables) - - # Maybe clip gradients. - if self._clipping: - gradients = tf.clip_by_global_norm(gradients, 40.0)[0] - - # Apply gradients. - self._optimizer.apply(gradients, variables) - - train_utils.safe_del(self, "tape") - - def get_variables(self, names: Sequence[str]) -> Dict[str, Dict[str, np.ndarray]]: - variables: Dict[str, Dict[str, np.ndarray]] = {} - for network_type in names: - variables[network_type] = { - agent: tf2_utils.to_numpy( - self._system_network_variables[network_type][agent] - ) - for agent in self.unique_net_keys - } - return variables From 1d78da65b71a7e231245b04f394736bff82098e0 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Thu, 3 Jun 2021 14:45:45 +0200 Subject: [PATCH 139/188] change additive network back to how it was --- mava/components/tf/networks/additive.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mava/components/tf/networks/additive.py b/mava/components/tf/networks/additive.py index c7398afe8..cf5549439 100644 --- a/mava/components/tf/networks/additive.py +++ b/mava/components/tf/networks/additive.py @@ -27,4 +27,4 @@ def __init__(self) -> None: def __call__(self, q_values: tf.Tensor) -> tf.Tensor: """Monotonic mixing logic.""" # return tf.math.reduce_sum(q_values, axis=1) - return tf.math.reduce_sum(q_values, keepdims=True) + return tf.math.reduce_sum(q_values, axis=1) From 3253bad6ceb8201049144e4cdf26493789d30c95 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Thu, 3 Jun 2021 15:05:59 +0200 Subject: [PATCH 140/188] update system and building to use mixing module instead of network --- mava/systems/tf/qmix/builder.py | 10 ++++------ mava/systems/tf/qmix/system.py | 15 ++++++++------- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/mava/systems/tf/qmix/builder.py b/mava/systems/tf/qmix/builder.py index 528cb4f65..0f6cbe20c 100644 --- a/mava/systems/tf/qmix/builder.py +++ b/mava/systems/tf/qmix/builder.py @@ -29,7 +29,7 @@ LinearExplorationScheduler, ) from mava.components.tf.modules.stabilising import FingerPrintStabalisation -from mava.components.tf.networks import MonotonicMixingNetwork +from mava.components.tf.modules.mixing import MonotonicMixing from mava.systems.tf.madqn.builder import MADQNBuilder, MADQNConfig from mava.systems.tf.qmix import execution, training from mava.wrappers import DetailedTrainerStatisticsWithEpsilon @@ -73,7 +73,7 @@ def __init__( config: QMIXConfig, trainer_fn: Type[training.QMIXTrainer] = training.QMIXTrainer, executor_fn: Type[core.Executor] = execution.QMIXFeedForwardExecutor, - mixer: Type[MonotonicMixingNetwork] = MonotonicMixingNetwork, + mixer: Type[MonotonicMixing] = MonotonicMixing, extra_specs: Dict[str, Any] = {}, exploration_scheduler_fn: Type[ LinearExplorationScheduler @@ -117,10 +117,8 @@ def make_trainer( q_networks = networks["values"] target_q_networks = networks["target_values"] - mixing_network = self._mixer(len(agents)) - state_spec = self._config.environment_spec.get_extra_specs()["s_t"] - tf_utils.create_variables(mixing_network, [tf.ones(len(agents)), state_spec]) - target_mixing_network = copy.deepcopy(mixing_network) + mixing_network = networks["mixing"] + target_mixing_network = networks["target_mixing"] # Make epsilon scheduler exploration_scheduler = self._exploration_scheduler_fn( diff --git a/mava/systems/tf/qmix/system.py b/mava/systems/tf/qmix/system.py index 3a98cd1bc..80bbf29ef 100644 --- a/mava/systems/tf/qmix/system.py +++ b/mava/systems/tf/qmix/system.py @@ -30,7 +30,7 @@ from mava.components.tf.modules.communication import BaseCommunicationModule from mava.components.tf.modules.exploration import LinearExplorationScheduler from mava.components.tf.modules.stabilising import FingerPrintStabalisation -from mava.components.tf.networks import MonotonicMixingNetwork +from mava.components.tf.modules.mixing import MonotonicMixing from mava.environment_loop import ParallelEnvironmentLoop from mava.systems.tf import executors from mava.systems.tf.madqn.system import MADQN @@ -82,7 +82,7 @@ def __init__( architecture: Type[DecentralisedValueActor] = DecentralisedValueActor, trainer_fn: Type[training.QMIXTrainer] = training.QMIXTrainer, executor_fn: Type[core.Executor] = execution.QMIXFeedForwardExecutor, - mixer: Type[MonotonicMixingNetwork] = MonotonicMixingNetwork, + mixer: Type[MonotonicMixing] = MonotonicMixing, communication_module: Type[BaseCommunicationModule] = None, exploration_scheduler_fn: Type[ LinearExplorationScheduler @@ -242,11 +242,12 @@ def trainer( system_networks = architecture.create_system() # # Augment network architecture by adding mixing layer network. - # system_networks = self._mixer( - # environment_spec=self._environment_spec, - # agent_networks=system_networks, - # num_hypernet_layers=1, - # ).create_system() + system_networks = self._mixer( + architecture=architecture, + environment_spec=self._environment_spec, + agent_networks=system_networks, + num_hypernet_layers=1, + ).create_system() # create logger trainer_logger_config = {} From a9d3e0c6c098c0fc4aa9b0b2429a501a4262dc29 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Thu, 3 Jun 2021 15:16:09 +0200 Subject: [PATCH 141/188] fix minor bug in qmix trainer --- .../debugging_envs/run_feedforward_vdn.py | 4 ++-- mava/systems/tf/qmix/training.py | 22 +------------------ 2 files changed, 3 insertions(+), 23 deletions(-) diff --git a/examples/debugging_envs/run_feedforward_vdn.py b/examples/debugging_envs/run_feedforward_vdn.py index a420de188..fae4ea2a4 100644 --- a/examples/debugging_envs/run_feedforward_vdn.py +++ b/examples/debugging_envs/run_feedforward_vdn.py @@ -149,9 +149,9 @@ def main(_: Any) -> None: num_executors=2, exploration_scheduler_fn=LinearExplorationScheduler, epsilon_min=0.05, - epsilon_decay=5e-4, - optimizer=snt.optimizers.Adam(learning_rate=1e-4), + epsilon_decay=3e-4, max_replay_size=1000000, + optimizer=snt.optimizers.RMSProp(learning_rate=1e-4), checkpoint_subpath=checkpoint_dir, ).build() diff --git a/mava/systems/tf/qmix/training.py b/mava/systems/tf/qmix/training.py index 13b10e573..3d80c5ce6 100644 --- a/mava/systems/tf/qmix/training.py +++ b/mava/systems/tf/qmix/training.py @@ -91,26 +91,7 @@ def __init__( ) # Checkpoint the mixing networks - # if checkpoint: - # TODO Checkpointing of mixing networks not playing nicely... - # self._system_checkpointer["mixing_network"] = tf2_savers.Checkpointer( - # directory=checkpoint_subpath, - # time_delta_minutes=15, - # objects_to_save={ - # "mixing_network": self._mixing_network, - # }, - # enable_checkpointing=checkpoint, - # ) - # self._system_checkpointer[ - # "target_mixing_network" - # ] = tf2_savers.Checkpointer( - # directory=checkpoint_subpath, - # time_delta_minutes=15, - # objects_to_save={ - # "target_mixing_network": self._target_mixing_network, - # }, - # enable_checkpointing=checkpoint, - # ) + # TODO add checkpointing for mixing networks def _update_target_networks(self) -> None: # Update target networks (incl. mixing networks). @@ -275,7 +256,6 @@ def _backward(self) -> None: gradients = self.tape.gradient(self.loss, variables) gradients = tf.clip_by_global_norm(gradients, self._max_gradient_norm)[0] self._optimizer.apply(gradients, variables) - variables += self._mixing_network.trainable_variable train_utils.safe_del(self, "tape") From ee5236cb63d1ace6d00de5c2c05a02dd875421c7 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Thu, 3 Jun 2021 15:18:25 +0200 Subject: [PATCH 142/188] fix mypy issues. --- mava/systems/tf/qmix/builder.py | 5 +---- mava/systems/tf/qmix/system.py | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/mava/systems/tf/qmix/builder.py b/mava/systems/tf/qmix/builder.py index 0f6cbe20c..9104df2d0 100644 --- a/mava/systems/tf/qmix/builder.py +++ b/mava/systems/tf/qmix/builder.py @@ -13,14 +13,11 @@ # See the License for the specific language governing permissions and # limitations under the License. -import copy import dataclasses from typing import Any, Dict, Iterator, Optional, Type import reverb import sonnet as snt -import tensorflow as tf -from acme.tf import utils as tf_utils from acme.utils import counting from mava import core, types @@ -28,8 +25,8 @@ from mava.components.tf.modules.exploration.exploration_scheduling import ( LinearExplorationScheduler, ) -from mava.components.tf.modules.stabilising import FingerPrintStabalisation from mava.components.tf.modules.mixing import MonotonicMixing +from mava.components.tf.modules.stabilising import FingerPrintStabalisation from mava.systems.tf.madqn.builder import MADQNBuilder, MADQNConfig from mava.systems.tf.qmix import execution, training from mava.wrappers import DetailedTrainerStatisticsWithEpsilon diff --git a/mava/systems/tf/qmix/system.py b/mava/systems/tf/qmix/system.py index 80bbf29ef..0027a9472 100644 --- a/mava/systems/tf/qmix/system.py +++ b/mava/systems/tf/qmix/system.py @@ -29,8 +29,8 @@ from mava.components.tf.architectures import DecentralisedValueActor from mava.components.tf.modules.communication import BaseCommunicationModule from mava.components.tf.modules.exploration import LinearExplorationScheduler -from mava.components.tf.modules.stabilising import FingerPrintStabalisation from mava.components.tf.modules.mixing import MonotonicMixing +from mava.components.tf.modules.stabilising import FingerPrintStabalisation from mava.environment_loop import ParallelEnvironmentLoop from mava.systems.tf import executors from mava.systems.tf.madqn.system import MADQN From a3fec9ff86726528c6e65effe615eef872102641 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Thu, 3 Jun 2021 15:40:01 +0200 Subject: [PATCH 143/188] add vdn to discrete debug plot --- docs/images/discrete.png | Bin 63365 -> 61884 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/images/discrete.png b/docs/images/discrete.png index b8970d747a4f9244b5424c18e39a4d96c77ef596..7a1f9f6d960346d3f517f3b52ebdda1dfd173b70 100644 GIT binary patch literal 61884 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 G>;DTVMupS> literal 63365 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

    41#j$(aQu= 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 From e4b4ff0a1fa77ba5e5b44147ff248706784526f6 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Thu, 3 Jun 2021 15:41:07 +0200 Subject: [PATCH 144/188] Update VDN status to yellow --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1dbd236da..e152deac6 100644 --- a/README.md +++ b/README.md @@ -65,7 +65,7 @@ Mava includes several system implementations. Below we list these together with * 🟩 - Multi-Agent Deep Deterministic Policy Gradient (MADDPG). * 🟩 - Multi-Agent Distributed Distributional Deep Deterministic Policy Gradient (MAD4PG). * 🟨 - Multi-Agent Proximal Policy Optimisation (MAPPO). -* 🟥 - Value Decomposition Networks (VDN). +* 🟨 - Value Decomposition Networks (VDN). * 🟥 - Monotonic value function factorisation (QMIX). As we develop Mava further, we aim to have all systems well tested on a wide variety of environments. From 6820f473749e89d006fe609537a7d9ee67f500a5 Mon Sep 17 00:00:00 2001 From: Arnu Pretorius Date: Fri, 4 Jun 2021 09:35:33 +0200 Subject: [PATCH 145/188] Update year and add placeholder --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 261eeb9e9..2c758549a 100644 --- a/LICENSE +++ b/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [yyyy] [name of copyright owner] + Copyright 2021 [...placeholder...] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. From 7ab51d0b79a4bfd4f8f2a0d1ae06083cfe56acd5 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Fri, 4 Jun 2021 10:44:39 +0200 Subject: [PATCH 146/188] clean up make file --- Makefile | 41 ++--------------------------------------- 1 file changed, 2 insertions(+), 39 deletions(-) diff --git a/Makefile b/Makefile index af24c30c6..995f33261 100755 --- a/Makefile +++ b/Makefile @@ -16,50 +16,13 @@ DOCKER_RUN=docker run $(RUN_FLAGS) $(IMAGE) DOCKER_RUN_TENSORBOARD=docker run $(RUN_FLAGS_TENSORBOARD) $(IMAGE) # Set example to run when using `make run` -MADDPG=examples/debugging_envs/run_decentralised_feedforward_maddpg_continous.py -MAPPO=examples/debugging_envs/run_decentralised_feedforward_mappo.py -MADQN=examples/debugging_envs/run_feedforward_madqn.py -QMIX=examples/debugging_envs/run_feedforward_qmix.py -QMIXv2=examples/debugging_envs/run_feedforward_qmix_V2.py -VDN=examples/debugging_envs/run_feedforward_vdn.py - -MADDPG-PZ=examples/petting_zoo/run_decentralised_feedforward_maddpg_continous.py -QMIX-PZ=examples/petting_zoo/run_feedforward_qmix.py -VDN-PZ==examples/petting_zoo/run_feedforward_vdn.py - -MADDPG_RECORD=examples/petting_zoo/run_feedforward_maddpg_record_video.py +# Default example +EXAMPLE=examples/debugging_envs/run_decentralised_feedforward_maddpg_continous.py # make file commands run: $(DOCKER_RUN) python $(EXAMPLE) --base_dir /home/app/mava/logs/ -run-maddpg: - $(DOCKER_RUN) python $(MADDPG) --base_dir /home/app/mava/logs/ - -run-madqn: - $(DOCKER_RUN) python $(MADQN) --base_dir /home/app/mava/logs/ - -run-mappo: - $(DOCKER_RUN) python $(MAPPO) --base_dir /home/app/mava/logs/ - -run-qmix: - $(DOCKER_RUN) python $(QMIX) --base_dir /home/app/mava/logs/ - -run-qmix-v2: - $(DOCKER_RUN) python $(QMIXv2) --base_dir /home/app/mava/logs/ - -run-vdn: - $(DOCKER_RUN) python $(VDN) --base_dir /home/app/mava/logs/ - -run-maddpg-pz: - $(DOCKER_RUN) python $(MADDPG-PZ) --base_dir /home/app/mava/logs/ - -run-qmix-pz: - $(DOCKER_RUN) python $(QMIX-PZ) --base_dir /home/app/mava/logs/ - -run-vdn-pz: - $(DOCKER_RUN) python $(VDN-PZ) --base_dir /home/app/mava/logs/ - bash: $(DOCKER_RUN) bash From a17c42d40c30983320a65644dc2873babb7f9776 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Fri, 4 Jun 2021 10:56:27 +0200 Subject: [PATCH 147/188] Refactor qmix to use generic hypernetwork again --- README.md | 46 ++++++------- examples/README.md | 2 +- .../components/tf/modules/mixing/monotonic.py | 4 +- mava/components/tf/networks/monotonic.py | 66 +++++++------------ 4 files changed, 48 insertions(+), 70 deletions(-) diff --git a/README.md b/README.md index e152deac6..4a38d6e8d 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ baselines, while still providing enough flexibility to do novel research. ## Overview ### Systems and the Executor-Trainer paradigm -At the core of the Mava framework is the concept of a `system`. A system refers to a full multi-agent reinforcement learning algorithm consisting of the following specific components: an `Executor`, a `Trainer` and a `Dataset`. +At the core of the Mava framework is the concept of a `system`. A system refers to a full multi-agent reinforcement learning algorithm consisting of the following specific components: an `Executor`, a `Trainer` and a `Dataset`.

    @@ -44,7 +44,7 @@ Mava shares much of the design philosophy of Acme for the same reason: to allow ## Supported environments A given multi-agent system interacts with its environment via an `EnvironmentLoop`. This loop takes as input a `system` instance and a multi-agent `environment` -instance which implements the [DeepMind Environment API][dm_env]. Mava currently supports multi-agent environment loops and environment wrappers for the following environments and environment suites: +instance which implements the [DeepMind Environment API][dm_env]. Mava currently supports multi-agent environment loops and environment wrappers for the following environments and environment suites:

    @@ -53,13 +53,13 @@ instance which implements the [DeepMind Environment API][dm_env]. Mava currently * [PettingZoo][pettingzoo] * [SMAC][smac] * [Flatland][flatland] -* [2D RoboCup][robocup] +* [2D RoboCup][robocup] The animation on the right shows MAD4PG solving the Multi-Walker environment from PettingZoo. ## System implementations -Mava includes several system implementations. Below we list these together with an indication of the maturity of the system using the following keys: 🟩 -- Tested and working well, 🟨 -- Running and training on simple environments, but not extensively tested and 🟥 -- Implemented but untested and yet to show clear signs of stable training. +Mava includes several system implementations. Below we list these together with an indication of the maturity of the system using the following keys: 🟩 -- Tested and working well, 🟨 -- Running and training on simple environments, but not extensively tested and 🟥 -- Implemented but untested and yet to show clear signs of stable training. * 🟩 - Multi-Agent Deep Q-Networks (MADQN). * 🟩 - Multi-Agent Deep Deterministic Policy Gradient (MADDPG). @@ -85,22 +85,22 @@ import launchpad # Distributed program program = madqn.MADQN( - environment_factory=helpers.environment_factory, - network_factory=helpers.network_factory, - architecture=DecentralisedPolicyActor, - num_executors=2, - ).build() + environment_factory=helpers.environment_factory, + network_factory=helpers.network_factory, + architecture=DecentralisedPolicyActor, + num_executors=2, +).build() # Launch launchpad.launch( - program, - launchpad.LaunchType.LOCAL_MULTI_PROCESSING, - ) + program, + launchpad.LaunchType.LOCAL_MULTI_PROCESSING, +) ``` The first two arguments to the program are environment and network factory functions. -These helper functions are responsible for creating the networks for the system, initialising their parameters on the different compute nodes and providing a copy of the environment for each executor. The next argument `num_executors` sets the number of executor processes to be run. -After building the program we feed it to Launchpad's `launch` function and specify the launch type to perform local multi-processing, i.e. running the distributed program on a single machine. Scaling up or down is simply a matter of adjusting the number of executor processes. +These helper functions are responsible for creating the networks for the system, initialising their parameters on the different compute nodes and providing a copy of the environment for each executor. The next argument `num_executors` sets the number of executor processes to be run. +After building the program we feed it to Launchpad's `launch` function and specify the launch type to perform local multi-processing, i.e. running the distributed program on a single machine. Scaling up or down is simply a matter of adjusting the number of executor processes. For a deeper dive, take a look at the detailed working code examples found in our [examples] subdirectory which show how to instantiate a few MARL systems and environments. @@ -114,7 +114,7 @@ from mava.components.tf.modules import communication ... -# Wrap architecture in communication module +# Wrap architecture in communication module communication.BroadcastedCommunication( architecture=architecture, shared=True, @@ -165,7 +165,7 @@ We have tested `mava` on Python 3.6, 3.7 and 3.8. pip install --upgrade pip setuptools ``` -2. To install the core libraries with dependencies from source (from root directory): +2. To install the core libraries with dependencies from source (from root directory): ```bash pip install -e ".[tf,envs,reverb,launchpad]" @@ -174,16 +174,16 @@ We have tested `mava` on Python 3.6, 3.7 and 3.8. Note that the dependencies may be installed selectively by adding and removing their identifiers. Additional optional dependencies include `record_episode` for installing packages required to make video recordings of evaluation runs and `testing_formatting` for running tests and code formatting checks. Extra information on optional installs are given below. 3. **NB**: Flatland and SMAC installations have to be done separately. Flatland can be installed using: - + ```bash pip install .[flatland] ``` - + For StarCraft II installation, this must be installed separately according to your operating system. To install the StarCraft II ML environment and associated packages, please follow the instructions on [PySC2](https://github.com/deepmind/pysc2) to install the StarCraft II game files. Please ensure you have the required game maps (for both PySC2 and SMAC) extracted in the StarCraft II maps directory. Once this is done you can install the packages for the single agent case (PySC2) and the multi-agent case (SMAC). - + ```bash pip install pysc2 pip install git+https://github.com/oxwhirl/smac.git @@ -196,9 +196,9 @@ We also have a list of [optional installs](OPTIONAL_INSTALL.md) for extra functi
    - + To test and debug new system implementations, we use a simplified version of the spread environment from the [MPE][mpe] suite. -Debugging in MARL can be very difficult and time consuming, therefore it is important to use a small environment for debugging that is simple and fast but at the same time still able to clearly show whether a system is able to learn. An illustration of the debugging environment is shown on the right. Agents start at random locations and are assigned specific landmarks which they attempt to reach in as few steps as possible. Rewards are given to each agent independently as a function of their distance to the landmark. The reward is normalised to be between 0 and 1, where 1 is given when the agent is directly on top of the landmark. The further an agent is away from its landmark the more the reward value converges to 0. Collisions between agents result in a reward of -1 received by the colliding agents. To test both discrete and continuous control systems we feature two versions of the environment. In the discrete version the action space for each agent consists of the following five actions: `left`, `right`, `up`, `down`, `stand-still`. In the continuous case, the action space consists of real values bounded between -1 and 1 for the `acceleration` of the agent in the `x` and `y` direction. Several examples of running systems on the debugging environment can be found [here][debug]. Below we show the results from some of our systems trained on the debugging environment. +Debugging in MARL can be very difficult and time consuming, therefore it is important to use a small environment for debugging that is simple and fast but at the same time still able to clearly show whether a system is able to learn. An illustration of the debugging environment is shown on the right. Agents start at random locations and are assigned specific landmarks which they attempt to reach in as few steps as possible. Rewards are given to each agent independently as a function of their distance to the landmark. The reward is normalised to be between 0 and 1, where 1 is given when the agent is directly on top of the landmark. The further an agent is away from its landmark the more the reward value converges to 0. Collisions between agents result in a reward of -1 received by the colliding agents. To test both discrete and continuous control systems we feature two versions of the environment. In the discrete version the action space for each agent consists of the following five actions: `left`, `right`, `up`, `down`, `stand-still`. In the continuous case, the action space consists of real values bounded between -1 and 1 for the `acceleration` of the agent in the `x` and `y` direction. Several examples of running systems on the debugging environment can be found [here][debug]. Below we show the results from some of our systems trained on the debugging environment.

    @@ -209,8 +209,8 @@ Debugging in MARL can be very difficult and time consuming, therefore it is impo We have big ambitions for Mava! 🚀 But there is still much work that needs to be done. We have a clear roadmap for expanding our system implementations and associated modules, improving testing and robustness and providing support for across-machine training. Furthermore, in the near future, we also plan to implement the following features (feel free to vote for any one of them by clicking on the name!). -[![](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Sequential%20environment%20support%20including%20OpenSpiel)](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Sequential%20environment%20support%20including%20OpenSpiel/vote)
    -[![](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Population%20based%20training)](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Population%20based%20training/vote)
    +[![](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Sequential%20environment%20support%20including%20OpenSpiel)](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Sequential%20environment%20support%20including%20OpenSpiel/vote)
    +[![](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Population%20based%20training)](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Population%20based%20training/vote)
    [![](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Dynamic%20networked%20architectures)](https://api.gh-polls.com/poll/01F75ZJZXE8C5JM7MQWEX9PRXQ/Dynamic%20networked%20architectures/vote) In the slightly more longer term, the Mava team plans to release benchmarking results for several different systems and environments and contribute a MARL specific behavioural environment suite specifically engineered to study aspects of MARL such as cooperation and coordination. diff --git a/examples/README.md b/examples/README.md index 2eca91531..d675910cb 100644 --- a/examples/README.md +++ b/examples/README.md @@ -78,7 +78,7 @@ We also include a number of systems running on discrete action space environment an MA-DQN system running on the StarCraft 3m environment. - [MA-DQN (recurrent)](smac/run_recurrent_madqn.py): an MA-DQN system running on the StarCraft 3m environment. - + [debug]: ../mava/utils/debugging [pettingzoo]: https://github.com/PettingZoo-Team/PettingZoo [flatland]: https://gitlab.aicrowd.com/flatland/flatland diff --git a/mava/components/tf/modules/mixing/monotonic.py b/mava/components/tf/modules/mixing/monotonic.py index a31251c86..245bc4c49 100644 --- a/mava/components/tf/modules/mixing/monotonic.py +++ b/mava/components/tf/modules/mixing/monotonic.py @@ -60,8 +60,6 @@ def __init__( if agent_networks is None: agent_networks = self._architecture.create_actor_variables() self._agent_networks = agent_networks - # self._agent_networks["values"] = agent_networks["values"] - # self._agent_networks["target_values"] = agent_networks["target_values"] def _create_mixing_layer(self) -> snt.Module: """Modify and return system architecture given mixing structure.""" @@ -73,6 +71,8 @@ def _create_mixing_layer(self) -> snt.Module: # Implement method from base class self._mixed_network = MonotonicMixingNetwork( + self._architecture, + self._agent_networks, self._n_agents, self._qmix_hidden_dim, num_hypernet_layers=self._num_hypernet_layers, diff --git a/mava/components/tf/networks/monotonic.py b/mava/components/tf/networks/monotonic.py index 089eca67e..dff1010e6 100644 --- a/mava/components/tf/networks/monotonic.py +++ b/mava/components/tf/networks/monotonic.py @@ -18,12 +18,13 @@ """Mixing for multi-agent RL systems""" -# import launchpad as lp +from typing import Dict + import sonnet as snt import tensorflow as tf -# from mava.components.tf.architectures.base import BaseArchitecture -# from mava.components.tf.networks.hypernetwork import HyperNetwork +from mava.components.tf.architectures.base import BaseArchitecture +from mava.components.tf.networks.hypernetwork import HyperNetwork class MonotonicMixingNetwork(snt.Module): @@ -34,6 +35,8 @@ class MonotonicMixingNetwork(snt.Module): def __init__( self, + architecture: BaseArchitecture, + agent_networks: Dict[str, snt.Module], n_agents: int, qmix_hidden_dim: int = 64, num_hypernet_layers: int = 2, @@ -49,24 +52,20 @@ def __init__( layer. Relevant for num_hypernet_layers > 1. """ super(MonotonicMixingNetwork, self).__init__() + self._architecture = architecture + self._agent_networks = agent_networks self._n_agents = n_agents self._qmix_hidden_dim = qmix_hidden_dim self._num_hypernet_layers = num_hypernet_layers self._hypernet_hidden_dim = hypernet_hidden_dim # Create hypernetwork - # self._hypernetworks = HyperNetwork( - # self._agent_networks, - # self._qmix_hidden_dim, - # self._num_hypernet_layers, - # self._hypernet_hidden_dim, - # ) - self.hyper_w1 = snt.nets.MLP( - output_sizes=[self._qmix_hidden_dim * self._n_agents] + self._hypernetworks = HyperNetwork( + self._agent_networks, + self._qmix_hidden_dim, + self._num_hypernet_layers, + self._hypernet_hidden_dim, ) - self.hyper_w2 = snt.nets.MLP(output_sizes=[self._qmix_hidden_dim]) - self.hyper_b1 = snt.nets.MLP(output_sizes=[self._qmix_hidden_dim]) - self.hyper_b2 = snt.nets.MLP(output_sizes=[self._qmix_hidden_dim, 1]) def __call__( self, @@ -75,36 +74,15 @@ def __call__( ) -> tf.Tensor: """Monotonic mixing logic.""" - # Expand dimensions to [B, 1, n_agents] = [B,1,2] for matmul - q_values = tf.expand_dims(q_values, axis=1) - - # --- HYPERNET ---- - w1 = tf.abs( - self.hyper_w1(states) - ) # [B, qmix_hidden_dim] = [B, qmix_hidden_dim] - w1 = tf.reshape( - w1, - (-1, self._n_agents, self._qmix_hidden_dim), - ) # [B, n_agents, qmix_hidden_dim] - - b1 = self.hyper_b1(states) # [B, qmix_hidden_dim] = [B, qmix_hidden_dim] - b1 = tf.reshape(b1, [-1, 1, self._qmix_hidden_dim]) # [B, 1, qmix_hidden_dim] - - w2 = tf.abs(self.hyper_w2(states)) - w2 = tf.reshape( - w2, shape=(-1, self._qmix_hidden_dim, 1) - ) # [B, qmix_hidden_dim, 1] - - b2 = self.hyper_b2(states) # [B, 1] - b2 = tf.reshape(b2, shape=(-1, 1, 1)) # [B, 1, 1] - # ----------------- - # self._hyperparams = self._hypernetworks(states) - - # For convenience - # w1 = self._hyperparams["w1"] # [B, n_agents, qmix_hidden_dim] - # b1 = self._hyperparams["b1"] # [B, 1, qmix_hidden_dim] - # w2 = self._hyperparams["w2"] # [B, qmix_hidden_dim, 1] - # b2 = self._hyperparams["b2"] # [B, 1, 1] + # Create hypernetwork + self._hyperparams = self._hypernetworks(states) + + # Extract hypernetwork layers + # TODO: make more general -> this assumes two layer hypernetwork + w1 = self._hyperparams["w1"] # [B, n_agents, qmix_hidden_dim] + b1 = self._hyperparams["b1"] # [B, 1, qmix_hidden_dim] + w2 = self._hyperparams["w2"] # [B, qmix_hidden_dim, 1] + b2 = self._hyperparams["b2"] # [B, 1, 1] # ELU -> Exp. linear unit hidden = tf.nn.elu(tf.matmul(q_values, w1) + b1) # [B, 1, qmix_hidden_dim] From 1a63a8237d614049cc09d12d4cd32645ff394687 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Fri, 4 Jun 2021 11:17:46 +0200 Subject: [PATCH 148/188] Remove communication module from qmix --- mava/systems/tf/qmix/system.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/mava/systems/tf/qmix/system.py b/mava/systems/tf/qmix/system.py index 0027a9472..d09feda73 100644 --- a/mava/systems/tf/qmix/system.py +++ b/mava/systems/tf/qmix/system.py @@ -224,28 +224,28 @@ def trainer( shared_weights=self._shared_weights, ) + # Fingerprint module if self._builder._replay_stabiliser_fn is not None: architecture = self._builder._replay_stabiliser_fn( # type: ignore architecture ) - communication_module = None + # Communication module + # NOTE: this is currently not expected to work with qmix + # since we do not have a recurrent version. if self._communication_module_fn is not None: - communication_module = self._communication_module_fn( - architecture=architecture, - shared=True, - channel_size=1, - channel_noise=0, + raise Exception( + "QMIX currently does not support recurrence and therefore cannot use a communication module." ) - system_networks = communication_module.create_system() - else: - system_networks = architecture.create_system() - # # Augment network architecture by adding mixing layer network. + # extract agent networks + agent_networks = architecture.create_actor_variables() + + # Mixing module system_networks = self._mixer( architecture=architecture, environment_spec=self._environment_spec, - agent_networks=system_networks, + agent_networks=agent_networks, num_hypernet_layers=1, ).create_system() @@ -264,7 +264,7 @@ def trainer( networks=system_networks, dataset=dataset, counter=counter, - communication_module=communication_module, + communication_module=None, logger=trainer_logger, ) From 3634524878bd1528b135dc7d402c79b4f3581348 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Fri, 4 Jun 2021 11:20:04 +0200 Subject: [PATCH 149/188] minor mypy changes --- mava/systems/tf/qmix/system.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mava/systems/tf/qmix/system.py b/mava/systems/tf/qmix/system.py index d09feda73..8ade6e0af 100644 --- a/mava/systems/tf/qmix/system.py +++ b/mava/systems/tf/qmix/system.py @@ -235,10 +235,11 @@ def trainer( # since we do not have a recurrent version. if self._communication_module_fn is not None: raise Exception( - "QMIX currently does not support recurrence and therefore cannot use a communication module." + "QMIX currently does not support recurrence and \ + therefore cannot use a communication module." ) - # extract agent networks + # Extract agent networks agent_networks = architecture.create_actor_variables() # Mixing module @@ -249,7 +250,7 @@ def trainer( num_hypernet_layers=1, ).create_system() - # create logger + # Create logger trainer_logger_config = {} if self._logger_config and "trainer" in self._logger_config: trainer_logger_config = self._logger_config["trainer"] From f4b6ceabdbc8c4992ffd666eb3dd7ab637c6a35c Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Fri, 4 Jun 2021 11:45:14 +0200 Subject: [PATCH 150/188] remove commented line in make file --- Makefile | 1 - 1 file changed, 1 deletion(-) diff --git a/Makefile b/Makefile index 42c8e6f0a..fea702376 100755 --- a/Makefile +++ b/Makefile @@ -37,7 +37,6 @@ build: build_robocup: docker build --tag $(IMAGE) -f ./Dockerfile.robocup . - # sudo rm -r ./*.rcl ./*.rcg ./rcssserver-16.0.0* ./rcssserver-rcssserver-16.0.0 ./rcssmonitor* push: docker login From 704ba3620e9cef8f6c0776044c9762e9548225ad Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Fri, 4 Jun 2021 11:45:36 +0200 Subject: [PATCH 151/188] rename example --- .../{run_robocup.py => run_state_based_recurrent_mad4pg.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename examples/robocup/{run_robocup.py => run_state_based_recurrent_mad4pg.py} (100%) diff --git a/examples/robocup/run_robocup.py b/examples/robocup/run_state_based_recurrent_mad4pg.py similarity index 100% rename from examples/robocup/run_robocup.py rename to examples/robocup/run_state_based_recurrent_mad4pg.py From 78fc3f4e78189845f28a0332b269755ec74fbf45 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Fri, 4 Jun 2021 11:49:18 +0200 Subject: [PATCH 152/188] clean agents file --- .../RoboCup_env/robocup_utils/agent.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/agent.py b/mava/utils/environments/RoboCup_env/robocup_utils/agent.py index d7fc879fd..184b92cb5 100755 --- a/mava/utils/environments/RoboCup_env/robocup_utils/agent.py +++ b/mava/utils/environments/RoboCup_env/robocup_utils/agent.py @@ -1,5 +1,18 @@ -# type: ignore # !/usr/bin/env python3 +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import threading import time From d5183646e2f396d03abd9e83f36ea459cddcaa28 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Fri, 4 Jun 2021 11:51:02 +0200 Subject: [PATCH 153/188] cleaned fixed_agent file --- .../RoboCup_env/robocup_agents/fixed_agent.py | 36 +++++++++---------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/mava/utils/environments/RoboCup_env/robocup_agents/fixed_agent.py b/mava/utils/environments/RoboCup_env/robocup_agents/fixed_agent.py index 8165718b3..989d9b382 100755 --- a/mava/utils/environments/RoboCup_env/robocup_agents/fixed_agent.py +++ b/mava/utils/environments/RoboCup_env/robocup_agents/fixed_agent.py @@ -1,4 +1,18 @@ -# type: ignore +# python3 +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import numpy as np from mava.utils.environments.RoboCup_env.robocup_utils.util_functions import ( @@ -16,10 +30,6 @@ def __init__(self, agent_type, num_players): self.num_players = num_players assert self.scaling == 200.0 self.kicked = False - # self.obs_norm = 200.0 - # self.action_scaling = 180 - # self.obs_size = 17 - # self._action_size = 7 def reset_brain(self): self.kicked = False @@ -80,7 +90,6 @@ def get_action(self, observation): action = np.zeros(22) if see_ball < 0.5: # Search for the ball - # print("Searching..") action[command["do_turn"]] = 1 x, y = deg_rot_to_xy(20) action[command["turn_dir_x"]] = x @@ -89,7 +98,7 @@ def get_action(self, observation): if not self.kicked: # Kick the ball self.kicked = True - # goal_locs = np.array([np.random.randn()*20, np.random.randn()*20]) + goal_locs = np.array([52.5, 0]) x_diff, y_diff = goal_locs - p_loc @@ -109,7 +118,6 @@ def get_action(self, observation): # print("Waiting..") elif np.abs(b_deg) > 10: # Turn towards the ball - # print("Turning..") action[command["do_turn"]] = 1 x, y = deg_rot_to_xy(b_deg / 3) action[command["turn_dir_x"]] = x @@ -117,7 +125,6 @@ def get_action(self, observation): else: # Dash towards the ball action[command["do_dash"]] = 1 - # print("Dashing..") speed = 100 if b_dist < 5: @@ -132,14 +139,3 @@ def get_action(self, observation): self.kicked = False return action - - -# class RotateBot(object): -# def __init__(self, num_actions=9): -# pass -# -# def reset_brain(self): -# pass -# -# def get_action(self, observations, last_action, reward=None): -# return "(turn 30)" From 5d700bf40389d2c236aec98b6c72add91e7d1e73 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Fri, 4 Jun 2021 11:51:57 +0200 Subject: [PATCH 154/188] cleaned nn_agents file --- .../RoboCup_env/robocup_agents/nn_agent.py | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/mava/utils/environments/RoboCup_env/robocup_agents/nn_agent.py b/mava/utils/environments/RoboCup_env/robocup_agents/nn_agent.py index 4a736b7df..b673174f3 100755 --- a/mava/utils/environments/RoboCup_env/robocup_agents/nn_agent.py +++ b/mava/utils/environments/RoboCup_env/robocup_agents/nn_agent.py @@ -1,4 +1,18 @@ -# type: ignore +# python3 +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import os from typing import Any, Dict, Mapping, MutableSequence, Sequence, Union @@ -19,7 +33,6 @@ from mava.utils.environments.RoboCup_env.robocup_utils.util_functions import SpecWrapper tfd = tfp.distributions -# log = logging.getLogger(__name__) def set_gpu_affinity(gpus: Any) -> Any: @@ -51,11 +64,6 @@ def set_gpu_affinity(gpus: Any) -> Any: tf.config.experimental.set_memory_growth(gpu, True) except RuntimeError as e: print(e) - - # log.info( - # f"Devices: {len(devices)} physical and " - # f"{len(tf.config.list_logical_devices('GPU'))} logical devices" - # ) return gpus @@ -243,7 +251,6 @@ def __init__( # Create the policy_networks policy_networks = architecture.create_actor_variables() before_sum = policy_networks["policies"][agent_type].variables[1].numpy().sum() - # print("Weights before: ", before_sum) objects_to_save = { "policy": policy_networks["policies"][agent_type], "observation": policy_networks["observations"][agent_type], From 67c55970656bcc4c8b01d69661c752fb3da12144 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Fri, 4 Jun 2021 11:55:14 +0200 Subject: [PATCH 155/188] update custom executor --- .../robocup_agents/custom_executor.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/mava/utils/environments/RoboCup_env/robocup_agents/custom_executor.py b/mava/utils/environments/RoboCup_env/robocup_agents/custom_executor.py index 912fbf774..b0cc5d6b4 100644 --- a/mava/utils/environments/RoboCup_env/robocup_agents/custom_executor.py +++ b/mava/utils/environments/RoboCup_env/robocup_agents/custom_executor.py @@ -1,4 +1,18 @@ -# type: ignore +# python3 +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://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. + from typing import Dict, Optional import dm_env From 478f39def16c498630d43d11caae8d3af61cde88 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Fri, 4 Jun 2021 11:58:28 +0200 Subject: [PATCH 156/188] update copyright stubs --- .../RoboCup_env/robocup_utils/__init__.py | 14 +++++ .../RoboCup_env/robocup_utils/agent.py | 52 ------------------- .../robocup_utils/extract_policy.py | 18 +++++-- .../RoboCup_env/robocup_utils/game_object.py | 14 ++++- 4 files changed, 41 insertions(+), 57 deletions(-) diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/__init__.py b/mava/utils/environments/RoboCup_env/robocup_utils/__init__.py index e69de29bb..06240e71c 100755 --- a/mava/utils/environments/RoboCup_env/robocup_utils/__init__.py +++ b/mava/utils/environments/RoboCup_env/robocup_utils/__init__.py @@ -0,0 +1,14 @@ +# python3 +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://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. \ No newline at end of file diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/agent.py b/mava/utils/environments/RoboCup_env/robocup_utils/agent.py index 184b92cb5..81e6aeef2 100755 --- a/mava/utils/environments/RoboCup_env/robocup_utils/agent.py +++ b/mava/utils/environments/RoboCup_env/robocup_utils/agent.py @@ -33,11 +33,6 @@ wait_for_next_observations, ) -# import copy -# import os -# os.environ['PYGAME_HIDE_SUPPORT_PROMPT'] = "hide" -# import pygame - # Define some colours green = (0, 255, 50) light_blue = (0, 255, 255) @@ -135,16 +130,12 @@ def start_comm_threads(self, host, port, teamname, version): self.__message_tread.start() # wait until the socket receives a response from the server and gets its # assigned port. - # print("Agent init address: ", init_address) while self.__sock.address == init_address: time.sleep(0.0001) - # print("Agent new address: ", self.__sock.address) - # exit() # create our thinking thread. this will perform the actions necessary # to play a game of robo-soccer. self.__thinking = True - # self.__think_thread.daemon = True # set connected state. done last to prevent state inconsistency if # something goes wrong beforehand. @@ -153,7 +144,6 @@ def start_comm_threads(self, host, port, teamname, version): self.last_action = None # Move to random starting position - x = np.random.randint(-52, 53) y = np.random.randint(-34, 35) @@ -167,45 +157,6 @@ def start_comm_threads(self, host, port, teamname, version): self.__think_thread.daemon = True self.__think_thread.start() - # def disconnect(self): - # """ - # Tell the loop threads to stop and signal the server that we're - # disconnecting, then join the loop threads and destroy all our inner - # methods. - # - # Since the message loop thread can conceiveably block indefinitely while - # waiting for the server to respond, we only allow it (and the think loop - # for good measure) a short time to finish before simply giving up. - # - # Once an agent has been disconnected, it is 'dead' and cannot be used - # again. All of its methods get replaced by a method that raises an - # exception every time it is called. - # """ - # - # # don't do anything if not connected - # if not self.__connected: - # return - # - # # tell the loops to terminate - # self.__parsing = False - # self.__thinking = False - # - # # tell the server that we're quitting - # self.__sock.send("(bye)") - # - # # tell our threads to join, but only wait breifly for them to do so. - # # don't join them if they haven't been started (this can happen if - # # disconnect is called very quickly after connect). - # if self.__msg_thread.is_alive(): - # self.__msg_thread.join(0.01) - # - # # if self.__think_thread.is_alive(): - # # self.__think_thread.join(0.01) - # - # # reset all standard variables in this object. self.__connected gets - # # reset here, along with all other non-user defined internal variables. - # Agent.__init__(self) - def __message_loop(self): """ Handles messages received from the server. @@ -221,9 +172,6 @@ def __message_loop(self): # itself for perusal at our leisure. raw_msg = self.__sock.recv() - # if b'goal' in raw_msg: - # print("Agent message: '" , raw_msg, "'") - msg_type = self.msg_handler.handle_message(raw_msg) if msg_type is not None: # we send commands all at once every cycle, ie. whenever a diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/extract_policy.py b/mava/utils/environments/RoboCup_env/robocup_utils/extract_policy.py index 8bd16d250..66cc359d7 100644 --- a/mava/utils/environments/RoboCup_env/robocup_utils/extract_policy.py +++ b/mava/utils/environments/RoboCup_env/robocup_utils/extract_policy.py @@ -1,4 +1,17 @@ -# type: ignore +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import os import pickle @@ -8,7 +21,6 @@ def save_policy_and_obs(architecture, agent_type, checkpoint_subpath, pickle_save_loc): policy_networks = architecture.create_actor_variables() before_sum = policy_networks["policies"][agent_type].variables[1].numpy().sum() - # print("Weights before: ", before_sum) objects_to_save = { "policy": policy_networks["policies"][agent_type], "observation": policy_networks["observations"][agent_type], @@ -27,8 +39,6 @@ def save_policy_and_obs(architecture, agent_type, checkpoint_subpath, pickle_sav assert before_sum != after_sum # Save policy variables - print(policy_networks["policies"][agent_type]) - exit() policy = policy_networks["policies"][agent_type].set.variables policy_file = open(os.path.join(pickle_save_loc, "policy.obj"), "wb") pickle.dump(policy, policy_file) diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/game_object.py b/mava/utils/environments/RoboCup_env/robocup_utils/game_object.py index 5b6700664..246c1ebf7 100755 --- a/mava/utils/environments/RoboCup_env/robocup_utils/game_object.py +++ b/mava/utils/environments/RoboCup_env/robocup_utils/game_object.py @@ -1,4 +1,16 @@ -# type: ignore +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://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. class GameObject: """ Root class for all percievable objects in the world model. From 8735ba5515fd55ef994a904caae061ddecff4cdb Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Fri, 4 Jun 2021 11:59:57 +0200 Subject: [PATCH 157/188] clean message parser --- .../RoboCup_env/robocup_utils/handler.py | 31 +++++++------- .../robocup_utils/message_parser.py | 42 +++++++------------ 2 files changed, 29 insertions(+), 44 deletions(-) diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/handler.py b/mava/utils/environments/RoboCup_env/robocup_utils/handler.py index 052f0793f..2530faf3c 100755 --- a/mava/utils/environments/RoboCup_env/robocup_utils/handler.py +++ b/mava/utils/environments/RoboCup_env/robocup_utils/handler.py @@ -1,4 +1,17 @@ -# type: ignore +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import collections import queue @@ -11,12 +24,6 @@ WorldModel, ) -# import time - - -# from multiprocessing import Queue as queue - - # should we print messages received from the server? PRINT_SERVER_MESSAGES = False @@ -258,10 +265,6 @@ def _handle_see_global(self, msg): the world model. """ - # the simulation cycle of the soccer server - # print("msg: ", msg) - # sim_time = msg[1] - # store new values before changing those in the world model. all new # values replace those in the world model at the end of parsing. ball = None @@ -339,10 +342,6 @@ def _handle_hear(self, msg): sender = msg[1] # name (or direction) of who sent the message message = msg[3] # message string - # if message.startswith("goal_"): - # print("time_recvd: ", time_recvd) - # print("sender: ", sender) - # print("message: ", message) # ignore messages sent by self (NOTE: would anybody really want these?) if sender == "self": @@ -600,8 +599,6 @@ def send_commands(self): print("sent:", primary_cmd.text, "\n") self.sock.send(primary_cmd.text) - # self.__sock.send("(turn 30)\x00", append_null_terminator=False) - # time.sleep(0.01) self.sock.send("(done)") def move(self, x, y): diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/message_parser.py b/mava/utils/environments/RoboCup_env/robocup_utils/message_parser.py index c8eb24e20..262e27b4c 100755 --- a/mava/utils/environments/RoboCup_env/robocup_utils/message_parser.py +++ b/mava/utils/environments/RoboCup_env/robocup_utils/message_parser.py @@ -1,4 +1,17 @@ -# type: ignore +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import re # used to convert server value strings into actual python values @@ -43,7 +56,6 @@ def parse(text): # noqa: C901 # the last character seen, None to begin with prev_c = None - # raise ValueError("Message text has unmatching parenthesis: ", text) for c in text: # prevent parsing parens when inside a string (also ignores escaped # '"'s as well). doesn't add the quotes so we don't have to recognize @@ -137,28 +149,4 @@ def parse(text): # noqa: C901 # append the first '('. return result[0] else: - # print("Ignored messages because of unequal parenthesis") - return None - - -# if __name__ == "__main__": -# import sys - -# # interactive mode if any args were specified -# if len(sys.argv) > 2: -# from pprint import pprint - -# with open(sys.argv[1], "r") as f: -# for line in f: -# print("raw message:\n", line.strip()) -# print() -# print("parsed message:") -# pprint(parse(line.strip())) -# print("----") -# raw_input() -# print() -# else: -# # just parse the message file -# with open(sys.argv[1], "r") as f: -# for line in f: -# parse(line.strip()) + return None \ No newline at end of file From c6402263122de82cb4b6f49722b3142bf731ba66 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Fri, 4 Jun 2021 12:58:56 +0200 Subject: [PATCH 158/188] clean player world model --- .../robocup_utils/player_world_model.py | 189 ++---------------- 1 file changed, 14 insertions(+), 175 deletions(-) diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/player_world_model.py b/mava/utils/environments/RoboCup_env/robocup_utils/player_world_model.py index b6ac5942c..a6591dbd0 100755 --- a/mava/utils/environments/RoboCup_env/robocup_utils/player_world_model.py +++ b/mava/utils/environments/RoboCup_env/robocup_utils/player_world_model.py @@ -1,4 +1,17 @@ -# type: ignore +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import math import numpy as np @@ -18,8 +31,6 @@ def rotate(origin, point, angle): The angle should be given in radians. """ - # print("origin: ", origin) - ox, oy = origin px, py = point @@ -166,176 +177,6 @@ def __init__(self, action_handler): # create a new server parameter object for holding all server params self.server_parameters = ServerParameters() - # def triangulate_direction(self, flags, flag_dict): - # """ - # Determines absolute view angle for the player given a list of visible - # flags. We find the absolute angle to each flag, then return the average - # of those angles. Returns 'None' if no angle could be determined. - # """ - # - # # average all flag angles together and save that as absolute angle - # abs_angles = [] - # for f in self.flags: - # # if the flag has useful data, consider it - # if f.distance is not None and f.flag_id in flag_dict: - # flag_point = flag_dict[f.flag_id] - # abs_dir = self.angle_between_points(self.abs_coords, flag_point) - # abs_angles.append(abs_dir) - # - # # return the average if available - # if len(abs_angles) > 0: - # return sum(abs_angles) / len(abs_angles) - # - # return None - - # def triangulate_position(self, flags, flag_dict, angle_step=36): - # """ - # Returns a best-guess position based on the triangulation via distances - # to all flags in the flag list given. 'angle_step' specifies the - # increments between angles for projecting points onto the circle - # surrounding a flag. - # """ - # - # points = [] - # for f in flags: - # # skip flags without distance information or without a specific id - # if f.distance is None or f.flag_id not in flag_dict: - # continue - # - # # generate points every 'angle_step' degrees around each flag, - # # discarding those off-field. - # for i in range(0, 360, angle_step): - # dy = f.distance * math.sin(math.radians(i)) - # dx = f.distance * math.cos(math.radians(i)) - # - # fcoords = flag_dict[f.flag_id] - # new_point = (fcoords[0] + dx, fcoords[1] + dy) - # - # # skip points with a coordinate outside the play boundaries - # if (new_point[0] > 60 or new_point[0] < -60 or - # new_point[1] < -40 or new_point[1] > 40): - # continue - # - # # add point to list of all points - # points.append(new_point) - # - # # get the dict of clusters mapped to centers - # clusters = self.cluster_points(points) - # - # # return the center that has the most points as an approximation to our - # # absolute position. - # center_with_most_points = (0, 0) - # max_points = 0 - # for c in clusters: - # if len(clusters[c]) > max_points: - # center_with_most_points = c - # max_points = len(clusters[c]) - # - # return center_with_most_points - - # def cluster_points(self, points, num_cluster_iterations=15): - # """ - # Cluster a set of points into a dict of centers mapped to point lists. - # Uses the k-means clustering algorithm with random initial centers and a - # fixed number of iterations to find clusters. - # """ - # - # # generate initial random centers, ignoring identical ones - # centers = set([]) - # for i in range(int(math.sqrt(len(points) / 2))): - # # a random coordinate somewhere within the field boundaries - # rand_center = (random.randint(-55, 55), random.randint(-35, 35)) - # centers.add(rand_center) - # - # # cluster for some iterations before the latest result - # latest = {} - # cur = {} - # for i in range(num_cluster_iterations): - # # initialze cluster lists - # for c in centers: - # cur[c] = [] - # - # # put every point into the list of its nearest cluster center - # for p in points: - # # get a list of (distance to center, center coords) tuples - # c_dists = map(lambda c: (self.euclidean_distance(c, p), c), - # centers) - # - # # find the smallest tuple's c (second item) - # nearest_center = min(c_dists)[1] - # - # # add point to this center's cluster - # cur[nearest_center].append(p) - # - # # recompute centers - # new_centers = set([]) - # for cluster in cur.values(): - # tot_x = 0 - # tot_y = 0 - # - # # remove empty clusters - # if len(cluster) == 0: - # continue - # - # # generate average center of cluster - # for p in cluster: - # tot_x += p[0] - # tot_y += p[1] - # - # # get average center and add to new centers set - # ave_center = (tot_x / len(cluster), tot_y / len(cluster)) - # new_centers.add(ave_center) - # - # # move on to next iteration - # centers = new_centers - # latest = cur - # cur = {} - # - # # return latest cluster iteration - # return latest - - # def euclidean_distance(self, point1, point2): - # """ - # Returns the Euclidean distance between two points on a plane. - # """ - # - # try: - # x1 = point1[0] - # y1 = point1[1] - # x2 = point2[0] - # y2 = point2[1] - # - # return math.sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2) - # except: - # return 200 - - # def angle_between_points(self, point1, point2): - # """ - # Returns the angle from the first point to the second, assuming that - # these points exist on a plane, and that the positive x-axis is 0 degrees - # and the positive y-axis is 90 degrees. All returned angles are positive - # and relative to the positive x-axis. - # """ - # - # try: - # x1 = point1[0] - # y1 = point1[1] - # x2 = point2[0] - # y2 = point2[1] - # - # # get components of vector between the points - # dx = x2 - x1 - # dy = y2 - y1 - # - # # return the angle in degrees - # a = math.degrees(math.atan2(dy, dx)) - # if a < 0: - # a = 360 + a - # - # return a - # except: - # return 0 - def __calculate_abs_info(self): if self.flags is not None: rel_coords = [] @@ -443,8 +284,6 @@ def is_kick_off_us(self): ko_left = WorldModel.PlayModes.KICK_OFF_L ko_right = WorldModel.PlayModes.KICK_OFF_R - # print self.play_mode - # return whether we're on the side that's kicking off return ( self.side == WorldModel.SIDE_L From a3de0dc6c4d442a955b8a6d1abf700077d1ea4b3 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Fri, 4 Jun 2021 12:59:58 +0200 Subject: [PATCH 159/188] clean trainer world model --- .../RoboCup_env/robocup_utils/sock.py | 15 ++++++++++++++- .../RoboCup_env/robocup_utils/sp_exceptions.py | 15 +++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/sock.py b/mava/utils/environments/RoboCup_env/robocup_utils/sock.py index 7a6f23c05..0e09b9a21 100755 --- a/mava/utils/environments/RoboCup_env/robocup_utils/sock.py +++ b/mava/utils/environments/RoboCup_env/robocup_utils/sock.py @@ -1,4 +1,17 @@ -# type: ignore +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import socket diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/sp_exceptions.py b/mava/utils/environments/RoboCup_env/robocup_utils/sp_exceptions.py index 5d01b8eeb..516395d0e 100755 --- a/mava/utils/environments/RoboCup_env/robocup_utils/sp_exceptions.py +++ b/mava/utils/environments/RoboCup_env/robocup_utils/sp_exceptions.py @@ -1,3 +1,18 @@ +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://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. + + class SoccerServerError(Exception): """ Represents an error message returned by the soccer server. From 2c6b506a2fb2a10a6b742be5ce6c1c538707fb87 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Fri, 4 Jun 2021 13:00:03 +0200 Subject: [PATCH 160/188] clean trainer world model --- .../robocup_utils/trainer_world_model.py | 45 ++++++------------- 1 file changed, 13 insertions(+), 32 deletions(-) diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/trainer_world_model.py b/mava/utils/environments/RoboCup_env/robocup_utils/trainer_world_model.py index a4e3f6ad2..8b1e0e4c2 100755 --- a/mava/utils/environments/RoboCup_env/robocup_utils/trainer_world_model.py +++ b/mava/utils/environments/RoboCup_env/robocup_utils/trainer_world_model.py @@ -1,15 +1,16 @@ -# type: ignore -# import math - -# import random - -# from mava.utils.environments.RoboCup_env.robocup_utils import ( -# game_object, -# message_parser, -# sp_exceptions, -# ) - - +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://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. class WorldModel: """ Holds and updates the model of the world as known from current and past @@ -103,24 +104,6 @@ def __init__(self, action_handler): # create a new server parameter object for holding all server params self.server_parameters = ServerParameters() - # def euclidean_distance(self, point1, point2): - # """ - # Returns the Euclidean distance between two points on a plane. - # """ - - # if point1 is not None and point1[0] is not None and - # point1[1] is not None - # and point2 is not None and point2[0] is not None and - # point2[1] is not None: - # x1 = point1[0] - # y1 = point1[1] - # x2 = point2[0] - # y2 = point2[1] - - # return math.sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2) - # except: - # return 200 - def process_new_info(self, ball, goals, players): """ Update any internal variables based on the currently available @@ -201,8 +184,6 @@ def is_kick_off_us(self): ko_left = WorldModel.PlayModes.KICK_OFF_L ko_right = WorldModel.PlayModes.KICK_OFF_R - # print self.play_mode - # return whether we're on the side that's kicking off return ( self.side == WorldModel.SIDE_L From 230ac7ea37893084199fb53e1a52336165900c75 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Fri, 4 Jun 2021 13:06:29 +0200 Subject: [PATCH 161/188] clean robocup env --- .../environments/RoboCup_env/RoboCup2D_env.py | 59 ------------------- .../robocup_agents/custom_executor.py | 1 + .../RoboCup_env/robocup_agents/fixed_agent.py | 2 + .../environments/RoboCup_env/robocup_base.py | 15 +++++ .../RoboCup_env/robocup_utils/agent.py | 4 +- .../robocup_utils/extract_policy.py | 3 + .../RoboCup_env/robocup_utils/game_object.py | 3 + .../RoboCup_env/robocup_utils/handler.py | 3 + .../robocup_utils/message_parser.py | 3 + .../robocup_utils/player_world_model.py | 3 + .../RoboCup_env/robocup_utils/sock.py | 3 + .../robocup_utils/sp_exceptions.py | 3 + .../RoboCup_env/robocup_utils/trainer.py | 17 +++++- .../robocup_utils/trainer_world_model.py | 3 + .../robocup_utils/util_functions.py | 15 +++++ 15 files changed, 74 insertions(+), 63 deletions(-) diff --git a/mava/utils/environments/RoboCup_env/RoboCup2D_env.py b/mava/utils/environments/RoboCup_env/RoboCup2D_env.py index e0bb78594..ae96675c7 100755 --- a/mava/utils/environments/RoboCup_env/RoboCup2D_env.py +++ b/mava/utils/environments/RoboCup_env/RoboCup2D_env.py @@ -148,9 +148,6 @@ def __init__( self.beta = 0.01 - # max_dist = 200 - # self.alpha = 1/(max_dist*game_length*(1+beta)) - # Start the server start_server(game_setting, include_wait, port) @@ -206,9 +203,6 @@ def step(self, actions: Dict[str, str]): # start_step = time.time() self.game_step += 1 - # if self.game_step > 1: - # self.tot_out_step += start_step-self.end_step - for agent_key, agent in self.agents.items(): agent.do_action(actions[agent_key]) @@ -216,25 +210,12 @@ def step(self, actions: Dict[str, str]): if self.trainer: self.trainer.send_done() - # if self.game_step > 1: - # inside_step_done = time.time() - # self.tot_in_step_no_wait += inside_step_done-start_step - # Wait for the environment to step and provide the next observations wait_for_next_observations([self.trainer]) # Check if done with game done = self.game_step > self.game_length - # if done: - # print("Time outside step: ", self.tot_out_step) - # print("Time inside step without wait: ", self.tot_in_step_no_wait) - # print("Time waiting for the server: ", self.tot_server_wait) - # - # self.tot_out_step = 0.0 - # self.tot_in_step_no_wait = 0.0 - # self.tot_server_wait = 0.0 - # Calculate rewards rewards = {} score_add = [ @@ -286,15 +267,8 @@ def step(self, actions: Dict[str, str]): ) ball_towards_goal = ball_goal_dist - ball_goal_delta_dist - # player_ball_dist = wm.euclidean_distance( - # player["coords"], wm.ball["coords"] - # ) next_x = float(player["coords"][0]) + float(player["delta_coords"][0]) next_y = float(player["coords"][1]) + float(player["delta_coords"][1]) - # player_ball_delta_dist = wm.euclidean_distance( - # (next_x, next_y), wm.ball["coords"] - # ) - # player_towards_ball = player_ball_dist - player_ball_delta_dist scored = score_add[team_id] - score_add[opponent_id] @@ -323,22 +297,6 @@ def step(self, actions: Dict[str, str]): rewards[agent_key] = np.array(reward, np.float32) - # self.end_step = time.time() - # if self.game_step > 1: - # self.tot_server_wait += self.end_step - inside_step_done - - # Return latest observations and states - - # obs = self.__get_latest_obs() - # state = self.__get_state() - - # if "estimated_coords" in obs["player_0"]: - # print("Coords: ", (obs["player_0"]["estimated_coords"].tolist(), - # state["players"][0]["coords"]), "Body angle: ", - # (obs["player_0"]["ang_offs"], state["players"][0]["body_angle"])) - # else: - # print("No location info.") - return self.__get_latest_obs(), rewards, self.__get_state(), done def reset(self): @@ -425,21 +383,4 @@ def __get_latest_obs(self): obs[agent_key] = obs_dict - # TODO: Delete the if else below - # if len(obs) == 1: - # state = self.trainer.get_state_dict() - # - # if len(state["players"]) > 0: - # obs["player_0"]["estimated_coords"] = - # np.array(state["players"][0]["coords"]) - # obs["player_0"]["ang_offs"] = state["players"][0]["body_angle"] - # else: - # obs["player_0"]["estimated_coords"] = [0.0, 0.0] - # obs["player_0"]["ang_offs"] = 0.0 - # - # # print("Agent: ", obs["player_0"]) - # # print("Trainer: ", self.trainer.get_state_dict()) - # else: - # print("Remove this trainer overwrite this!!!") - # exit() return obs diff --git a/mava/utils/environments/RoboCup_env/robocup_agents/custom_executor.py b/mava/utils/environments/RoboCup_env/robocup_agents/custom_executor.py index b0cc5d6b4..0e260fd47 100644 --- a/mava/utils/environments/RoboCup_env/robocup_agents/custom_executor.py +++ b/mava/utils/environments/RoboCup_env/robocup_agents/custom_executor.py @@ -1,3 +1,4 @@ +# type: ignore # python3 # Copyright 2021 [...placeholder...]. All rights reserved. # diff --git a/mava/utils/environments/RoboCup_env/robocup_agents/fixed_agent.py b/mava/utils/environments/RoboCup_env/robocup_agents/fixed_agent.py index 989d9b382..0f11d629f 100755 --- a/mava/utils/environments/RoboCup_env/robocup_agents/fixed_agent.py +++ b/mava/utils/environments/RoboCup_env/robocup_agents/fixed_agent.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. +# type: ignore + import numpy as np from mava.utils.environments.RoboCup_env.robocup_utils.util_functions import ( diff --git a/mava/utils/environments/RoboCup_env/robocup_base.py b/mava/utils/environments/RoboCup_env/robocup_base.py index 86f35ea27..7608360d8 100644 --- a/mava/utils/environments/RoboCup_env/robocup_base.py +++ b/mava/utils/environments/RoboCup_env/robocup_base.py @@ -1,3 +1,18 @@ +# python3 +# Copyright 2018 DeepMind Technologies Limited. All rights reserved. +# +# 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 +# +# http://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. + # type: ignore from typing import Tuple diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/agent.py b/mava/utils/environments/RoboCup_env/robocup_utils/agent.py index 81e6aeef2..5a2deca01 100755 --- a/mava/utils/environments/RoboCup_env/robocup_utils/agent.py +++ b/mava/utils/environments/RoboCup_env/robocup_utils/agent.py @@ -13,11 +13,11 @@ # See the License for the specific language governing permissions and # limitations under the License. +# type: ignore + import threading import time - -# import math import numpy as np from mava.utils.environments.RoboCup_env.robocup_utils import ( diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/extract_policy.py b/mava/utils/environments/RoboCup_env/robocup_utils/extract_policy.py index 66cc359d7..5900c9336 100644 --- a/mava/utils/environments/RoboCup_env/robocup_utils/extract_policy.py +++ b/mava/utils/environments/RoboCup_env/robocup_utils/extract_policy.py @@ -1,3 +1,4 @@ +# python3 # Copyright 2021 [...placeholder...]. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -12,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. +# type: ignore + import os import pickle diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/game_object.py b/mava/utils/environments/RoboCup_env/robocup_utils/game_object.py index 246c1ebf7..a04584a58 100755 --- a/mava/utils/environments/RoboCup_env/robocup_utils/game_object.py +++ b/mava/utils/environments/RoboCup_env/robocup_utils/game_object.py @@ -1,3 +1,4 @@ +# python3 # Copyright 2021 [...placeholder...]. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -11,6 +12,8 @@ # 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. + +# type: ignore class GameObject: """ Root class for all percievable objects in the world model. diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/handler.py b/mava/utils/environments/RoboCup_env/robocup_utils/handler.py index 2530faf3c..92a4811b7 100755 --- a/mava/utils/environments/RoboCup_env/robocup_utils/handler.py +++ b/mava/utils/environments/RoboCup_env/robocup_utils/handler.py @@ -1,3 +1,4 @@ +# python3 # Copyright 2021 [...placeholder...]. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -12,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. +# type: ignore + import collections import queue diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/message_parser.py b/mava/utils/environments/RoboCup_env/robocup_utils/message_parser.py index 262e27b4c..ed454876a 100755 --- a/mava/utils/environments/RoboCup_env/robocup_utils/message_parser.py +++ b/mava/utils/environments/RoboCup_env/robocup_utils/message_parser.py @@ -1,3 +1,4 @@ +# python3 # Copyright 2021 [...placeholder...]. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -12,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. +# type: ignore + import re # used to convert server value strings into actual python values diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/player_world_model.py b/mava/utils/environments/RoboCup_env/robocup_utils/player_world_model.py index a6591dbd0..4a4517fac 100755 --- a/mava/utils/environments/RoboCup_env/robocup_utils/player_world_model.py +++ b/mava/utils/environments/RoboCup_env/robocup_utils/player_world_model.py @@ -1,3 +1,4 @@ +# python3 # Copyright 2021 [...placeholder...]. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -12,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. +# type: ignore + import math import numpy as np diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/sock.py b/mava/utils/environments/RoboCup_env/robocup_utils/sock.py index 0e09b9a21..02d1e9b4f 100755 --- a/mava/utils/environments/RoboCup_env/robocup_utils/sock.py +++ b/mava/utils/environments/RoboCup_env/robocup_utils/sock.py @@ -1,3 +1,4 @@ +# python3 # Copyright 2021 [...placeholder...]. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -12,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. +# type: ignore + import socket diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/sp_exceptions.py b/mava/utils/environments/RoboCup_env/robocup_utils/sp_exceptions.py index 516395d0e..6b7368e3c 100755 --- a/mava/utils/environments/RoboCup_env/robocup_utils/sp_exceptions.py +++ b/mava/utils/environments/RoboCup_env/robocup_utils/sp_exceptions.py @@ -1,3 +1,4 @@ +# python3 # Copyright 2021 [...placeholder...]. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -12,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. +# type: ignore + class SoccerServerError(Exception): """ diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/trainer.py b/mava/utils/environments/RoboCup_env/robocup_utils/trainer.py index c086114c6..31ea65c80 100755 --- a/mava/utils/environments/RoboCup_env/robocup_utils/trainer.py +++ b/mava/utils/environments/RoboCup_env/robocup_utils/trainer.py @@ -1,7 +1,20 @@ -# type: ignore # !/usr/bin/env python3 +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://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. + +# type: ignore -# import os import random import threading import time diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/trainer_world_model.py b/mava/utils/environments/RoboCup_env/robocup_utils/trainer_world_model.py index 8b1e0e4c2..aab4210f5 100755 --- a/mava/utils/environments/RoboCup_env/robocup_utils/trainer_world_model.py +++ b/mava/utils/environments/RoboCup_env/robocup_utils/trainer_world_model.py @@ -1,3 +1,4 @@ +# python3 # Copyright 2021 [...placeholder...]. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -11,6 +12,8 @@ # 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. + +# type: ignore class WorldModel: """ Holds and updates the model of the world as known from current and past diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/util_functions.py b/mava/utils/environments/RoboCup_env/robocup_utils/util_functions.py index ecbd26846..9405c6fc4 100644 --- a/mava/utils/environments/RoboCup_env/robocup_utils/util_functions.py +++ b/mava/utils/environments/RoboCup_env/robocup_utils/util_functions.py @@ -1,3 +1,18 @@ +# python3 +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://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. + # type: ignore import time from typing import Dict, NamedTuple From 21db40db56174826918d8bc4d7c4dfd976224f97 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Fri, 4 Jun 2021 13:08:25 +0200 Subject: [PATCH 162/188] add todo to move wrapper to wrapper folder --- mava/utils/environments/RoboCup_env/robocup_base.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mava/utils/environments/RoboCup_env/robocup_base.py b/mava/utils/environments/RoboCup_env/robocup_base.py index 7608360d8..d943ebda0 100644 --- a/mava/utils/environments/RoboCup_env/robocup_base.py +++ b/mava/utils/environments/RoboCup_env/robocup_base.py @@ -24,6 +24,8 @@ from mava.utils.environments.RoboCup_env.RoboCup2D_env import RoboCup2D from mava.utils.environments.RoboCup_env.robocup_utils.util_functions import SpecWrapper +# TODO: move wrapper to mava/wrappers folder + class RoboCupWrapper(SpecWrapper): """Environment wrapper for 2D RoboCup environment.""" From 4890d444996f248388ff80143debbd6500def72b Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Fri, 4 Jun 2021 13:12:44 +0200 Subject: [PATCH 163/188] fix mypy issues - todo need to check typing --- .../environments/RoboCup_env/robocup_agents/custom_executor.py | 3 ++- mava/utils/environments/RoboCup_env/robocup_agents/nn_agent.py | 2 ++ mava/utils/environments/RoboCup_env/robocup_utils/__init__.py | 2 +- mava/utils/environments/RoboCup_env/robocup_utils/agent.py | 1 + .../environments/RoboCup_env/robocup_utils/message_parser.py | 2 +- 5 files changed, 7 insertions(+), 3 deletions(-) diff --git a/mava/utils/environments/RoboCup_env/robocup_agents/custom_executor.py b/mava/utils/environments/RoboCup_env/robocup_agents/custom_executor.py index 0e260fd47..b6bd70170 100644 --- a/mava/utils/environments/RoboCup_env/robocup_agents/custom_executor.py +++ b/mava/utils/environments/RoboCup_env/robocup_agents/custom_executor.py @@ -1,4 +1,3 @@ -# type: ignore # python3 # Copyright 2021 [...placeholder...]. All rights reserved. # @@ -14,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. +# type: ignore + from typing import Dict, Optional import dm_env diff --git a/mava/utils/environments/RoboCup_env/robocup_agents/nn_agent.py b/mava/utils/environments/RoboCup_env/robocup_agents/nn_agent.py index b673174f3..2dab2c3f2 100755 --- a/mava/utils/environments/RoboCup_env/robocup_agents/nn_agent.py +++ b/mava/utils/environments/RoboCup_env/robocup_agents/nn_agent.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. +# type: ignore + import os from typing import Any, Dict, Mapping, MutableSequence, Sequence, Union diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/__init__.py b/mava/utils/environments/RoboCup_env/robocup_utils/__init__.py index 06240e71c..f6af6a34e 100755 --- a/mava/utils/environments/RoboCup_env/robocup_utils/__init__.py +++ b/mava/utils/environments/RoboCup_env/robocup_utils/__init__.py @@ -11,4 +11,4 @@ # 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. \ No newline at end of file +# limitations under the License. diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/agent.py b/mava/utils/environments/RoboCup_env/robocup_utils/agent.py index 5a2deca01..f03c0c4c0 100755 --- a/mava/utils/environments/RoboCup_env/robocup_utils/agent.py +++ b/mava/utils/environments/RoboCup_env/robocup_utils/agent.py @@ -18,6 +18,7 @@ import threading import time + import numpy as np from mava.utils.environments.RoboCup_env.robocup_utils import ( diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/message_parser.py b/mava/utils/environments/RoboCup_env/robocup_utils/message_parser.py index ed454876a..ca98b6ca2 100755 --- a/mava/utils/environments/RoboCup_env/robocup_utils/message_parser.py +++ b/mava/utils/environments/RoboCup_env/robocup_utils/message_parser.py @@ -152,4 +152,4 @@ def parse(text): # noqa: C901 # append the first '('. return result[0] else: - return None \ No newline at end of file + return None From 4e11825c6131085451dcbaa9206b677362095ac2 Mon Sep 17 00:00:00 2001 From: Dries Date: Fri, 4 Jun 2021 15:13:04 +0200 Subject: [PATCH 164/188] fix: Moved RoboCup files to their appropriate places in Mava. --- .../run_state_based_recurrent_mad4pg.py | 17 +----- mava/utils/environments/robocup_utils.py | 60 +++++++++++++++++++ mava/wrappers/__init__.py | 1 + .../robocup_base.py => wrappers/robocup.py} | 39 ------------ 4 files changed, 64 insertions(+), 53 deletions(-) create mode 100644 mava/utils/environments/robocup_utils.py rename mava/{utils/environments/RoboCup_env/robocup_base.py => wrappers/robocup.py} (71%) diff --git a/examples/robocup/run_state_based_recurrent_mad4pg.py b/examples/robocup/run_state_based_recurrent_mad4pg.py index 16c78324c..697446285 100644 --- a/examples/robocup/run_state_based_recurrent_mad4pg.py +++ b/examples/robocup/run_state_based_recurrent_mad4pg.py @@ -4,7 +4,6 @@ from datetime import datetime from typing import Any -import dm_env import launchpad as lp from absl import app, flags from launchpad.nodes.python.local_multi_processing import PythonProcess @@ -14,10 +13,10 @@ from mava.systems.tf.mad4pg.execution import MAD4PGRecurrentExecutor from mava.systems.tf.mad4pg.training import MAD4PGStateBasedRecurrentTrainer from mava.utils import lp_utils +from mava.utils.environments import robocup_utils from mava.utils.environments.RoboCup_env.robocup_agents.nn_agent import ( make_recurrent_networks as make_networks, ) -from mava.utils.environments.RoboCup_env.robocup_base import create_robocup_environment from mava.utils.loggers import logger_utils FLAGS = flags.FLAGS @@ -27,27 +26,17 @@ "Experiment identifier that can be used to continue experiments.", ) -flags.DEFINE_string("num_executors", "6", "The number of executors to run.") +flags.DEFINE_string("num_executors", "2", "The number of executors to run.") flags.DEFINE_string("base_dir", "~/mava/", "Base dir to store experiments.") -def make_environment(**kwargs) -> dm_env.Environment: - """Creates a MPE environment.""" - - def environment_fn(**kwargs): - return create_robocup_environment(game_name="domain_randomisation", **kwargs) - - return environment_fn - - def main(_: Any) -> None: # Environment # Create an environment, grab the spec, and use it to create networks. - environment_fn = make_environment() # Neural Networks # Create the networks - environment_factory = lp_utils.partial_kwargs(environment_fn) + environment_factory = lp_utils.partial_kwargs(robocup_utils.make_environment) network_factory = lp_utils.partial_kwargs(make_networks) # Checkpointer appends "Checkpoints" to checkpoint_dir diff --git a/mava/utils/environments/robocup_utils.py b/mava/utils/environments/robocup_utils.py new file mode 100644 index 000000000..fb5c85b60 --- /dev/null +++ b/mava/utils/environments/robocup_utils.py @@ -0,0 +1,60 @@ +# python3 +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://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. + +"""Pettingzoo environment factory.""" + +import dm_env +import numpy as np + +from mava.utils.environments.RoboCup_env.RoboCup2D_env import RoboCup2D +from mava.wrappers.robocup import RoboCupWrapper + + +def make_environment( + game_name: str = "domain_randomisation", + evaluation: bool = False, +) -> dm_env.Environment: + """Wraps the Robocup environment with some basic preprocessing. + + Args: + game_name: str, the name of the Robocup game setting. + evaluation: bool, to change the behaviour during evaluation. + + Returns: + A Robocup environment with some standard preprocessing. + """ + + # Create environment + if game_name == "domain_randomisation": + players_per_team = [1, 0] + elif game_name == "reward_shaping": + players_per_team = [1, 0] + # elif game_name == "fixed_opponent": + # players_per_team = [2, 2] + else: + raise NotImplementedError("Game type not implemented: ", game_name) + + # TODO: Change this to better assign ports + rand_port = np.random.randint(6000, 60000) + robocup_env = RoboCup2D( + game_setting=game_name, + team_names=["Team_A", "Team_B"], + players_per_team=players_per_team, + render_game=False, + include_wait=False, + game_length=1000, + port=rand_port, + ) + return RoboCupWrapper(robocup_env) diff --git a/mava/wrappers/__init__.py b/mava/wrappers/__init__.py index 02a95a511..beee9cab4 100644 --- a/mava/wrappers/__init__.py +++ b/mava/wrappers/__init__.py @@ -24,6 +24,7 @@ PettingZooAECEnvWrapper, PettingZooParallelEnvWrapper, ) +from mava.wrappers.robocup import RoboCupWrapper # TODO only import smac if the user needs it. from mava.wrappers.smac import SMACEnvWrapper diff --git a/mava/utils/environments/RoboCup_env/robocup_base.py b/mava/wrappers/robocup.py similarity index 71% rename from mava/utils/environments/RoboCup_env/robocup_base.py rename to mava/wrappers/robocup.py index d943ebda0..c1694d3df 100644 --- a/mava/utils/environments/RoboCup_env/robocup_base.py +++ b/mava/wrappers/robocup.py @@ -24,8 +24,6 @@ from mava.utils.environments.RoboCup_env.RoboCup2D_env import RoboCup2D from mava.utils.environments.RoboCup_env.robocup_utils.util_functions import SpecWrapper -# TODO: move wrapper to mava/wrappers folder - class RoboCupWrapper(SpecWrapper): """Environment wrapper for 2D RoboCup environment.""" @@ -85,40 +83,3 @@ def environment(self) -> gym.Env: def close(self): self._environment.close() - - -def create_robocup_environment( - game_name: str, evaluation: bool = False -) -> dm_env.Environment: - """Wraps the Robocup environment with some basic preprocessing. - - Args: - game_name: str, the name of the Robocup game setting. - evaluation: bool, to change the behaviour during evaluation. - - Returns: - A Robocup environment with some standard preprocessing. - """ - - # Create environment - if game_name == "domain_randomisation": - players_per_team = [1, 0] - elif game_name == "reward_shaping": - players_per_team = [1, 0] - # elif game_name == "fixed_opponent": - # players_per_team = [2, 2] - else: - raise NotImplementedError("Game type not implemented: ", game_name) - - # TODO: Change this to better assign ports - rand_port = np.random.randint(6000, 60000) - robocup_env = RoboCup2D( - game_setting=game_name, - team_names=["Team_A", "Team_B"], - players_per_team=players_per_team, - render_game=False, - include_wait=False, - game_length=1000, - port=rand_port, - ) - return RoboCupWrapper(robocup_env) From 0dbf259e19cf41052add4ed9a59041653b3334ce Mon Sep 17 00:00:00 2001 From: Dries Date: Fri, 4 Jun 2021 15:44:08 +0200 Subject: [PATCH 165/188] feature: Update the main README.md with the RoboCup installation process. --- README.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4a38d6e8d..1fa524834 100644 --- a/README.md +++ b/README.md @@ -153,6 +153,12 @@ We have tested `mava` on Python 3.6, 3.7 and 3.8. ```bash ./install_sc2.sh +3. Install 2D RoboCup environment [Optional]: + To install the environment, please run the robocup docker build command after running the Mava docker build command. + ```bash + make build + make build_robocup + ``` ### Python virtual environment 1. If not using docker, we strongly recommend using a @@ -188,7 +194,10 @@ We have tested `mava` on Python 3.6, 3.7 and 3.8. pip install pysc2 pip install git+https://github.com/oxwhirl/smac.git ``` - +3. Install 2D RoboCup environment: + A local install of the 2D RoboCup environment has only been tested using the Ubuntu 18.04 operating system. + The installation can be performed by running all the commands, inside the Dockerfile.robocup, manually while inside the Mava + python virtual environment. We also have a list of [optional installs](OPTIONAL_INSTALL.md) for extra functionality such as the use of Atari environments, environment wrappers, gpu support and agent episode recording. ## Debugging From b67749b6f9e0ad8b47c544b6e2ea5fd191310130 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Fri, 4 Jun 2021 15:48:59 +0200 Subject: [PATCH 166/188] correct copyright --- mava/wrappers/robocup.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mava/wrappers/robocup.py b/mava/wrappers/robocup.py index c1694d3df..9d873b907 100644 --- a/mava/wrappers/robocup.py +++ b/mava/wrappers/robocup.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2018 DeepMind Technologies Limited. All rights reserved. +# Copyright 2021 [...placeholder...]. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -# type: ignore from typing import Tuple import dm_env From a8d4219ac3fe45a5b76f0ebd79ac9876e31ce158 Mon Sep 17 00:00:00 2001 From: Dries Date: Fri, 4 Jun 2021 15:49:53 +0200 Subject: [PATCH 167/188] fix: Update the readme file. --- README.md | 7 ++++--- install_robocup.sh | 49 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 3 deletions(-) create mode 100755 install_robocup.sh diff --git a/README.md b/README.md index 1fa524834..e2bb5c04b 100644 --- a/README.md +++ b/README.md @@ -194,10 +194,11 @@ We have tested `mava` on Python 3.6, 3.7 and 3.8. pip install pysc2 pip install git+https://github.com/oxwhirl/smac.git ``` -3. Install 2D RoboCup environment: - A local install of the 2D RoboCup environment has only been tested using the Ubuntu 18.04 operating system. - The installation can be performed by running all the commands, inside the Dockerfile.robocup, manually while inside the Mava +3. For the 2D RoboCup environment, a local install has only been tested using the Ubuntu 18.04 operating system. + The installation can be performed by running the robocup bash script while inside the Mava python virtual environment. + ```bash + ./install_sc2.sh We also have a list of [optional installs](OPTIONAL_INSTALL.md) for extra functionality such as the use of Atari environments, environment wrappers, gpu support and agent episode recording. ## Debugging diff --git a/install_robocup.sh b/install_robocup.sh new file mode 100755 index 000000000..1dca35651 --- /dev/null +++ b/install_robocup.sh @@ -0,0 +1,49 @@ +sudo apt-get update \ + && apt-get install -y --no-install-recommends \ + apt-utils \ + build-essential \ + curl \ + xvfb \ + ffmpeg \ + xorg-dev \ + libsdl2-dev \ + swig \ + cmake \ + python-opengl + +# fetch repo / ppa packages, etc +sudo apt-get -y update --fix-missing +# Install package, that hangs the operation, separately +sudo DEBIAN_FRONTEND=noninteractive apt install -y tzdata + +sudo apt update && \ + apt -y install autoconf bison clang flex libboost-dev libboost-all-dev libc6-dev make wget + +sudo apt -y install build-essential libboost-all-dev qt5-default libfontconfig1-dev libaudio-dev libxt-dev libglib2.0-dev libxi-dev libxrender-dev libboost-all-dev + +sudo wget https://github.com/rcsoccersim/rcssserver/archive/rcssserver-16.0.0.tar.gz && \ + tar xfz rcssserver-16.0.0.tar.gz && \ + cd rcssserver-rcssserver-16.0.0 && \ + ./bootstrap && \ + ./configure && \ + make && \ + make install && \ + ldconfig + +sudo wget https://github.com/rcsoccersim/rcssmonitor/archive/rcssmonitor-16.0.0.tar.gz && \ + tar xfz rcssmonitor-16.0.0.tar.gz && \ + cd rcssmonitor-rcssmonitor-16.0.0 && \ + ./bootstrap && \ + ./configure && \ + make && \ + make install && \ + ldconfig + +sudo ldconfig && \ + apt update && \ + apt install -y libboost-filesystem1.65.1 libboost-system1.65.1 libboost-program-options-dev tmux + +sudo apt-get install -y libqt5widgets5 +# RUN pip install hydra-core + +# ENV PYTHONPATH '/home' From be2c61ec3cd7bbe53e7d49192ecd2d5bc2470960 Mon Sep 17 00:00:00 2001 From: Dries Date: Fri, 4 Jun 2021 15:51:06 +0200 Subject: [PATCH 168/188] Small changes. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e2bb5c04b..e4fda76bb 100644 --- a/README.md +++ b/README.md @@ -195,10 +195,10 @@ We have tested `mava` on Python 3.6, 3.7 and 3.8. pip install git+https://github.com/oxwhirl/smac.git ``` 3. For the 2D RoboCup environment, a local install has only been tested using the Ubuntu 18.04 operating system. - The installation can be performed by running the robocup bash script while inside the Mava + The installation can be performed by running the RoboCup bash script while inside the Mava python virtual environment. ```bash - ./install_sc2.sh + ./install_robocup.sh We also have a list of [optional installs](OPTIONAL_INSTALL.md) for extra functionality such as the use of Atari environments, environment wrappers, gpu support and agent episode recording. ## Debugging From 0f2633cb1d39fe8c081f5796a2471a4eb3e4d082 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Fri, 4 Jun 2021 15:57:09 +0200 Subject: [PATCH 169/188] add inits and update typing --- .../environments/RoboCup_env/__init__.py | 0 .../RoboCup_env/robocup_agents/__init__.py | 0 .../environments/RoboCup_env/robocup_base.py | 124 ++++++++++++++++++ mava/wrappers/robocup.py | 4 +- 4 files changed, 126 insertions(+), 2 deletions(-) create mode 100644 mava/utils/environments/RoboCup_env/__init__.py create mode 100644 mava/utils/environments/RoboCup_env/robocup_agents/__init__.py create mode 100644 mava/utils/environments/RoboCup_env/robocup_base.py diff --git a/mava/utils/environments/RoboCup_env/__init__.py b/mava/utils/environments/RoboCup_env/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/mava/utils/environments/RoboCup_env/robocup_agents/__init__.py b/mava/utils/environments/RoboCup_env/robocup_agents/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/mava/utils/environments/RoboCup_env/robocup_base.py b/mava/utils/environments/RoboCup_env/robocup_base.py new file mode 100644 index 000000000..628c33e4f --- /dev/null +++ b/mava/utils/environments/RoboCup_env/robocup_base.py @@ -0,0 +1,124 @@ +# python3 +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://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. + +# type: ignore +from typing import Tuple + +import dm_env +import gym +import numpy as np +from acme import types + +from mava.utils.environments.RoboCup_env.RoboCup2D_env import RoboCup2D +from mava.utils.environments.RoboCup_env.robocup_utils.util_functions import SpecWrapper + +# TODO: move wrapper to mava/wrappers folder + + +class RoboCupWrapper(SpecWrapper): + """Environment wrapper for 2D RoboCup environment.""" + + # Note: we don't inherit from base.EnvironmentWrapper because that class + # assumes that the wrapped environment is a dm_env.Environment. + + def __init__(self, environment: RoboCup2D): + self._environment = environment + self._reset_next_step = True + assert environment.game_setting in ["reward_shaping", "domain_randomisation"] + + super().__init__(environment.num_players) + + def reset(self) -> Tuple[dm_env.TimeStep, np.array]: + """Resets the episode.""" + self._reset_next_step = False + raw_obs, _, state = self._environment.reset() + proc_obs = self._proc_robocup_obs(observations=raw_obs, done=False) + proccessed_state = self._proc_robocup_state(state, proc_obs) + timestep = dm_env.restart(proc_obs) + return timestep, {"env_state": proccessed_state} + + def step(self, nn_actions: types.NestedArray) -> Tuple[dm_env.TimeStep, np.array]: + """Steps the environment.""" + if self._reset_next_step: + return self.reset() + + actions = self._proc_robocup_actions(nn_actions) + raw_obs, rewards, state, done = self._environment.step(actions) + self._reset_next_step = done + + proc_obs = self._proc_robocup_obs( + observations=raw_obs, done=done, nn_actions=nn_actions + ) + proccessed_state = self._proc_robocup_state(state, proc_obs) + + if done: + self._step_type = dm_env.StepType.LAST + else: + self._step_type = dm_env.StepType.MID + + return ( + dm_env.TimeStep( + observation=proc_obs, + reward=rewards, + discount=self._discount, + step_type=self._step_type, + ), + {"env_state": proccessed_state}, + ) + + @property + def environment(self) -> gym.Env: + """Returns the wrapped environment.""" + return self._environment + + def close(self): + self._environment.close() + + +def create_robocup_environment( + game_name: str, evaluation: bool = False +) -> dm_env.Environment: + """Wraps the Robocup environment with some basic preprocessing. + + Args: + game_name: str, the name of the Robocup game setting. + evaluation: bool, to change the behaviour during evaluation. + + Returns: + A Robocup environment with some standard preprocessing. + """ + + # Create environment + if game_name == "domain_randomisation": + players_per_team = [1, 0] + elif game_name == "reward_shaping": + players_per_team = [1, 0] + # elif game_name == "fixed_opponent": + # players_per_team = [2, 2] + else: + raise NotImplementedError("Game type not implemented: ", game_name) + + # TODO: Change this to better assign ports + rand_port = np.random.randint(6000, 60000) + robocup_env = RoboCup2D( + game_setting=game_name, + team_names=["Team_A", "Team_B"], + players_per_team=players_per_team, + render_game=False, + include_wait=False, + game_length=1000, + port=rand_port, + ) + return RoboCupWrapper(robocup_env) diff --git a/mava/wrappers/robocup.py b/mava/wrappers/robocup.py index 9d873b907..44b7ea6ba 100644 --- a/mava/wrappers/robocup.py +++ b/mava/wrappers/robocup.py @@ -30,7 +30,7 @@ class RoboCupWrapper(SpecWrapper): # Note: we don't inherit from base.EnvironmentWrapper because that class # assumes that the wrapped environment is a dm_env.Environment. - def __init__(self, environment: RoboCup2D): + def __init__(self, environment: RoboCup2D) -> None: self._environment = environment self._reset_next_step = True assert environment.game_setting in ["reward_shaping", "domain_randomisation"] @@ -80,5 +80,5 @@ def environment(self) -> gym.Env: """Returns the wrapped environment.""" return self._environment - def close(self): + def close(self) -> None: self._environment.close() From 0e2b586528076a268fbb16e0c23b1d04f10a1bef Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Fri, 4 Jun 2021 15:58:54 +0200 Subject: [PATCH 170/188] copy stubs to inits --- mava/utils/environments/RoboCup_env/__init__.py | 14 ++++++++++++++ .../RoboCup_env/robocup_agents/__init__.py | 14 ++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/mava/utils/environments/RoboCup_env/__init__.py b/mava/utils/environments/RoboCup_env/__init__.py index e69de29bb..06240e71c 100644 --- a/mava/utils/environments/RoboCup_env/__init__.py +++ b/mava/utils/environments/RoboCup_env/__init__.py @@ -0,0 +1,14 @@ +# python3 +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://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. \ No newline at end of file diff --git a/mava/utils/environments/RoboCup_env/robocup_agents/__init__.py b/mava/utils/environments/RoboCup_env/robocup_agents/__init__.py index e69de29bb..06240e71c 100644 --- a/mava/utils/environments/RoboCup_env/robocup_agents/__init__.py +++ b/mava/utils/environments/RoboCup_env/robocup_agents/__init__.py @@ -0,0 +1,14 @@ +# python3 +# Copyright 2021 [...placeholder...]. All rights reserved. +# +# 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 +# +# http://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. \ No newline at end of file From b9f960c0a0d3a4e3f3f67332defca51a45bcd6f3 Mon Sep 17 00:00:00 2001 From: Dries Date: Fri, 4 Jun 2021 16:21:38 +0200 Subject: [PATCH 171/188] Fix mypy. --- .../environments/RoboCup_env/RoboCup2D_env.py | 60 +++++++++++-------- mava/wrappers/robocup.py | 8 +-- 2 files changed, 39 insertions(+), 29 deletions(-) diff --git a/mava/utils/environments/RoboCup_env/RoboCup2D_env.py b/mava/utils/environments/RoboCup_env/RoboCup2D_env.py index ae96675c7..4355d42a4 100755 --- a/mava/utils/environments/RoboCup_env/RoboCup2D_env.py +++ b/mava/utils/environments/RoboCup_env/RoboCup2D_env.py @@ -1,20 +1,25 @@ -# type: ignore import multiprocessing as mp import os import time -from typing import Dict +from typing import Any, Dict, List, Tuple import numpy as np -from mava.utils.environments.RoboCup_env.robocup_utils.agent import Agent as basic_agent -from mava.utils.environments.RoboCup_env.robocup_utils.trainer import Trainer -from mava.utils.environments.RoboCup_env.robocup_utils.util_functions import ( +from mava.utils.environments.RoboCup_env.robocup_utils.agent import ( # type: ignore # noqa: E501 + Agent as basic_agent, +) +from mava.utils.environments.RoboCup_env.robocup_utils.trainer import ( # type: ignore # noqa: E501 + Trainer, +) +from mava.utils.environments.RoboCup_env.robocup_utils.util_functions import ( # type: ignore # noqa: E501 wait_for_next_observations, ) # spawn an agent of team_name, with position -def spawn_agent(team_name, team_id, agent_id, num_players, port): +def spawn_agent( + team_name: str, team_id: int, agent_id: int, num_players: int, port: int +) -> basic_agent: """ Used to run an agent in a seperate physical process. """ @@ -26,7 +31,7 @@ def spawn_agent(team_name, team_id, agent_id, num_players, port): return a -def run_server_thread(game_setting, include_wait, port): +def run_server_thread(game_setting: str, include_wait: bool, port: int) -> None: # ./usr/local/bin/rcssmonitor command = ( "/usr/local/bin/rcssserver -server::coach_w_referee=on" @@ -60,18 +65,18 @@ def run_server_thread(game_setting, include_wait, port): os.system(command) -def start_trainer(port): +def start_trainer(port: int) -> Trainer: trainer = Trainer() trainer.connect("localhost", port + 1) return trainer -def run_monitor_thread(port): +def run_monitor_thread(port: int) -> None: # ./usr/local/bin/rcssmonitor os.system("/usr/local/bin/rcssmonitor --server-port=" + str(port)) -def start_server(game_setting, include_wait, port): +def start_server(game_setting: str, include_wait: bool, port: int) -> None: # Wait for server to startup completely # print("mode: ", mode) at = mp.Process(target=run_server_thread, args=(game_setting, include_wait, port)) @@ -80,7 +85,7 @@ def start_server(game_setting, include_wait, port): time.sleep(0.2) -def start_monitor(port): +def start_monitor(port: int) -> None: # Wait for monitor process to complete at = mp.Process(target=run_monitor_thread, args=(port,)) at.daemon = True @@ -88,7 +93,14 @@ def start_monitor(port): time.sleep(0.2) -def connect_agents(team_name, team_id, num_per_team, num_players, start_id, port): +def connect_agents( + team_name: str, + team_id: int, + num_per_team: int, + num_players: int, + start_id: int, + port: int, +) -> List: # spawn all agents as seperate processes for maximum processing efficiency agents = [] for agent_id in range(start_id, start_id + num_per_team): @@ -110,14 +122,14 @@ def connect_agents(team_name, team_id, num_per_team, num_players, start_id, port class RoboCup2D: def __init__( self, - game_setting="reward_shaping", - include_wait=False, - team_names=["Team1", "Team2"], - players_per_team=11, - render_game=False, - game_length=6000, - beta=0.1, - port=6000, + game_setting: str = "reward_shaping", + include_wait: bool = False, + team_names: List = ["Team1", "Team2"], + players_per_team: List = [11, 11], + render_game: bool = False, + game_length: int = 6000, + beta: float = 0.1, + port: int = 6000, ): self.game_setting = game_setting @@ -198,7 +210,7 @@ def __init__( self.agents["player_" + str(agent.agent_id)] = agent start_id += players_per_team[t_i] - def step(self, actions: Dict[str, str]): + def step(self, actions: Dict[str, Any]) -> Tuple[Any, Any, Any, Any]: # Do agent update # start_step = time.time() self.game_step += 1 @@ -299,7 +311,7 @@ def step(self, actions: Dict[str, str]): return self.__get_latest_obs(), rewards, self.__get_state(), done - def reset(self): + def reset(self) -> Tuple[Any, Any, Any]: self.game_step = 0 if self.game_setting == "domain_randomisation": goal_diff = self.game_scores[0] - self.game_scores[1] @@ -362,7 +374,7 @@ def reset(self): wait_for_next_observations([self.trainer]) return self.__get_latest_obs(), rewards, self.__get_state() - def __get_state(self): + def __get_state(self) -> Dict[str, Any]: # Return latest observations to agents state_dict = self.trainer.get_state_dict() # TODO: Return per agent states. The states should be mirrored. So a critic and @@ -372,7 +384,7 @@ def __get_state(self): state_dict["game_length"] = self.game_length return state_dict - def __get_latest_obs(self): + def __get_latest_obs(self) -> Dict[str, Any]: # Return latest observations to agents obs = {} for agent_key, agent in self.agents.items(): diff --git a/mava/wrappers/robocup.py b/mava/wrappers/robocup.py index c1694d3df..2c5ae636a 100644 --- a/mava/wrappers/robocup.py +++ b/mava/wrappers/robocup.py @@ -13,7 +13,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -# type: ignore from typing import Tuple import dm_env @@ -22,7 +21,9 @@ from acme import types from mava.utils.environments.RoboCup_env.RoboCup2D_env import RoboCup2D -from mava.utils.environments.RoboCup_env.robocup_utils.util_functions import SpecWrapper +from mava.utils.environments.RoboCup_env.robocup_utils.util_functions import ( # type: ignore # noqa: E501 + SpecWrapper, +) class RoboCupWrapper(SpecWrapper): @@ -80,6 +81,3 @@ def step(self, nn_actions: types.NestedArray) -> Tuple[dm_env.TimeStep, np.array def environment(self) -> gym.Env: """Returns the wrapped environment.""" return self._environment - - def close(self): - self._environment.close() From cfdbc48005da3c18d1b0486db275048ccd834e10 Mon Sep 17 00:00:00 2001 From: Dries Date: Fri, 4 Jun 2021 16:26:16 +0200 Subject: [PATCH 172/188] Automatically reformat code. --- mava/utils/environments/RoboCup_env/__init__.py | 2 +- mava/utils/environments/RoboCup_env/robocup_agents/__init__.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mava/utils/environments/RoboCup_env/__init__.py b/mava/utils/environments/RoboCup_env/__init__.py index 06240e71c..f6af6a34e 100644 --- a/mava/utils/environments/RoboCup_env/__init__.py +++ b/mava/utils/environments/RoboCup_env/__init__.py @@ -11,4 +11,4 @@ # 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. \ No newline at end of file +# limitations under the License. diff --git a/mava/utils/environments/RoboCup_env/robocup_agents/__init__.py b/mava/utils/environments/RoboCup_env/robocup_agents/__init__.py index 06240e71c..f6af6a34e 100644 --- a/mava/utils/environments/RoboCup_env/robocup_agents/__init__.py +++ b/mava/utils/environments/RoboCup_env/robocup_agents/__init__.py @@ -11,4 +11,4 @@ # 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. \ No newline at end of file +# limitations under the License. From 886d9027e727bb557cde075d14ef28c3f3b90014 Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Fri, 4 Jun 2021 16:36:19 +0200 Subject: [PATCH 173/188] update stub --- mava/utils/environments/RoboCup_env/helper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mava/utils/environments/RoboCup_env/helper.py b/mava/utils/environments/RoboCup_env/helper.py index f982c2917..238fa070a 100644 --- a/mava/utils/environments/RoboCup_env/helper.py +++ b/mava/utils/environments/RoboCup_env/helper.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2018 DeepMind Technologies Limited. All rights reserved. +# Copyright 2021 [...placeholder...]. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. From 8e0556c93c7936af7296f57956f71f879d99426b Mon Sep 17 00:00:00 2001 From: Kale-ab Date: Mon, 7 Jun 2021 11:22:42 +0200 Subject: [PATCH 174/188] feature: Make checkpointing optional. --- mava/systems/tf/dial/system.py | 6 ++++-- mava/systems/tf/maddpg/system.py | 6 ++++-- mava/systems/tf/madqn/system.py | 6 ++++-- mava/systems/tf/mappo/system.py | 6 ++++-- tests/systems/maddpg_system_test.py | 9 --------- tests/systems/madqn_system_test.py | 9 --------- tests/systems/mappo_system_test.py | 9 --------- 7 files changed, 16 insertions(+), 35 deletions(-) diff --git a/mava/systems/tf/dial/system.py b/mava/systems/tf/dial/system.py index 9570ef437..68db5936c 100644 --- a/mava/systems/tf/dial/system.py +++ b/mava/systems/tf/dial/system.py @@ -440,12 +440,14 @@ def evaluator( def build(self, name: str = "madqn") -> Any: """Build the distributed system topology.""" program = lp.Program(name=name) + counter = None with program.group("replay"): replay = program.add_node(lp.ReverbNode(self.replay)) - with program.group("counter"): - counter = program.add_node(lp.CourierNode(self.counter)) + if self._checkpoint: + with program.group("counter"): + counter = program.add_node(lp.CourierNode(self.counter)) if self._max_executor_steps: with program.group("coordinator"): diff --git a/mava/systems/tf/maddpg/system.py b/mava/systems/tf/maddpg/system.py index aa44538fe..ebdd82ed2 100644 --- a/mava/systems/tf/maddpg/system.py +++ b/mava/systems/tf/maddpg/system.py @@ -418,12 +418,14 @@ def evaluator( def build(self, name: str = "maddpg") -> Any: """Build the distributed system topology.""" program = lp.Program(name=name) + counter = None with program.group("replay"): replay = program.add_node(lp.ReverbNode(self.replay)) - with program.group("counter"): - counter = program.add_node(lp.CourierNode(self.counter)) + if self._checkpoint: + with program.group("counter"): + counter = program.add_node(lp.CourierNode(self.counter)) if self._max_executor_steps: with program.group("coordinator"): diff --git a/mava/systems/tf/madqn/system.py b/mava/systems/tf/madqn/system.py index 607affc4d..17d455d27 100644 --- a/mava/systems/tf/madqn/system.py +++ b/mava/systems/tf/madqn/system.py @@ -437,12 +437,14 @@ def evaluator( def build(self, name: str = "madqn") -> Any: """Build the distributed system topology.""" program = lp.Program(name=name) + counter = None with program.group("replay"): replay = program.add_node(lp.ReverbNode(self.replay)) - with program.group("counter"): - counter = program.add_node(lp.CourierNode(self.counter)) + if self._checkpoint: + with program.group("counter"): + counter = program.add_node(lp.CourierNode(self.counter)) if self._max_executor_steps: with program.group("coordinator"): diff --git a/mava/systems/tf/mappo/system.py b/mava/systems/tf/mappo/system.py index 3bbe186bb..b69841344 100644 --- a/mava/systems/tf/mappo/system.py +++ b/mava/systems/tf/mappo/system.py @@ -362,12 +362,14 @@ def evaluator( def build(self, name: str = "mappo") -> Any: """Build the distributed system topology.""" program = lp.Program(name=name) + counter = None with program.group("replay"): replay = program.add_node(lp.ReverbNode(self.replay)) - with program.group("counter"): - counter = program.add_node(lp.CourierNode(self.counter)) + if self._checkpoint: + with program.group("counter"): + counter = program.add_node(lp.CourierNode(self.counter)) if self._max_executor_steps: with program.group("coordinator"): diff --git a/tests/systems/maddpg_system_test.py b/tests/systems/maddpg_system_test.py index e3cd35f1b..2f46781ce 100644 --- a/tests/systems/maddpg_system_test.py +++ b/tests/systems/maddpg_system_test.py @@ -115,12 +115,6 @@ def test_maddpg_on_debugging_env(self) -> None: """Tests that the system can run on the simple spread debugging environment without crashing.""" - # set loggers info - # TODO Allow for no checkpointing and no loggers to be - # passed in. - mava_id = "tests/maddpg" - base_dir = "~/mava" - # environment environment_factory = functools.partial( debugging_utils.make_environment, @@ -132,8 +126,6 @@ def test_maddpg_on_debugging_env(self) -> None: network_factory = lp_utils.partial_kwargs(make_networks) # system - checkpoint_dir = f"{base_dir}/{mava_id}" - system = maddpg.MADDPG( environment_factory=environment_factory, network_factory=network_factory, @@ -144,7 +136,6 @@ def test_maddpg_on_debugging_env(self) -> None: policy_optimizer=snt.optimizers.Adam(learning_rate=1e-4), critic_optimizer=snt.optimizers.Adam(learning_rate=1e-4), checkpoint=False, - checkpoint_subpath=checkpoint_dir, ) program = system.build() diff --git a/tests/systems/madqn_system_test.py b/tests/systems/madqn_system_test.py index 21367e29f..50255eabe 100644 --- a/tests/systems/madqn_system_test.py +++ b/tests/systems/madqn_system_test.py @@ -90,12 +90,6 @@ def test_madqn_on_debugging_env(self) -> None: """Tests that the system can run on the simple spread debugging environment without crashing.""" - # set loggers info - # TODO Allow for no checkpointing and no loggers to be - # passed in. - mava_id = "tests/madqn" - base_dir = "~/mava" - # environment environment_factory = functools.partial( debugging_utils.make_environment, @@ -107,8 +101,6 @@ def test_madqn_on_debugging_env(self) -> None: network_factory = lp_utils.partial_kwargs(make_networks) # system - checkpoint_dir = f"{base_dir}/{mava_id}" - system = madqn.MADQN( environment_factory=environment_factory, network_factory=network_factory, @@ -118,7 +110,6 @@ def test_madqn_on_debugging_env(self) -> None: max_replay_size=1000, optimizer=snt.optimizers.Adam(learning_rate=1e-3), checkpoint=False, - checkpoint_subpath=checkpoint_dir, ) program = system.build() diff --git a/tests/systems/mappo_system_test.py b/tests/systems/mappo_system_test.py index 15c12ba68..ac2b015d6 100644 --- a/tests/systems/mappo_system_test.py +++ b/tests/systems/mappo_system_test.py @@ -126,12 +126,6 @@ def test_mappo_on_debugging_env(self) -> None: """Tests that the system can run on the simple spread debugging environment without crashing.""" - # set loggers info - # TODO Allow for no checkpointing and no loggers to be - # passed in. - mava_id = "tests/mappo" - base_dir = "~/mava" - # environment environment_factory = functools.partial( debugging_utils.make_environment, @@ -143,8 +137,6 @@ def test_mappo_on_debugging_env(self) -> None: network_factory = lp_utils.partial_kwargs(make_networks) # system - checkpoint_dir = f"{base_dir}/{mava_id}" - system = mappo.MAPPO( environment_factory=environment_factory, network_factory=network_factory, @@ -154,7 +146,6 @@ def test_mappo_on_debugging_env(self) -> None: policy_optimizer=snt.optimizers.Adam(learning_rate=1e-3), critic_optimizer=snt.optimizers.Adam(learning_rate=1e-3), checkpoint=False, - checkpoint_subpath=checkpoint_dir, ) program = system.build() From a50fb8fe7420f85c95b27cef20b66057c50c8390 Mon Sep 17 00:00:00 2001 From: Kale-ab Date: Mon, 7 Jun 2021 15:06:03 +0200 Subject: [PATCH 175/188] feat(training): Allow different policy optims per agent. --- mava/systems/replay.py | 2 -- mava/systems/tf/dial/builder.py | 4 +-- mava/systems/tf/dial/system.py | 6 ++-- mava/systems/tf/dial/training.py | 4 +-- mava/systems/tf/mad4pg/system.py | 7 +++- mava/systems/tf/mad4pg/training.py | 18 +++++------ mava/systems/tf/maddpg/builder.py | 2 +- mava/systems/tf/maddpg/system.py | 8 +++-- mava/systems/tf/maddpg/training.py | 52 ++++++++++++++++++------------ mava/systems/tf/madqn/builder.py | 4 +-- mava/systems/tf/madqn/system.py | 4 ++- mava/systems/tf/madqn/training.py | 19 ++++++----- mava/systems/tf/mappo/builder.py | 4 +-- mava/systems/tf/mappo/system.py | 6 ++-- mava/systems/tf/mappo/training.py | 24 ++++++++------ mava/systems/tf/qmix/system.py | 6 ++-- mava/systems/tf/qmix/training.py | 4 +-- mava/systems/tf/vdn/system.py | 6 ++-- mava/systems/tf/vdn/training.py | 4 +-- 19 files changed, 111 insertions(+), 73 deletions(-) diff --git a/mava/systems/replay.py b/mava/systems/replay.py index 5b61a4f45..8d1c4f879 100644 --- a/mava/systems/replay.py +++ b/mava/systems/replay.py @@ -14,5 +14,3 @@ # limitations under the License. """Common tools for reverb replay used for specifically for MARL.""" - -# TODO(Kale-ab): custom replay for MARL systems (we will implement them as we need them) diff --git a/mava/systems/tf/dial/builder.py b/mava/systems/tf/dial/builder.py index 148f90b97..478a98a3a 100644 --- a/mava/systems/tf/dial/builder.py +++ b/mava/systems/tf/dial/builder.py @@ -14,7 +14,7 @@ # limitations under the License. import dataclasses -from typing import Any, Dict, Iterator, List, Optional, Type +from typing import Any, Dict, Iterator, List, Optional, Type, Union import numpy as np import reverb @@ -70,7 +70,7 @@ class DIALConfig: period: int discount: float checkpoint: bool - optimizer: snt.Optimizer + optimizer: Union[snt.Optimizer, Dict[str, snt.Optimizer]] replay_table_name: str = reverb_adders.DEFAULT_PRIORITY_TABLE checkpoint_subpath: str = "~/mava/" diff --git a/mava/systems/tf/dial/system.py b/mava/systems/tf/dial/system.py index 68db5936c..2eb70a5b9 100644 --- a/mava/systems/tf/dial/system.py +++ b/mava/systems/tf/dial/system.py @@ -15,7 +15,7 @@ """Defines the DIAL system class.""" import functools -from typing import Any, Callable, Dict, Optional, Type +from typing import Any, Callable, Dict, Optional, Type, Union import acme import dm_env @@ -111,7 +111,9 @@ def __init__( period: int = 20, max_gradient_norm: float = None, discount: float = 1, - optimizer: snt.Optimizer = snt.optimizers.Adam(learning_rate=1e-4), + optimizer: Union[snt.Optimizer, Dict[str, snt.Optimizer]] = snt.optimizers.Adam( + learning_rate=1e-4 + ), target_update_period: int = 100, executor_variable_update_period: int = 1000, max_executor_steps: int = None, diff --git a/mava/systems/tf/dial/training.py b/mava/systems/tf/dial/training.py index 080650edc..54ed0f8b9 100644 --- a/mava/systems/tf/dial/training.py +++ b/mava/systems/tf/dial/training.py @@ -16,7 +16,7 @@ """DIAL trainer implementation.""" -from typing import Any, Dict, List +from typing import Any, Dict, List, Union import sonnet as snt import tensorflow as tf @@ -48,7 +48,7 @@ def __init__( target_q_networks: Dict[str, snt.Module], target_update_period: int, dataset: tf.data.Dataset, - optimizer: snt.Optimizer, + optimizer: Union[snt.Optimizer, Dict[str, snt.Optimizer]], discount: float, shared_weights: bool, exploration_scheduler: LinearExplorationScheduler, diff --git a/mava/systems/tf/mad4pg/system.py b/mava/systems/tf/mad4pg/system.py index d399f1355..ccf40928b 100644 --- a/mava/systems/tf/mad4pg/system.py +++ b/mava/systems/tf/mad4pg/system.py @@ -65,7 +65,9 @@ def __init__( min_replay_size: int = 1000, max_replay_size: int = 1000000, samples_per_insert: float = 32.0, - policy_optimizer: snt.Optimizer = snt.optimizers.Adam(learning_rate=1e-4), + policy_optimizer: Union[ + snt.Optimizer, Dict[str, snt.Optimizer] + ] = snt.optimizers.Adam(learning_rate=1e-4), critic_optimizer: snt.Optimizer = snt.optimizers.Adam(learning_rate=1e-4), n_step: int = 5, sequence_length: int = 20, @@ -118,6 +120,9 @@ def __init__( replay_table_name: string indicating what name to give the replay table. train_loop_fn: loop for training. eval_loop_fn: loop for evaluation. + policy_optimizer: the optimizer to be applied to the policy loss. + This can be a single optimizer or an optimizer per agent key. + critic_optimizer: the optimizer to be applied to the critic loss. """ super().__init__( environment_factory=environment_factory, diff --git a/mava/systems/tf/mad4pg/training.py b/mava/systems/tf/mad4pg/training.py index 0507ef564..85824c67a 100644 --- a/mava/systems/tf/mad4pg/training.py +++ b/mava/systems/tf/mad4pg/training.py @@ -15,7 +15,7 @@ """MAD4PG trainer implementation.""" -from typing import Any, Dict, List +from typing import Any, Dict, List, Union import sonnet as snt import tensorflow as tf @@ -52,7 +52,7 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizer: snt.Optimizer, + policy_optimizer: Union[snt.Optimizer, Dict[str, snt.Optimizer]], critic_optimizer: snt.Optimizer, discount: float, target_averaging: bool, @@ -203,7 +203,7 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizer: snt.Optimizer, + policy_optimizer: Union[snt.Optimizer, Dict[str, snt.Optimizer]], critic_optimizer: snt.Optimizer, discount: float, target_averaging: bool, @@ -281,7 +281,7 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizer: snt.Optimizer, + policy_optimizer: Union[snt.Optimizer, Dict[str, snt.Optimizer]], critic_optimizer: snt.Optimizer, discount: float, target_averaging: bool, @@ -359,7 +359,7 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizer: snt.Optimizer, + policy_optimizer: Union[snt.Optimizer, Dict[str, snt.Optimizer]], critic_optimizer: snt.Optimizer, discount: float, target_averaging: bool, @@ -437,7 +437,7 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizer: snt.Optimizer, + policy_optimizer: Union[snt.Optimizer, Dict[str, snt.Optimizer]], critic_optimizer: snt.Optimizer, discount: float, target_averaging: bool, @@ -652,7 +652,7 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizer: snt.Optimizer, + policy_optimizer: Union[snt.Optimizer, Dict[str, snt.Optimizer]], critic_optimizer: snt.Optimizer, discount: float, target_averaging: bool, @@ -734,7 +734,7 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizer: snt.Optimizer, + policy_optimizer: Union[snt.Optimizer, Dict[str, snt.Optimizer]], critic_optimizer: snt.Optimizer, discount: float, target_averaging: bool, @@ -816,7 +816,7 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizer: snt.Optimizer, + policy_optimizer: Union[snt.Optimizer, Dict[str, snt.Optimizer]], critic_optimizer: snt.Optimizer, discount: float, target_averaging: bool, diff --git a/mava/systems/tf/maddpg/builder.py b/mava/systems/tf/maddpg/builder.py index 1388d3ffa..22f8efd9a 100644 --- a/mava/systems/tf/maddpg/builder.py +++ b/mava/systems/tf/maddpg/builder.py @@ -66,7 +66,7 @@ class MADDPGConfig: replay_table_name: string indicating what name to give the replay table.""" environment_spec: specs.MAEnvironmentSpec - policy_optimizer: snt.Optimizer + policy_optimizer: Union[snt.Optimizer, Dict[str, snt.Optimizer]] critic_optimizer: snt.Optimizer shared_weights: bool = True discount: float = 0.99 diff --git a/mava/systems/tf/maddpg/system.py b/mava/systems/tf/maddpg/system.py index ebdd82ed2..0750e8070 100644 --- a/mava/systems/tf/maddpg/system.py +++ b/mava/systems/tf/maddpg/system.py @@ -75,7 +75,9 @@ def __init__( min_replay_size: int = 1000, max_replay_size: int = 1000000, samples_per_insert: float = 32.0, - policy_optimizer: snt.Optimizer = snt.optimizers.Adam(learning_rate=1e-4), + policy_optimizer: Union[ + snt.Optimizer, Dict[str, snt.Optimizer] + ] = snt.optimizers.Adam(learning_rate=1e-4), critic_optimizer: snt.Optimizer = snt.optimizers.Adam(learning_rate=1e-4), n_step: int = 5, sequence_length: int = 20, @@ -128,7 +130,9 @@ def __init__( replay_table_name: string indicating what name to give the replay table. train_loop_fn: loop for training. eval_loop_fn: loop for evaluation. - + policy_optimizer: the optimizer to be applied to the policy loss. + This can be a single optimizer or an optimizer per agent key. + critic_optimizer: the optimizer to be applied to the critic loss. """ if not environment_spec: diff --git a/mava/systems/tf/maddpg/training.py b/mava/systems/tf/maddpg/training.py index 139fba243..1605557a6 100644 --- a/mava/systems/tf/maddpg/training.py +++ b/mava/systems/tf/maddpg/training.py @@ -19,7 +19,7 @@ import copy import os import time -from typing import Any, Dict, List, Optional, Sequence, Tuple +from typing import Any, Dict, List, Optional, Sequence, Tuple, Union import numpy as np import reverb @@ -51,8 +51,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizer: snt.Optimizer, - critic_optimizer: snt.Optimizer, + policy_optimizer: Union[snt.Optimizer, Dict[str, snt.Optimizer]], + critic_optimizer: Union[snt.Optimizer, Dict[str, snt.Optimizer]], discount: float, target_averaging: bool, target_update_period: int, @@ -87,6 +87,7 @@ def __init__( before the policy and the critic. target_observation_network: the target observation network. policy_optimizer: the optimizer to be applied to the DPG (policy) loss. + This can be a single optimizer or an optimizer per agent key. critic_optimizer: the optimizer to be applied to the critic loss. clipping: whether to clip gradients by global norm. counter: counter object used to keep track of steps. @@ -144,11 +145,16 @@ def __init__( self.unique_net_keys = self._agent_types if shared_weights else self._agents # Create optimizers for different agent types. - # TODO(Kale-ab): Allow this to be passed as a system param. - self._policy_optimizers: snt.Optimizer = {} - self._critic_optimizers: snt.Optimizer = {} + # If dict with optimizers passed in, use that. + if not isinstance(policy_optimizer, dict): + self._policy_optimizers: Dict[str, snt.Optimizer] = {} + for agent in self.unique_net_keys: + self._policy_optimizers[agent] = copy.deepcopy(policy_optimizer) + else: + self._policy_optimizers = policy_optimizer + + self._critic_optimizers: Dict[str, snt.Optimizer] = {} for agent in self.unique_net_keys: - self._policy_optimizers[agent] = copy.deepcopy(policy_optimizer) self._critic_optimizers[agent] = copy.deepcopy(critic_optimizer) # Expose the variables. @@ -468,7 +474,7 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizer: snt.Optimizer, + policy_optimizer: Union[snt.Optimizer, Dict[str, snt.Optimizer]], critic_optimizer: snt.Optimizer, discount: float, target_averaging: bool, @@ -546,7 +552,7 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizer: snt.Optimizer, + policy_optimizer: Union[snt.Optimizer, Dict[str, snt.Optimizer]], critic_optimizer: snt.Optimizer, discount: float, target_averaging: bool, @@ -667,7 +673,7 @@ def __init__( target_update_period: int, target_update_rate: float, dataset: tf.data.Dataset, - policy_optimizer: snt.Optimizer, + policy_optimizer: Union[snt.Optimizer, Dict[str, snt.Optimizer]], critic_optimizer: snt.Optimizer, observation_networks: Dict[str, snt.Module], target_observation_networks: Dict[str, snt.Module], @@ -797,7 +803,7 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizer: snt.Optimizer, + policy_optimizer: Union[snt.Optimizer, Dict[str, snt.Optimizer]], critic_optimizer: snt.Optimizer, discount: float, target_averaging: bool, @@ -912,8 +918,8 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizer: snt.Optimizer, - critic_optimizer: snt.Optimizer, + policy_optimizer: Union[snt.Optimizer, Dict[str, snt.Optimizer]], + critic_optimizer: Union[snt.Optimizer, Dict[str, snt.Optimizer]], discount: float, target_averaging: bool, target_update_period: int, @@ -945,6 +951,7 @@ def __init__( before the policy and the critic. target_observation_network: the target observation network. policy_optimizer: the optimizer to be applied to the DPG (policy) loss. + This can be a single optimizer or an optimizer per agent key. critic_optimizer: the optimizer to be applied to the critic loss. clipping: whether to clip gradients by global norm. counter: counter object used to keep track of steps. @@ -1003,11 +1010,16 @@ def __init__( self.unique_net_keys = self._agent_types if shared_weights else self._agents # Create optimizers for different agent types. - # TODO(Kale-ab): Allow this to be passed as a system param. - self._policy_optimizers: snt.Optimizer = {} - self._critic_optimizers: snt.Optimizer = {} + # If dict with optimizers passed in, use that. + if not isinstance(policy_optimizer, dict): + self._policy_optimizers: Dict[str, snt.Optimizer] = {} + for agent in self.unique_net_keys: + self._policy_optimizers[agent] = copy.deepcopy(policy_optimizer) + else: + self._policy_optimizers = policy_optimizer + + self._critic_optimizers: Dict[str, snt.Optimizer] = {} for agent in self.unique_net_keys: - self._policy_optimizers[agent] = copy.deepcopy(policy_optimizer) self._critic_optimizers[agent] = copy.deepcopy(critic_optimizer) # Expose the variables. @@ -1417,7 +1429,7 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizer: snt.Optimizer, + policy_optimizer: Union[snt.Optimizer, Dict[str, snt.Optimizer]], critic_optimizer: snt.Optimizer, discount: float, target_averaging: bool, @@ -1497,7 +1509,7 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizer: snt.Optimizer, + policy_optimizer: Union[snt.Optimizer, Dict[str, snt.Optimizer]], critic_optimizer: snt.Optimizer, discount: float, target_averaging: bool, @@ -1615,7 +1627,7 @@ def __init__( critic_networks: Dict[str, snt.Module], target_policy_networks: Dict[str, snt.Module], target_critic_networks: Dict[str, snt.Module], - policy_optimizer: snt.Optimizer, + policy_optimizer: Union[snt.Optimizer, Dict[str, snt.Optimizer]], critic_optimizer: snt.Optimizer, discount: float, target_averaging: bool, diff --git a/mava/systems/tf/madqn/builder.py b/mava/systems/tf/madqn/builder.py index ffa9604c5..2abcf56dc 100644 --- a/mava/systems/tf/madqn/builder.py +++ b/mava/systems/tf/madqn/builder.py @@ -14,7 +14,7 @@ # limitations under the License. import dataclasses -from typing import Any, Dict, Iterator, List, Optional, Type +from typing import Any, Dict, Iterator, List, Optional, Type, Union import numpy as np import reverb @@ -71,7 +71,7 @@ class MADQNConfig: period: int discount: float checkpoint: bool - optimizer: snt.Optimizer + optimizer: Union[snt.Optimizer, Dict[str, snt.Optimizer]] replay_table_name: str = reverb_adders.DEFAULT_PRIORITY_TABLE checkpoint_subpath: str = "~/mava/" diff --git a/mava/systems/tf/madqn/system.py b/mava/systems/tf/madqn/system.py index 17d455d27..bf5d43109 100644 --- a/mava/systems/tf/madqn/system.py +++ b/mava/systems/tf/madqn/system.py @@ -108,7 +108,9 @@ def __init__( clipping: bool = True, max_gradient_norm: float = None, discount: float = 0.99, - optimizer: snt.Optimizer = snt.optimizers.Adam(learning_rate=1e-4), + optimizer: Union[snt.Optimizer, Dict[str, snt.Optimizer]] = snt.optimizers.Adam( + learning_rate=1e-4 + ), target_update_period: int = 100, executor_variable_update_period: int = 1000, max_executor_steps: int = None, diff --git a/mava/systems/tf/madqn/training.py b/mava/systems/tf/madqn/training.py index ab971894b..9a54a049f 100644 --- a/mava/systems/tf/madqn/training.py +++ b/mava/systems/tf/madqn/training.py @@ -15,7 +15,7 @@ import copy import time -from typing import Any, Dict, List, Optional, Sequence, Tuple +from typing import Any, Dict, List, Optional, Sequence, Tuple, Union import numpy as np import sonnet as snt @@ -49,7 +49,7 @@ def __init__( target_q_networks: Dict[str, snt.Module], target_update_period: int, dataset: tf.data.Dataset, - optimizer: snt.Optimizer, + optimizer: Union[Dict[str, snt.Optimizer], snt.Optimizer], discount: float, shared_weights: bool, exploration_scheduler: LinearExplorationScheduler, @@ -103,10 +103,13 @@ def __init__( self.unique_net_keys = self._agent_types if shared_weights else self._agents # Create optimizers for different agent types. - # TODO(Kale-ab): Allow this to be passed as a system param. - self._optimizers: snt.Optimizer = {} - for agent in self.unique_net_keys: - self._optimizers[agent] = copy.deepcopy(optimizer) + # If dict with optimizers passed in, use that. + if not isinstance(optimizer, dict): + self._optimizers: Dict[str, snt.Optimizer] = {} + for agent in self.unique_net_keys: + self._optimizers[agent] = copy.deepcopy(optimizer) + else: + self._optimizers = optimizer # Expose the variables. q_networks_to_expose = {} @@ -340,7 +343,7 @@ def __init__( target_q_networks: Dict[str, snt.Module], target_update_period: int, dataset: tf.data.Dataset, - optimizer: snt.Optimizer, + optimizer: Union[snt.Optimizer, Dict[str, snt.Optimizer]], discount: float, shared_weights: bool, exploration_scheduler: LinearExplorationScheduler, @@ -435,7 +438,7 @@ def __init__( target_q_networks: Dict[str, snt.Module], target_update_period: int, dataset: tf.data.Dataset, - optimizer: snt.Optimizer, + optimizer: Union[snt.Optimizer, Dict[str, snt.Optimizer]], discount: float, shared_weights: bool, exploration_scheduler: LinearExplorationScheduler, diff --git a/mava/systems/tf/mappo/builder.py b/mava/systems/tf/mappo/builder.py index 431ecdeee..ee413f360 100644 --- a/mava/systems/tf/mappo/builder.py +++ b/mava/systems/tf/mappo/builder.py @@ -15,7 +15,7 @@ """MAPPO builder and config.""" import dataclasses -from typing import Dict, Iterator, List, Optional, Type +from typing import Dict, Iterator, List, Optional, Type, Union import reverb import sonnet as snt @@ -62,7 +62,7 @@ class MAPPOConfig: """ environment_spec: specs.EnvironmentSpec - policy_optimizer: snt.Optimizer + policy_optimizer: Union[snt.Optimizer, Dict[str, snt.Optimizer]] critic_optimizer: snt.Optimizer sequence_length: int = 10 sequence_period: int = 5 diff --git a/mava/systems/tf/mappo/system.py b/mava/systems/tf/mappo/system.py index b69841344..a5e81691c 100644 --- a/mava/systems/tf/mappo/system.py +++ b/mava/systems/tf/mappo/system.py @@ -15,7 +15,7 @@ """MAPPO system implementation.""" import functools -from typing import Any, Callable, Dict, Optional, Type +from typing import Any, Callable, Dict, Optional, Type, Union import acme import dm_env @@ -60,7 +60,9 @@ def __init__( environment_spec: mava_specs.MAEnvironmentSpec = None, shared_weights: bool = True, executor_variable_update_period: int = 100, - policy_optimizer: snt.Optimizer = snt.optimizers.Adam(learning_rate=5e-4), + policy_optimizer: Union[ + snt.Optimizer, Dict[str, snt.Optimizer] + ] = snt.optimizers.Adam(learning_rate=5e-4), critic_optimizer: snt.Optimizer = snt.optimizers.Adam(learning_rate=1e-5), discount: float = 0.99, lambda_gae: float = 0.99, diff --git a/mava/systems/tf/mappo/training.py b/mava/systems/tf/mappo/training.py index 793600218..6d03fd2f1 100644 --- a/mava/systems/tf/mappo/training.py +++ b/mava/systems/tf/mappo/training.py @@ -17,7 +17,7 @@ import copy import os import time -from typing import Any, Dict, List, Optional, Sequence +from typing import Any, Dict, List, Optional, Sequence, Union import numpy as np import sonnet as snt @@ -48,8 +48,8 @@ def __init__( policy_networks: Dict[str, snt.Module], critic_networks: Dict[str, snt.Module], dataset: tf.data.Dataset, - policy_optimizer: snt.Optimizer, - critic_optimizer: snt.Optimizer, + policy_optimizer: Union[snt.Optimizer, Dict[str, snt.Optimizer]], + critic_optimizer: Union[snt.Optimizer, Dict[str, snt.Optimizer]], shared_weights: bool, discount: float = 0.99, lambda_gae: float = 1.0, @@ -67,6 +67,7 @@ def __init__( policy_networks: ... critic_networks: ... policy_optimizer: policy optimizer, + This can be a single optimizer or an optimizer per agent key. critic_optimizer: critic optimizer, shared_weights: ... discount: discount to use for TD updates. @@ -104,11 +105,16 @@ def __init__( self.unique_net_keys = self._agent_types if shared_weights else self._agents # Create optimizers for different agent types. - # TODO(Kale-ab): Allow this to be passed as a system param. - self._policy_optimizers: snt.Optimizer = {} - self._critic_optimizers: snt.Optimizer = {} + # If dict with optimizers passed in, use that. + if not isinstance(policy_optimizer, dict): + self._policy_optimizers: Dict[str, snt.Optimizer] = {} + for agent in self.unique_net_keys: + self._policy_optimizers[agent] = copy.deepcopy(policy_optimizer) + else: + self._policy_optimizers = policy_optimizer + + self._critic_optimizers: Dict[str, snt.Optimizer] = {} for agent in self.unique_net_keys: - self._policy_optimizers[agent] = copy.deepcopy(policy_optimizer) self._critic_optimizers[agent] = copy.deepcopy(critic_optimizer) # Expose the variables. @@ -417,8 +423,8 @@ def __init__( policy_networks: Dict[str, snt.Module], critic_networks: Dict[str, snt.Module], dataset: tf.data.Dataset, - policy_optimizer: snt.Optimizer, - critic_optimizer: snt.Optimizer, + policy_optimizer: Union[snt.Optimizer, Dict[str, snt.Optimizer]], + critic_optimizer: Union[snt.Optimizer, Dict[str, snt.Optimizer]], shared_weights: bool, discount: float = 0.99, lambda_gae: float = 1.0, diff --git a/mava/systems/tf/qmix/system.py b/mava/systems/tf/qmix/system.py index c5952c9f0..f79891b99 100644 --- a/mava/systems/tf/qmix/system.py +++ b/mava/systems/tf/qmix/system.py @@ -15,7 +15,7 @@ """Defines the QMIX system class.""" import functools -from typing import Any, Callable, Dict, Optional, Type +from typing import Any, Callable, Dict, Optional, Type, Union import dm_env import reverb @@ -100,7 +100,9 @@ def __init__( period: int = 20, max_gradient_norm: float = None, discount: float = 0.99, - optimizer: snt.Optimizer = snt.optimizers.Adam(learning_rate=1e-4), + optimizer: Union[snt.Optimizer, Dict[str, snt.Optimizer]] = snt.optimizers.Adam( + learning_rate=1e-4 + ), target_update_period: int = 100, executor_variable_update_period: int = 1000, max_executor_steps: int = None, diff --git a/mava/systems/tf/qmix/training.py b/mava/systems/tf/qmix/training.py index c06e0024b..f5cfd55c8 100644 --- a/mava/systems/tf/qmix/training.py +++ b/mava/systems/tf/qmix/training.py @@ -15,7 +15,7 @@ """Qmix trainer implementation.""" -from typing import Any, Dict, List, Sequence +from typing import Any, Dict, List, Sequence, Union import numpy as np import sonnet as snt @@ -49,7 +49,7 @@ def __init__( target_mixing_network: snt.Module, target_update_period: int, dataset: tf.data.Dataset, - optimizer: snt.Optimizer, + optimizer: Union[snt.Optimizer, Dict[str, snt.Optimizer]], discount: float, shared_weights: bool, exploration_scheduler: LinearExplorationScheduler, diff --git a/mava/systems/tf/vdn/system.py b/mava/systems/tf/vdn/system.py index ff53125f0..c680b2832 100644 --- a/mava/systems/tf/vdn/system.py +++ b/mava/systems/tf/vdn/system.py @@ -15,7 +15,7 @@ """Defines the VDN system class.""" import functools -from typing import Any, Callable, Dict, Optional, Type +from typing import Any, Callable, Dict, Optional, Type, Union import dm_env import reverb @@ -100,7 +100,9 @@ def __init__( period: int = 20, max_gradient_norm: float = None, discount: float = 0.99, - optimizer: snt.Optimizer = snt.optimizers.Adam(learning_rate=1e-4), + optimizer: Union[snt.Optimizer, Dict[str, snt.Optimizer]] = snt.optimizers.Adam( + learning_rate=1e-4 + ), target_update_period: int = 100, executor_variable_update_period: int = 1000, max_executor_steps: int = None, diff --git a/mava/systems/tf/vdn/training.py b/mava/systems/tf/vdn/training.py index 232468f68..c6d803a5e 100644 --- a/mava/systems/tf/vdn/training.py +++ b/mava/systems/tf/vdn/training.py @@ -15,7 +15,7 @@ """VDN trainer implementation.""" -from typing import Any, Dict, List +from typing import Any, Dict, List, Union import sonnet as snt import tensorflow as tf @@ -45,7 +45,7 @@ def __init__( target_mixing_network: snt.Module, target_update_period: int, dataset: tf.data.Dataset, - optimizer: snt.Optimizer, + optimizer: Union[snt.Optimizer, Dict[str, snt.Optimizer]], discount: float, shared_weights: bool, exploration_scheduler: LinearExplorationScheduler, From bd3a8dca86f9a02f2514e3e7f721dd819a863d19 Mon Sep 17 00:00:00 2001 From: Kale-ab Date: Mon, 7 Jun 2021 16:29:33 +0200 Subject: [PATCH 176/188] feat(wrapper): Cleaned up PZ wrapper. --- mava/utils/environments/pettingzoo_utils.py | 3 +- mava/wrappers/pettingzoo.py | 41 ++++++++++----------- tests/mocks.py | 16 ++++++-- 3 files changed, 33 insertions(+), 27 deletions(-) diff --git a/mava/utils/environments/pettingzoo_utils.py b/mava/utils/environments/pettingzoo_utils.py index a972e933e..6a4f0e9ae 100644 --- a/mava/utils/environments/pettingzoo_utils.py +++ b/mava/utils/environments/pettingzoo_utils.py @@ -21,6 +21,7 @@ import dm_env import numpy as np import supersuit +from supersuit import black_death_v1 from mava.wrappers import ( ParallelEnvWrapper, @@ -63,7 +64,7 @@ def make_environment( env_type: str = "parallel", env_class: str = "mpe", env_name: str = "simple_spread_v2", - env_preprocess_wrappers: Optional[List] = None, + env_preprocess_wrappers: Optional[List] = [(black_death_v1, None)], random_seed: Optional[int] = None, **kwargs: Any, ) -> dm_env.Environment: diff --git a/mava/wrappers/pettingzoo.py b/mava/wrappers/pettingzoo.py index 1671fd3ea..6a1abde8f 100644 --- a/mava/wrappers/pettingzoo.py +++ b/mava/wrappers/pettingzoo.py @@ -29,12 +29,6 @@ convert_np_type, parameterized_restart, ) -from mava.wrappers.env_preprocess_wrappers import ( - StandardizeObservationParallel, - StandardizeObservationSequential, - StandardizeRewardParallel, - StandardizeRewardSequential, -) from mava.wrappers.env_wrappers import ParallelEnvWrapper, SequentialEnvWrapper @@ -48,8 +42,6 @@ def __init__( env_preprocess_wrappers: Optional[List] = [ # (env_preprocessor, dict_with_preprocessor_params) (black_death_v1, None), - (StandardizeObservationSequential, None), - (StandardizeRewardSequential, None), ], ): self._environment = environment @@ -139,7 +131,7 @@ def _convert_observation( def observation_spec(self) -> types.Observation: observation_specs = {} - for agent in self._environment.possible_agents: + for agent in self.possible_agents: observation_specs[agent] = types.OLT( observation=_convert_to_spec( self._environment.observation_spaces[agent] @@ -151,7 +143,7 @@ def observation_spec(self) -> types.Observation: def action_spec(self) -> Dict[str, specs.DiscreteArray]: action_specs = {} - for agent in self._environment.possible_agents: + for agent in self.possible_agents: action_specs[agent] = _convert_to_spec( self._environment.action_spaces[agent] ) @@ -159,14 +151,14 @@ def action_spec(self) -> Dict[str, specs.DiscreteArray]: def reward_spec(self) -> Dict[str, specs.Array]: reward_specs = {} - for agent in self._environment.possible_agents: + for agent in self.possible_agents: reward_specs[agent] = specs.Array((), np.float32) return reward_specs def discount_spec(self) -> Dict[str, specs.BoundedArray]: discount_specs = {} - for agent in self._environment.possible_agents: + for agent in self.possible_agents: discount_specs[agent] = specs.BoundedArray( (), np.float32, minimum=0, maximum=1.0 ) @@ -194,7 +186,10 @@ def current_agent(self) -> Any: def __getattr__(self, name: str) -> Any: """Expose any other attributes of the underlying environment.""" - return getattr(self._environment, name) + if hasattr(self.__class__, name): + return self.__getattribute__(name) + else: + return getattr(self._environment, name) class PettingZooParallelEnvWrapper(ParallelEnvWrapper): @@ -206,8 +201,6 @@ def __init__( env_preprocess_wrappers: Optional[List] = [ # (env_preprocessor, dict_with_preprocessor_params) (black_death_v1, None), - (StandardizeObservationParallel, None), - (StandardizeRewardParallel, None), ], ): self._environment = environment @@ -223,11 +216,12 @@ def reset(self) -> dm_env.TimeStep: self._reset_next_step = False self._step_type = dm_env.StepType.FIRST discount_spec = self.discount_spec() + observe = self._environment.reset() + self._discounts = { agent: convert_np_type(discount_spec[agent].dtype, 1) - for agent in self._environment.possible_agents + for agent in self.possible_agents } - observe = self._environment.reset() if type(observe) == tuple: observe, env_extras = observe @@ -313,7 +307,7 @@ def _convert_observations( def observation_spec(self) -> types.Observation: observation_specs = {} - for agent in self._environment.possible_agents: + for agent in self.possible_agents: observation_specs[agent] = types.OLT( observation=_convert_to_spec( self._environment.observation_spaces[agent] @@ -326,20 +320,20 @@ def observation_spec(self) -> types.Observation: def action_spec(self) -> Dict[str, Union[specs.DiscreteArray, specs.BoundedArray]]: action_specs = {} action_spaces = self._environment.action_spaces - for agent in self._environment.possible_agents: + for agent in self.possible_agents: action_specs[agent] = _convert_to_spec(action_spaces[agent]) return action_specs def reward_spec(self) -> Dict[str, specs.Array]: reward_specs = {} - for agent in self._environment.possible_agents: + for agent in self.possible_agents: reward_specs[agent] = specs.Array((), np.float32) return reward_specs def discount_spec(self) -> Dict[str, specs.BoundedArray]: discount_specs = {} - for agent in self._environment.possible_agents: + for agent in self.possible_agents: discount_specs[agent] = specs.BoundedArray( (), np.float32, minimum=0, maximum=1.0 ) @@ -367,4 +361,7 @@ def current_agent(self) -> Any: def __getattr__(self, name: str) -> Any: """Expose any other attributes of the underlying environment.""" - return getattr(self._environment, name) + if hasattr(self.__class__, name): + return self.__getattribute__(name) + else: + return getattr(self._environment, name) diff --git a/tests/mocks.py b/tests/mocks.py index 08d6b42d0..283e24a45 100644 --- a/tests/mocks.py +++ b/tests/mocks.py @@ -77,10 +77,18 @@ def observe( ) -> None: for agent, observation_spec in self._spec.items(): - _validate_spec(observation_spec.actions, action[agent]) - _validate_spec(observation_spec.rewards, next_timestep.reward[agent]) - _validate_spec(observation_spec.discounts, next_timestep.discount[agent]) - if next_timestep.observation: + if agent in action.keys(): + _validate_spec(observation_spec.actions, action[agent]) + + if agent in next_timestep.reward.keys(): + _validate_spec(observation_spec.rewards, next_timestep.reward[agent]) + + if agent in next_timestep.discount.keys(): + _validate_spec( + observation_spec.discounts, next_timestep.discount[agent] + ) + + if next_timestep.observation and agent in next_timestep.observation.keys(): _validate_spec( observation_spec.observations, next_timestep.observation[agent] ) From 362b93e982995043edeb9dd342df3830a9a670ba Mon Sep 17 00:00:00 2001 From: Kale-ab Date: Mon, 7 Jun 2021 17:14:58 +0200 Subject: [PATCH 177/188] bugfix: Reverted optim change in qmix. --- mava/systems/tf/qmix/training.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/mava/systems/tf/qmix/training.py b/mava/systems/tf/qmix/training.py index fc1ebd845..967403663 100644 --- a/mava/systems/tf/qmix/training.py +++ b/mava/systems/tf/qmix/training.py @@ -15,7 +15,7 @@ """Qmix trainer implementation.""" import time -from typing import Any, Dict, List, Optional, Sequence, Union +from typing import Any, Dict, List, Optional, Sequence import numpy as np import sonnet as snt @@ -52,7 +52,7 @@ def __init__( target_mixing_network: snt.Module, target_update_period: int, dataset: tf.data.Dataset, - optimizer: Union[snt.Optimizer, Dict[str, snt.Optimizer]], + optimizer: snt.Optimizer, discount: float, shared_weights: bool, exploration_scheduler: LinearExplorationScheduler, @@ -254,8 +254,7 @@ def _backward(self) -> None: ] gradients = self.tape.gradient(self.loss, variables) gradients = tf.clip_by_global_norm(gradients, self._max_gradient_norm)[0] - # TODO We need to use correct optim for mixing - # self._optimizer.apply(gradients, variables) + self._optimizer.apply(gradients, variables) train_utils.safe_del(self, "tape") From 5fa28ef32d4e7f8c45841b50a9aea4d1bb5d30af Mon Sep 17 00:00:00 2001 From: Kale-ab Date: Mon, 7 Jun 2021 17:20:21 +0200 Subject: [PATCH 178/188] chore: Cleaned up comments. --- mava/systems/tf/maddpg/training.py | 2 -- mava/systems/tf/madqn/training.py | 1 - mava/systems/tf/mappo/training.py | 1 - 3 files changed, 4 deletions(-) diff --git a/mava/systems/tf/maddpg/training.py b/mava/systems/tf/maddpg/training.py index fad52114b..d6a320200 100644 --- a/mava/systems/tf/maddpg/training.py +++ b/mava/systems/tf/maddpg/training.py @@ -147,7 +147,6 @@ def __init__( self.unique_net_keys = self._agent_types if shared_weights else self._agents # Create optimizers for different agent types. - # If dict with optimizers passed in, use that. if not isinstance(policy_optimizer, dict): self._policy_optimizers: Dict[str, snt.Optimizer] = {} for agent in self.unique_net_keys: @@ -1012,7 +1011,6 @@ def __init__( self.unique_net_keys = self._agent_types if shared_weights else self._agents # Create optimizers for different agent types. - # If dict with optimizers passed in, use that. if not isinstance(policy_optimizer, dict): self._policy_optimizers: Dict[str, snt.Optimizer] = {} for agent in self.unique_net_keys: diff --git a/mava/systems/tf/madqn/training.py b/mava/systems/tf/madqn/training.py index 27ecde6b3..92a405c75 100644 --- a/mava/systems/tf/madqn/training.py +++ b/mava/systems/tf/madqn/training.py @@ -105,7 +105,6 @@ def __init__( self.unique_net_keys = self._agent_types if shared_weights else self._agents # Create optimizers for different agent types. - # If dict with optimizers passed in, use that. if not isinstance(optimizer, dict): self._optimizers: Dict[str, snt.Optimizer] = {} for agent in self.unique_net_keys: diff --git a/mava/systems/tf/mappo/training.py b/mava/systems/tf/mappo/training.py index 768523342..4853ce178 100644 --- a/mava/systems/tf/mappo/training.py +++ b/mava/systems/tf/mappo/training.py @@ -107,7 +107,6 @@ def __init__( self.unique_net_keys = self._agent_types if shared_weights else self._agents # Create optimizers for different agent types. - # If dict with optimizers passed in, use that. if not isinstance(policy_optimizer, dict): self._policy_optimizers: Dict[str, snt.Optimizer] = {} for agent in self.unique_net_keys: From a970bd3cd1c28c7674e5e748bff6239fb11531fe Mon Sep 17 00:00:00 2001 From: Kale-ab Date: Tue, 8 Jun 2021 09:08:53 +0200 Subject: [PATCH 179/188] bugfix: Only checkpoint if checkpointer is not none. --- mava/wrappers/system_trainer_statistics.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/mava/wrappers/system_trainer_statistics.py b/mava/wrappers/system_trainer_statistics.py index 9e1ba6fe4..9c3d807b7 100644 --- a/mava/wrappers/system_trainer_statistics.py +++ b/mava/wrappers/system_trainer_statistics.py @@ -78,7 +78,8 @@ def step(self) -> None: counts = self._counter.increment(steps=1, walltime=elapsed_time) fetches.update(counts) - train_utils.checkpoint_networks(self._system_checkpointer) + if self._system_checkpointer: + train_utils.checkpoint_networks(self._system_checkpointer) if self._logger: self._logger.write(fetches) @@ -184,7 +185,8 @@ def step(self) -> None: counts = self._counter.increment(steps=1, walltime=elapsed_time) fetches.update(counts) - train_utils.checkpoint_networks(self._system_checkpointer) + if self._system_checkpointer: + train_utils.checkpoint_networks(self._system_checkpointer) fetches["epsilon"] = self.get_epsilon() self._trainer._decrement_epsilon() # type: ignore @@ -333,7 +335,8 @@ def step(self) -> None: counts = self._counter.increment(steps=1, walltime=elapsed_time) fetches.update(counts) - train_utils.checkpoint_networks(self._system_checkpointer) + if self._system_checkpointer: + train_utils.checkpoint_networks(self._system_checkpointer) if self._logger: self._logger.write(fetches) From 0a47cbde67e3a12566df2d38cff655991648249b Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Tue, 8 Jun 2021 13:24:26 +0200 Subject: [PATCH 180/188] update copyright to InstaDeep Ltd --- LICENSE | 2 +- examples/debugging_envs/__init__.py | 2 +- .../debugging_envs/run_centralised_feedforward_maddpg.py | 2 +- .../debugging_envs/run_centralised_feedforward_mappo.py | 2 +- .../debugging_envs/run_decentralised_feedforward_mad4pg.py | 2 +- .../run_decentralised_feedforward_mad4pg_discrete.py | 2 +- .../debugging_envs/run_decentralised_feedforward_maddpg.py | 2 +- .../run_decentralised_feedforward_maddpg_discrete.py | 2 +- .../debugging_envs/run_decentralised_feedforward_mappo.py | 2 +- .../debugging_envs/run_decentralised_recurrent_mad4pg.py | 2 +- .../debugging_envs/run_decentralised_recurrent_maddpg.py | 2 +- .../debugging_envs/run_feedforward_maddpg_record_video.py | 2 +- examples/debugging_envs/run_feedforward_madqn.py | 2 +- .../run_feedforward_madqn_with_fingerprints.py | 2 +- examples/debugging_envs/run_feedforward_qmix.py | 2 +- examples/debugging_envs/run_feedforward_vdn.py | 2 +- examples/debugging_envs/run_networked_feedforward_maddpg.py | 2 +- examples/debugging_envs/run_recurrent_comm_madqn.py | 2 +- examples/debugging_envs/run_recurrent_dial.py | 2 +- examples/debugging_envs/run_recurrent_madqn.py | 2 +- .../debugging_envs/run_state_based_feedforward_maddpg.py | 2 +- examples/debugging_envs/run_state_based_recurrent_maddpg.py | 2 +- examples/flatland/run_madqn.py | 2 +- examples/petting_zoo/__init__.py | 2 +- examples/petting_zoo/run_centralised_feedforward_mappo.py | 2 +- .../run_decentralised_feedforward_mad4pg_continuous.py | 2 +- .../run_decentralised_feedforward_mad4pg_discrete.py | 2 +- .../run_decentralised_feedforward_maddpg_continuous.py | 2 +- .../run_decentralised_feedforward_maddpg_discrete.py | 2 +- examples/petting_zoo/run_decentralised_feedforward_madqn.py | 2 +- examples/petting_zoo/run_decentralised_feedforward_mappo.py | 2 +- examples/petting_zoo/run_decentralised_recurrent_maddpg.py | 2 +- examples/petting_zoo/run_feedforward_maddpg_record_video.py | 2 +- .../petting_zoo/run_feedforward_madqn_with_fingerprints.py | 2 +- examples/petting_zoo/run_feedforward_qmix.py | 2 +- examples/petting_zoo/run_feedforward_vdn.py | 2 +- .../petting_zoo/run_networked_feedforward_maddpg_sparse.py | 2 +- examples/smac/run_feedforward_madqn.py | 2 +- examples/smac/run_recurrent_madqn.py | 2 +- mava/_metadata.py | 2 +- mava/adders/__init__.py | 2 +- mava/adders/base.py | 2 +- mava/adders/reverb/__init__.py | 2 +- mava/adders/reverb/base.py | 2 +- mava/adders/reverb/episode.py | 2 +- mava/adders/reverb/sequence.py | 2 +- mava/adders/reverb/transition.py | 2 +- mava/adders/reverb/utils.py | 2 +- mava/components/__init__.py | 2 +- mava/components/tf/__init__.py | 2 +- mava/components/tf/architectures/__init__.py | 2 +- mava/components/tf/architectures/base.py | 2 +- mava/components/tf/architectures/centralised.py | 2 +- mava/components/tf/architectures/decentralised.py | 2 +- mava/components/tf/architectures/networked.py | 2 +- mava/components/tf/architectures/state_based.py | 2 +- mava/components/tf/architectures/utils.py | 2 +- mava/components/tf/losses/__init__.py | 2 +- mava/components/tf/modules/__init__.py | 2 +- mava/components/tf/modules/communication/__init__.py | 2 +- mava/components/tf/modules/communication/base.py | 2 +- mava/components/tf/modules/communication/broadcasted.py | 2 +- mava/components/tf/modules/communication/targeted.py | 2 +- mava/components/tf/modules/exploration/__init__.py | 2 +- .../tf/modules/exploration/exploration_scheduling.py | 2 +- mava/components/tf/modules/mixing/__init__.py | 2 +- mava/components/tf/modules/mixing/additive.py | 2 +- mava/components/tf/modules/mixing/base.py | 2 +- mava/components/tf/modules/mixing/monotonic.py | 2 +- mava/components/tf/modules/stabilising/__init__.py | 2 +- mava/components/tf/modules/stabilising/base.py | 2 +- mava/components/tf/modules/stabilising/fingerprints.py | 2 +- .../tf/modules/stabilising/importance_sampling.py | 2 +- mava/components/tf/networks/__init__.py | 2 +- mava/components/tf/networks/additive.py | 2 +- mava/components/tf/networks/communication.py | 2 +- mava/components/tf/networks/epsilon_greedy.py | 2 +- mava/components/tf/networks/fingerprints.py | 2 +- mava/components/tf/networks/hypernetwork.py | 2 +- mava/components/tf/networks/monotonic.py | 2 +- mava/components/tf/networks/transformed.py | 2 +- mava/components/tf/networks/weighted.py | 2 +- mava/core.py | 2 +- mava/environment_loop.py | 2 +- mava/environment_loops/__init__.py | 2 +- mava/environment_loops/debugging_envs.py | 2 +- mava/systems/__init__.py | 2 +- mava/systems/builders.py | 2 +- mava/systems/replay.py | 2 +- mava/systems/system.py | 2 +- mava/systems/tf/__init__.py | 2 +- mava/systems/tf/dial/__init__.py | 2 +- mava/systems/tf/dial/builder.py | 2 +- mava/systems/tf/dial/execution.py | 2 +- mava/systems/tf/dial/system.py | 2 +- mava/systems/tf/dial/training.py | 2 +- mava/systems/tf/mad4pg/__init__.py | 2 +- mava/systems/tf/mad4pg/builder.py | 2 +- mava/systems/tf/mad4pg/execution.py | 2 +- mava/systems/tf/mad4pg/system.py | 2 +- mava/systems/tf/mad4pg/training.py | 2 +- mava/systems/tf/maddpg/__init__.py | 2 +- mava/systems/tf/maddpg/builder.py | 2 +- mava/systems/tf/maddpg/execution.py | 2 +- mava/systems/tf/maddpg/system.py | 2 +- mava/systems/tf/maddpg/training.py | 2 +- mava/systems/tf/madqn/__init__.py | 2 +- mava/systems/tf/madqn/builder.py | 2 +- mava/systems/tf/madqn/execution.py | 2 +- mava/systems/tf/madqn/system.py | 2 +- mava/systems/tf/madqn/training.py | 2 +- mava/systems/tf/mappo/__init__.py | 2 +- mava/systems/tf/mappo/builder.py | 2 +- mava/systems/tf/mappo/execution.py | 2 +- mava/systems/tf/mappo/system.py | 2 +- mava/systems/tf/mappo/training.py | 2 +- mava/systems/tf/qmix/__init__.py | 2 +- mava/systems/tf/qmix/builder.py | 2 +- mava/systems/tf/qmix/execution.py | 2 +- mava/systems/tf/qmix/system.py | 2 +- mava/systems/tf/qmix/training.py | 2 +- mava/systems/tf/vdn/__init__.py | 2 +- mava/systems/tf/vdn/builder.py | 2 +- mava/systems/tf/vdn/execution.py | 2 +- mava/systems/tf/vdn/system.py | 2 +- mava/systems/tf/vdn/training.py | 2 +- mava/types.py | 2 +- mava/utils/__init__.py | 2 +- mava/utils/debugging/environment.py | 2 +- mava/utils/debugging/environments/__init__.py | 2 +- mava/utils/debugging/environments/switch_game.py | 2 +- mava/utils/debugging/environments/two_step.py | 2 +- mava/utils/environments/RoboCup_env/__init__.py | 2 +- mava/utils/environments/RoboCup_env/helper.py | 2 +- .../environments/RoboCup_env/robocup_agents/__init__.py | 2 +- .../RoboCup_env/robocup_agents/custom_executor.py | 2 +- .../environments/RoboCup_env/robocup_agents/fixed_agent.py | 2 +- .../environments/RoboCup_env/robocup_agents/nn_agent.py | 2 +- mava/utils/environments/RoboCup_env/robocup_base.py | 2 +- .../environments/RoboCup_env/robocup_utils/__init__.py | 2 +- mava/utils/environments/RoboCup_env/robocup_utils/agent.py | 2 +- .../RoboCup_env/robocup_utils/extract_policy.py | 2 +- .../environments/RoboCup_env/robocup_utils/game_object.py | 2 +- .../utils/environments/RoboCup_env/robocup_utils/handler.py | 2 +- .../RoboCup_env/robocup_utils/message_parser.py | 2 +- .../RoboCup_env/robocup_utils/player_world_model.py | 2 +- mava/utils/environments/RoboCup_env/robocup_utils/sock.py | 2 +- .../environments/RoboCup_env/robocup_utils/sp_exceptions.py | 2 +- .../utils/environments/RoboCup_env/robocup_utils/trainer.py | 2 +- .../RoboCup_env/robocup_utils/trainer_world_model.py | 2 +- .../RoboCup_env/robocup_utils/util_functions.py | 2 +- mava/utils/environments/__init__.py | 2 +- mava/utils/environments/debugging_utils.py | 2 +- mava/utils/environments/flatland_utils.py | 2 +- mava/utils/environments/pettingzoo_utils.py | 2 +- mava/utils/environments/robocup_utils.py | 2 +- mava/utils/environments/smac_utils.py | 2 +- mava/utils/loggers/__init__.py | 2 +- mava/utils/loggers/base.py | 2 +- mava/utils/loggers/logger_utils.py | 2 +- mava/utils/loggers/tf_logger.py | 2 +- mava/utils/lp_utils.py | 2 +- mava/utils/tf_utils.py | 2 +- mava/wrappers/__init__.py | 2 +- mava/wrappers/debugging_envs.py | 2 +- mava/wrappers/env_preprocess_wrappers.py | 2 +- mava/wrappers/env_wrappers.py | 2 +- mava/wrappers/environment_loop_wrappers.py | 2 +- mava/wrappers/flatland.py | 2 +- mava/wrappers/pettingzoo.py | 2 +- mava/wrappers/robocup.py | 2 +- mava/wrappers/smac.py | 2 +- mava/wrappers/system_trainer_statistics.py | 2 +- setup.py | 6 +++--- test.sh | 2 +- tests/__init__.py | 2 +- tests/conftest.py | 2 +- tests/enums.py | 2 +- tests/environment_loops/environment_loop_test.py | 2 +- tests/mocks.py | 2 +- tests/systems/maddpg_system_test.py | 2 +- tests/systems/madqn_system_test.py | 2 +- tests/systems/mappo_system_test.py | 2 +- tests/utils/test_data.py | 2 +- tests/utils/utils_test.py | 2 +- tests/wrappers/env_preprocess_wrappers_test.py | 2 +- tests/wrappers/wrapper_test.py | 2 +- 187 files changed, 189 insertions(+), 189 deletions(-) diff --git a/LICENSE b/LICENSE index 2c758549a..0810f0b96 100644 --- a/LICENSE +++ b/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2021 [...placeholder...] + Copyright 2021 InstaDeep Ltd Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/examples/debugging_envs/__init__.py b/examples/debugging_envs/__init__.py index f6af6a34e..e61d07c59 100644 --- a/examples/debugging_envs/__init__.py +++ b/examples/debugging_envs/__init__.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/debugging_envs/run_centralised_feedforward_maddpg.py b/examples/debugging_envs/run_centralised_feedforward_maddpg.py index e15a71a70..a33ae511b 100644 --- a/examples/debugging_envs/run_centralised_feedforward_maddpg.py +++ b/examples/debugging_envs/run_centralised_feedforward_maddpg.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/debugging_envs/run_centralised_feedforward_mappo.py b/examples/debugging_envs/run_centralised_feedforward_mappo.py index d7c4cf261..5ef1bfd60 100644 --- a/examples/debugging_envs/run_centralised_feedforward_mappo.py +++ b/examples/debugging_envs/run_centralised_feedforward_mappo.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/debugging_envs/run_decentralised_feedforward_mad4pg.py b/examples/debugging_envs/run_decentralised_feedforward_mad4pg.py index 1f47a13db..db84c4745 100644 --- a/examples/debugging_envs/run_decentralised_feedforward_mad4pg.py +++ b/examples/debugging_envs/run_decentralised_feedforward_mad4pg.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/debugging_envs/run_decentralised_feedforward_mad4pg_discrete.py b/examples/debugging_envs/run_decentralised_feedforward_mad4pg_discrete.py index a1d568905..d25259bf9 100644 --- a/examples/debugging_envs/run_decentralised_feedforward_mad4pg_discrete.py +++ b/examples/debugging_envs/run_decentralised_feedforward_mad4pg_discrete.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/debugging_envs/run_decentralised_feedforward_maddpg.py b/examples/debugging_envs/run_decentralised_feedforward_maddpg.py index a961a4100..e4aee7f66 100644 --- a/examples/debugging_envs/run_decentralised_feedforward_maddpg.py +++ b/examples/debugging_envs/run_decentralised_feedforward_maddpg.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/debugging_envs/run_decentralised_feedforward_maddpg_discrete.py b/examples/debugging_envs/run_decentralised_feedforward_maddpg_discrete.py index 4ee00b3d3..2df332d1a 100644 --- a/examples/debugging_envs/run_decentralised_feedforward_maddpg_discrete.py +++ b/examples/debugging_envs/run_decentralised_feedforward_maddpg_discrete.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/debugging_envs/run_decentralised_feedforward_mappo.py b/examples/debugging_envs/run_decentralised_feedforward_mappo.py index 4c2e7bd59..639963673 100644 --- a/examples/debugging_envs/run_decentralised_feedforward_mappo.py +++ b/examples/debugging_envs/run_decentralised_feedforward_mappo.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/debugging_envs/run_decentralised_recurrent_mad4pg.py b/examples/debugging_envs/run_decentralised_recurrent_mad4pg.py index c201588b2..9d4b172b5 100644 --- a/examples/debugging_envs/run_decentralised_recurrent_mad4pg.py +++ b/examples/debugging_envs/run_decentralised_recurrent_mad4pg.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/debugging_envs/run_decentralised_recurrent_maddpg.py b/examples/debugging_envs/run_decentralised_recurrent_maddpg.py index 8d11e9dc3..d3f751236 100644 --- a/examples/debugging_envs/run_decentralised_recurrent_maddpg.py +++ b/examples/debugging_envs/run_decentralised_recurrent_maddpg.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/debugging_envs/run_feedforward_maddpg_record_video.py b/examples/debugging_envs/run_feedforward_maddpg_record_video.py index 36b1b99de..41058d87a 100644 --- a/examples/debugging_envs/run_feedforward_maddpg_record_video.py +++ b/examples/debugging_envs/run_feedforward_maddpg_record_video.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/debugging_envs/run_feedforward_madqn.py b/examples/debugging_envs/run_feedforward_madqn.py index 21126f745..fa82581aa 100644 --- a/examples/debugging_envs/run_feedforward_madqn.py +++ b/examples/debugging_envs/run_feedforward_madqn.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/debugging_envs/run_feedforward_madqn_with_fingerprints.py b/examples/debugging_envs/run_feedforward_madqn_with_fingerprints.py index 5773f8555..41ff9086e 100644 --- a/examples/debugging_envs/run_feedforward_madqn_with_fingerprints.py +++ b/examples/debugging_envs/run_feedforward_madqn_with_fingerprints.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/debugging_envs/run_feedforward_qmix.py b/examples/debugging_envs/run_feedforward_qmix.py index b0417862c..029b50b59 100644 --- a/examples/debugging_envs/run_feedforward_qmix.py +++ b/examples/debugging_envs/run_feedforward_qmix.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/debugging_envs/run_feedforward_vdn.py b/examples/debugging_envs/run_feedforward_vdn.py index fae4ea2a4..1dffce7f4 100644 --- a/examples/debugging_envs/run_feedforward_vdn.py +++ b/examples/debugging_envs/run_feedforward_vdn.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/debugging_envs/run_networked_feedforward_maddpg.py b/examples/debugging_envs/run_networked_feedforward_maddpg.py index 303160d98..b054518f0 100644 --- a/examples/debugging_envs/run_networked_feedforward_maddpg.py +++ b/examples/debugging_envs/run_networked_feedforward_maddpg.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/debugging_envs/run_recurrent_comm_madqn.py b/examples/debugging_envs/run_recurrent_comm_madqn.py index 9dbb17bda..7cd9358d1 100644 --- a/examples/debugging_envs/run_recurrent_comm_madqn.py +++ b/examples/debugging_envs/run_recurrent_comm_madqn.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/debugging_envs/run_recurrent_dial.py b/examples/debugging_envs/run_recurrent_dial.py index fa456fbbc..2d0cc9975 100644 --- a/examples/debugging_envs/run_recurrent_dial.py +++ b/examples/debugging_envs/run_recurrent_dial.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/debugging_envs/run_recurrent_madqn.py b/examples/debugging_envs/run_recurrent_madqn.py index 3f755744e..f3abbc1cc 100644 --- a/examples/debugging_envs/run_recurrent_madqn.py +++ b/examples/debugging_envs/run_recurrent_madqn.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/debugging_envs/run_state_based_feedforward_maddpg.py b/examples/debugging_envs/run_state_based_feedforward_maddpg.py index 5728508ef..f30973dde 100644 --- a/examples/debugging_envs/run_state_based_feedforward_maddpg.py +++ b/examples/debugging_envs/run_state_based_feedforward_maddpg.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/debugging_envs/run_state_based_recurrent_maddpg.py b/examples/debugging_envs/run_state_based_recurrent_maddpg.py index e987f0c81..3bcea3099 100644 --- a/examples/debugging_envs/run_state_based_recurrent_maddpg.py +++ b/examples/debugging_envs/run_state_based_recurrent_maddpg.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/flatland/run_madqn.py b/examples/flatland/run_madqn.py index d9941ebb3..8290062dc 100644 --- a/examples/flatland/run_madqn.py +++ b/examples/flatland/run_madqn.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/petting_zoo/__init__.py b/examples/petting_zoo/__init__.py index f6af6a34e..e61d07c59 100644 --- a/examples/petting_zoo/__init__.py +++ b/examples/petting_zoo/__init__.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/petting_zoo/run_centralised_feedforward_mappo.py b/examples/petting_zoo/run_centralised_feedforward_mappo.py index cf649b5d0..ec1bd5567 100644 --- a/examples/petting_zoo/run_centralised_feedforward_mappo.py +++ b/examples/petting_zoo/run_centralised_feedforward_mappo.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/petting_zoo/run_decentralised_feedforward_mad4pg_continuous.py b/examples/petting_zoo/run_decentralised_feedforward_mad4pg_continuous.py index a1d3f6eda..c92cf48d9 100644 --- a/examples/petting_zoo/run_decentralised_feedforward_mad4pg_continuous.py +++ b/examples/petting_zoo/run_decentralised_feedforward_mad4pg_continuous.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/petting_zoo/run_decentralised_feedforward_mad4pg_discrete.py b/examples/petting_zoo/run_decentralised_feedforward_mad4pg_discrete.py index 6b44bedcd..63bce2d7e 100644 --- a/examples/petting_zoo/run_decentralised_feedforward_mad4pg_discrete.py +++ b/examples/petting_zoo/run_decentralised_feedforward_mad4pg_discrete.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/petting_zoo/run_decentralised_feedforward_maddpg_continuous.py b/examples/petting_zoo/run_decentralised_feedforward_maddpg_continuous.py index 84a5f76e3..427fa8b6d 100644 --- a/examples/petting_zoo/run_decentralised_feedforward_maddpg_continuous.py +++ b/examples/petting_zoo/run_decentralised_feedforward_maddpg_continuous.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/petting_zoo/run_decentralised_feedforward_maddpg_discrete.py b/examples/petting_zoo/run_decentralised_feedforward_maddpg_discrete.py index 0917f4240..78bf9ec21 100644 --- a/examples/petting_zoo/run_decentralised_feedforward_maddpg_discrete.py +++ b/examples/petting_zoo/run_decentralised_feedforward_maddpg_discrete.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/petting_zoo/run_decentralised_feedforward_madqn.py b/examples/petting_zoo/run_decentralised_feedforward_madqn.py index 1ef4a1aed..9126bff95 100644 --- a/examples/petting_zoo/run_decentralised_feedforward_madqn.py +++ b/examples/petting_zoo/run_decentralised_feedforward_madqn.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/petting_zoo/run_decentralised_feedforward_mappo.py b/examples/petting_zoo/run_decentralised_feedforward_mappo.py index 8712490aa..9812a36a2 100644 --- a/examples/petting_zoo/run_decentralised_feedforward_mappo.py +++ b/examples/petting_zoo/run_decentralised_feedforward_mappo.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/petting_zoo/run_decentralised_recurrent_maddpg.py b/examples/petting_zoo/run_decentralised_recurrent_maddpg.py index 2d3158be4..ee51c1c24 100644 --- a/examples/petting_zoo/run_decentralised_recurrent_maddpg.py +++ b/examples/petting_zoo/run_decentralised_recurrent_maddpg.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/petting_zoo/run_feedforward_maddpg_record_video.py b/examples/petting_zoo/run_feedforward_maddpg_record_video.py index 78790694b..1ed32fdc0 100644 --- a/examples/petting_zoo/run_feedforward_maddpg_record_video.py +++ b/examples/petting_zoo/run_feedforward_maddpg_record_video.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/petting_zoo/run_feedforward_madqn_with_fingerprints.py b/examples/petting_zoo/run_feedforward_madqn_with_fingerprints.py index f69930e84..b457e61ae 100644 --- a/examples/petting_zoo/run_feedforward_madqn_with_fingerprints.py +++ b/examples/petting_zoo/run_feedforward_madqn_with_fingerprints.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/petting_zoo/run_feedforward_qmix.py b/examples/petting_zoo/run_feedforward_qmix.py index d351c0b22..c9632b06b 100644 --- a/examples/petting_zoo/run_feedforward_qmix.py +++ b/examples/petting_zoo/run_feedforward_qmix.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/petting_zoo/run_feedforward_vdn.py b/examples/petting_zoo/run_feedforward_vdn.py index 8b44b953e..1f22dd564 100644 --- a/examples/petting_zoo/run_feedforward_vdn.py +++ b/examples/petting_zoo/run_feedforward_vdn.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/petting_zoo/run_networked_feedforward_maddpg_sparse.py b/examples/petting_zoo/run_networked_feedforward_maddpg_sparse.py index 1f623e7df..124a25c65 100644 --- a/examples/petting_zoo/run_networked_feedforward_maddpg_sparse.py +++ b/examples/petting_zoo/run_networked_feedforward_maddpg_sparse.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/smac/run_feedforward_madqn.py b/examples/smac/run_feedforward_madqn.py index 2c061fb5d..9fe5e64a8 100644 --- a/examples/smac/run_feedforward_madqn.py +++ b/examples/smac/run_feedforward_madqn.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/smac/run_recurrent_madqn.py b/examples/smac/run_recurrent_madqn.py index 731f24005..5f81d840f 100644 --- a/examples/smac/run_recurrent_madqn.py +++ b/examples/smac/run_recurrent_madqn.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/_metadata.py b/mava/_metadata.py index 9b05eae8a..3bb2d01a1 100644 --- a/mava/_metadata.py +++ b/mava/_metadata.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/adders/__init__.py b/mava/adders/__init__.py index d26c9084b..09b57acb7 100644 --- a/mava/adders/__init__.py +++ b/mava/adders/__init__.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/adders/base.py b/mava/adders/base.py index a6cef1009..abc67e220 100644 --- a/mava/adders/base.py +++ b/mava/adders/base.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/adders/reverb/__init__.py b/mava/adders/reverb/__init__.py index 13a5dfae5..03405eec0 100644 --- a/mava/adders/reverb/__init__.py +++ b/mava/adders/reverb/__init__.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/adders/reverb/base.py b/mava/adders/reverb/base.py index 0f6cb0428..c3ae086bf 100644 --- a/mava/adders/reverb/base.py +++ b/mava/adders/reverb/base.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/adders/reverb/episode.py b/mava/adders/reverb/episode.py index f88ada45a..46e626a1e 100644 --- a/mava/adders/reverb/episode.py +++ b/mava/adders/reverb/episode.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/adders/reverb/sequence.py b/mava/adders/reverb/sequence.py index 0b19de43f..168fd0a02 100644 --- a/mava/adders/reverb/sequence.py +++ b/mava/adders/reverb/sequence.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/adders/reverb/transition.py b/mava/adders/reverb/transition.py index f3878236d..804bebbcf 100644 --- a/mava/adders/reverb/transition.py +++ b/mava/adders/reverb/transition.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/adders/reverb/utils.py b/mava/adders/reverb/utils.py index 5adcbcdd5..64770f3a4 100644 --- a/mava/adders/reverb/utils.py +++ b/mava/adders/reverb/utils.py @@ -1,4 +1,4 @@ -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/components/__init__.py b/mava/components/__init__.py index f6af6a34e..e61d07c59 100644 --- a/mava/components/__init__.py +++ b/mava/components/__init__.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/components/tf/__init__.py b/mava/components/tf/__init__.py index f6af6a34e..e61d07c59 100644 --- a/mava/components/tf/__init__.py +++ b/mava/components/tf/__init__.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/components/tf/architectures/__init__.py b/mava/components/tf/architectures/__init__.py index 02be316eb..fe9385f5a 100644 --- a/mava/components/tf/architectures/__init__.py +++ b/mava/components/tf/architectures/__init__.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/components/tf/architectures/base.py b/mava/components/tf/architectures/base.py index d9a1aeec4..16845cee0 100644 --- a/mava/components/tf/architectures/base.py +++ b/mava/components/tf/architectures/base.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/components/tf/architectures/centralised.py b/mava/components/tf/architectures/centralised.py index 0c92c5dfd..6253c9127 100644 --- a/mava/components/tf/architectures/centralised.py +++ b/mava/components/tf/architectures/centralised.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/components/tf/architectures/decentralised.py b/mava/components/tf/architectures/decentralised.py index cbdc0b79d..e2591cdd4 100644 --- a/mava/components/tf/architectures/decentralised.py +++ b/mava/components/tf/architectures/decentralised.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/components/tf/architectures/networked.py b/mava/components/tf/architectures/networked.py index 3b63ea40d..71ea71a02 100644 --- a/mava/components/tf/architectures/networked.py +++ b/mava/components/tf/architectures/networked.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/components/tf/architectures/state_based.py b/mava/components/tf/architectures/state_based.py index d99b16cb5..ee67aba1e 100644 --- a/mava/components/tf/architectures/state_based.py +++ b/mava/components/tf/architectures/state_based.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/components/tf/architectures/utils.py b/mava/components/tf/architectures/utils.py index d7624bea9..f49901526 100644 --- a/mava/components/tf/architectures/utils.py +++ b/mava/components/tf/architectures/utils.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/components/tf/losses/__init__.py b/mava/components/tf/losses/__init__.py index f6af6a34e..e61d07c59 100644 --- a/mava/components/tf/losses/__init__.py +++ b/mava/components/tf/losses/__init__.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/components/tf/modules/__init__.py b/mava/components/tf/modules/__init__.py index f6af6a34e..e61d07c59 100644 --- a/mava/components/tf/modules/__init__.py +++ b/mava/components/tf/modules/__init__.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/components/tf/modules/communication/__init__.py b/mava/components/tf/modules/communication/__init__.py index 12cdcb17c..c1c7def1a 100644 --- a/mava/components/tf/modules/communication/__init__.py +++ b/mava/components/tf/modules/communication/__init__.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/components/tf/modules/communication/base.py b/mava/components/tf/modules/communication/base.py index 3eb71d861..11299c58b 100644 --- a/mava/components/tf/modules/communication/base.py +++ b/mava/components/tf/modules/communication/base.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/components/tf/modules/communication/broadcasted.py b/mava/components/tf/modules/communication/broadcasted.py index 1ab599496..2604e8756 100644 --- a/mava/components/tf/modules/communication/broadcasted.py +++ b/mava/components/tf/modules/communication/broadcasted.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/components/tf/modules/communication/targeted.py b/mava/components/tf/modules/communication/targeted.py index b44a6d6f1..9ff9da1a5 100644 --- a/mava/components/tf/modules/communication/targeted.py +++ b/mava/components/tf/modules/communication/targeted.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/components/tf/modules/exploration/__init__.py b/mava/components/tf/modules/exploration/__init__.py index b03c5a638..58a08e119 100644 --- a/mava/components/tf/modules/exploration/__init__.py +++ b/mava/components/tf/modules/exploration/__init__.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/components/tf/modules/exploration/exploration_scheduling.py b/mava/components/tf/modules/exploration/exploration_scheduling.py index b34bc7a1f..8d61a3492 100644 --- a/mava/components/tf/modules/exploration/exploration_scheduling.py +++ b/mava/components/tf/modules/exploration/exploration_scheduling.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/components/tf/modules/mixing/__init__.py b/mava/components/tf/modules/mixing/__init__.py index deb69a39b..b1fea8417 100644 --- a/mava/components/tf/modules/mixing/__init__.py +++ b/mava/components/tf/modules/mixing/__init__.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/components/tf/modules/mixing/additive.py b/mava/components/tf/modules/mixing/additive.py index a435ef44d..259d3287c 100644 --- a/mava/components/tf/modules/mixing/additive.py +++ b/mava/components/tf/modules/mixing/additive.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/components/tf/modules/mixing/base.py b/mava/components/tf/modules/mixing/base.py index b1826fcf3..70f28647e 100644 --- a/mava/components/tf/modules/mixing/base.py +++ b/mava/components/tf/modules/mixing/base.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/components/tf/modules/mixing/monotonic.py b/mava/components/tf/modules/mixing/monotonic.py index 245bc4c49..b4f9140d9 100644 --- a/mava/components/tf/modules/mixing/monotonic.py +++ b/mava/components/tf/modules/mixing/monotonic.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/components/tf/modules/stabilising/__init__.py b/mava/components/tf/modules/stabilising/__init__.py index ee06f4b0a..9d6685ec8 100644 --- a/mava/components/tf/modules/stabilising/__init__.py +++ b/mava/components/tf/modules/stabilising/__init__.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/components/tf/modules/stabilising/base.py b/mava/components/tf/modules/stabilising/base.py index 11f10c0b0..967df6d8f 100644 --- a/mava/components/tf/modules/stabilising/base.py +++ b/mava/components/tf/modules/stabilising/base.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/components/tf/modules/stabilising/fingerprints.py b/mava/components/tf/modules/stabilising/fingerprints.py index d17172e58..52a99e59f 100644 --- a/mava/components/tf/modules/stabilising/fingerprints.py +++ b/mava/components/tf/modules/stabilising/fingerprints.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/components/tf/modules/stabilising/importance_sampling.py b/mava/components/tf/modules/stabilising/importance_sampling.py index 1569f720c..85ed9638e 100644 --- a/mava/components/tf/modules/stabilising/importance_sampling.py +++ b/mava/components/tf/modules/stabilising/importance_sampling.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/components/tf/networks/__init__.py b/mava/components/tf/networks/__init__.py index 12bfe9e2b..240eefcd4 100644 --- a/mava/components/tf/networks/__init__.py +++ b/mava/components/tf/networks/__init__.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/components/tf/networks/additive.py b/mava/components/tf/networks/additive.py index cf5549439..4ae7ab4a3 100644 --- a/mava/components/tf/networks/additive.py +++ b/mava/components/tf/networks/additive.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/components/tf/networks/communication.py b/mava/components/tf/networks/communication.py index faeead858..44d11a15a 100644 --- a/mava/components/tf/networks/communication.py +++ b/mava/components/tf/networks/communication.py @@ -1,4 +1,4 @@ -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/components/tf/networks/epsilon_greedy.py b/mava/components/tf/networks/epsilon_greedy.py index 52771c90a..61174cfc8 100644 --- a/mava/components/tf/networks/epsilon_greedy.py +++ b/mava/components/tf/networks/epsilon_greedy.py @@ -1,4 +1,4 @@ -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/components/tf/networks/fingerprints.py b/mava/components/tf/networks/fingerprints.py index a6efe92cc..2aa4fb6bb 100644 --- a/mava/components/tf/networks/fingerprints.py +++ b/mava/components/tf/networks/fingerprints.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/components/tf/networks/hypernetwork.py b/mava/components/tf/networks/hypernetwork.py index 8771d4ef9..a2729c641 100644 --- a/mava/components/tf/networks/hypernetwork.py +++ b/mava/components/tf/networks/hypernetwork.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/components/tf/networks/monotonic.py b/mava/components/tf/networks/monotonic.py index dff1010e6..f86b6b353 100644 --- a/mava/components/tf/networks/monotonic.py +++ b/mava/components/tf/networks/monotonic.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/components/tf/networks/transformed.py b/mava/components/tf/networks/transformed.py index eae3acbb4..ee432804e 100644 --- a/mava/components/tf/networks/transformed.py +++ b/mava/components/tf/networks/transformed.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/components/tf/networks/weighted.py b/mava/components/tf/networks/weighted.py index 34e6c6d3e..e9b9fb98b 100644 --- a/mava/components/tf/networks/weighted.py +++ b/mava/components/tf/networks/weighted.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/core.py b/mava/core.py index dc3caa70f..09ba5893f 100644 --- a/mava/core.py +++ b/mava/core.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/environment_loop.py b/mava/environment_loop.py index 6599abef5..0c7455234 100644 --- a/mava/environment_loop.py +++ b/mava/environment_loop.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/environment_loops/__init__.py b/mava/environment_loops/__init__.py index f6af6a34e..e61d07c59 100644 --- a/mava/environment_loops/__init__.py +++ b/mava/environment_loops/__init__.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/environment_loops/debugging_envs.py b/mava/environment_loops/debugging_envs.py index 60c1d8745..7ed406d7d 100644 --- a/mava/environment_loops/debugging_envs.py +++ b/mava/environment_loops/debugging_envs.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/__init__.py b/mava/systems/__init__.py index f6af6a34e..e61d07c59 100644 --- a/mava/systems/__init__.py +++ b/mava/systems/__init__.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/builders.py b/mava/systems/builders.py index ac0480ebd..6f9b19286 100644 --- a/mava/systems/builders.py +++ b/mava/systems/builders.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/replay.py b/mava/systems/replay.py index 8d1c4f879..2e230938b 100644 --- a/mava/systems/replay.py +++ b/mava/systems/replay.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/system.py b/mava/systems/system.py index 58ca13b2a..101a000f1 100644 --- a/mava/systems/system.py +++ b/mava/systems/system.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/tf/__init__.py b/mava/systems/tf/__init__.py index f6af6a34e..e61d07c59 100644 --- a/mava/systems/tf/__init__.py +++ b/mava/systems/tf/__init__.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/tf/dial/__init__.py b/mava/systems/tf/dial/__init__.py index dbfea7e80..b3bf4541a 100644 --- a/mava/systems/tf/dial/__init__.py +++ b/mava/systems/tf/dial/__init__.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/tf/dial/builder.py b/mava/systems/tf/dial/builder.py index 478a98a3a..5f5804bec 100644 --- a/mava/systems/tf/dial/builder.py +++ b/mava/systems/tf/dial/builder.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/tf/dial/execution.py b/mava/systems/tf/dial/execution.py index 65ff18242..eda663698 100644 --- a/mava/systems/tf/dial/execution.py +++ b/mava/systems/tf/dial/execution.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/tf/dial/system.py b/mava/systems/tf/dial/system.py index 2eb70a5b9..770e1a0ff 100644 --- a/mava/systems/tf/dial/system.py +++ b/mava/systems/tf/dial/system.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/tf/dial/training.py b/mava/systems/tf/dial/training.py index 6aef3ecb4..7615c9526 100644 --- a/mava/systems/tf/dial/training.py +++ b/mava/systems/tf/dial/training.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/tf/mad4pg/__init__.py b/mava/systems/tf/mad4pg/__init__.py index e540edebb..a3b042217 100644 --- a/mava/systems/tf/mad4pg/__init__.py +++ b/mava/systems/tf/mad4pg/__init__.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/tf/mad4pg/builder.py b/mava/systems/tf/mad4pg/builder.py index 4f2ded222..958847184 100644 --- a/mava/systems/tf/mad4pg/builder.py +++ b/mava/systems/tf/mad4pg/builder.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/tf/mad4pg/execution.py b/mava/systems/tf/mad4pg/execution.py index 8819618c5..33f8d2b67 100644 --- a/mava/systems/tf/mad4pg/execution.py +++ b/mava/systems/tf/mad4pg/execution.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/tf/mad4pg/system.py b/mava/systems/tf/mad4pg/system.py index ccf40928b..313a56887 100644 --- a/mava/systems/tf/mad4pg/system.py +++ b/mava/systems/tf/mad4pg/system.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/tf/mad4pg/training.py b/mava/systems/tf/mad4pg/training.py index b51449a56..d8a56d6a6 100644 --- a/mava/systems/tf/mad4pg/training.py +++ b/mava/systems/tf/mad4pg/training.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/tf/maddpg/__init__.py b/mava/systems/tf/maddpg/__init__.py index 2f823085d..93edd7f3b 100644 --- a/mava/systems/tf/maddpg/__init__.py +++ b/mava/systems/tf/maddpg/__init__.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/tf/maddpg/builder.py b/mava/systems/tf/maddpg/builder.py index 22f8efd9a..c54ef849a 100644 --- a/mava/systems/tf/maddpg/builder.py +++ b/mava/systems/tf/maddpg/builder.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/tf/maddpg/execution.py b/mava/systems/tf/maddpg/execution.py index 8c70b408a..de7c0f2fd 100644 --- a/mava/systems/tf/maddpg/execution.py +++ b/mava/systems/tf/maddpg/execution.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/tf/maddpg/system.py b/mava/systems/tf/maddpg/system.py index 0750e8070..49f50879e 100644 --- a/mava/systems/tf/maddpg/system.py +++ b/mava/systems/tf/maddpg/system.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/tf/maddpg/training.py b/mava/systems/tf/maddpg/training.py index d6a320200..b529166b0 100644 --- a/mava/systems/tf/maddpg/training.py +++ b/mava/systems/tf/maddpg/training.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/tf/madqn/__init__.py b/mava/systems/tf/madqn/__init__.py index 274426e19..90d6e8b07 100644 --- a/mava/systems/tf/madqn/__init__.py +++ b/mava/systems/tf/madqn/__init__.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/tf/madqn/builder.py b/mava/systems/tf/madqn/builder.py index 2abcf56dc..adde60888 100644 --- a/mava/systems/tf/madqn/builder.py +++ b/mava/systems/tf/madqn/builder.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/tf/madqn/execution.py b/mava/systems/tf/madqn/execution.py index 1e7fed0da..57dfdd0ed 100644 --- a/mava/systems/tf/madqn/execution.py +++ b/mava/systems/tf/madqn/execution.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/tf/madqn/system.py b/mava/systems/tf/madqn/system.py index bf5d43109..7db105905 100644 --- a/mava/systems/tf/madqn/system.py +++ b/mava/systems/tf/madqn/system.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/tf/madqn/training.py b/mava/systems/tf/madqn/training.py index 92a405c75..b12661c84 100644 --- a/mava/systems/tf/madqn/training.py +++ b/mava/systems/tf/madqn/training.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/tf/mappo/__init__.py b/mava/systems/tf/mappo/__init__.py index df71860a8..0150450d3 100644 --- a/mava/systems/tf/mappo/__init__.py +++ b/mava/systems/tf/mappo/__init__.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/tf/mappo/builder.py b/mava/systems/tf/mappo/builder.py index ee413f360..08904dcc4 100644 --- a/mava/systems/tf/mappo/builder.py +++ b/mava/systems/tf/mappo/builder.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/tf/mappo/execution.py b/mava/systems/tf/mappo/execution.py index eb65b00b0..834cb9297 100644 --- a/mava/systems/tf/mappo/execution.py +++ b/mava/systems/tf/mappo/execution.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/tf/mappo/system.py b/mava/systems/tf/mappo/system.py index a5e81691c..d724072cd 100644 --- a/mava/systems/tf/mappo/system.py +++ b/mava/systems/tf/mappo/system.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/tf/mappo/training.py b/mava/systems/tf/mappo/training.py index 4853ce178..a08d9deff 100644 --- a/mava/systems/tf/mappo/training.py +++ b/mava/systems/tf/mappo/training.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/tf/qmix/__init__.py b/mava/systems/tf/qmix/__init__.py index 717056c30..257a4cbb5 100644 --- a/mava/systems/tf/qmix/__init__.py +++ b/mava/systems/tf/qmix/__init__.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/tf/qmix/builder.py b/mava/systems/tf/qmix/builder.py index 9104df2d0..886a5565e 100644 --- a/mava/systems/tf/qmix/builder.py +++ b/mava/systems/tf/qmix/builder.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/tf/qmix/execution.py b/mava/systems/tf/qmix/execution.py index bd320ea90..08a96824f 100644 --- a/mava/systems/tf/qmix/execution.py +++ b/mava/systems/tf/qmix/execution.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/tf/qmix/system.py b/mava/systems/tf/qmix/system.py index 398305285..7030a6742 100644 --- a/mava/systems/tf/qmix/system.py +++ b/mava/systems/tf/qmix/system.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/tf/qmix/training.py b/mava/systems/tf/qmix/training.py index 967403663..d5f445390 100644 --- a/mava/systems/tf/qmix/training.py +++ b/mava/systems/tf/qmix/training.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/tf/vdn/__init__.py b/mava/systems/tf/vdn/__init__.py index 9e174d66b..54931fbb3 100644 --- a/mava/systems/tf/vdn/__init__.py +++ b/mava/systems/tf/vdn/__init__.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/tf/vdn/builder.py b/mava/systems/tf/vdn/builder.py index bd34b26f5..b14ae162d 100644 --- a/mava/systems/tf/vdn/builder.py +++ b/mava/systems/tf/vdn/builder.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/tf/vdn/execution.py b/mava/systems/tf/vdn/execution.py index 22dd62fa3..c89224c91 100644 --- a/mava/systems/tf/vdn/execution.py +++ b/mava/systems/tf/vdn/execution.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/tf/vdn/system.py b/mava/systems/tf/vdn/system.py index eeecd2185..84a22553c 100644 --- a/mava/systems/tf/vdn/system.py +++ b/mava/systems/tf/vdn/system.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/systems/tf/vdn/training.py b/mava/systems/tf/vdn/training.py index f7b9f336f..da7d7818b 100644 --- a/mava/systems/tf/vdn/training.py +++ b/mava/systems/tf/vdn/training.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/types.py b/mava/types.py index 2a586edba..0f9c124f3 100644 --- a/mava/types.py +++ b/mava/types.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/utils/__init__.py b/mava/utils/__init__.py index f6af6a34e..e61d07c59 100644 --- a/mava/utils/__init__.py +++ b/mava/utils/__init__.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/utils/debugging/environment.py b/mava/utils/debugging/environment.py index 769c17fcc..a27c4f586 100644 --- a/mava/utils/debugging/environment.py +++ b/mava/utils/debugging/environment.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/utils/debugging/environments/__init__.py b/mava/utils/debugging/environments/__init__.py index d0a60af55..e56c34ebe 100644 --- a/mava/utils/debugging/environments/__init__.py +++ b/mava/utils/debugging/environments/__init__.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/utils/debugging/environments/switch_game.py b/mava/utils/debugging/environments/switch_game.py index 21fc6845a..c9c8fa2dd 100644 --- a/mava/utils/debugging/environments/switch_game.py +++ b/mava/utils/debugging/environments/switch_game.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/utils/debugging/environments/two_step.py b/mava/utils/debugging/environments/two_step.py index f289177ee..89c2d8e53 100644 --- a/mava/utils/debugging/environments/two_step.py +++ b/mava/utils/debugging/environments/two_step.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/utils/environments/RoboCup_env/__init__.py b/mava/utils/environments/RoboCup_env/__init__.py index f6af6a34e..e61d07c59 100644 --- a/mava/utils/environments/RoboCup_env/__init__.py +++ b/mava/utils/environments/RoboCup_env/__init__.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/utils/environments/RoboCup_env/helper.py b/mava/utils/environments/RoboCup_env/helper.py index 238fa070a..6c60331b2 100644 --- a/mava/utils/environments/RoboCup_env/helper.py +++ b/mava/utils/environments/RoboCup_env/helper.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/utils/environments/RoboCup_env/robocup_agents/__init__.py b/mava/utils/environments/RoboCup_env/robocup_agents/__init__.py index f6af6a34e..e61d07c59 100644 --- a/mava/utils/environments/RoboCup_env/robocup_agents/__init__.py +++ b/mava/utils/environments/RoboCup_env/robocup_agents/__init__.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/utils/environments/RoboCup_env/robocup_agents/custom_executor.py b/mava/utils/environments/RoboCup_env/robocup_agents/custom_executor.py index b6bd70170..b2ba4350a 100644 --- a/mava/utils/environments/RoboCup_env/robocup_agents/custom_executor.py +++ b/mava/utils/environments/RoboCup_env/robocup_agents/custom_executor.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/utils/environments/RoboCup_env/robocup_agents/fixed_agent.py b/mava/utils/environments/RoboCup_env/robocup_agents/fixed_agent.py index 0f11d629f..5cfe59b0c 100755 --- a/mava/utils/environments/RoboCup_env/robocup_agents/fixed_agent.py +++ b/mava/utils/environments/RoboCup_env/robocup_agents/fixed_agent.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/utils/environments/RoboCup_env/robocup_agents/nn_agent.py b/mava/utils/environments/RoboCup_env/robocup_agents/nn_agent.py index 2dab2c3f2..505b985d1 100755 --- a/mava/utils/environments/RoboCup_env/robocup_agents/nn_agent.py +++ b/mava/utils/environments/RoboCup_env/robocup_agents/nn_agent.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/utils/environments/RoboCup_env/robocup_base.py b/mava/utils/environments/RoboCup_env/robocup_base.py index 628c33e4f..0a5eea50c 100644 --- a/mava/utils/environments/RoboCup_env/robocup_base.py +++ b/mava/utils/environments/RoboCup_env/robocup_base.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/__init__.py b/mava/utils/environments/RoboCup_env/robocup_utils/__init__.py index f6af6a34e..e61d07c59 100755 --- a/mava/utils/environments/RoboCup_env/robocup_utils/__init__.py +++ b/mava/utils/environments/RoboCup_env/robocup_utils/__init__.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/agent.py b/mava/utils/environments/RoboCup_env/robocup_utils/agent.py index f03c0c4c0..83fa3309f 100755 --- a/mava/utils/environments/RoboCup_env/robocup_utils/agent.py +++ b/mava/utils/environments/RoboCup_env/robocup_utils/agent.py @@ -1,5 +1,5 @@ # !/usr/bin/env python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/extract_policy.py b/mava/utils/environments/RoboCup_env/robocup_utils/extract_policy.py index 5900c9336..d8322515b 100644 --- a/mava/utils/environments/RoboCup_env/robocup_utils/extract_policy.py +++ b/mava/utils/environments/RoboCup_env/robocup_utils/extract_policy.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/game_object.py b/mava/utils/environments/RoboCup_env/robocup_utils/game_object.py index a04584a58..c49b68329 100755 --- a/mava/utils/environments/RoboCup_env/robocup_utils/game_object.py +++ b/mava/utils/environments/RoboCup_env/robocup_utils/game_object.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/handler.py b/mava/utils/environments/RoboCup_env/robocup_utils/handler.py index 92a4811b7..a98cd9784 100755 --- a/mava/utils/environments/RoboCup_env/robocup_utils/handler.py +++ b/mava/utils/environments/RoboCup_env/robocup_utils/handler.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/message_parser.py b/mava/utils/environments/RoboCup_env/robocup_utils/message_parser.py index ca98b6ca2..c36ac0f8b 100755 --- a/mava/utils/environments/RoboCup_env/robocup_utils/message_parser.py +++ b/mava/utils/environments/RoboCup_env/robocup_utils/message_parser.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/player_world_model.py b/mava/utils/environments/RoboCup_env/robocup_utils/player_world_model.py index 4a4517fac..92057e173 100755 --- a/mava/utils/environments/RoboCup_env/robocup_utils/player_world_model.py +++ b/mava/utils/environments/RoboCup_env/robocup_utils/player_world_model.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/sock.py b/mava/utils/environments/RoboCup_env/robocup_utils/sock.py index 02d1e9b4f..481e5f756 100755 --- a/mava/utils/environments/RoboCup_env/robocup_utils/sock.py +++ b/mava/utils/environments/RoboCup_env/robocup_utils/sock.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/sp_exceptions.py b/mava/utils/environments/RoboCup_env/robocup_utils/sp_exceptions.py index 6b7368e3c..64fc4d97d 100755 --- a/mava/utils/environments/RoboCup_env/robocup_utils/sp_exceptions.py +++ b/mava/utils/environments/RoboCup_env/robocup_utils/sp_exceptions.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/trainer.py b/mava/utils/environments/RoboCup_env/robocup_utils/trainer.py index 31ea65c80..ff8d0314e 100755 --- a/mava/utils/environments/RoboCup_env/robocup_utils/trainer.py +++ b/mava/utils/environments/RoboCup_env/robocup_utils/trainer.py @@ -1,5 +1,5 @@ # !/usr/bin/env python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/trainer_world_model.py b/mava/utils/environments/RoboCup_env/robocup_utils/trainer_world_model.py index aab4210f5..75cb46630 100755 --- a/mava/utils/environments/RoboCup_env/robocup_utils/trainer_world_model.py +++ b/mava/utils/environments/RoboCup_env/robocup_utils/trainer_world_model.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/utils/environments/RoboCup_env/robocup_utils/util_functions.py b/mava/utils/environments/RoboCup_env/robocup_utils/util_functions.py index 9405c6fc4..5a033139d 100644 --- a/mava/utils/environments/RoboCup_env/robocup_utils/util_functions.py +++ b/mava/utils/environments/RoboCup_env/robocup_utils/util_functions.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/utils/environments/__init__.py b/mava/utils/environments/__init__.py index f6af6a34e..e61d07c59 100644 --- a/mava/utils/environments/__init__.py +++ b/mava/utils/environments/__init__.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/utils/environments/debugging_utils.py b/mava/utils/environments/debugging_utils.py index 37a1c4ba7..129a6ae62 100644 --- a/mava/utils/environments/debugging_utils.py +++ b/mava/utils/environments/debugging_utils.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/utils/environments/flatland_utils.py b/mava/utils/environments/flatland_utils.py index 97296e5d8..494b4a8b2 100644 --- a/mava/utils/environments/flatland_utils.py +++ b/mava/utils/environments/flatland_utils.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/utils/environments/pettingzoo_utils.py b/mava/utils/environments/pettingzoo_utils.py index 6a4f0e9ae..70c2ea511 100644 --- a/mava/utils/environments/pettingzoo_utils.py +++ b/mava/utils/environments/pettingzoo_utils.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/utils/environments/robocup_utils.py b/mava/utils/environments/robocup_utils.py index fb5c85b60..f1044eea4 100644 --- a/mava/utils/environments/robocup_utils.py +++ b/mava/utils/environments/robocup_utils.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/utils/environments/smac_utils.py b/mava/utils/environments/smac_utils.py index d2cacba16..39d30cc26 100644 --- a/mava/utils/environments/smac_utils.py +++ b/mava/utils/environments/smac_utils.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/utils/loggers/__init__.py b/mava/utils/loggers/__init__.py index 2381ee940..a05c144b7 100644 --- a/mava/utils/loggers/__init__.py +++ b/mava/utils/loggers/__init__.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/utils/loggers/base.py b/mava/utils/loggers/base.py index 639f780ea..e046eadb0 100644 --- a/mava/utils/loggers/base.py +++ b/mava/utils/loggers/base.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/utils/loggers/logger_utils.py b/mava/utils/loggers/logger_utils.py index ff4def9b5..702d52d12 100644 --- a/mava/utils/loggers/logger_utils.py +++ b/mava/utils/loggers/logger_utils.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/utils/loggers/tf_logger.py b/mava/utils/loggers/tf_logger.py index 87064afe6..b5ca1254e 100644 --- a/mava/utils/loggers/tf_logger.py +++ b/mava/utils/loggers/tf_logger.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/utils/lp_utils.py b/mava/utils/lp_utils.py index 4ec7eab72..cd3287a0d 100644 --- a/mava/utils/lp_utils.py +++ b/mava/utils/lp_utils.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/utils/tf_utils.py b/mava/utils/tf_utils.py index b1f8038d6..0916a45a4 100644 --- a/mava/utils/tf_utils.py +++ b/mava/utils/tf_utils.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/wrappers/__init__.py b/mava/wrappers/__init__.py index beee9cab4..9609afe2b 100644 --- a/mava/wrappers/__init__.py +++ b/mava/wrappers/__init__.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/wrappers/debugging_envs.py b/mava/wrappers/debugging_envs.py index 26af15a2a..df5ac7222 100644 --- a/mava/wrappers/debugging_envs.py +++ b/mava/wrappers/debugging_envs.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/wrappers/env_preprocess_wrappers.py b/mava/wrappers/env_preprocess_wrappers.py index df68d3c97..80ae4274a 100644 --- a/mava/wrappers/env_preprocess_wrappers.py +++ b/mava/wrappers/env_preprocess_wrappers.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/wrappers/env_wrappers.py b/mava/wrappers/env_wrappers.py index ff2ecda5f..8138e87ae 100644 --- a/mava/wrappers/env_wrappers.py +++ b/mava/wrappers/env_wrappers.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/wrappers/environment_loop_wrappers.py b/mava/wrappers/environment_loop_wrappers.py index 3c6e6ed85..3e0699715 100644 --- a/mava/wrappers/environment_loop_wrappers.py +++ b/mava/wrappers/environment_loop_wrappers.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/wrappers/flatland.py b/mava/wrappers/flatland.py index 77a2a278f..23006a109 100644 --- a/mava/wrappers/flatland.py +++ b/mava/wrappers/flatland.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/wrappers/pettingzoo.py b/mava/wrappers/pettingzoo.py index 6a1abde8f..1033198be 100644 --- a/mava/wrappers/pettingzoo.py +++ b/mava/wrappers/pettingzoo.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/wrappers/robocup.py b/mava/wrappers/robocup.py index 3f29a65dd..b4014783b 100644 --- a/mava/wrappers/robocup.py +++ b/mava/wrappers/robocup.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/wrappers/smac.py b/mava/wrappers/smac.py index c6c5784be..556cbdd74 100644 --- a/mava/wrappers/smac.py +++ b/mava/wrappers/smac.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mava/wrappers/system_trainer_statistics.py b/mava/wrappers/system_trainer_statistics.py index 9c3d807b7..b83479756 100644 --- a/mava/wrappers/system_trainer_statistics.py +++ b/mava/wrappers/system_trainer_statistics.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/setup.py b/setup.py index 8bc32a08a..3f40fd393 100644 --- a/setup.py +++ b/setup.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...] Ltd. All rights reserved. +# Copyright 2021 InstaDeep Ltd Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -70,7 +70,7 @@ serve both as reference implementations of popular algorithms and as strong baselines, while still providing enough flexibility to do novel research. For more information see -[github repository](https://github.com/[...placeholder...]ai/mava).""" +[github repository](https://github.com/InstaDeep Ltdai/mava).""" # Get the version from metadata. version = _metadata.__version__ # type: ignore @@ -86,7 +86,7 @@ description="A Python library for Multi-Agent Reinforcement Learning.", long_description=long_description, long_description_content_type="text/markdown", - author="[...placeholder...]", + author="InstaDeep Ltd", license="Apache License, Version 2.0", keywords="multi-agent reinforcement-learning python machine learning", packages=find_packages(), diff --git a/test.sh b/test.sh index 3270256dc..b523a6d65 100755 --- a/test.sh +++ b/test.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/__init__.py b/tests/__init__.py index f6af6a34e..e61d07c59 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/conftest.py b/tests/conftest.py index 31291d25c..a2ff4f17b 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/enums.py b/tests/enums.py index 6f7989573..6d0164dd4 100644 --- a/tests/enums.py +++ b/tests/enums.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/environment_loops/environment_loop_test.py b/tests/environment_loops/environment_loop_test.py index f3ef42060..2f741a9e1 100644 --- a/tests/environment_loops/environment_loop_test.py +++ b/tests/environment_loops/environment_loop_test.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/mocks.py b/tests/mocks.py index 283e24a45..d08dd72fe 100644 --- a/tests/mocks.py +++ b/tests/mocks.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/systems/maddpg_system_test.py b/tests/systems/maddpg_system_test.py index 2f46781ce..64c248ac9 100644 --- a/tests/systems/maddpg_system_test.py +++ b/tests/systems/maddpg_system_test.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/systems/madqn_system_test.py b/tests/systems/madqn_system_test.py index 50255eabe..05aabe19f 100644 --- a/tests/systems/madqn_system_test.py +++ b/tests/systems/madqn_system_test.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/systems/mappo_system_test.py b/tests/systems/mappo_system_test.py index ac2b015d6..e15d6533b 100644 --- a/tests/systems/mappo_system_test.py +++ b/tests/systems/mappo_system_test.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/utils/test_data.py b/tests/utils/test_data.py index 82575a846..3d8fc7c86 100644 --- a/tests/utils/test_data.py +++ b/tests/utils/test_data.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/utils/utils_test.py b/tests/utils/utils_test.py index 8a9dcc4fe..d181eb943 100644 --- a/tests/utils/utils_test.py +++ b/tests/utils/utils_test.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/wrappers/env_preprocess_wrappers_test.py b/tests/wrappers/env_preprocess_wrappers_test.py index ed794cc5c..297eb42df 100644 --- a/tests/wrappers/env_preprocess_wrappers_test.py +++ b/tests/wrappers/env_preprocess_wrappers_test.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/wrappers/wrapper_test.py b/tests/wrappers/wrapper_test.py index fee9d39d9..a51083f7f 100644 --- a/tests/wrappers/wrapper_test.py +++ b/tests/wrappers/wrapper_test.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 [...placeholder...]. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. From 47e650a3e8604bcc5c4267ddb079faa508d4eb0c Mon Sep 17 00:00:00 2001 From: arnupretorius Date: Tue, 8 Jun 2021 13:26:35 +0200 Subject: [PATCH 181/188] fix setup file --- setup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 3f40fd393..01697631e 100644 --- a/setup.py +++ b/setup.py @@ -1,5 +1,5 @@ # python3 -# Copyright 2021 InstaDeep Ltd Ltd. All rights reserved. +# Copyright 2021 InstaDeep Ltd. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -70,7 +70,7 @@ serve both as reference implementations of popular algorithms and as strong baselines, while still providing enough flexibility to do novel research. For more information see -[github repository](https://github.com/InstaDeep Ltdai/mava).""" +[github repository](https://github.com/instadeepai/mava).""" # Get the version from metadata. version = _metadata.__version__ # type: ignore From b3634480f9f397d5fde68a933fdeab1e2a00f6d0 Mon Sep 17 00:00:00 2001 From: Kale-ab Date: Tue, 8 Jun 2021 16:12:44 +0200 Subject: [PATCH 182/188] fix(launchpad): Fixed stopping of launchpad program. --- mava/systems/tf/maddpg/system.py | 23 ++++++++++++----------- mava/systems/tf/madqn/system.py | 23 ++++++++++++----------- mava/systems/tf/mappo/system.py | 23 ++++++++++++----------- mava/utils/lp_utils.py | 2 +- setup.py | 2 +- 5 files changed, 38 insertions(+), 35 deletions(-) diff --git a/mava/systems/tf/maddpg/system.py b/mava/systems/tf/maddpg/system.py index 0750e8070..cf1119143 100644 --- a/mava/systems/tf/maddpg/system.py +++ b/mava/systems/tf/maddpg/system.py @@ -226,13 +226,16 @@ def replay(self) -> Any: """The replay storage.""" return self._builder.make_replay_tables(self._environment_spec) - def counter(self) -> Any: - return tf2_savers.CheckpointingRunner( - counting.Counter(), - time_delta_minutes=15, - directory=self._checkpoint_subpath, - subdirectory="counter", - ) + def counter(self, checkpoint: bool) -> Any: + if checkpoint: + return tf2_savers.CheckpointingRunner( + counting.Counter(), + time_delta_minutes=15, + directory=self._checkpoint_subpath, + subdirectory="counter", + ) + else: + return counting.Counter() def coordinator(self, counter: counting.Counter) -> Any: return lp_utils.StepsLimiter(counter, self._max_executor_steps) @@ -422,14 +425,12 @@ def evaluator( def build(self, name: str = "maddpg") -> Any: """Build the distributed system topology.""" program = lp.Program(name=name) - counter = None with program.group("replay"): replay = program.add_node(lp.ReverbNode(self.replay)) - if self._checkpoint: - with program.group("counter"): - counter = program.add_node(lp.CourierNode(self.counter)) + with program.group("counter"): + counter = program.add_node(lp.CourierNode(self.counter, self._checkpoint)) if self._max_executor_steps: with program.group("coordinator"): diff --git a/mava/systems/tf/madqn/system.py b/mava/systems/tf/madqn/system.py index bf5d43109..ae9155167 100644 --- a/mava/systems/tf/madqn/system.py +++ b/mava/systems/tf/madqn/system.py @@ -221,13 +221,16 @@ def replay(self) -> Any: """The replay storage.""" return self._builder.make_replay_tables(self._environment_spec) - def counter(self) -> Any: - return tf2_savers.CheckpointingRunner( - counting.Counter(), - time_delta_minutes=15, - directory=self._checkpoint_subpath, - subdirectory="counter", - ) + def counter(self, checkpoint: bool) -> Any: + if checkpoint: + return tf2_savers.CheckpointingRunner( + counting.Counter(), + time_delta_minutes=15, + directory=self._checkpoint_subpath, + subdirectory="counter", + ) + else: + return counting.Counter() def coordinator(self, counter: counting.Counter) -> Any: return lp_utils.StepsLimiter(counter, self._max_executor_steps) # type: ignore @@ -439,14 +442,12 @@ def evaluator( def build(self, name: str = "madqn") -> Any: """Build the distributed system topology.""" program = lp.Program(name=name) - counter = None with program.group("replay"): replay = program.add_node(lp.ReverbNode(self.replay)) - if self._checkpoint: - with program.group("counter"): - counter = program.add_node(lp.CourierNode(self.counter)) + with program.group("counter"): + counter = program.add_node(lp.CourierNode(self.counter, self._checkpoint)) if self._max_executor_steps: with program.group("coordinator"): diff --git a/mava/systems/tf/mappo/system.py b/mava/systems/tf/mappo/system.py index a5e81691c..1c5609250 100644 --- a/mava/systems/tf/mappo/system.py +++ b/mava/systems/tf/mappo/system.py @@ -185,13 +185,16 @@ def replay(self) -> Any: """The replay storage.""" return self._builder.make_replay_tables(self._environment_spec) - def counter(self) -> Any: - return tf2_savers.CheckpointingRunner( - counting.Counter(), - time_delta_minutes=15, - directory=self._checkpoint_subpath, - subdirectory="counter", - ) + def counter(self, checkpoint: bool) -> Any: + if checkpoint: + return tf2_savers.CheckpointingRunner( + counting.Counter(), + time_delta_minutes=15, + directory=self._checkpoint_subpath, + subdirectory="counter", + ) + else: + return counting.Counter() def coordinator(self, counter: counting.Counter) -> Any: return lp_utils.StepsLimiter(counter, self._max_executor_steps) # type: ignore @@ -364,14 +367,12 @@ def evaluator( def build(self, name: str = "mappo") -> Any: """Build the distributed system topology.""" program = lp.Program(name=name) - counter = None with program.group("replay"): replay = program.add_node(lp.ReverbNode(self.replay)) - if self._checkpoint: - with program.group("counter"): - counter = program.add_node(lp.CourierNode(self.counter)) + with program.group("counter"): + counter = program.add_node(lp.CourierNode(self.counter, self._checkpoint)) if self._max_executor_steps: with program.group("coordinator"): diff --git a/mava/utils/lp_utils.py b/mava/utils/lp_utils.py index 4ec7eab72..ebd9672f5 100644 --- a/mava/utils/lp_utils.py +++ b/mava/utils/lp_utils.py @@ -95,7 +95,7 @@ def run(self) -> None: "StepsLimiter: Max steps of %d was reached, terminating", self._max_steps, ) - self._stop_program() + lp.stop() # Don't spam the counter. time.sleep(10.0) diff --git a/setup.py b/setup.py index 8bc32a08a..4fb7b2dd7 100644 --- a/setup.py +++ b/setup.py @@ -48,7 +48,7 @@ ] launchpad_requirements = [ - "dm-launchpad", + "dm-launchpad-nightly", ] testing_formatting_requirements = [ From 7581e66804d9f8dac28f6b0d4481425878284fd2 Mon Sep 17 00:00:00 2001 From: Kale-ab Date: Tue, 8 Jun 2021 16:15:21 +0200 Subject: [PATCH 183/188] chore: Removed unused var. --- mava/utils/lp_utils.py | 1 - 1 file changed, 1 deletion(-) diff --git a/mava/utils/lp_utils.py b/mava/utils/lp_utils.py index cac6a18ba..3117e48ab 100644 --- a/mava/utils/lp_utils.py +++ b/mava/utils/lp_utils.py @@ -72,7 +72,6 @@ def __init__( ): self._counter = counter self._max_steps = max_steps - self._stop_program = lp.make_program_stopper(FLAGS.lp_launch_type) self._steps_key = steps_key def run(self) -> None: From cc18b2f921409ad1ed05024b0c5398373e268e1a Mon Sep 17 00:00:00 2001 From: Kale-ab Date: Tue, 8 Jun 2021 17:11:25 +0200 Subject: [PATCH 184/188] debug: Debugging github actions. --- .github/workflows/ci.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index ad0a57274..2fb58df1e 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -50,6 +50,10 @@ jobs: flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics # exit-zero treats all errors as warnings. flake8 . --count --exit-zero --statistics + pip show tensorflow + pip show dm-reverb + pip show dm-acme + pip show dm-launchpad - name: Check types with mypy run: | mypy . --exclude docs/ From 27ce63340196bc6ca97340e84dbc3788aa95d8b5 Mon Sep 17 00:00:00 2001 From: Kale-ab Date: Tue, 8 Jun 2021 17:21:34 +0200 Subject: [PATCH 185/188] fix(ci): Updated tf and reverb versions. --- .github/workflows/ci.yaml | 4 ---- setup.py | 5 ++--- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 2fb58df1e..ad0a57274 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -50,10 +50,6 @@ jobs: flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics # exit-zero treats all errors as warnings. flake8 . --count --exit-zero --statistics - pip show tensorflow - pip show dm-reverb - pip show dm-acme - pip show dm-launchpad - name: Check types with mypy run: | mypy . --exclude docs/ diff --git a/setup.py b/setup.py index b5e62b7f1..c1179617e 100644 --- a/setup.py +++ b/setup.py @@ -26,14 +26,13 @@ spec.loader.exec_module(_metadata) # type: ignore reverb_requirements = [ - "dm-reverb>=0.2.0", - "tensorflow>=2.4.1", + "dm-reverb>=0.3.0", "jax", "jaxlib", ] tf_requirements = [ - "tensorflow>=2.4.1", + "tensorflow>=2.5.0", "tensorflow_probability", "dm-sonnet", "trfl", From e8b24283ba24b105f085a3712f7d4bb70d2c7783 Mon Sep 17 00:00:00 2001 From: Kale-ab Date: Wed, 9 Jun 2021 12:14:15 +0200 Subject: [PATCH 186/188] chore(release): Minor changes for release. --- OPTIONAL_INSTALL.md | 2 +- mava/_metadata.py | 4 ++-- setup.py | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/OPTIONAL_INSTALL.md b/OPTIONAL_INSTALL.md index 0c4e683e6..8498e3d02 100644 --- a/OPTIONAL_INSTALL.md +++ b/OPTIONAL_INSTALL.md @@ -1,5 +1,5 @@ ### Optional Installs -1. **Optional**: To install ROM files for Atari-Py using AutoROM (https://github.com/PettingZoo-Team/AutoROM). +1. **Optional**: To install ROM files for Atari-Py using [AutoROM](https://github.com/PettingZoo-Team/AutoROM). ``` pip install autorom && AutoROM ``` diff --git a/mava/_metadata.py b/mava/_metadata.py index 3bb2d01a1..478f3bdda 100644 --- a/mava/_metadata.py +++ b/mava/_metadata.py @@ -20,8 +20,8 @@ # We follow Semantic Versioning (https://semver.org/) _MAJOR_VERSION = "0" -_MINOR_VERSION = "1" -_PATCH_VERSION = "0" +_MINOR_VERSION = "0" +_PATCH_VERSION = "1" # Example: '0.4.2' __version__ = ".".join([_MAJOR_VERSION, _MINOR_VERSION, _PATCH_VERSION]) diff --git a/setup.py b/setup.py index c1179617e..3f549a820 100644 --- a/setup.py +++ b/setup.py @@ -118,6 +118,7 @@ "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", "Topic :: Scientific/Engineering :: Artificial Intelligence", ], ) From a71af7ae3a44121309ee10bd37bff6b85142c4a2 Mon Sep 17 00:00:00 2001 From: Kale-ab Date: Wed, 9 Jun 2021 12:20:19 +0200 Subject: [PATCH 187/188] docs: Updated readme to split core dependencies and non-core dependencies. --- README.md | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index e4fda76bb..3b9bcdab5 100644 --- a/README.md +++ b/README.md @@ -171,15 +171,27 @@ We have tested `mava` on Python 3.6, 3.7 and 3.8. pip install --upgrade pip setuptools ``` -2. To install the core libraries with dependencies from source (from root directory): +2. To install the core libraries, including [Reverb](https://github.com/deepmind/reverb) - our storage dataset : ```bash - pip install -e ".[tf,envs,reverb,launchpad]" + pip install id-mava + pip install id-mava[reverb] ``` - Note that the dependencies may be installed selectively by adding and removing their identifiers. Additional optional dependencies include `record_episode` for installing packages required to make video recordings of evaluation runs and `testing_formatting` for running tests and code formatting checks. Extra information on optional installs are given below. +3. To install dependencies for tensorflow agents: + ```bash + pip install id-mava[tf] + ``` +4. For distributed agent support: + ```bash + pip install id-mava[launchpad] + ``` -3. **NB**: Flatland and SMAC installations have to be done separately. Flatland can be installed using: +5. To install example environments, such as [PettingZoo](https://github.com/PettingZoo-Team/PettingZoo): + ```bash + pip install id-mava[envs] + ``` +6. **NB**: For Flatland and SMAC environments, installations have to be done separately. Flatland can be installed using: ```bash pip install .[flatland] @@ -194,7 +206,7 @@ We have tested `mava` on Python 3.6, 3.7 and 3.8. pip install pysc2 pip install git+https://github.com/oxwhirl/smac.git ``` -3. For the 2D RoboCup environment, a local install has only been tested using the Ubuntu 18.04 operating system. +7. For the 2D RoboCup environment, a local install has only been tested using the Ubuntu 18.04 operating system. The installation can be performed by running the RoboCup bash script while inside the Mava python virtual environment. ```bash From 4b368329e90b7f86b5c8884dfcb4a6884c7cf022 Mon Sep 17 00:00:00 2001 From: Kale-ab Date: Wed, 9 Jun 2021 13:03:06 +0200 Subject: [PATCH 188/188] docs: Updated docs to include package information. --- README.md | 8 ++++++++ mava/_metadata.py | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3b9bcdab5..0abe75606 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ # Mava: a research framework for distributed multi-agent reinforcement learning +![PyPI Python Version](https://img.shields.io/pypi/pyversions/id-mava) +![PyPI version](https://badge.fury.io/py/id-mava.svg) ![pytest](https://github.com/arnupretorius/mava/workflows/format_and_test/badge.svg) # Table of Contents @@ -178,6 +180,12 @@ We have tested `mava` on Python 3.6, 3.7 and 3.8. pip install id-mava[reverb] ``` + Or for nightly builds: + ```bash + pip install id-mava-nightly + pip install id-mava-nightly[reverb] + ``` + 3. To install dependencies for tensorflow agents: ```bash pip install id-mava[tf] diff --git a/mava/_metadata.py b/mava/_metadata.py index 478f3bdda..4500b8043 100644 --- a/mava/_metadata.py +++ b/mava/_metadata.py @@ -21,7 +21,7 @@ # We follow Semantic Versioning (https://semver.org/) _MAJOR_VERSION = "0" _MINOR_VERSION = "0" -_PATCH_VERSION = "1" +_PATCH_VERSION = "9" # Example: '0.4.2' __version__ = ".".join([_MAJOR_VERSION, _MINOR_VERSION, _PATCH_VERSION])

    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

    6h!|@yb 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

0fboZ8R0CI3m`@<{RT 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ⅅh`-XaI9lVi36x&2|rOkP)|KWkP!| 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�v$)EF1J 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