比较提交

...
此合并请求有变更与目标分支冲突。
/DevProject/Packages/packages-lock.json
/utils/make_readme_table.py
/.yamato/com.unity.ml-agents-test.yml
/gym-unity/gym_unity/envs/__init__.py
/gym-unity/gym_unity/__init__.py
/Project/Packages/packages-lock.json
/Project/Assets/ML-Agents/Examples/SharedAssets/Scripts/ModelOverrider.cs
/Project/Assets/ML-Agents/Examples/Soccer/Prefabs/SoccerFieldTwos.prefab
/com.unity.ml-agents.extensions/package.json
/com.unity.ml-agents.extensions/Documentation~/com.unity.ml-agents.extensions.md
/com.unity.ml-agents/package.json
/com.unity.ml-agents/Documentation~/com.unity.ml-agents.md
/com.unity.ml-agents/Tests/Runtime/Sensor/BoxOverlapCheckerTests.cs
/com.unity.ml-agents/Runtime/Academy.cs
/com.unity.ml-agents/Runtime/Actuators/IActionReceiver.cs
/com.unity.ml-agents/Runtime/Actuators/IDiscreteActionMask.cs
/com.unity.ml-agents/Runtime/Agent.cs
/com.unity.ml-agents/Runtime/Demonstrations/DemonstrationRecorder.cs
/com.unity.ml-agents/Runtime/Integrations/Match3/Match3SensorComponent.cs
/com.unity.ml-agents/Runtime/Sensors/BoxOverlapChecker.cs
/com.unity.ml-agents/Runtime/Sensors/GridSensorComponent.cs
/com.unity.ml-agents/CHANGELOG.md
/ml-agents-envs/README.md
/ml-agents-envs/mlagents_envs/__init__.py
/docs/Installation-Anaconda-Windows.md
/docs/Installation.md
/docs/Learning-Environment-Design-Agents.md
/docs/Migrating.md
/docs/Training-on-Amazon-Web-Service.md
/docs/Training-on-Microsoft-Azure.md
/docs/Unity-Inference-Engine.md
/ml-agents/setup.py
/ml-agents/README.md
/ml-agents/mlagents/trainers/settings.py
/ml-agents/mlagents/trainers/tests/test_stats.py
/ml-agents/mlagents/trainers/__init__.py
/README.md

3 次代码提交

作者 SHA1 备注 提交日期
Scott 97990611 Added decision frequency and evaluation metric 4 年前
Scott 130512b4 fixed episode length modification issue. 4 年前
Scott aab3a80e Added version of 3D ball to use environment parameters 4 年前
共有 78 个文件被更改,包括 2911 次插入167 次删除
  1. 4
      DevProject/Packages/packages-lock.json
  2. 1
      utils/make_readme_table.py
  3. 2
      .yamato/com.unity.ml-agents-coverage.yml
  4. 2
      .yamato/com.unity.ml-agents-test.yml
  5. 4
      gym-unity/gym_unity/__init__.py
  6. 9
      gym-unity/gym_unity/envs/__init__.py
  7. 21
      gym-unity/gym_unity/tests/test_gym.py
  8. 12
      README.md
  9. 13
      com.unity.ml-agents.extensions/Documentation~/com.unity.ml-agents.extensions.md
  10. 2
      com.unity.ml-agents.extensions/package.json
  11. 2
      com.unity.ml-agents/package.json
  12. 11
      com.unity.ml-agents/CHANGELOG.md
  13. 14
      com.unity.ml-agents/Documentation~/com.unity.ml-agents.md
  14. 8
      com.unity.ml-agents/Editor/Match3ActuatorComponentEditor.cs
  15. 8
      com.unity.ml-agents/Editor/Match3SensorComponentEditor.cs
  16. 1
      com.unity.ml-agents/Editor/GridSensorComponentEditor.cs
  17. 4
      com.unity.ml-agents/Runtime/Academy.cs
  18. 2
      com.unity.ml-agents/Runtime/Actuators/IActionReceiver.cs
  19. 2
      com.unity.ml-agents/Runtime/Actuators/IDiscreteActionMask.cs
  20. 26
      com.unity.ml-agents/Runtime/Agent.cs
  21. 2
      com.unity.ml-agents/Runtime/Demonstrations/DemonstrationRecorder.cs
  22. 6
      com.unity.ml-agents/Runtime/Integrations/Match3/Match3ActuatorComponent.cs
  23. 4
      com.unity.ml-agents/Runtime/Integrations/Match3/Match3SensorComponent.cs
  24. 21
      com.unity.ml-agents/Runtime/Sensors/BoxOverlapChecker.cs
  25. 13
      com.unity.ml-agents/Runtime/Sensors/GridSensorComponent.cs
  26. 9
      com.unity.ml-agents/Tests/Editor/Integrations/Match3/Match3ActuatorTests.cs
  27. 9
      com.unity.ml-agents/Tests/Editor/Integrations/Match3/Match3SensorTests.cs
  28. 28
      com.unity.ml-agents/Tests/Runtime/Sensor/BoxOverlapCheckerTests.cs
  29. 2
      ml-agents-envs/README.md
  30. 4
      ml-agents-envs/mlagents_envs/__init__.py
  31. 8
      docs/Installation-Anaconda-Windows.md
  32. 8
      docs/Installation.md
  33. 2
      docs/Training-on-Amazon-Web-Service.md
  34. 2
      docs/Training-on-Microsoft-Azure.md
  35. 4
      docs/Unity-Inference-Engine.md
  36. 19
      docs/Learning-Environment-Design-Agents.md
  37. 32
      docs/Migrating.md
  38. 2
      ml-agents/setup.py
  39. 2
      ml-agents/README.md
  40. 1
      ml-agents/mlagents/plugins/stats_writer.py
  41. 15
      ml-agents/mlagents/trainers/stats.py
  42. 4
      ml-agents/mlagents/trainers/__init__.py
  43. 11
      ml-agents/mlagents/trainers/torch/networks.py
  44. 35
      ml-agents/mlagents/trainers/settings.py
  45. 25
      ml-agents/mlagents/trainers/tests/test_stats.py
  46. 35
      ml-agents/mlagents/trainers/tests/test_settings.py
  47. 2
      ml-agents/mlagents/trainers/tests/test_trainer_util.py
  48. 1
      ml-agents/mlagents/trainers/trainer/rl_trainer.py
  49. 5
      ml-agents/mlagents/trainers/trainer/trainer_factory.py
  50. 4
      Project/Packages/packages-lock.json
  51. 8
      Project/Assets/ML-Agents/Examples/Soccer/Prefabs/SoccerFieldTwos.prefab
  52. 6
      Project/Assets/ML-Agents/Examples/Soccer/Prefabs/StrikersVsGoalieField.prefab
  53. 54
      Project/Assets/ML-Agents/Examples/PushBlock/Prefabs/PushBlockCollabAreaGrid.prefab
  54. 5
      Project/Assets/ML-Agents/Examples/PushBlock/Scenes/PushBlockCollab.unity
  55. 4
      Project/Assets/ML-Agents/Examples/Match3/Scripts/Match3Drawer.cs
  56. 6
      Project/Assets/ML-Agents/Examples/Match3/Scripts/Match3Agent.cs
  57. 136
      Project/Assets/ML-Agents/Examples/FoodCollector/Prefabs/VisualFoodCollectorArea.prefab
  58. 12
      Project/Assets/ML-Agents/Examples/SharedAssets/Scripts/ModelOverrider.cs
  59. 13
      Project/Assets/ML-Agents/Examples/SharedAssets/Materials/Checkers_Gray.mat
  60. 76
      com.unity.ml-agents.extensions/Documentation~/CustomGridSensors.md
  61. 30
      3DBallMultiPower.yaml
  62. 335
      Project/Assets/ML-Agents/Examples/3DBall/TFModels/3DBallMultiPower.onnx
  63. 14
      Project/Assets/ML-Agents/Examples/3DBall/TFModels/3DBallMultiPower.onnx.meta
  64. 7
      Project/Assets/ML-Agents/Examples/3DBall/Prefabs/3DBallAgentArea.prefab.meta
  65. 7
      Project/Assets/ML-Agents/Examples/3DBall/Prefabs/3DBallMulti.prefab.meta
  66. 52
      Project/Assets/ML-Agents/Examples/3DBall/Prefabs/3DBallAgentArea.prefab
  67. 840
      Project/Assets/ML-Agents/Examples/3DBall/Prefabs/3DBallMulti.prefab
  68. 7
      Project/Assets/ML-Agents/Examples/3DBall/Scenes/3DBallMulti.unity.meta
  69. 560
      Project/Assets/ML-Agents/Examples/3DBall/Scenes/3DBallMulti.unity
  70. 11
      Project/Assets/ML-Agents/Examples/3DBall/Scripts/Ball3DAgentArea.cs.meta
  71. 11
      Project/Assets/ML-Agents/Examples/3DBall/Scripts/Ball3DMultiAgent.cs.meta
  72. 9
      Project/Assets/ML-Agents/Examples/3DBall/Scripts/Ball3DRewardTypes.cs
  73. 11
      Project/Assets/ML-Agents/Examples/3DBall/Scripts/Ball3DRewardTypes.cs.meta
  74. 127
      Project/Assets/ML-Agents/Examples/3DBall/Scripts/Ball3DAgentArea.cs
  75. 178
      Project/Assets/ML-Agents/Examples/3DBall/Scripts/Ball3DMultiAgent.cs
  76. 32
      config/ppo/3DBallMulti_distance.yaml
  77. 32
      config/ppo/3DBallMulti_power.yaml
  78. 32
      config/ppo/3DBallMulti_time.yaml

4
DevProject/Packages/packages-lock.json


{
"dependencies": {
"com.unity.barracuda": {
"version": "1.3.3-preview",
"version": "1.4.0-preview",
"depth": 1,
"source": "registry",
"dependencies": {

"depth": 0,
"source": "local",
"dependencies": {
"com.unity.barracuda": "1.3.3-preview",
"com.unity.barracuda": "1.4.0-preview",
"com.unity.modules.imageconversion": "1.0.0",
"com.unity.modules.jsonserialize": "1.0.0"
}

1
utils/make_readme_table.py


ReleaseInfo("release_14", "1.8.1", "0.24.1", "March 5, 2021"),
ReleaseInfo("release_15", "1.9.0", "0.25.0", "March 17, 2021"),
ReleaseInfo("release_16", "1.9.1", "0.25.1", "April 13, 2021"),
ReleaseInfo("release_17", "2.0.0", "0.26.0", "April 22, 2021"),
# Verified releases
ReleaseInfo("", "1.0.7", "0.16.1", "March 8, 2021", is_verified=True),
ReleaseInfo("", "1.0.6", "0.16.1", "November 16, 2020", is_verified=True),

2
.yamato/com.unity.ml-agents-coverage.yml


{% if package.name == "com.unity.ml-agents.extensions" %}
pull_request.changes.any match "com.unity.ml-agents.extensions/**" OR
{% endif %}
pull_request.changes.any match ".yamato/com.unity.ml-agents-test.yml")
pull_request.changes.any match ".yamato/com.unity.ml-agents-coverage.yml")
{% endif %}
{% endfor %}
{% endfor %}

2
.yamato/com.unity.ml-agents-test.yml


flavor: {{ platform.flavor}}
commands:
- npm install upm-ci-utils@stable -g --registry https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-npm
- upm-ci project test -u {{ editor.version }} --project-path {{ editor.testProject }} --package-filter {{ package.name }} {{ noDefaultPackagesOptions }} --extra-utr-arg "reruncount=2"
- upm-ci package test -u {{ editor.version }} --package-path {{ package.name }} {{ noDefaultPackagesOptions }} --warnings-as-errors --extra-utr-arg "reruncount=2"
artifacts:
logs:
paths:

4
gym-unity/gym_unity/__init__.py


# Version of the library that will be used to upload to pypi
__version__ = "0.26.0.dev0"
__version__ = "0.26.0"
__release_tag__ = None
__release_tag__ = "release_17"

9
gym-unity/gym_unity/envs/__init__.py


import itertools
import numpy as np
from typing import Any, Dict, List, Tuple, Union
from typing import Any, Dict, List, Optional, Tuple, Union
import gym
from gym import error, spaces

uint8_visual: bool = False,
flatten_branched: bool = False,
allow_multiple_obs: bool = False,
action_space_seed: Optional[int] = None,
):
"""
Environment initialization

containing the visual observations and the last element containing the array of vector observations.
If False, returns a single np.ndarray containing either only a single visual observation or the array of
vector observations.
:param action_space_seed: If non-None, will be used to set the random seed on created gym.Space instances.
"""
self._env = unity_env

"The gym wrapper does not provide explicit support for both discrete "
"and continuous actions."
)
if action_space_seed is not None:
self._action_space.seed(action_space_seed)
# Set observations space
list_spaces: List[gym.Space] = []

return -float("inf"), float("inf")
@property
def action_space(self):
def action_space(self) -> gym.Space:
return self._action_space
@property

21
gym-unity/gym_unity/tests/test_gym.py


mock_env, mock_spec, mock_decision_step, mock_terminal_step
)
env = UnityToGymWrapper(mock_env)
assert isinstance(env, UnityToGymWrapper)
assert isinstance(env.reset(), np.ndarray)
actions = env.action_space.sample()
assert actions.shape[0] == 2

assert env.action_space.n == 5
def test_action_space_seed():
mock_env = mock.MagicMock()
mock_spec = create_mock_group_spec()
mock_decision_step, mock_terminal_step = create_mock_vector_steps(mock_spec)
setup_mock_unityenvironment(
mock_env, mock_spec, mock_decision_step, mock_terminal_step
)
actions = []
for _ in range(0, 2):
env = UnityToGymWrapper(mock_env, action_space_seed=1337)
env.reset()
actions.append(env.action_space.sample())
assert (actions[0] == actions[1]).all()
@pytest.mark.parametrize("use_uint8", [True, False], ids=["float", "uint8"])
def test_gym_wrapper_visual(use_uint8):
mock_env = mock.MagicMock()

env = UnityToGymWrapper(mock_env, uint8_visual=use_uint8)
assert isinstance(env.observation_space, spaces.Box)
assert isinstance(env, UnityToGymWrapper)
assert isinstance(env.reset(), np.ndarray)
actions = env.action_space.sample()
assert actions.shape[0] == 2

)
env = UnityToGymWrapper(mock_env, uint8_visual=use_uint8, allow_multiple_obs=True)
assert isinstance(env, UnityToGymWrapper)
assert isinstance(env.observation_space, spaces.Tuple)
assert len(env.observation_space) == 2
reset_obs = env.reset()

# check behavior for allow_multiple_obs = False
env = UnityToGymWrapper(mock_env, uint8_visual=use_uint8, allow_multiple_obs=False)
assert isinstance(env, UnityToGymWrapper)
assert isinstance(env.observation_space, spaces.Box)
reset_obs = env.reset()
assert isinstance(reset_obs, np.ndarray)

)
env = UnityToGymWrapper(mock_env, uint8_visual=use_uint8, allow_multiple_obs=True)
assert isinstance(env, UnityToGymWrapper)
assert isinstance(env.observation_space, spaces.Tuple)
assert len(env.observation_space) == 3
reset_obs = env.reset()

# check behavior for allow_multiple_obs = False
env = UnityToGymWrapper(mock_env, uint8_visual=use_uint8, allow_multiple_obs=False)
assert isinstance(env, UnityToGymWrapper)
assert isinstance(env.observation_space, spaces.Box)
reset_obs = env.reset()
assert isinstance(reset_obs, np.ndarray)

12
README.md


# Unity ML-Agents Toolkit
[![docs badge](https://img.shields.io/badge/docs-reference-blue.svg)](https://github.com/Unity-Technologies/ml-agents/tree/release_16_docs/docs/)
[![docs badge](https://img.shields.io/badge/docs-reference-blue.svg)](https://github.com/Unity-Technologies/ml-agents/tree/release_17_docs/docs/)
[![license badge](https://img.shields.io/badge/license-Apache--2.0-green.svg)](LICENSE)

## Releases & Documentation
**Our latest, stable release is `Release 16`. Click
[here](https://github.com/Unity-Technologies/ml-agents/tree/release_16_docs/docs/Readme.md)
**Our latest, stable release is `Release 17`. Click
[here](https://github.com/Unity-Technologies/ml-agents/tree/release_17_docs/docs/Readme.md)
to get started with the latest release of ML-Agents.**
The table below lists all our releases, including our `main` branch which is

| **Version** | **Release Date** | **Source** | **Documentation** | **Download** | **Python Package** | **Unity Package** |
|:-------:|:------:|:-------------:|:-------:|:------------:|:------------:|:------------:|
| **main (unstable)** | -- | [source](https://github.com/Unity-Technologies/ml-agents/tree/main) | [docs](https://github.com/Unity-Technologies/ml-agents/tree/main/docs/Readme.md) | [download](https://github.com/Unity-Technologies/ml-agents/archive/main.zip) | -- | -- |
| **Release 16** | **April 13, 2021** | **[source](https://github.com/Unity-Technologies/ml-agents/tree/release_16)** | **[docs](https://github.com/Unity-Technologies/ml-agents/tree/release_16_docs/docs/Readme.md)** | **[download](https://github.com/Unity-Technologies/ml-agents/archive/release_16.zip)** | **[0.25.1](https://pypi.org/project/mlagents/0.25.1/)** | **[1.9.1](https://docs.unity3d.com/Packages/com.unity.ml-agents@1.9/manual/index.html)** |
| **Release 17** | **April 22, 2021** | **[source](https://github.com/Unity-Technologies/ml-agents/tree/release_17)** | **[docs](https://github.com/Unity-Technologies/ml-agents/tree/release_17_docs/docs/Readme.md)** | **[download](https://github.com/Unity-Technologies/ml-agents/archive/release_17.zip)** | **[0.26.0](https://pypi.org/project/mlagents/0.26.0/)** | **[2.0.0](https://docs.unity3d.com/Packages/com.unity.ml-agents@2.0/manual/index.html)** |
| **Release 16** | April 13, 2021 | [source](https://github.com/Unity-Technologies/ml-agents/tree/release_16) | [docs](https://github.com/Unity-Technologies/ml-agents/tree/release_16_docs/docs/Readme.md) | [download](https://github.com/Unity-Technologies/ml-agents/archive/release_16.zip) | [0.25.1](https://pypi.org/project/mlagents/0.25.1/) | [1.9.1](https://docs.unity3d.com/Packages/com.unity.ml-agents@1.9/manual/index.html) |
| **Release 15** | March 17, 2021 | [source](https://github.com/Unity-Technologies/ml-agents/tree/release_15) | [docs](https://github.com/Unity-Technologies/ml-agents/tree/release_15_docs/docs/Readme.md) | [download](https://github.com/Unity-Technologies/ml-agents/archive/release_15.zip) | [0.25.0](https://pypi.org/project/mlagents/0.25.0/) | [1.9.0](https://docs.unity3d.com/Packages/com.unity.ml-agents@1.9/manual/index.html) |
| **Verified Package 1.0.7** | **March 8, 2021** | **[source](https://github.com/Unity-Technologies/ml-agents/tree/com.unity.ml-agents_1.0.7)** | **[docs](https://github.com/Unity-Technologies/ml-agents/blob/release_2_verified_docs/docs/Readme.md)** | **[download](https://github.com/Unity-Technologies/ml-agents/archive/com.unity.ml-agents_1.0.7.zip)** | **[0.16.1](https://pypi.org/project/mlagents/0.16.1/)** | **[1.0.7](https://docs.unity3d.com/Packages/com.unity.ml-agents@1.0/manual/index.html)** |
| **Release 14** | March 5, 2021 | [source](https://github.com/Unity-Technologies/ml-agents/tree/release_14) | [docs](https://github.com/Unity-Technologies/ml-agents/tree/release_14_docs/docs/Readme.md) | [download](https://github.com/Unity-Technologies/ml-agents/archive/release_14.zip) | [0.24.1](https://pypi.org/project/mlagents/0.24.1/) | [1.8.1](https://docs.unity3d.com/Packages/com.unity.ml-agents@1.8/manual/index.html) |

| **Release 10** | November 18, 2020 | [source](https://github.com/Unity-Technologies/ml-agents/tree/release_10) | [docs](https://github.com/Unity-Technologies/ml-agents/tree/release_10_docs/docs/Readme.md) | [download](https://github.com/Unity-Technologies/ml-agents/archive/release_10.zip) | [0.22.0](https://pypi.org/project/mlagents/0.22.0/) | [1.6.0](https://docs.unity3d.com/Packages/com.unity.ml-agents@1.6/manual/index.html) |
| **Verified Package 1.0.6** | November 16, 2020 | [source](https://github.com/Unity-Technologies/ml-agents/tree/com.unity.ml-agents_1.0.6) | [docs](https://github.com/Unity-Technologies/ml-agents/blob/release_2_verified_docs/docs/Readme.md) | [download](https://github.com/Unity-Technologies/ml-agents/archive/com.unity.ml-agents_1.0.6.zip) | [0.16.1](https://pypi.org/project/mlagents/0.16.1/) | [1.0.6](https://docs.unity3d.com/Packages/com.unity.ml-agents@1.0/manual/index.html) |
If you are a researcher interested in a discussion of Unity as an AI platform,
see a pre-print of our

13
com.unity.ml-agents.extensions/Documentation~/com.unity.ml-agents.extensions.md


The Runtime directory currently contains these features:
* Physics-based sensors
* [Input System Package Integration](InputActuatorComponent.md)
* [Custom Grid-based Sensors](CustomGridSensors.md)
## Installation
The ML-Agents Extensions package is not currently available in the Package Manager. There are two

[Clone the repository](https://github.com/Unity-Technologies/ml-agents/tree/release_16_docs/docs/Installation.md#clone-the-ml-agents-toolkit-repository-optional) and follow the
[Local Installation for Development](https://github.com/Unity-Technologies/ml-agents/tree/release_16_docs/docs/Installation.md#advanced-local-installation-for-development-1)
[Clone the repository](https://github.com/Unity-Technologies/ml-agents/tree/release_17_docs/docs/Installation.md#clone-the-ml-agents-toolkit-repository-optional) and follow the
[Local Installation for Development](https://github.com/Unity-Technologies/ml-agents/tree/release_17_docs/docs/Installation.md#advanced-local-installation-for-development-1)
![Package Manager git URL](https://github.com/Unity-Technologies/ml-agents/blob/release_16_docs/docs/images/unity_package_manager_git_url.png)
![Package Manager git URL](https://github.com/Unity-Technologies/ml-agents/blob/release_17_docs/docs/images/unity_package_manager_git_url.png)
git+https://github.com/Unity-Technologies/ml-agents.git?path=com.unity.ml-agents.extensions#release_16
git+https://github.com/Unity-Technologies/ml-agents.git?path=com.unity.ml-agents.extensions#release_17
"com.unity.ml-agents.extensions": "git+https://github.com/Unity-Technologies/ml-agents.git?path=com.unity.ml-agents.extensions#release_16",
"com.unity.ml-agents.extensions": "git+https://github.com/Unity-Technologies/ml-agents.git?path=com.unity.ml-agents.extensions#release_17",
```
See [Git dependencies](https://docs.unity3d.com/Manual/upm-git.html#subfolder) for more information. Note that this
may take several minutes to resolve the packages the first time that you add it.

- No way to customize the action space of the `InputActuatorComponent`
## Need Help?
The main [README](https://github.com/Unity-Technologies/ml-agents/tree/release_16_docs/README.md) contains links for contacting the team or getting support.
The main [README](https://github.com/Unity-Technologies/ml-agents/tree/release_17_docs/README.md) contains links for contacting the team or getting support.

2
com.unity.ml-agents.extensions/package.json


{
"name": "com.unity.ml-agents.extensions",
"displayName": "ML Agents Extensions",
"version": "0.3.1-preview",
"version": "0.4.0-preview",
"unity": "2019.4",
"description": "A source-only package for new features based on ML-Agents",
"dependencies": {

2
com.unity.ml-agents/package.json


"unity": "2019.4",
"description": "Use state-of-the-art machine learning to create intelligent character behaviors in any Unity environment (games, robotics, film, etc.).",
"dependencies": {
"com.unity.barracuda": "1.3.3-preview",
"com.unity.barracuda": "1.4.0-preview",
"com.unity.modules.imageconversion": "1.0.0",
"com.unity.modules.jsonserialize": "1.0.0"
}

11
com.unity.ml-agents/CHANGELOG.md


and this project adheres to
[Semantic Versioning](http://semver.org/spec/v2.0.0.html).
[Migration Guide](https://github.com/Unity-Technologies/ml-agents/blob/release_14_docs/docs/Migrating.md) for more
[Migration Guide](https://github.com/Unity-Technologies/ml-agents/blob/release_17_docs/docs/Migrating.md) for more
details.
- Some methods previously marked as `Obsolete` have been removed. If you were using these methods, you need to replace them with their supported counterpart.
- The interface for disabling discrete actions in `IDiscreteActionMask` has changed.

sizes and will need to be retrained. (#5181)
- The `AbstractBoard` class for integration with Match-3 games was changed to make it easier to support boards with
different sizes using the same model. For a summary of the interface changes, please see the Migration Guide. (##5189)
- Updated the Barracuda package to version `1.3.3-preview`(#5236)
- Updated the Barracuda package to version `1.4.0-preview`(#5236)
- `GridSensor` has been refactored and moved to main package, with changes to both sensor interfaces and behaviors.
Exsisting GridSensor created by extension package will not work in newer version. Previously trained models will
need to be retrained. Please see the Migration Guide for more details. (#5256)

#### ml-agents / ml-agents-envs / gym-unity (Python)
- Some console output have been moved from `info` to `debug` and will not be printed by default. If you want all messages to be printed, you can run `mlagents-learn` with the `--debug` option or add the line `debug: true` at the top of the yaml config file. (#5211)
- When using a configuration YAML, it is required to define all behaviors found in a Unity
executable in the trainer configuration YAML, or specify `default_settings`. (#5210)
- The embedding size of attention layers used when a BufferSensor is in the scene has been changed. It is now fixed to 128 units. It might be impossible to resume training from a checkpoint of a previous version. (#5272)
### Bug Fixes

#### ml-agents / ml-agents-envs / gym-unity (Python)
- Fixed a bug where --results-dir has no effect. (#5269)
- Fixed a bug where old `.pt` checkpoints were not deleted during training. (#5271)
- The `UnityToGymWrapper` initializer now accepts an optional `action_space_seed` seed. If this is specified, it will
be used to set the random seed on the resulting action space. (#5303)
## [1.9.1-preview] - 2021-04-13
### Major Changes

14
com.unity.ml-agents/Documentation~/com.unity.ml-agents.md


In Unity 2019.4 or later, open the Package Manager, hit the "+" button, and select "Add package from git URL".
![Package Manager git URL](https://github.com/Unity-Technologies/ml-agents/blob/release_16_docs/docs/images/unity_package_manager_git_url.png)
![Package Manager git URL](https://github.com/Unity-Technologies/ml-agents/blob/release_17_docs/docs/images/unity_package_manager_git_url.png)
git+https://github.com/Unity-Technologies/ml-agents.git?path=com.unity.ml-agents#release_16
git+https://github.com/Unity-Technologies/ml-agents.git?path=com.unity.ml-agents#release_17
"com.unity.ml-agents": "git+https://github.com/Unity-Technologies/ml-agents.git?path=com.unity.ml-agents#release_16",
"com.unity.ml-agents": "git+https://github.com/Unity-Technologies/ml-agents.git?path=com.unity.ml-agents#release_17",
```
See [Git dependencies](https://docs.unity3d.com/Manual/upm-git.html#subfolder) for more information. Note that this
may take several minutes to resolve the packages the first time that you add it.

[Clone the repository](https://github.com/Unity-Technologies/ml-agents/tree/release_16_docs/docs/Installation.md#clone-the-ml-agents-toolkit-repository-optional) and follow the
[Local Installation for Development](https://github.com/Unity-Technologies/ml-agents/tree/release_16_docs/docs/Installation.md#advanced-local-installation-for-development-1)
[Clone the repository](https://github.com/Unity-Technologies/ml-agents/tree/release_17_docs/docs/Installation.md#clone-the-ml-agents-toolkit-repository-optional) and follow the
[Local Installation for Development](https://github.com/Unity-Technologies/ml-agents/tree/release_17_docs/docs/Installation.md#advanced-local-installation-for-development-1)
directions.
## Requirements

[unity ML-Agents Toolkit]: https://github.com/Unity-Technologies/ml-agents
[unity inference engine]: https://docs.unity3d.com/Packages/com.unity.barracuda@latest/index.html
[package manager documentation]: https://docs.unity3d.com/Manual/upm-ui-install.html
[installation instructions]: https://github.com/Unity-Technologies/ml-agents/blob/release_16_docs/docs/Installation.md
[installation instructions]: https://github.com/Unity-Technologies/ml-agents/blob/release_17_docs/docs/Installation.md
[ML-Agents GitHub repo]: https://github.com/Unity-Technologies/ml-agents/blob/release_16_docs/com.unity.ml-agents.extensions
[ML-Agents GitHub repo]: https://github.com/Unity-Technologies/ml-agents/blob/release_17_docs/com.unity.ml-agents.extensions

8
com.unity.ml-agents/Editor/Match3ActuatorComponentEditor.cs


var so = serializedObject;
so.Update();
var component = (Match3ActuatorComponent)target;
var board = component.GetComponent<AbstractBoard>();
if (board == null)
{
EditorGUILayout.HelpBox("You must provide an implementation of an AbstractBoard.", MessageType.Warning);
return;
}
// Drawing the RenderTextureComponent
EditorGUI.BeginChangeCheck();

8
com.unity.ml-agents/Editor/Match3SensorComponentEditor.cs


var so = serializedObject;
so.Update();
var component = (Match3SensorComponent)target;
var board = component.GetComponent<AbstractBoard>();
if (board == null)
{
EditorGUILayout.HelpBox("You must provide an implementation of an AbstractBoard.", MessageType.Warning);
return;
}
// Drawing the RenderTextureComponent
EditorGUI.BeginChangeCheck();

1
com.unity.ml-agents/Editor/GridSensorComponentEditor.cs


gridSize.vector3IntValue = new Vector3Int(newGridSize.x, 1, newGridSize.z);
}
EditorGUI.EndDisabledGroup();
EditorGUILayout.PropertyField(so.FindProperty(nameof(GridSensorComponent.m_AgentGameObject)), true);
EditorGUILayout.PropertyField(so.FindProperty(nameof(GridSensorComponent.m_RotateWithAgent)), true);
EditorGUI.BeginDisabledGroup(!EditorUtilities.CanUpdateModelProperties());

4
com.unity.ml-agents/Runtime/Academy.cs


* API. For more information on each of these entities, in addition to how to
* set-up a learning environment and train the behavior of characters in a
* Unity scene, please browse our documentation pages on GitHub:
* https://github.com/Unity-Technologies/ml-agents/tree/release_16_docs/docs/
* https://github.com/Unity-Technologies/ml-agents/tree/release_17_docs/docs/
*/
namespace Unity.MLAgents

/// fall back to inference or heuristic decisions. (You can also set agents to always use
/// inference or heuristics.)
/// </remarks>
[HelpURL("https://github.com/Unity-Technologies/ml-agents/tree/release_16_docs/" +
[HelpURL("https://github.com/Unity-Technologies/ml-agents/tree/release_17_docs/" +
"docs/Learning-Environment-Design.md")]
public class Academy : IDisposable
{

2
com.unity.ml-agents/Runtime/Actuators/IActionReceiver.cs


///
/// See [Agents - Actions] for more information on masking actions.
///
/// [Agents - Actions]: https://github.com/Unity-Technologies/ml-agents/blob/release_16_docs/docs/Learning-Environment-Design-Agents.md#actions
/// [Agents - Actions]: https://github.com/Unity-Technologies/ml-agents/blob/release_17_docs/docs/Learning-Environment-Design-Agents.md#actions
/// </remarks>
/// <seealso cref="IActionReceiver.OnActionReceived"/>
void WriteDiscreteActionMask(IDiscreteActionMask actionMask);

2
com.unity.ml-agents/Runtime/Actuators/IDiscreteActionMask.cs


///
/// See [Agents - Actions] for more information on masking actions.
///
/// [Agents - Actions]: https://github.com/Unity-Technologies/ml-agents/blob/release_16_docs/docs/Learning-Environment-Design-Agents.md#actions
/// [Agents - Actions]: https://github.com/Unity-Technologies/ml-agents/blob/release_17_docs/docs/Learning-Environment-Design-Agents.md#actions
/// </remarks>
/// <param name="branch">The branch for which the actions will be masked.</param>
/// <param name="actionIndex">Index of the action</param>

26
com.unity.ml-agents/Runtime/Agent.cs


/// [OnDisable()]: https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnDisable.html]
/// [OnBeforeSerialize()]: https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnBeforeSerialize.html
/// [OnAfterSerialize()]: https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnAfterSerialize.html
/// [Agents]: https://github.com/Unity-Technologies/ml-agents/blob/release_16_docs/docs/Learning-Environment-Design-Agents.md
/// [Reinforcement Learning in Unity]: https://github.com/Unity-Technologies/ml-agents/blob/release_16_docs/docs/Learning-Environment-Design.md
/// [Agents]: https://github.com/Unity-Technologies/ml-agents/blob/release_17_docs/docs/Learning-Environment-Design-Agents.md
/// [Reinforcement Learning in Unity]: https://github.com/Unity-Technologies/ml-agents/blob/release_17_docs/docs/Learning-Environment-Design.md
/// [Unity ML-Agents Toolkit manual]: https://github.com/Unity-Technologies/ml-agents/blob/release_16_docs/docs/Readme.md
/// [Unity ML-Agents Toolkit manual]: https://github.com/Unity-Technologies/ml-agents/blob/release_17_docs/docs/Readme.md
[HelpURL("https://github.com/Unity-Technologies/ml-agents/blob/release_16_docs/" +
[HelpURL("https://github.com/Unity-Technologies/ml-agents/blob/release_17_docs/" +
"docs/Learning-Environment-Design-Agents.md")]
[Serializable]
[RequireComponent(typeof(BehaviorParameters))]

/// for information about mixing reward signals from curiosity and Generative Adversarial
/// Imitation Learning (GAIL) with rewards supplied through this method.
///
/// [Agents - Rewards]: https://github.com/Unity-Technologies/ml-agents/blob/release_16_docs/docs/Learning-Environment-Design-Agents.md#rewards
/// [Reward Signals]: https://github.com/Unity-Technologies/ml-agents/blob/release_16_docs/docs/ML-Agents-Overview.md#a-quick-note-on-reward-signals
/// [Agents - Rewards]: https://github.com/Unity-Technologies/ml-agents/blob/release_17_docs/docs/Learning-Environment-Design-Agents.md#rewards
/// [Reward Signals]: https://github.com/Unity-Technologies/ml-agents/blob/release_17_docs/docs/ML-Agents-Overview.md#a-quick-note-on-reward-signals
/// </remarks>
/// <param name="reward">The new value of the reward.</param>
public void SetReward(float reward)

/// for information about mixing reward signals from curiosity and Generative Adversarial
/// Imitation Learning (GAIL) with rewards supplied through this method.
///
/// [Agents - Rewards]: https://github.com/Unity-Technologies/ml-agents/blob/release_16_docs/docs/Learning-Environment-Design-Agents.md#rewards
/// [Reward Signals]: https://github.com/Unity-Technologies/ml-agents/blob/release_16_docs/docs/ML-Agents-Overview.md#a-quick-note-on-reward-signals
/// [Agents - Rewards]: https://github.com/Unity-Technologies/ml-agents/blob/release_17_docs/docs/Learning-Environment-Design-Agents.md#rewards
/// [Reward Signals]: https://github.com/Unity-Technologies/ml-agents/blob/release_17_docs/docs/ML-Agents-Overview.md#a-quick-note-on-reward-signals
///</remarks>
/// <param name="increment">Incremental reward value.</param>
public void AddReward(float increment)

/// implementing a simple heuristic function can aid in debugging agent actions and interactions
/// with its environment.
///
/// [Demonstration Recorder]: https://github.com/Unity-Technologies/ml-agents/blob/release_16_docs/docs/Learning-Environment-Design-Agents.md#recording-demonstrations
/// [Actions]: https://github.com/Unity-Technologies/ml-agents/blob/release_16_docs/docs/Learning-Environment-Design-Agents.md#actions
/// [Demonstration Recorder]: https://github.com/Unity-Technologies/ml-agents/blob/release_17_docs/docs/Learning-Environment-Design-Agents.md#recording-demonstrations
/// [Actions]: https://github.com/Unity-Technologies/ml-agents/blob/release_17_docs/docs/Learning-Environment-Design-Agents.md#actions
/// [GameObject]: https://docs.unity3d.com/Manual/GameObjects.html
/// </remarks>
/// <example>

/// For more information about observations, see [Observations and Sensors].
///
/// [GameObject]: https://docs.unity3d.com/Manual/GameObjects.html
/// [Observations and Sensors]: https://github.com/Unity-Technologies/ml-agents/blob/release_16_docs/docs/Learning-Environment-Design-Agents.md#observations-and-sensors
/// [Observations and Sensors]: https://github.com/Unity-Technologies/ml-agents/blob/release_17_docs/docs/Learning-Environment-Design-Agents.md#observations-and-sensors
/// </remarks>
public virtual void CollectObservations(VectorSensor sensor)
{

///
/// See [Agents - Actions] for more information on masking actions.
///
/// [Agents - Actions]: https://github.com/Unity-Technologies/ml-agents/blob/release_16_docs/docs/Learning-Environment-Design-Agents.md#actions
/// [Agents - Actions]: https://github.com/Unity-Technologies/ml-agents/blob/release_17_docs/docs/Learning-Environment-Design-Agents.md#actions
/// </remarks>
/// <seealso cref="IActionReceiver.OnActionReceived"/>
public virtual void WriteDiscreteActionMask(IDiscreteActionMask actionMask) { }

///
/// For more information about implementing agent actions see [Agents - Actions].
///
/// [Agents - Actions]: https://github.com/Unity-Technologies/ml-agents/blob/release_16_docs/docs/Learning-Environment-Design-Agents.md#actions
/// [Agents - Actions]: https://github.com/Unity-Technologies/ml-agents/blob/release_17_docs/docs/Learning-Environment-Design-Agents.md#actions
/// </remarks>
/// <param name="actions">
/// Struct containing the buffers of actions to be executed at this step.

2
com.unity.ml-agents/Runtime/Demonstrations/DemonstrationRecorder.cs


/// See [Imitation Learning - Recording Demonstrations] for more information.
///
/// [GameObject]: https://docs.unity3d.com/Manual/GameObjects.html
/// [Imitation Learning - Recording Demonstrations]: https://github.com/Unity-Technologies/ml-agents/blob/release_16_docs/docs//Learning-Environment-Design-Agents.md#recording-demonstrations
/// [Imitation Learning - Recording Demonstrations]: https://github.com/Unity-Technologies/ml-agents/blob/release_17_docs/docs//Learning-Environment-Design-Agents.md#recording-demonstrations
/// </remarks>
[RequireComponent(typeof(Agent))]
[AddComponentMenu("ML Agents/Demonstration Recorder", (int)MenuGroup.Default)]

6
com.unity.ml-agents/Runtime/Integrations/Match3/Match3ActuatorComponent.cs


using System;
using Unity.MLAgents.Actuators;
using UnityEngine;
using UnityEngine.Serialization;

public override IActuator[] CreateActuators()
{
var board = GetComponent<AbstractBoard>();
if (!board)
{
return Array.Empty<IActuator>();
}
var seed = m_RandomSeed == -1 ? gameObject.GetInstanceID() : m_RandomSeed + 1;
return new IActuator[] { new Match3Actuator(board, m_ForceHeuristic, seed, m_ActuatorName) };
}

4
com.unity.ml-agents/Runtime/Integrations/Match3/Match3SensorComponent.cs


Dispose();
var board = GetComponent<AbstractBoard>();
if (!board)
{
return Array.Empty<ISensor>();
}
var cellSensor = Match3Sensor.CellTypeSensor(board, m_ObservationType, m_SensorName + " (cells)");
// This can be null if numSpecialTypes is 0
var specialSensor = Match3Sensor.SpecialTypeSensor(board, m_ObservationType, m_SensorName + " (special)");

21
com.unity.ml-agents/Runtime/Sensors/BoxOverlapChecker.cs


Vector3Int m_GridSize;
bool m_RotateWithAgent;
LayerMask m_ColliderMask;
GameObject m_RootReference;
GameObject m_CenterObject;
GameObject m_AgentGameObject;
string[] m_DetectableTags;
int m_InitialColliderBufferSize;
int m_MaxColliderBufferSize;

Vector3Int gridSize,
bool rotateWithAgent,
LayerMask colliderMask,
GameObject rootReference,
GameObject centerObject,
GameObject agentGameObject,
string[] detectableTags,
int initialColliderBufferSize,
int maxColliderBufferSize)

m_RotateWithAgent = rotateWithAgent;
m_ColliderMask = colliderMask;
m_RootReference = rootReference;
m_CenterObject = centerObject;
m_AgentGameObject = agentGameObject;
m_DetectableTags = detectableTags;
m_InitialColliderBufferSize = initialColliderBufferSize;
m_MaxColliderBufferSize = maxColliderBufferSize;

{
if (m_RotateWithAgent)
{
return m_RootReference.transform.TransformPoint(m_CellLocalPositions[cellIndex]);
return m_CenterObject.transform.TransformPoint(m_CellLocalPositions[cellIndex]);
return m_CellLocalPositions[cellIndex] + m_RootReference.transform.position;
return m_CellLocalPositions[cellIndex] + m_CenterObject.transform.position;
return m_RotateWithAgent ? m_RootReference.transform.rotation : Quaternion.identity;
return m_RotateWithAgent ? m_CenterObject.transform.rotation : Quaternion.identity;
}
/// <summary>

var currentColliderGo = foundColliders[i].gameObject;
// Continue if the current collider go is the root reference
if (ReferenceEquals(currentColliderGo, m_RootReference))
if (ReferenceEquals(currentColliderGo, m_AgentGameObject))
var currentDistanceSquared = (closestColliderPoint - m_RootReference.transform.position).sqrMagnitude;
var currentDistanceSquared = (closestColliderPoint - m_CenterObject.transform.position).sqrMagnitude;
if (currentDistanceSquared >= minDistanceSquared)
{

for (int i = 0; i < numFound; i++)
{
var currentColliderGo = foundColliders[i].gameObject;
if (!ReferenceEquals(currentColliderGo, m_RootReference))
if (!ReferenceEquals(currentColliderGo, m_AgentGameObject))
{
detectedAction.Invoke(currentColliderGo, cellIndex);
}

13
com.unity.ml-agents/Runtime/Sensors/GridSensorComponent.cs


}
[HideInInspector, SerializeField]
internal GameObject m_AgentGameObject;
/// <summary>
/// The reference of the root of the agent. This is used to disambiguate objects with
/// the same tag as the agent. Defaults to current GameObject.
/// </summary>
public GameObject AgentGameObject
{
get { return (m_AgentGameObject == null ? gameObject : m_AgentGameObject); }
set { m_AgentGameObject = value; }
}
[HideInInspector, SerializeField]
internal string[] m_DetectableTags;
/// <summary>
/// List of tags that are detected.

m_RotateWithAgent,
m_ColliderMask,
gameObject,
AgentGameObject,
m_DetectableTags,
m_InitialColliderBufferSize,
m_MaxColliderBufferSize

9
com.unity.ml-agents/Tests/Editor/Integrations/Match3/Match3ActuatorTests.cs


// And they should add up to all the potential moves
Assert.AreEqual(validIndices.Count + masks.HashSets[0].Count, board.NumMoves());
}
[Test]
public void TestNoBoardReturnsEmptyActuators()
{
var gameObj = new GameObject("board");
var actuatorComponent = gameObj.AddComponent<Match3ActuatorComponent>();
var actuators = actuatorComponent.CreateActuators();
Assert.AreEqual(0, actuators.Length);
}
}
}

9
com.unity.ml-agents/Tests/Editor/Integrations/Match3/Match3SensorTests.cs


return bytesOut.ToArray();
}
[Test]
public void TestNoBoardReturnsEmptySensors()
{
var gameObj = new GameObject("board");
var sensorComponent = gameObj.AddComponent<Match3SensorComponent>();
var sensors = sensorComponent.CreateSensors();
Assert.AreEqual(0, sensors.Length);
}
}
}

28
com.unity.ml-agents/Tests/Runtime/Sensor/BoxOverlapCheckerTests.cs


Vector3Int gridSize,
bool rotateWithAgent,
LayerMask colliderMask,
GameObject rootReference,
GameObject centerObject,
GameObject agentGameObject,
string[] detectableTags,
int initialColliderBufferSize,
int maxColliderBufferSize

rotateWithAgent,
colliderMask,
rootReference,
centerObject,
agentGameObject,
detectableTags,
initialColliderBufferSize,
maxColliderBufferSize)

int gridSizeX = 10,
int gridSizeZ = 10,
bool rotateWithAgent = true,
GameObject rootReference = null,
GameObject centerObject = null,
GameObject agentGameObject = null,
string[] detectableTags = null,
int initialColliderBufferSize = 4,
int maxColliderBufferSize = 500)

new Vector3Int(gridSizeX, 1, gridSizeZ),
rotateWithAgent,
LayerMask.GetMask("Default"),
rootReference,
centerObject,
agentGameObject,
detectableTags,
initialColliderBufferSize,
maxColliderBufferSize);

{
var testGo = new GameObject("test");
testGo.transform.position = Vector3.zero;
var boxOverlapSquare = TestBoxOverlapChecker.CreateChecker(gridSizeX: 10, gridSizeZ: 10, rotateWithAgent: false, rootReference: testGo);
var boxOverlapSquare = TestBoxOverlapChecker.CreateChecker(gridSizeX: 10, gridSizeZ: 10, rotateWithAgent: false, agentGameObject: testGo);
var localPos = boxOverlapSquare.CellLocalPositions;
Assert.AreEqual(new Vector3(-4.5f, 0, -4.5f), localPos[0]);

var testGo2 = new GameObject("test");
testGo2.transform.position = new Vector3(3.5f, 8f, 17f); // random, should have no effect on local positions
var boxOverlapRect = TestBoxOverlapChecker.CreateChecker(gridSizeX: 5, gridSizeZ: 15, rotateWithAgent: true, rootReference: testGo);
var boxOverlapRect = TestBoxOverlapChecker.CreateChecker(gridSizeX: 5, gridSizeZ: 15, rotateWithAgent: true, agentGameObject: testGo);
localPos = boxOverlapRect.CellLocalPositions;
Assert.AreEqual(new Vector3(-2f, 0, -7f), localPos[0]);

var testGo = new GameObject("test");
var position = new Vector3(3.5f, 8f, 17f);
testGo.transform.position = position;
var boxOverlap = TestBoxOverlapChecker.CreateChecker(gridSizeX: 10, gridSizeZ: 10, rotateWithAgent: false, rootReference: testGo);
var boxOverlap = TestBoxOverlapChecker.CreateChecker(gridSizeX: 10, gridSizeZ: 10, rotateWithAgent: false, agentGameObject: testGo, centerObject: testGo);
Assert.AreEqual(new Vector3(-4.5f, 0, -4.5f) + position, boxOverlap.GetCellGlobalPosition(0));
Assert.AreEqual(new Vector3(-4.5f, 0, 4.5f) + position, boxOverlap.GetCellGlobalPosition(9));

var testGo = new GameObject("test");
var position = new Vector3(15f, 6f, 13f);
testGo.transform.position = position;
var boxOverlap = TestBoxOverlapChecker.CreateChecker(gridSizeX: 5, gridSizeZ: 15, rotateWithAgent: true, rootReference: testGo);
var boxOverlap = TestBoxOverlapChecker.CreateChecker(gridSizeX: 5, gridSizeZ: 15, rotateWithAgent: true, agentGameObject: testGo, centerObject: testGo);
Assert.AreEqual(new Vector3(-2f, 0, -7f) + position, boxOverlap.GetCellGlobalPosition(0));
Assert.AreEqual(new Vector3(-2f, 0, 7f) + position, boxOverlap.GetCellGlobalPosition(14));

var testGo = new GameObject("test");
testGo.transform.position = Vector3.zero;
testObjects.Add(testGo);
var boxOverlap = TestBoxOverlapChecker.CreateChecker(rootReference: testGo, initialColliderBufferSize: 2, maxColliderBufferSize: 5);
var boxOverlap = TestBoxOverlapChecker.CreateChecker(agentGameObject: testGo, centerObject: testGo, initialColliderBufferSize: 2, maxColliderBufferSize: 5);
boxOverlap.Update();
Assert.AreEqual(2, boxOverlap.ColliderBuffer.Length);

cellScaleZ: 10f,
gridSizeX: 2,
gridSizeZ: 2,
rootReference: testGo,
agentGameObject: testGo,
centerObject: testGo,
detectableTags: new [] { tag1 });
var helper = new VerifyParseCollidersHelper();
boxOverlap.GridOverlapDetectedClosest += helper.DetectedAction;

cellScaleZ: 10f,
gridSizeX: 2,
gridSizeZ: 2,
rootReference: testGo,
agentGameObject: testGo,
centerObject: testGo,
detectableTags: new [] { tag1 });
var helper = new VerifyParseCollidersHelper();
boxOverlap.GridOverlapDetectedAll += helper.DetectedAction;

2
ml-agents-envs/README.md


Install the `mlagents_envs` package with:
```sh
python -m pip install mlagents_envs==0.25.1
python -m pip install mlagents_envs==0.26.0
```
## Usage & More Information

4
ml-agents-envs/mlagents_envs/__init__.py


# Version of the library that will be used to upload to pypi
__version__ = "0.26.0.dev0"
__version__ = "0.26.0"
__release_tag__ = None
__release_tag__ = "release_17"

8
docs/Installation-Anaconda-Windows.md


the ml-agents Conda environment by typing `activate ml-agents`)_:
```sh
git clone --branch release_16 https://github.com/Unity-Technologies/ml-agents.git
git clone --branch release_17 https://github.com/Unity-Technologies/ml-agents.git
The `--branch release_16` option will switch to the tag of the latest stable
The `--branch release_17` option will switch to the tag of the latest stable
release. Omitting that will get the `main` branch which is potentially
unstable.

connected to the Internet and then type in the Anaconda Prompt:
```console
python -m pip install mlagents==0.25.1
python -m pip install mlagents==0.26.0
```
This will complete the installation of all the required Python packages to run

this, you can try:
```console
python -m pip install mlagents==0.25.1 --no-cache-dir
python -m pip install mlagents==0.26.0 --no-cache-dir
```
This `--no-cache-dir` tells the pip to disable the cache.

8
docs/Installation.md


the repository if you would like to explore more examples.
```sh
git clone --branch release_16 https://github.com/Unity-Technologies/ml-agents.git
git clone --branch release_17 https://github.com/Unity-Technologies/ml-agents.git
The `--branch release_16` option will switch to the tag of the latest stable
The `--branch release_17` option will switch to the tag of the latest stable
release. Omitting that will get the `main` branch which is potentially unstable.
#### Advanced: Local Installation for Development

back, make sure to clone the `main` branch (by omitting `--branch release_16`
back, make sure to clone the `main` branch (by omitting `--branch release_17`
from the command above). See our
[Contributions Guidelines](../com.unity.ml-agents/CONTRIBUTING.md) for more
information on contributing to the ML-Agents Toolkit.

run from the command line:
```sh
python -m pip install mlagents==0.25.1
python -m pip install mlagents==0.26.0
```
Note that this will install `mlagents` from PyPi, _not_ from the cloned

2
docs/Training-on-Amazon-Web-Service.md


2. Clone the ML-Agents repo and install the required Python packages
```sh
git clone --branch release_16 https://github.com/Unity-Technologies/ml-agents.git
git clone --branch release_17 https://github.com/Unity-Technologies/ml-agents.git
cd ml-agents/ml-agents/
pip3 install -e .
```

2
docs/Training-on-Microsoft-Azure.md


instance, and set it as the working directory.
2. Install the required packages:
Torch: `pip3 install torch==1.7.0 -f https://download.pytorch.org/whl/torch_stable.html` and
MLAgents: `python -m pip install mlagents==0.25.1`
MLAgents: `python -m pip install mlagents==0.26.0`
## Testing

4
docs/Unity-Inference-Engine.md


loading expects certain conventions for constants and tensor names. While it is
possible to construct a model that follows these conventions, we don't provide
any additional help for this. More details can be found in
[TensorNames.cs](https://github.com/Unity-Technologies/ml-agents/blob/release_16_docs/com.unity.ml-agents/Runtime/Inference/TensorNames.cs)
[TensorNames.cs](https://github.com/Unity-Technologies/ml-agents/blob/release_17_docs/com.unity.ml-agents/Runtime/Inference/TensorNames.cs)
[BarracudaModelParamLoader.cs](https://github.com/Unity-Technologies/ml-agents/blob/release_16_docs/com.unity.ml-agents/Runtime/Inference/BarracudaModelParamLoader.cs).
[BarracudaModelParamLoader.cs](https://github.com/Unity-Technologies/ml-agents/blob/release_17_docs/com.unity.ml-agents/Runtime/Inference/BarracudaModelParamLoader.cs).
If you wish to run inference on an externally trained model, you should use
Barracuda directly, instead of trying to run it through ML-Agents.

19
docs/Learning-Environment-Design-Agents.md


runtime. It must be attached to the same `GameObject` as the `Agent`, or to a
child `GameObject`.
There are several SensorComponents provided in the API:
- `CameraSensorComponent` - Allows image from `Camera` to be used as
observation.
- `RenderTextureSensorComponent` - Allows content of `RenderTexture` to be used
as observation.
- `RayPerceptionSensorComponent` - Allows information from set of ray-casts to
be used as observation.
There are several SensorComponents provided in the API, including:
- `CameraSensorComponent` - Uses images from a `Camera` as observations.
- `RenderTextureSensorComponent` - Uses the content of a `RenderTexture` as
observations.
- `RayPerceptionSensorComponent` - Uses the information from set of ray casts
as observations.
- `Match3SensorComponent` - Uses the board of a [Match-3 game](Integrations-Match3.md)
as observations.
- `GridSensorComponent` - Uses a set of box queries in a grid shape as
observations.
`Behavior Parameters` when using an ISensor SensorComponents.
`Behavior Parameters` when using `SensorComponents`s.
Internally, both `Agent.CollectObservations` and `[Observable]` attribute use an
ISensors to write observations, although this is mostly abstracted from the user.

32
docs/Migrating.md


# Upgrading
## :warning: Warning :warning:
The C# editor code and python trainer code are not compatible between releases.
This means that if you upgrade one, you _must_ upgrade the other as well. If you
experience new errors or unable to connect to training after updating, please
double-check that the versions are in the same. The versions can be found in
- `Academy.k_ApiVersion` in Academy.cs
([example](https://github.com/Unity-Technologies/ml-agents/blob/b255661084cb8f701c716b040693069a3fb9a257/UnitySDK/Assets/ML-Agents/Scripts/Academy.cs#L95))
- `UnityEnvironment.API_VERSION` in environment.py
([example](https://github.com/Unity-Technologies/ml-agents/blob/b255661084cb8f701c716b040693069a3fb9a257/ml-agents-envs/mlagents/envs/environment.py#L45))
# Migrating
## Migrating the package to version 2.0
- The official version of Unity ML-Agents supports is now 2019.4 LTS. If you run

deprecated APIs have been removed. See the migration steps bellow for specific API replacements.
### Deprecated methods removed
| **Deprecated API** | **Suggested Replacement** |
|:-------:|:------:|
| `IActuator ActuatorComponent.CreateActuator()` | `IActuator[] ActuatorComponent.CreateActuators()` |
| `IActionReceiver.PackActions(in float[] destination)` | none |
| `Agent.CollectDiscreteActionMasks(DiscreteActionMasker actionMasker)` | `Agent.WriteDiscreteActionMask(IDiscreteActionMask actionMask)` |
| `Agent.Heuristic(float[] actionsOut)` | `Agent.Heuristic(in ActionBuffers actionsOut)` |
| `Agent.OnActionReceived(float[] vectorAction)` | `Agent.OnActionReceived(ActionBuffers actions)` |
| `Agent.GetAction()` | `Agent.GetStoredActionBuffers()` |
| `BrainParameters.SpaceType`, `VectorActionSize`, `VectorActionSpaceType`, and `NumActions` | `BrainParameters.ActionSpec` |
| `ObservationWriter.AddRange(IEnumerable<float> data, int writeOffset = 0)` | `ObservationWriter. AddList(IList<float> data, int writeOffset = 0` |
| `SensorComponent.IsVisual()` and `IsVector()` | none |
| `VectorSensor.AddObservation(IEnumerable<float> observation)` | `VectorSensor.AddObservation(IList<float> observation)` |
| `SideChannelsManager` | `SideChannelManager` |
### IDiscreteActionMask changes
- The interface for disabling specific discrete actions has changed. `IDiscreteActionMask.WriteMask()` was removed,
and replaced with `SetActionEnabled()`. Instead of returning an IEnumerable with indices to disable, you can

You'll need to remove the old sensor and create a new GridSensor.
* These parameters names have changed but still refer to the same concept in the sensor: `GridNumSide` -> `GridSize`,
`RotateToAgent` -> `RotateWithAgent`, `ObserveMask` -> `ColliderMask`, `DetectableObjects` -> `DetectableTags`
* `RootReference` is removed and the sensor component's GameObject will always be ignored for hit results.
* `DepthType` (`ChanelBase`/`ChannelHot`) option and `ChannelDepth` are removed. Now the default is
one-hot encoding for detected tag. If you were using original GridSensor without overriding any method,
switching to new GridSensor will produce similar effect for training although the actual observations

- The Parameter Randomization feature has been merged with the Curriculum feature. It is now possible to specify a sampler
in the lesson of a Curriculum. Curriculum has been refactored and is now specified at the level of the parameter, not the
behavior. More information
[here](https://github.com/Unity-Technologies/ml-agents/blob/release_16_docs/docs/Training-ML-Agents.md).(#4160)
[here](https://github.com/Unity-Technologies/ml-agents/blob/release_17_docs/docs/Training-ML-Agents.md).(#4160)
### Steps to Migrate
- The configuration format for curriculum and parameter randomization has changed. To upgrade your configuration files,

2
ml-agents/setup.py


"protobuf>=3.6",
"pyyaml>=3.1.0",
# Windows ver. of PyTorch doesn't work from PyPi. Installation:
# https://github.com/Unity-Technologies/ml-agents/blob/release_16_docs/docs/Installation.md#windows-installing-pytorch
# https://github.com/Unity-Technologies/ml-agents/blob/release_17_docs/docs/Installation.md#windows-installing-pytorch
# Torch only working on python 3.9 for 1.8.0 and above. Details see:
# https://github.com/pytorch/pytorch/issues/50014
"torch>=1.8.0,<1.9.0;(platform_system!='Windows' and python_version>='3.9')",

2
ml-agents/README.md


Install the `mlagents` package with:
```sh
python -m pip install mlagents==0.25.1
python -m pip install mlagents==0.26.0
```
## Usage & More Information

1
ml-agents/mlagents/plugins/stats_writer.py


TensorboardWriter(
checkpoint_settings.write_path,
clear_past_data=not checkpoint_settings.resume,
hidden_keys=["Is Training", "Step"],
),
GaugeWriter(),
ConsoleWriter(),

15
ml-agents/mlagents/trainers/stats.py


from collections import defaultdict
from enum import Enum
from typing import List, Dict, NamedTuple, Any
from typing import List, Dict, NamedTuple, Any, Optional
import numpy as np
import abc
import os

from mlagents_envs.timers import set_gauge
from torch.utils.tensorboard import SummaryWriter
from mlagents.torch_utils.globals import get_rank
logger = get_logger(__name__)

class TensorboardWriter(StatsWriter):
def __init__(self, base_dir: str, clear_past_data: bool = False):
def __init__(
self,
base_dir: str,
clear_past_data: bool = False,
hidden_keys: Optional[List[str]] = None,
):
"""
A StatsWriter that writes to a Tensorboard summary.

category.
:param hidden_keys: If provided, Tensorboard Writer won't write statistics identified with these Keys in
Tensorboard summary.
self.hidden_keys: List[str] = hidden_keys if hidden_keys is not None else []
def write_stats(
self, category: str, values: Dict[str, StatsSummary], step: int

if key in self.hidden_keys:
continue
self.summary_writers[category].add_scalar(
f"{key}", value.aggregated_value, step
)

4
ml-agents/mlagents/trainers/__init__.py


# Version of the library that will be used to upload to pypi
__version__ = "0.26.0.dev0"
__version__ = "0.26.0"
__release_tag__ = None
__release_tag__ = "release_17"

11
ml-agents/mlagents/trainers/torch/networks.py


class MultiAgentNetworkBody(torch.nn.Module):
ATTENTION_EMBEDDING_SIZE = 128
"""
A network body that uses a self attention layer to handle state
and action input from a potentially variable number of agents that

+ self.action_spec.continuous_size
)
attention_embeding_size = self.h_size
obs_only_ent_size, None, self.ATTENTION_EMBEDDING_SIZE
obs_only_ent_size, None, attention_embeding_size
q_ent_size, None, self.ATTENTION_EMBEDDING_SIZE
q_ent_size, None, attention_embeding_size
self.self_attn = ResidualSelfAttention(self.ATTENTION_EMBEDDING_SIZE)
self.self_attn = ResidualSelfAttention(attention_embeding_size)
self.ATTENTION_EMBEDDING_SIZE,
attention_embeding_size,
network_settings.num_layers,
self.h_size,
kernel_gain=(0.125 / self.h_size) ** 0.5,

35
ml-agents/mlagents/trainers/settings.py


)
@staticmethod
def dict_to_defaultdict(d: Dict, t: type) -> DefaultDict:
def dict_to_trainerdict(d: Dict, t: type) -> >"TrainerSettings.DefaultTrainerDict":
return TrainerSettings.DefaultTrainerDict(
cattr.structure(d, Dict[str, TrainerSettings])
)

super().__init__(*args)
else:
super().__init__(TrainerSettings, *args)
self._config_specified = True
def set_config_specified(self, require_config_specified: bool) -> None:
self._config_specified = require_config_specified
return copy.deepcopy(TrainerSettings.default_override)
self[key] = copy.deepcopy(TrainerSettings.default_override)
elif self._config_specified:
raise TrainerConfigError(
f"The behavior name {key} has not been specified in the trainer configuration. "
f"Please add an entry in the configuration file for {key}, or set default_settings."
)
return TrainerSettings()
logger.warn(
f"Behavior name {key} does not match any behaviors specified "
f"in the trainer configuration file. A default configuration will be used."
)
self[key] = TrainerSettings()
return self[key]
# COMMAND LINE #########################################################################

@attr.s(auto_attribs=True)
class RunOptions(ExportableSettings):
default_settings: Optional[TrainerSettings] = None
behaviors: DefaultDict[str, TrainerSettings] = attr.ib(
behaviors: TrainerSettings.DefaultTrainerDict = attr.ib(
factory=TrainerSettings.DefaultTrainerDict
)
env_settings: EnvironmentSettings = attr.ib(factory=EnvironmentSettings)

# These are options that are relevant to the run itself, and not the engine or environment.
# They will be left here.
debug: bool = parser.get_default("debug")
# Strict conversion
# Convert to settings while making sure all fields are valid
cattr.register_structure_hook(EnvironmentSettings, strict_to_cls)
cattr.register_structure_hook(EngineSettings, strict_to_cls)
cattr.register_structure_hook(CheckpointSettings, strict_to_cls)

)
cattr.register_structure_hook(TrainerSettings, TrainerSettings.structure)
cattr.register_structure_hook(
DefaultDict[str, TrainerSettings], TrainerSettings.dict_to_defaultdict
TrainerSettings.DefaultTrainerDict, TrainerSettings.dict_to_trainerdict
)
cattr.register_unstructure_hook(collections.defaultdict, defaultdict_to_dict)

"engine_settings": {},
"torch_settings": {},
}
_require_all_behaviors = True
else:
# If we're not loading from a file, we don't require all behavior names to be specified.
_require_all_behaviors = False
# Use the YAML file values for all values not specified in the CLI.
for key in configured_dict.keys():

configured_dict[key] = val
final_runoptions = RunOptions.from_dict(configured_dict)
# Need check to bypass type checking but keep structure on dict working
if isinstance(final_runoptions.behaviors, TrainerSettings.DefaultTrainerDict):
# configure whether or not we should require all behavior names to be found in the config YAML
final_runoptions.behaviors.set_config_specified(_require_all_behaviors)
return final_runoptions
@staticmethod

25
ml-agents/mlagents/trainers/tests/test_stats.py


assert len(os.listdir(os.path.join(tmp_path, "category1"))) == 1
@mock.patch("mlagents.trainers.stats.SummaryWriter")
def test_tensorboard_writer_hidden_keys(mock_summary):
# Test write_stats
category = "category1"
with tempfile.TemporaryDirectory(prefix="unittest-") as base_dir:
tb_writer = TensorboardWriter(
base_dir, clear_past_data=False, hidden_keys="hiddenKey"
)
statssummary1 = StatsSummary(
full_dist=[1.0], aggregation_method=StatsAggregationMethod.AVERAGE
)
tb_writer.write_stats("category1", {"hiddenKey": statssummary1}, 10)
# Test that the filewriter has been created and the directory has been created.
filewriter_dir = "{basedir}/{category}".format(
basedir=base_dir, category=category
)
assert os.path.exists(filewriter_dir)
mock_summary.assert_called_once_with(filewriter_dir)
# Test that the filewriter was not written to since we used the hidden key.
mock_summary.return_value.add_scalar.assert_not_called()
mock_summary.return_value.flush.assert_not_called()
def test_gauge_stat_writer_sanitize():
assert GaugeWriter.sanitize_string("Policy/Learning Rate") == "Policy.LearningRate"
assert (

35
ml-agents/mlagents/trainers/tests/test_settings.py


Verify that a new config will have a PPO trainer with extrinsic rewards.
"""
blank_runoptions = RunOptions()
blank_runoptions.behaviors.set_config_specified(False)
assert (
RewardSignalType.EXTRINSIC in blank_runoptions.behaviors["test"].reward_signals
)

default_settings_cls = cattr.structure(default_settings, TrainerSettings)
check_if_different(default_settings_cls, run_options.behaviors["test2"])
# Check that an existing beehavior overrides the defaults in specified fields
# Check that an existing behavior overrides the defaults in specified fields
test1_settings = run_options.behaviors["test1"]
assert test1_settings.max_steps == 2
assert test1_settings.network_settings.hidden_units == 2000

test1_settings.network_settings.hidden_units == default_settings_cls.network_settings.hidden_units
check_if_different(test1_settings, default_settings_cls)
def test_config_specified():
# Test require all behavior names to be specified (or not)
# Remove any pre-set defaults
TrainerSettings.default_override = None
behaviors = {"test1": {"max_steps": 2, "network_settings": {"hidden_units": 2000}}}
run_options_dict = {"behaviors": behaviors}
ro = RunOptions.from_dict(run_options_dict)
# Don't require all behavior names
ro.behaviors.set_config_specified(False)
# Test that we can grab an entry that is not in the dict.
assert isinstance(ro.behaviors["test2"], TrainerSettings)
# Create strict RunOptions with no defualt_settings
run_options_dict = {"behaviors": behaviors}
ro = RunOptions.from_dict(run_options_dict)
# Require all behavior names
ro.behaviors.set_config_specified(True)
with pytest.raises(TrainerConfigError):
# Variable must be accessed otherwise Python won't query the dict
print(ro.behaviors["test2"])
# Create strict RunOptions with default settings
default_settings = {"max_steps": 1, "network_settings": {"num_layers": 1000}}
run_options_dict = {"default_settings": default_settings, "behaviors": behaviors}
ro = RunOptions.from_dict(run_options_dict)
# Require all behavior names
ro.behaviors.set_config_specified(True)
# Test that we can grab an entry that is not in the dict.
assert isinstance(ro.behaviors["test2"], TrainerSettings)
def test_pickle():

2
ml-agents/mlagents/trainers/tests/test_trainer_util.py


"""
brain_name = "testbrain"
no_default_config = RunOptions().behaviors
# Pretend this was created without a YAML file
no_default_config.set_config_specified(False)
trainer_factory = TrainerFactory(
trainer_config=no_default_config,

1
ml-agents/mlagents/trainers/trainer/rl_trainer.py


p = self.get_policy(name_behavior_id)
if p:
p.increment_step(n_steps)
self.stats_reporter.set_stat("Step", float(self.get_step))
def _get_next_interval_step(self, interval: int) -> int:
"""

5
ml-agents/mlagents/trainers/trainer/trainer_factory.py


self.ghost_controller = GhostController()
def generate(self, behavior_name: str) -> Trainer:
if behavior_name not in self.trainer_config.keys():
logger.warning(
f"Behavior name {behavior_name} does not match any behaviors specified"
f"in the trainer configuration file: {sorted(self.trainer_config.keys())}"
)
trainer_settings = self.trainer_config[behavior_name]
return TrainerFactory._initialize_trainer(
trainer_settings,

4
Project/Packages/packages-lock.json


{
"dependencies": {
"com.unity.barracuda": {
"version": "1.3.3-preview",
"version": "1.4.0-preview",
"depth": 1,
"source": "registry",
"dependencies": {

"depth": 0,
"source": "local",
"dependencies": {
"com.unity.barracuda": "1.3.3-preview",
"com.unity.barracuda": "1.4.0-preview",
"com.unity.modules.imageconversion": "1.0.0",
"com.unity.modules.jsonserialize": "1.0.0"
}

8
Project/Assets/ML-Agents/Examples/Soccer/Prefabs/SoccerFieldTwos.prefab


agentParameters:
maxStep: 0
hasUpgradedFromAgentParameters: 1
MaxStep: 3000
MaxStep: 0
team: 0
position: 2
agentRb: {fileID: 0}

agentParameters:
maxStep: 0
hasUpgradedFromAgentParameters: 1
MaxStep: 3000
MaxStep: 0
team: 1
position: 2
agentRb: {fileID: 0}

agentParameters:
maxStep: 0
hasUpgradedFromAgentParameters: 1
MaxStep: 3000
MaxStep: 0
team: 0
position: 2
agentRb: {fileID: 0}

agentParameters:
maxStep: 0
hasUpgradedFromAgentParameters: 1
MaxStep: 3000
MaxStep: 0
team: 1
position: 2
agentRb: {fileID: 0}

6
Project/Assets/ML-Agents/Examples/Soccer/Prefabs/StrikersVsGoalieField.prefab


agentParameters:
maxStep: 0
hasUpgradedFromAgentParameters: 1
MaxStep: 3000
MaxStep: 0
team: 0
position: 1
agentRb: {fileID: 0}

agentParameters:
maxStep: 0
hasUpgradedFromAgentParameters: 1
MaxStep: 3000
MaxStep: 0
team: 1
position: 0
agentRb: {fileID: 0}

agentParameters:
maxStep: 0
hasUpgradedFromAgentParameters: 1
MaxStep: 3000
MaxStep: 0
team: 1
position: 0
agentRb: {fileID: 0}

54
Project/Assets/ML-Agents/Examples/PushBlock/Prefabs/PushBlockCollabAreaGrid.prefab


m_Modification:
m_TransformParent: {fileID: 8188317207052398481}
m_Modifications:
- target: {fileID: 1548337883655231979, guid: ac01d0f42c5e1463e943632a60d99967,
type: 3}
propertyPath: m_RootReference
value:
objectReference: {fileID: 8190299122290044757}
- target: {fileID: 1548337883655231979, guid: ac01d0f42c5e1463e943632a60d99967,
type: 3}
propertyPath: m_AgentGameObject
value:
objectReference: {fileID: 8190299122290044757}
- target: {fileID: 2598450485826216109, guid: ac01d0f42c5e1463e943632a60d99967,
type: 3}
propertyPath: m_Model

type: 3}
m_PrefabInstance: {fileID: 6067781793364901444}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_GameObject: {fileID: 8190299122290044757}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d94a85eca2e074578943301959c555ba, type: 3}

type: 3}
m_PrefabInstance: {fileID: 6067781793364901444}
m_PrefabAsset: {fileID: 0}
--- !u!1 &8190299122290044757 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 2710286047221272849, guid: ac01d0f42c5e1463e943632a60d99967,
type: 3}
m_PrefabInstance: {fileID: 6067781793364901444}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &6565363751102736699
PrefabInstance:
m_ObjectHideFlags: 0

m_Modifications:
- target: {fileID: 1548337883655231979, guid: ac01d0f42c5e1463e943632a60d99967,
type: 3}
propertyPath: m_RootReference
value:
objectReference: {fileID: 9115291448867436586}
- target: {fileID: 1548337883655231979, guid: ac01d0f42c5e1463e943632a60d99967,
type: 3}
propertyPath: m_AgentGameObject
value:
objectReference: {fileID: 9115291448867436586}
- target: {fileID: 2598450485826216109, guid: ac01d0f42c5e1463e943632a60d99967,
type: 3}
propertyPath: m_Model

type: 3}
m_PrefabInstance: {fileID: 6565363751102736699}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_GameObject: {fileID: 9115291448867436586}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d94a85eca2e074578943301959c555ba, type: 3}

type: 3}
m_PrefabInstance: {fileID: 6565363751102736699}
m_PrefabAsset: {fileID: 0}
--- !u!1 &9115291448867436586 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 2710286047221272849, guid: ac01d0f42c5e1463e943632a60d99967,
type: 3}
m_PrefabInstance: {fileID: 6565363751102736699}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &6716844123244810954
PrefabInstance:
m_ObjectHideFlags: 0

m_Modifications:
- target: {fileID: 1548337883655231979, guid: ac01d0f42c5e1463e943632a60d99967,
type: 3}
propertyPath: m_RootReference
value:
objectReference: {fileID: 8695281997955662811}
- target: {fileID: 1548337883655231979, guid: ac01d0f42c5e1463e943632a60d99967,
type: 3}
propertyPath: m_AgentGameObject
value:
objectReference: {fileID: 8695281997955662811}
- target: {fileID: 2598450485826216109, guid: ac01d0f42c5e1463e943632a60d99967,
type: 3}
propertyPath: m_Model

type: 3}
m_PrefabInstance: {fileID: 6716844123244810954}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_GameObject: {fileID: 8695281997955662811}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d94a85eca2e074578943301959c555ba, type: 3}

type: 3}
m_PrefabInstance: {fileID: 6716844123244810954}
m_PrefabAsset: {fileID: 0}
--- !u!1 &8695281997955662811 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 2710286047221272849, guid: ac01d0f42c5e1463e943632a60d99967,
type: 3}
m_PrefabInstance: {fileID: 6716844123244810954}
m_PrefabAsset: {fileID: 0}

5
Project/Assets/ML-Agents/Examples/PushBlock/Scenes/PushBlockCollab.unity


m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 4704531522807670703, guid: f5bbed44a6ea747a687fbbb738eb1730,
type: 3}
propertyPath: m_ShowGizmos
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8188317207052398481, guid: f5bbed44a6ea747a687fbbb738eb1730,
type: 3}
propertyPath: m_RootOrder

4
Project/Assets/ML-Agents/Examples/Match3/Scripts/Match3Drawer.cs


if (!m_Board)
{
m_Board = GetComponent<Match3Board>();
if (m_Board == null)
{
return;
}
}
var currentSize = m_Board.GetCurrentBoardSize();

6
Project/Assets/ML-Agents/Examples/Match3/Scripts/Match3Agent.cs


State m_CurrentState = State.WaitForMove;
float m_TimeUntilMove;
private int m_MovesMade;
private ModelOverrider m_ModelOverrider;
m_ModelOverrider = GetComponent<ModelOverrider>();
}
public override void OnEpisodeBegin()

private void FixedUpdate()
{
if (Academy.Instance.IsCommunicatorOn)
// Make a move every step if we're training, or we're overriding models in CI.
var useFast = Academy.Instance.IsCommunicatorOn || (m_ModelOverrider != null && m_ModelOverrider.HasOverrides);
if (useFast)
{
FastUpdate();
}

136
Project/Assets/ML-Agents/Examples/FoodCollector/Prefabs/VisualFoodCollectorArea.prefab


m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0

m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0

m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0

m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0

m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0

m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0

- component: {fileID: 114380897261200276}
- component: {fileID: 114326390494230518}
- component: {fileID: 4034342608499629224}
- component: {fileID: 3681854374749311046}
m_Layer: 0
m_Name: Agent (3)
m_TagString: agent

m_Width: 84
m_Height: 84
m_Grayscale: 0
m_ObservationType: 0
m_ObservationStacks: 1
m_Compression: 1
--- !u!114 &4034342608499629224

m_EditorClassIdentifier:
DecisionPeriod: 5
TakeActionsBetweenDecisions: 1
--- !u!114 &3681854374749311046
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1165679820726490}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3a6da8f78a394c6ab027688eab81e04d, type: 3}
m_Name:
m_EditorClassIdentifier:
debugCommandLineOverride:
--- !u!1 &1179319070824364
GameObject:
m_ObjectHideFlags: 0

m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0

m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0

m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0

m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0

m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0

- component: {fileID: 114869844339180154}
- component: {fileID: 114429222608880102}
- component: {fileID: 7234640249101665162}
- component: {fileID: 3300832746663767942}
m_Layer: 0
m_Name: Agent (1)
m_TagString: agent

m_Width: 84
m_Height: 84
m_Grayscale: 0
m_ObservationType: 0
m_ObservationStacks: 1
m_Compression: 1
--- !u!114 &7234640249101665162

m_EditorClassIdentifier:
DecisionPeriod: 5
TakeActionsBetweenDecisions: 1
--- !u!114 &3300832746663767942
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1317136368302180}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3a6da8f78a394c6ab027688eab81e04d, type: 3}
m_Name:
m_EditorClassIdentifier:
debugCommandLineOverride:
--- !u!1 &1353209702154624
GameObject:
m_ObjectHideFlags: 0

m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0

m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0

m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0

- component: {fileID: 114484596947519388}
- component: {fileID: 114036270357198286}
- component: {fileID: 3164735207755090463}
- component: {fileID: 8027755491947001153}
m_Layer: 0
m_Name: Agent
m_TagString: agent

m_Width: 84
m_Height: 84
m_Grayscale: 0
m_ObservationType: 0
m_ObservationStacks: 1
m_Compression: 1
--- !u!114 &3164735207755090463

m_EditorClassIdentifier:
DecisionPeriod: 5
TakeActionsBetweenDecisions: 1
--- !u!114 &8027755491947001153
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1373801553976666}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3a6da8f78a394c6ab027688eab81e04d, type: 3}
m_Name:
m_EditorClassIdentifier:
debugCommandLineOverride:
--- !u!1 &1399553220224106
GameObject:
m_ObjectHideFlags: 0

m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0

m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0

m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0

m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0

m_ClearFlags: 2
m_BackGroundColor: {r: 0.46666667, g: 0.5647059, b: 0.60784316, a: 1}
m_projectionMatrixMode: 1
m_GateFitMode: 2
m_FOVAxisMode: 0
m_GateFitMode: 2
m_FocalLength: 50
m_NormalizedViewPortRect:
serializedVersion: 2

m_ClearFlags: 2
m_BackGroundColor: {r: 0.46666667, g: 0.5647059, b: 0.60784316, a: 1}
m_projectionMatrixMode: 1
m_GateFitMode: 2
m_FOVAxisMode: 0
m_GateFitMode: 2
m_FocalLength: 50
m_NormalizedViewPortRect:
serializedVersion: 2

m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0

m_ClearFlags: 2
m_BackGroundColor: {r: 0.46666667, g: 0.5647059, b: 0.60784316, a: 1}
m_projectionMatrixMode: 1
m_GateFitMode: 2
m_FOVAxisMode: 0
m_GateFitMode: 2
m_FocalLength: 50
m_NormalizedViewPortRect:
serializedVersion: 2

m_ClearFlags: 2
m_BackGroundColor: {r: 0.46666667, g: 0.5647059, b: 0.60784316, a: 1}
m_projectionMatrixMode: 1
m_GateFitMode: 2
m_FOVAxisMode: 0
m_GateFitMode: 2
m_FocalLength: 50
m_NormalizedViewPortRect:
serializedVersion: 2

m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0

m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0

m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0

m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0

m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0

m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0

m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0

m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0

m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0

m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0

- component: {fileID: 114729119221978826}
- component: {fileID: 114322691115031348}
- component: {fileID: 5903164052970896384}
- component: {fileID: 7317454953167631695}
m_Layer: 0
m_Name: Agent (2)
m_TagString: agent

m_Width: 84
m_Height: 84
m_Grayscale: 0
m_ObservationType: 0
m_ObservationStacks: 1
m_Compression: 1
--- !u!114 &5903164052970896384

m_EditorClassIdentifier:
DecisionPeriod: 5
TakeActionsBetweenDecisions: 1
--- !u!114 &7317454953167631695
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1939112378710628}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3a6da8f78a394c6ab027688eab81e04d, type: 3}
m_Name:
m_EditorClassIdentifier:
debugCommandLineOverride:
--- !u!1 &1971119195936814
GameObject:
m_ObjectHideFlags: 0

m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0

m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
serializedVersion: 3
serializedVersion: 4
m_CookingOptions: 14
m_CookingOptions: 30
m_Mesh: {fileID: 4300000, guid: a9d8f499f5b9848438d280dc28b3b52e, type: 3}

12
Project/Assets/ML-Agents/Examples/SharedAssets/Scripts/ModelOverrider.cs


// The attached Agent
Agent m_Agent;
// Whether or not the commandline args have already been processed.
// Used to make sure that HasOverrides doesn't spam the logs if it's called multiple times.
private bool m_HaveProcessedCommandLine;
string m_BehaviorNameOverrideDirectory;
private List<string> m_OverrideExtensions = new List<string>();

/// <summary>
/// Get the asset path to use from the commandline arguments.
/// Can be called multiple times - if m_HaveProcessedCommandLine is set, will have no effect.
if (m_HaveProcessedCommandLine)
{
return;
}
var maxEpisodes = 0;
var timeoutSeconds = 0;

{
m_Deadline = DateTime.Now + TimeSpan.FromSeconds(timeoutSeconds);
Debug.Log($"setting deadline to {timeoutSeconds} from now.");
}
}
m_HaveProcessedCommandLine = true;
}
void OnEnable()

13
Project/Assets/ML-Agents/Examples/SharedAssets/Materials/Checkers_Gray.mat


Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Checkers_Gray
m_Shader: {fileID: 47, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords: _GLOSSYREFLECTIONS_OFF _METALLICGLOSSMAP _NORMALMAP _SPECULARHIGHLIGHTS_OFF

m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Scale: {x: 3, y: 3}
m_Scale: {x: 1, y: 1}
m_Scale: {x: 3, y: 3}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 2800000, guid: 0dbde4b748147ad46bb2c40602273db7, type: 3}

- _GlossyReflections: 0
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _OcclusionStrength: 0.359
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 0

m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _Color: {r: 0.011347434, g: 0.8018868, b: 0.05088379, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}

76
com.unity.ml-agents.extensions/Documentation~/CustomGridSensors.md


# Extending Grid Sensors
## Overview
Grid Sensor provides a 2D observation that detects objects around an agent from a top-down view. Compared to RayCasts, it receives a full observation in a grid area without gaps, and the detection is not blocked by objects around the agents. This gives a more granular view while requiring a higher usage of compute resources.
One extra feature with Grid Sensors is that you can derive from the Grid Sensor base class to collect custom data besides the object tags, to include custom attributes as observations. This allows more flexibility for the use of GridSensor. This doc will elaborate how to create custom grid-based sensor class, and the sensors implementations provided in ml-agents package.
## Customized Grid Sensor
To create a custom grid sensor, you'll need to derive from two classes: `GridSensorBase` and `GridSensorComponent`.
### Deriving from `GridSensorBase`
This is the implementation of your sensor. This defines how your sensor process detected colliders,
what the data looks like, and how the observations are constructed from the detected objects.
Consider overriding the following methods depending on your use case:
* `protected virtual int GetCellObservationSize()`: Return the observation size per cell. Default to `1`.
* `protected virtual void GetObjectData(GameObject detectedObject, int tagIndex, float[] dataBuffer)`: Constructs observations from the detected object. The input provides the detected GameObject and the index of its tag (0-indexed). The observations should be written to the given `dataBuffer` and the buffer size is defined in `GetCellObservationSize()`. This data will be gathered from each cell and sent to the trainer as observation.
* `protected virtual bool IsDataNormalized()`: Return whether the observation is normalized to 0~1. This affects whether you're able to use compressed observations as compressed data only supports normalized data. Return `true` if all the values written in `GetObjectData` are within the range of (0, 1), otherwise return `false`. Default to `false`.
There might be cases when your data is not in the range of (0, 1) but you still wish to use compressed data to speed up training. If your data is naturally bounded within a range, normalize your data first to the possible range and fill the buffer with normalized data. For example, since the angle of rotation is bounded within `0 ~ 360`, record an angle `x` as `x/360` instead of `x`. If your data value is not bounded (position, velocity, etc.), consider setting a reasonable min/max value and use that to normalize your data.
* `protected internal virtual ProcessCollidersMethod GetProcessCollidersMethod()`: Return the method to process colliders detected in a cell. This defines the sensor behavior when multiple objects with detectable tags are detected within a cell.
Currently two methods are provided:
* `ProcessCollidersMethod.ProcessClosestColliders` (Default): Process the closest collider to the agent. In this case each cell's data is represented by one object.
* `ProcessCollidersMethod.ProcessAllColliders`: Process all detected colliders. This is useful when the data from each cell is additive, for instance, the count of detected objects in a cell. When using this option, the input `dataBuffer` in `GetObjectData()` will contain processed data from other colliders detected in the cell. You'll more likely want to add/subtract values from the buffer instead of overwrite it completely.
### Deriving from `GridSensorComponent`
To create your sensor, you need to override the sensor component and add your sensor to the creation.
Specifically, you need to override `GetGridSensors()` and return an array of grid sensors you want to use in the component.
It can be used to create multiple different customized grid sensors, or you can also include the ones provided in our package (listed in the next section).
Example:
```
public class CustomGridSensorComponent : GridSensorComponent
{
protected override GridSensorBase[] GetGridSensors()
{
return new GridSensorBase[] { new CustomGridSensor(...)};
}
}
```
## Grid Sensor Types
Here we list out two types of grid sensor we provide in our package: `OneHotGridSensor` and `CountingGridSensor`.
Their implementations are also a good reference for making you own ones.
### OneHotGridSensor (provided in `com.unity.ml-agents`)
This is the default sensor used by `GridSensorComponent`. It detects objects with detectable tags and the observation is the one-hot representation of the detected tag index.
The implementation of the sensor is defined as following:
* `GetCellObservationSize()`: `detectableTags.Length`
* `IsDataNormalized()`: `true`
* `ProcessCollidersMethod()`: `ProcessCollidersMethod.ProcessClosestColliders`
* `GetObjectData()`:
```
protected override void GetObjectData(GameObject detectedObject, int tagIndex, float[] dataBuffer)
{
dataBuffer[tagIndex] = 1;
}
```
### CountingGridSensor (provided in `com.unity.ml-agents.extensions`)
This is an example of using all colliders detected in a cell. It counts the number of objects detected for each detectable tag. The sensor cannot be used with data compression.
The implementation of the sensor is defined as following:
* `GetCellObservationSize()`: `detectableTags.Length`
* `IsDataNormalized()`: `false`
* `ProcessCollidersMethod()`: `ProcessCollidersMethod.ProcessAllColliders`
* `GetObjectData()`:
```
protected override void GetObjectData(GameObject detectedObject, int tagIndex, float[] dataBuffer)
{
dataBuffer[tagIndex] += 1;
}
```

30
3DBallMultiPower.yaml


behaviors:
3DBall:
trainer_type: ppo
hyperparameters:
batch_size: 64
buffer_size: 12000
learning_rate: 0.0003
beta: 0.001
epsilon: 0.2
lambd: 0.99
num_epoch: 3
learning_rate_schedule: linear
network_settings:
normalize: true
hidden_units: 128
num_layers: 2
vis_encode_type: simple
reward_signals:
extrinsic:
gamma: 0.99
strength: 1.0
keep_checkpoints: 5
max_steps: 500000
time_horizon: 1000
summary_freq: 12000
# Add this section
environment_parameters:
maxStep: 1000

335
Project/Assets/ML-Agents/Examples/3DBall/TFModels/3DBallMultiPower.onnx


pytorch1.8:��
^
obs_0
Enetwork_body.observation_encoder.processors.0.normalizer.running_mean19Sub_0"Sub

19
4623Div_1"Div
4
2324Clip_2"Clip*
max�@�*
min���
'
2425Concat_3"Concat*
axis�
�
25
.network_body._body_endoder.seq_layers.0.weight
,network_body._body_endoder.seq_layers.0.bias26Gemm_4"Gemm*
alpha�?�*
beta�?�*
transB�

2627 Sigmoid_5"Sigmoid

26
2728Mul_6"Mul
�
28
.network_body._body_endoder.seq_layers.2.weight
,network_body._body_endoder.seq_layers.2.bias29Gemm_7"Gemm*
alpha�?�*
beta�?�*
transB�

2930 Sigmoid_8"Sigmoid

29
3031Mul_9"Mul
�
31
/action_model._continuous_distribution.mu.weight
-action_model._continuous_distribution.mu.bias32Gemm_10"Gemm*
alpha�?�*
beta�?�*
transB�
133 Constant_11"Constant*
value*J�

32
3334Mul_12"Mul
F
34
/action_model._continuous_distribution.log_sigma35Add_13"Add

3536Exp_14"Exp
=
3237RandomNormalLike_15"RandomNormalLike*
dtype�

37
3638Mul_16"Mul

32
3839Add_17"Add
5
3940Clip_18"Clip*
max@@�*
min@��
)
40
47continuous_actionsDiv_19"Divtorch-jit-export*Bversion_numberJ@@**Bcontinuous_action_output_shapeJ@*B memory_sizeJ*mBEnetwork_body.observation_encoder.processors.0.normalizer.running_meanJ ���s}G��^��r��=!�K����;�y��V _�*� �B.network_body._body_endoder.seq_layers.0.weightJ� � c��~�=CI�=��"��N��Q�;2Ӿk=>�B��ܘ�MܾF\��v.���4�><.�>9��~=w��Zz=�>�>�D7�E��=��>��=��>ݸž1� ? ���u�i�}�d2�����?�>��?X�d�@'>JBq����='��=C ּe y���=�%��d� ?��ջ��4=V�*>\ ?��!>�lT<l��=F�M>��L?E���q��=nB�>?�>��,>�d��}QL��2��b�=V@?��> �x���<>���>�4>>����?&��[]?Ø
��b�>d ����0�N;�<���>a�T��e%=X�R?����"�þ�� ?��H�6����&?(��=dہ�>���?>\�ŽW[��刪�ޮ;�a��,׬>~z�> �?���>ϔ뽛e>�h>�u�>�c�=�����j>H�!>�,��$?ZrI>c��>&~y>��"?����{����D���>��?�K�\S�>�^R�wƐ�.);=^�����C,�>��>��=�\]�>~ �\��>G����>bl4�E�����<&�B>^,F�)�}��W�>lL>����ݥ=l[�>h)=_2��_�1>��$� sP>*��������>�.\?�?(\��J�??����3"y��%�=s+�:�>�4�<��x�@I&>�k>�ȥ=p^<?k���$�>�?!N?��*���=�1}>M��=y/m>�\��� �==&�Ⱦ�9⾕��>����t�y���G�E��b-g=,���U��;{}2�ƈ��L��i�ܾ�HT��2/>S�>�Ch?�l�=���<_s��� ��<���ʊ>ѽ���~>_e>����.{�>���>1��=�H;lwQ?�>K�u?v��� �=��>)��<�{�>%�+>�a�Qpw�’־�ܐ>���&P[����Mjb�:՞�N�8>��K�N?���>���>3v���ܺ<�P�>�c>Wh ��W����&�s;��{�0��=�m�>���??��`>���Zc ��.�>j�������>�1?�>�w5>���>�&(�ܫ��Ū ? 3��5~,?�i��&V��H/?F%3=Ś��3G�DA>�����^�V���*�8�U�r���`�(���T�>;x���p��e?!o����;���==�}��>n�<L�?>>�/���������>�Y�>�Y;��>8(>�&� =��V�>�h=��$= �g>����u�>��
�y~���a��.���H����=��>4k�<�;��
��2��>��?�0X>���>��>��>����K=�En�΃E�ɷ�BI"�"TP?~m��,xоel¾�UB>�����I�>}_>�}?|�<>G��=i��>q��� {7�pX>y�ҽ�&�>�����3ʻsӍ< ۀ�V`����������=�0?�@�6û�}��w��>l�־늾��>� t�`-=Cx=m�>������=�ƾ�c ?���=]x ���;�ǭ߾Ԭ*�Y��>�k��Y#��%�#���>���� 3'� F��n3�g`��,i�����s4��ۚv�w�������:��6F�=�K>{8��V.,>X�!�J��1�;�v=>�b >�V����=:�>��> ҄>���/����t?̊�>Сb�N7����=�4�=č����>��?��ҾZ)�>�{��X�����<�?��V��9���5 >+�U��[[>cD8��?,�Z'?���=�@�=��1> � ?�>��԰�=�)m�끅�:
�5�$?ő?�z��<ž�#�>�0~=�C�>Lj�>GqA=���>ub>�� ?�7�>��ѽ����\�>퐱>�l��OI�l��=p�*�������ߚ{�i[�>�Ш>�]>ž{>����h�>*�?e�ݼ6d�>�#?�z�� �O>�mǾ�X���R?�.���F�>�>"�e> z�>m��>o��=K,`��^f>�����G">$�{>z�����T��N[�J�C�i_G?c�d>}�G��b���@Y=~��=��������w>
�[?WJ=?1�?R+�>Q�0>c�[���ν��:?Z1d�!b�=���=��>̀k=��O����=^�> %R>?�>�l
>[>��>�<�>qJ��q\�q�~>t���,>Q���Ub������╾�>���(-?��׾�Gz>��>��=w�Žk7���@�'�Q�A?N�+H�>
���������A����?!�B; ?�7���J�>ZD<y��<`:<�9o��Q�=J*�>6׀>&�]>�=<H<��Y�GR�>��$�CT��G��=��9�\4q>�)��c�b=�:���)�������9���e����>c��yg��K��>�o4����>_���%��=K���Ӭ��yC>)`m��^ ?
��X��� �>󰡾��Ѿv�H��;? 6F?��m�/��>���>Z����ݾ\m�=��-�2 �>����9�>���>����K�,?���>�gr=�NB>��ٽ ���%��O��< 8]>���>&6�>�?@�q<+�0>^?c�����Px�=y3�>��W��e�U��>��>���_?z�>JW��!�z�R<�A�>��4��_�>D������8�>�U�i�{>�>|�+?�$!>�m�x�5<\Vo>S?х\���Q�&r_��?W j�Gß=�A���U�rY�C�"��3�>O��H�a�q����8����>��̽@>:>W�'�IJ�=8��?v!?�Z��{����n������F<��i�>���>�U~>f�P=�q{� Š>@B����u�e?@ㇾ&lq?Q'�>�z���3?=�3?��>x �>�4>$0 >�7?=a����>��>��=?�]?���E�mM���[Y;���ʼ����>$S?O��=�C�=��?�y�>�E?=�@������mP_>�I8�i��y.�z�=ʺ�>tc�>Q�̾,�>$nK? Y ���O���0>�@�= �w?�-��'��<k� ?�-��?޶�E�>0��>�K�>7k��n�?]E/>�;��2��>�l�������>�?��[�}�ؽ~Z�a�p�π+>���>dž�����=��Y+>��� �e�b5���>���v�?m�愽���?V�)>�mĽ^���#|>6?�˽ן�wW?W�?d�q��.;˂�>rb�>Bi ���R>���=���<������=�.�(� �*_�>�!��bľ�f�����Ƀi���(>���>��8��~�=ڟ���!=A�,�#��=O6?\� >�:K>���c >��r�c�ٽ��>���>ި��8y���$>�4��9?.�>��s�z���qgU� g����!�I�����>й1�V�
�<f�������IP�]�b��XM=p� ?�����[���;L?z� >�۾��->r<�T�����=���/��>�C9����>�#���>��W�п�<��}>�'���򾭯 �Q^���b?B��>�5�afB>1*%=��>�&�>]B�e�3־+��>���� )��R�q>1>K< ����ܽ����\>���;�.ɾ����>���_t�+�>��,�,�P>���>�j�y�$��>����ꇽ>m�?ջ�;Bƽ��k��x�>i�<=E�,?r��=�<��澼=>��c?_qY>�Y���>|l��NR>�g�Mk�>!d�>U���'�(����-�?��;>�Y�>w���Bw�v���"��>���>.w��wc�ߢ׽�"���<?�A?��y>b�X?�?�2Ō����uo��S�=�qq����=j~\?�w]��eQ��@���0^< ��>�Tƾ^���\Ǿ�Q�>��>'�8��K�� )����־�&>�rd>hv�>��d������ >K���ڻ\>r%��k>��?����/~����5\���^<������>l�>��#��ް��a.>g���Z�Ծ�����>�=>���>�|A����>}B���Sn�xa������m�� |�:0?�n���؏> l?\�U�\q�<�ε=iأ>��9�xg?�^��52�ؠ>ա��4�i�""C>m#Ǿ�8��ة��e|>i봾�/�>�o�3�����/l�
ۉ�mg���-޽Z�������j�g�*��B,network_body._body_endoder.seq_layers.0.biasJ���Q�ك<,�<{�󺩹ż^��;����X�<���<�fh�"�,��}U�q=��u=���:XT�?�4� V{<����=��c=�=�<�d&��!���!�����]?�<%>;�Ҕ�)�C�.�Q�_���R��1�9<��;�-.�h�ڼ�X�'�T���w�h�����R���;��?�����<OHκ����.�j�R�5�����3=���9[%�����73�����<Y�i�Y����Wy�������� M=&E��rwa��/��,�,�ɱ�^ =p麽R%�����(���N>n�i׻�����MB���a��髼}v��Q�="����e�<�ܻ���:l�P��<M�P� �=1�H��wI=����1���i��3�$<O���r�����=#}=qO�����< `�k�}=L<r��e�Ƽ]�D=�m�nt<&�J:�p���[:2�<i�~=[��=(I�<F߼��?;� =ٍm���� ��<MLY=k@��y;ƽlI]�>G��_\3=�Z��*����B.network_body._body_endoder.seq_layers.2.weightJ����7��>� Ƽ:�8���<#ý������=S�˼�Ȳ=��V�R �=���7��=~�S�Lƞ�=�B��L>�^�<2'����<��
����+,
>������?Y�pi���_�=T�<j���O�<��!��d=2`�!v=CaY<h���)�=�6>��-���+=�<K�-�@؇=�p'��{J��$D��Yǽ���ӂ< Hu�!ꜽ�}�=&t���֮�M�;�����x'��\� �Մ2>��d=��J����=�u�\&l���������[S�;`��ټs=�6���my=]����=N¼��>I���Y��<��a=� f�Z}���+�R
2�D���FD��0�<���<�?>P����a��,�ϸ �����+:�MB�=;;E ���Ʃ=������=B�j�6��3 ->�����ړ=�FM�DE>�Rμ� �?�A=�)�<<�N<���=�.[=�ݧ��j=�Y�=�������\c� ܨ=�j=
s�=����B�����\���������8����������s;=K�X˾����;�Lٽ���� �,��P0:=]�弎�����.�4<e���cYa;6�
��nW�Ep6>D�S<5O��X���p����=ض8���=ȏO��PX�����
��7�=� l�Lt���I=.��=d���/y���¼�ũ��bʽ$< �<���=�[�=h&�;M�=2�&��AK=y1a=ꮮ����`Ž@ߺ�<�=ٱӽ!`9=X�ּ;t^�ǹ�<Q�ʽ�<N�r�-����=E�&��-�刽� ?�s�?=p��A�A�����w��=�T��3��[��zC=��= %����˼�q�= �8�5���+�.N >��)<4A�=���?뀽��l�L@u�-e>�c=��=�(n�$�=�q=,t���;h�*�&�=�;�=1�=w��<D(��>��:�œ=8^9>o�> V��:�3>"f=٢���*�/68�M Ƚm�=)x�M���OBP�����❥=^���"w����3=��^���s=$S߽�eٽ)1S���G��S�={�p���#�%D��?7> ��<����x.�<�Ͻ�1]<�">����d�EX�<}���60=�?�:���=��>��|=U��;}�����*��RU��������>ؕ�:��N=_�=�x�;�`>��=N1=��oS����=9�+��64=��9��6�=cH�;�������;I�N=�8v=�(9��]�=�[6�9=������z
9�=׽ɚ7��p�=y�<�8�=Р?� �c= �����%�[�ӽ !�=�mc�X[<�����Ę��L���Wz��>����B�X�(\S������=|Y ��dn�LȀ=+>[�OI=}g�k�a��a��8���@�0�=hs��DN �uB�=!h0>V �<_�N�K=�2�=��Ͻ� ��=V�=w�=�M����1>Kqt�ps� ���D=$�
=C����O������ص=%�=#�>��= 0^�S=ν�r���=�i >wD�=�=t�Z=u�$� ���:�#=��/��'\� ]�=����íY�jP�;΄�����=}'`<73Y>���;庇=���=h M��^�<n=/: ��|�<���=K�7>���<\N =(ۏ�
Q��}����`�gs��kM>m*�=HC��Z�>���=P�����=�彼�Q�/�=y�< 6�<�J/>�޽z�>FR==�Z=�f�Ll >���0��<�����,>�M�)�=�#d�U��ٽ1>� ��hq&�� H>�_�< |=Bq�=��U=
�<CAN��WD=���=�*�=��V����<��9<�%X:_�ڽw��\�h��\����<p��8��i�>Ե�=�S�I\�=xQ}�$~ͽ黽Qt=����l���v=k��<gZ=C��;Ń����<���=Q��ּ����-�=SK��]t�~;�=�=�<���=Xy�<�7����a;]���O����<�-�J�@�+9 ���˽��v�W�=c�=���=�E��P�=�X�<-�!����<I� =�����?>�,z���T��Y=��M>.�=���=B� ��hB=쌇=��P=��=�l=E�=���:ā!�&��<ƾO=hO>b4<�@'v���u�I4j=���=���=�> �5�K�,C�<��s=�jm���օ{���=���<[7�=�vy=9�K>-<�B&����<C���t�����=|u}�jܭ�4
Ƚl��=�p�=eF�=�Q]���>P_<�"�a�����=1F�=컊H��u��=���< � >j�����:= �&>U=>e_�=�A��&��=�����>>�QV�d��<�����=��D�R���G$�@钼6��=�0�z���_�3<���=�VQ�C���$Xc�������(�=��<A��:"3-����jj=��=��<���<�j��]�>>/�<p����a<gݽ<��W;��=����9v��FϽ���=��\=� >ł=����;C��= G�;1���[�<�|a<6����=��1���<+錽�.*�|� =�w�=����r�=<[��?�<��{<���=T������˩ >ʅ�=���=SI���80����c�>x�P�g�=������
���n���A�?&�=5Ȩ;��`�+#����=���=�hԽލ.=��{�<����G=b3n���>mo]�')-= g��4}���
>O� >��<C/�8�������= �x>� ��A��ml�<��ƽ,�<�?�T��<���<��]��]����ɽ+�u=���=��=�=��;�� �=�"��7��I��!�<u�!���=b���eTl����Y�u�[���Ya�=��U>�c���7���3޽/H����&�Z�Z���,��i=��H�v�=w�v��`�>� �KG����=�e�=�"��m7�<'R=<P�^s��ð<�OZ=�c��A+��@="i�,��p�)�>q�ƻ�o��W99�v�=�qJ��ƙ�=N�˽�+>mx�=r���rC����o�Yb�=_b<��ֽN�=��z�=[O�=K0<߼;�VD/�Hal;9��h�]=�c��l�F>3��<��5��9%�:����O�=
�!>C�5!�� ]n�FB=�
U=.3k<�>���=�a�a�
�b�=�۽ � ��m�=]�ȽU���P�<� ϼ�=�������z����"0����@幽�v>��.<M(�<�I�=�=��y<R�=mz��G4���+�2^�<��^��"=ov�=<��<J�,<�� �^t�=�Z��콽�-6��H˽�;O=�1+<w2>D����+�= �O�WI��XUq<ǝ�=�<;=8s<��=(%ڽ��=��������=Q<׽�HӽI{(�u�S��9N���.�B��F��<G�>]��<�˾��Җ= 뀽�������9=0tP�f��L7>ѭ��W(<�d� K��YK�<=�>8J��z;��=K��;�=z���h�ր��� >
%>et�xs��`��<��Q<���;�6��7$�}��N1�=;���%>LFp==���- ��V��G�ɼ\(�M�̼/ � &|=A���ٵ�<���~&߽k��=1f�=y�X��ֽ<�>�y���)�=���^=�B��JeL�^���8��]6=��=��=U�%��P�=Wq&�˜�=�w<rb >핽��= �������*���Jn�=�[�=.��=�k�=�ʹ����~�&>���Y����4�|��=�ȁ�� =p�k=�����F����R�==�0��P�=���;��-�kخ=A��: �����;=j��=�$=��>A���u=��=�#P>~UŽ�~6>����?>G-=孫���m��@w=0t��vo�=o<��B=W�<��g�����ƀ=��e��ؖ=�v��d�=��޽L����{��M��=P��=X��=��8>Si@�n����%���=s�Ƚ Z�=�Ë�2��=d�3>Ow�= �>҆Q=�G�=Gu;��=��-�������<fq�� ��=ݥ7���=���=�ё=[J�T��<.��9�:=�Ϯ=Sj�=���<Tq�_�J>�)B�[k�<�k�=B]P=ֲ�;�h�;nG�=���� �;�2����;5�3�C��:Tl>���=a�*=���=��=�W�=YA{<dz��=�lR��m];�'p=��� �)� �����G�u�=�MC>�VR=����=����vý]�v>V#�<���<�.�d�{=�m=��Ž�]�=��|=~Y=S_��
=&�'�����=�����]<�Щ�3����^��<�M�l\.=��Ƚo�ѽ�좼Z�>~I=��a;�=/�&=�j=y���
�S�[M����=~ ��p�=M(���=�5*���Ҿ�B->T�y>8S�=�v�=#Yx���D�؂�=�>i=)�->��=Tk��V�4 �<c�$=P�`�� �=�B���Ԫ=
8�=(n{>�s=xS��������<����%=���=�����нT���� X<`�=SZ�=a�">>����n*=���;�����v@=j3!>�s*<;��B�>�[н��=�8�����F�=� �=���=�?�X2=:DX���`�q_
��0>3Y=��Լ2�=Fﻜ䕼��Խ��B(T�J.�T5�jY�=�����*�і�<&�T���<7����=���=�ۥ�=��=-P^<t�=C��=��<gYҼ�^��l�3��22�{�Z> �ټ�\�=�D��齨��=��4��+v=aG�<�-J<P,[�{��8`>�������4۱<�K?=�#=���=�нȳ����1=_��=��&<������ �O��<�lڻ��D���ƽL�=��=�6���+��o������U�>�i�<Ѝۼ��ۼ���=�*>��V���[=�V(=˰ֽ/��=A����=h;n��b9���ƻ����B�E�0���=�� �+=+(I�En]������O��=�z��ӵ=z����n�<��W<�N�.���H�=C瀾ѭ���>V�4��z0>FI�=�靼9r=>�t�,�=��#>?����i��佽��?�V��=l��=���=��>!#�=?�=�7�<�����������<{K������>,`�K��1�R>�AN��Wk�S��=jԬ��������}�|�>���;e���~��� ���V<���=dq�=z������� ���K���@>�"�=���;�ݟ�S�)=)��t� >�ؚ<W�6����:�<��Q�&IP=#AO=��8�'>鲼�-+2>���<X��=��ȽM��CF��~�=�Q�=�G=uI�<�A���`��� �Q8%��m�=2�!��������;�ѓ����}7<�+޽�N���<Ԋ(��>�R�=�����=FU>�B+���ͽ q.=4�<�'�g=�2��-nL=��4�~���;�0�����# �7��%���s���6�<| �<�3��Ƥ���E�;�K=p[���=��"=�B9>�����3���O-�qݢ�6`��{ď=�|���m���<�<�1>��<�7�8;>�"1�>�t�8>+O�=d�:���㻦v�<J����ݛ<f�4��!*�)X�=� �'|�==�y��O=���o�H���/=%& =r�|=P==&�D<:٭=o�<�>>C(��fQ'�L��;s�1<R�>c�t��P�<�y�<�j�������p-�Em�=��l��C��x�>�az=�*:=Y�+>A�d�ڹ�=JF,�����s�<s�ٽ�J��Zʴ�� C�^_i��\ ;�����1������U�< ��=zzx=� �=�
ͽ��<�/=&}4=�� >�
=�^=g_6=�i`=�p��%0@<��
�Qc�= �B��Z����6��u�<i=�=>�<�!>�������9������;���� �=�<�S7<3dĽ���<Eu��B�=�]�������6�;��>޼f�>>O��?���81�!M�=�������6X=��E�V��<���ڽ�P>"X�=�)�����̳�q��;y0 <� 0���>ڷ�<jY��V7�=�*�=)=���<�(��2���.�=��@<4��<�"P=)'��e�z=t7�\��=Z�=�T.��㽦)]=K��� �>�Ww�y��=����Ǽ/���=ȷ�2���GY�Z���P�<�yn=P�Y>d��]y7=n�K�������?=��=�C���]�<�>��l쇽#���;�=)N)���2� �#�;�齒둽�,���N!>�і��mӼ~ M�ɂ�;��8���ByܽLS�<S���w ���>��P>�} =l'��ħ::>���=]&�=@����+���,�=�������<"}��/�»��<�r���Y� U߼A� �!m�=����'�R<(y�MjȼC_�����ܳ�Mt��ޢ>~�����<ǧ:= B�<�Y�Ŕ>�m!����� 7�=E� �{� > ʽc>���彶�$=�9�c߽�1��� =�%��㹽ц�;w)m�~�c=������ǽvRJ>�K���gw<�\�=��Ľ�u�=��ѽ{a��~�'<���=d����<�=S��=�˳< �{���<�Ǥ�u�P������<�q�P�>��S��qf��e��4�=��Q���T� ���'�]=���=o�=�Y�<~�<>`�9��w���kݽi�8;`�<ڣ���հ������@ǻ���=������;��9=]�z��2����=n��=��= �o��ѱ<� νYp=O����"��Gs=L�=����+&��0�����=��'=D�o���m�c-����=�>����=nv=��c�0��V(`<���5ꆾ���+��N�>�[W>Q���wP�Ewi�Ł�>���J���C&�xcݽ��޽�q�=�a�=��h�}�7�"(;�kT����=s(�=����\s��Qؼ���=���=6=z6��� �x!�̒t��_���g�hD<(i#>a���� >%c<�ϽR:�Լ=m�<>�S�;�U�=���=�CS=�P+��$>?�;=� >�7>|��=�0���o��� >�Y��V"��¯��$I�=a_�;�ۤ�M�T����=�_ =_�ռ�?-=�� >&W>���e��<:�:�WE=S�b��=A��������x�����|�U='��<.1[�3�����H��g�=���<�==�9\ ���=(B>Mg.�\�=��$���>z[��O#����,�39�<e���B=&�s<��
>ǜ >���=��o=Q���\V=�=�<wzҽD�ļ���=gt>�`�<�6�
=ޓ�=�|������d�͈<�������oн�Ui��@��HҘ=���9����10��P��=<��>� ����=܎�u���9C=pg�<qQx�&~�=k���r�μ��Ƽ� ��� ;Г >�e�=2&1=8���<=��>�A <+�=��#>XF=p+'9�u-<�;�� >��;v�$�$b�ŋQ�|��=>���;gp1��uF=�tj�*ѽ��<,!>Q_�<k�l=�=6�p=;!=?@&<����M�r;m��h Ƚ���=�X6=![R<S]-=2 />1�=�v>���=�I�=8r�=��Ľ򲄾e<���+<����?����<�>P��e;=�k*>@�|�e��<Q&k����pN��*r����=��I=�$*�k�.���ؼ��=9z�;�e�<�9����f>�!�=Sc�߱=�B��O8>T�;Uuo>7��=<� ��*y�b;j=9|�=�Ӥ=&�������
s�r�>=Σ��ϬP=���;W��R���ݠ<�'
�*[��e��ڞ���E<�^�=�=�Cn���#+:�Ƚ�7 ���<�ul�I݋;�K��Zʡ��Y����A=#��>�*�=7���f�=�.�<}��=��M>�\2=�`޽��8;������Խh��=�����&� ��;��i=6�*�P[=˞/��zz�w�����1��(��Yd��T�<��C�X�=�]5=������U�>^��;�%-���»�>!F>��,�]!�=���L|=t�d�G >S��0.�[$A��G����Η`<}���t����>�l<�5Ŷ� 3�ѐ=����0�B��+.=�j,�����pH��1r=� ��%�=�o=cg�<�ƫ��<l=���<pGf=}5��@�輔+�=�cU�(�c=�0=���:����� >_����=�E��Š=�$�=�=�=��e� ��={��X�3>n*нhR�G;`=(y=��=����l˗���ܽ�D���I=ˎ�=��C=F˽ ۀ>���=n����)V�;��=�9�����<g�廹뽢^�����̿=CHڻ Y>�<�����U91� t�=���=y�!�!��f2<&ᏽvmr=�D��nL>��ؽ���(��=���>%������å�=�iN��ū�mUA����s���9���[ˊ=;Gؼ߆�<���=ʖ!��,�=�V�<Q�>}�>E1�=�XZ��ú��9���=�`<�N#>X��#�=�'�=t��=?� ���j��������KP> ��<����V��=�2B���h����=[Ϛ���_=B����%=Ì=RS��s�'��<�i"=�/2���U;��`���<U�
��>���ԝ��+׽�y$����=����K�x����=며=9�W=EX��S��=_�=�K�<���=�s�<m}�>�n�:���E�>r�A=s�����<}+��J��<�s��==�"=a� =���<u�� �;�Y!=�\5����=鍱;�%n�C;�<pK�<G~�~� > Y�=h++��%��’ս�y>a9��3��h��4ڱ�=2 >����CO8>�Z<QY$>c{�,�g<G����ȼ�� ���<���>��H<)��< b4�*Ug=��ڽ�!�����=�>��_w��wI�;>>��ý%▼<><�<��=&Ƨ� �����=�sʽ{xW=ި9�Z<�:�j;I�>BC=��,>e &>@���=_J=�a�=��r=�cļ{�d�q�=z.�;���=��l=9�=���<� ����0��ཾ�=�'�;Z
X�-ڻ�U>��1�=��;��m�;��2U���=OԽ-J&>�c�=8!�<6�C���W<�><]�F=�F�� 7;���=:dO�#b��-��= �3<'>$Te�U栽+A�gýtn��M[��
n>.�{<�
�<�mJ��)���{� �$��qg���D���>��z=������=4{ǽ��=���~=(��=��=u{����6�&\V=����;�;���� =t��f𢽍mQ>~��=���=������ˏ6�,�����y=8�̼���=ɳ�=%�8=�h6>�?M��-%�G4����;����t1����=���<"F=`����'�<���<0<>�䛽V���)S�<bg���;�qC�¦s��>p�ƽ���sH�������T_�RX����G�=l��;��E>� >4�%=�F�=���=�b�=�[f��&>���9��[\�>�H=���;����=�=)~
>r�ѽ/L�=ֈ�Ѻ=�wn;D@#>�3��J�]᤽�F���^�ՉQ=�Iݽ� '=�$��ӿ�Rl �0z��@��Z��=X �=,��)\l=�w�=�V�<'���t �=�?=��=�f�=d3�=�G���������<룭���� �8� �.��=�jн�J(<���<�����'���[>�X5�;>�a����Խ&p|<�_'>6tg�3G}=� =������;�h���C>@L�䍝=͇Z�F$�;k]&=�) �����d>6��<�i���=†&����<���=$���f���Aқ=�"V=>�/=��&�Y[����=�`,<Y��<�Ł���x����;���=����>_D��v� ;C��=1�\�n�p=���=�����A=��$>�硾[�1��l׽L��;�v==2A9=3{Ƚa�=��x���=@�Y:
s�<��&��^�sF�];�=�}н�z[�op��[��=���=���� ���n=���=�5'�h@=�ϩ�SWU��T{<b�<.L����K�� �;�x��C�P���&��D~=Aʧ=�"��$�<��=-�:b�=~ *�ya=�Lͽ��)�-�~��=������<��=�i�=�Fe=0U8���R�j�=ic���B�A��=܅Q�����_*��D��=��� ��Ù���ϼ��_T`�;�I��>��
�<�G�<yF�=��q�0�N�p�>�ĉ����=�}��Q�<}�_=ɞ޽����� �ۓ=
�ýŹ�QX����G>�5��![�� ��;�N�!u�=h������/�Y<��6�R����[꽒��P�ȼ*wӽP��se��Q �=,"����%;D����WQ����=k���:b�=�𑽿��<މ�*\!>$R=��Ҽk��
��R� =RI��
�Z���>U�E
�<�&�c��������>�u�<N�=ψM;z}g�<��3$>�2�=�av=rҪ�7��<
s=��=<���=����,�=|�I>�M�=��<=��;�.�3m ���<�:�=�2��y\ >s�w=��<��ϼ�)><�j��zĽ1@ ��:���5�=�k=��=#昽ٰ=LhB� =g�G�]L����%���@��;)=?���e=i�=�R�<oq���]=�B�<-z�=�������B
�>e�]�K�潳~�=���.����<�J�=\�>0�
�t�� WC<nl8��a��'p@�4bA�2h���[���� >&������<g�ξ=E�=7ͬ�t���8��Ӓ~�P��;n��P;�?����<�i��3�N�����!>�W�=(���7%�8.;r���)�d�X<���=$ѹ�O�=ݑ$�= Y�V'�.�>�uc=.m<�T��//*�ݱ���" =�vѽ'���1���|��^����=[�= ~�����"=.o̽����q��=G��=C�9��`���W=|nu�$>�=���=��5>�����"J<m轕������;���=��S�V�^���y4=���;� ���i��i�އJ=����q׼��=�C�����������1�KH=a*�F��=���=p >/)�=��������.M= Ý:��=��&���=���=eˎ��s��}/˽�]�=T.�͎Խ��W<a����<D��=/9#����<���<�'=�y�=�$,>?�;���< ��=�)���<`+�)��=��C=l>���������8x�]~�������3i>'B��������c7佱����Ʊ���>[��=�e���ɼ=8���h=��<n\m�T��=�F=��=��=N�V�`͔����<]� >��X���T<�r�=��>�p> ���h���=\Nb=u����>_uD��F>�P?���>Z�}�
"R��l�=���=�}
>:꘽��b�èI<��Ǹ�&��x�k F��m*�dS���K��]>=Qٽ��u�7���갽��>P?k����?S�M{��jv����j������ٽ_�Q=�^2>�o��IM?>7��=}� =y�����=��½����fĺ�<� ��W�=�0{�S�=�=��=��=Uƽ,�p�A?�x���l�=*ȼ?�+��܆�VT���i�=r�Z�FK��؝���!;>���;7��=n{��vT =�2ѻ�m�;I�T�J� �]�=�U�<�����b�|n:����=��>��۽4�<�ON�I�W��1=��T�<i���� �#0��q��ag�<_��=���<��νž+�a �Zj>!����\n�xŶ=B�w���<���e���<>�͝=���=��k<�@� �Q�gw���l��� >�cc>$����j >��>�\�=�..=$�=z�=��e��!h=o>��:�=���<򄓽8F�򛭽���=�p��}Q4>Y��<]:�=���=suB=�=-�Y���)Ƚ�|߽!�z�qA�=?0=.j�<A Խ�#>��K��R���X;W��=h����q<~臼Ώ=��J� 6�=ޔ�� �=�*� �?��HP<o�< (*=�r�=7���i��=�1�< ��=�m&���>�Z�=�����y+>�(#>�ɽS���WM<fL}=ظ�=�d�I��=k?�;pu>�c|�4��=�/�=DZ]�2��.Y�0s+=�����5��:mp��R��\��<"��=���;1���\�LΞ=]�H=�,)��F�;%�P�8�\�s;������(+��8޽�������=�����X�cC}�^սnQ/�v�'<�,���ҽ�j����g��>���ҽx����>�Q�=�ƽε�=6#%���L�8��=M^��(-�=�ϗ<Q/C=)�<�h�Z��=`�%�I�<NP�����YR#;�S�������=<�GN=p\=����<�R��<-��J,�=�$�:�>kc=^�t�����n��=�C�=`L'��H�����<< (>S��=R%;�&���h�b�����<=���6�=��Ѽ[�<����z��=C(��J� <�����)���ē=��L=����F��1��=~�q�@4F;P���ű<�D>v���x^��,��<W�\lB=��x�2E=\_=I��<�\w����=��s��5�7��q>"=��K� Ϧ� #s='��D w�G��v`�=y�
���=�B=�SQ�}޶�{�׻"m^=�Z=����5H�=���<G%e=�,=Q��s=�`��z̿=�:��� >L���:�½�O�=A�\��"�=����[�)���-� }�=�������
�F;&]��U>a]�=߲�=��)�$��b��U/��������{=��l=����̑��+λ�ܼ���=��=��E=K�<����|�'>%�=�,/>~��<�k�=�K�����?��A��<��=�C�=h ���(� =�>����<$�<�c=��]=#��=����j6�袍=T��?�����;�=PEv<B<G ;��<n)>-b�=�������#�mx�ce�.Sn���>�p�=���<�����,�z���䙉�ݼƻ�5�<���=>�">:R>.;�>R𱽘v�<��=�6½����F���Z�=)��<�<&��L�i�~,�=���=�[O=$Ę=�
�<���Q���=d��<N=�ş��`����;�;>� ��f�8<�(�=m���`��_�%=_l>�Q'>P�=�:i�V����9�8�=���=a���+���={'�=*����G�z5�Y>1�y��;z.>��o�B�=1L>1�7��>�'���=�R�= � ��D�:>ńŽ�Q� ����>��U��c\=������<�T��=u(��u ���=- >��3>�U ��6 ��k뽩�����^=�H=�g�=���=\6 �c��*��Q��c�0�e�<�.N����=�N;0��<<��,����޽;�/�%O�<�@:=��=�g�?9���
�d�ڽ]��|X���7����R����<�J]=8J���*���t=�܃=ۊ>� M��m�=!,���_��jt�����b����<��1=�3.��z>����<Ё���=��U<��{���ըǽ��2>.�;P�`�c�m;a<|=�W��H���=�J`=�i<���|��=@� ��M+>��<U��<L~�;�l��߄:>�i�<��=�;�� �2� >0��<�Yx���<��4�����2ك=���ǽ�Z$;�K���=�̮�X:ؼE ���M<�������;{�=��=��>�� ��w;�T@=®�=aZ�9�� �4O=���������=�兽�>� �s]>�=�3 >�݌����<�"���43��f=#��<�n��F0�=�k=���=+n��#��V�d�ۼ% u��N=��>p���� ����=�.����T<�!=KЊ�.���D�[��� �s��<R:�<l m�~VG�,[�:-�<�a�<�O4��Q-�k#�=��T=�����<G�.��J�=\km����<� �=��F=ӛ��&�<��<]�=ɶ1�(��=�%$���=�I�=�Af�B��='��=��=[�'=��|<�����=��"=93����.�ۤ0=<~�=�4>���=�/E��&̼jnQ�]����u�<���Gǐ<7����"����ҽ�{<� �=�;�w`�ɼ>[�׽�~T=_�K>��ʽ4����#��L7 <C�����E�.md��V ���<85%=��H��˨=1ra�Y�G��B>ӹk=� >Se�=�1����q��YֹǠ�y����<d�3>� ~>�G潔�2�]��_8Ż��&=N��<8��< "=�ƿ�""&=�}���c�i�������_=�>��<�v;��'���S�7���?5Q=cg�����5����=��:<�H�����<�0μ�F�=�J<-� >k�:���[=�=P��=�Ѽ�[m<���:2q�=�F(<���>��o��0��ɂ<���=ڥӻD�X��P�;R ���O�=��=��>�=��"��<_�;��;�۾�=E�:��q���
[;԰)��x�=�2���2������[I¼;�Ǽ��Y=i�E�\�=L��=�׽s�ܽ��Y����=Q^��h�N<�����E7D��]���v>G��e̼o�ݽc���i��=��8�k�����<(V�<���;fw�?!����W=j�^˽}*��}�6���D=����Ss�=����X�<P�����_>s,aYL=%$E=���w����hܻ<[n��xr� !'�1GQ=�qż�JĽ�����Vd��pu<f�z��=�����[�Q�g���׽�D�<��=�뀽��̼��\�ǚ|=q�T�P�3���x�<��=��=�q�<�t:>I��=L��=��Ƽ+f;�pJ=��6�m��?�E>��A<��&����<|x ;�b�=qe轸�`�m�=��,���Ӽy�>&�<��}����=.�F���=�p3=v�����2�= "�@�F���;�ܹ��Z�����=ѿ<�X����"���ν��K>/׷��o=O̽U�-=�-I; >�<p= A��&�=F4�<��\�N`�=D&>���E�=��
�X�_�&�
<���=��`��J�jo ����<&*<�g0>}�=r�=���=�߼vv��4J��m�=y�i=@G��eq��$<>�2�=�E==}Iݽ�����=��G�Ff�o�>{���R6 ;�n><]�=�f�<N��󌼲V><b�<e���V �-Q��+jg=X��= /=�����sݽ�]>"؅�n���У��oҬ�����.�i�� �<^��������u��P��)���� �f� ���$>y��f��
E��l\�� \����ѽ[�����٭��_�=3=�
��VB�S��=4�z<�]L�M(;W=�'��E�[�4�����[>�c%�Z��=/��<�s�=!I1�c���AO]=�p���&�s�=î=S>Ȼ���W����=�齆Mz�@k�<B0����s���=��<�x �R����>�������;�μ�,<���=}b7�o@ �A�=��0�a=����e�����o��j���=��j��73��(M��i%>$!;��V��f�������>fRƽm�!�ƻ=��s=��ƽ���d�=c|>���;F��=y5߽񗒽���v�E����<����!���m%�=�rռ}G�;�Ґ�}���-n=��]�) �>8���ܽR�=�m�jױ�"�/������2����='r�� >CA��dA�қ�=v��=�q�=]�=�!�9b��=!>����,�A��<W{��`�"����=�ɛ��v���b�<��w=��ؼͼ��� ;�D�F>�d�l�,�=/�<�K�=`�I����=MG*<�o½�ѱ9(����=����(
=J�>�
=���=�o=�?,�A�=<9�=3Iѽ�A�<2`�<�~i=�W�<O��CRJ=��޼>-5�v����H������[M�D��X�<{N�;7S���� ����=���B�:T��<��>B�G>{�=�� �����]s�=p�>�$=V�ۼY��=�� >M��=�)�=z�ѽ�ɽ�����-=� O�_K����5>�ӽ��=zj^=<]�<k���{=�{��.<�������q�� =ݦ��O�<0m�����
�˼���=�Pg<��NԳ=b��<���=zo"���=. �<N���`�=Q9�<V��@�=��<�}�<&)/>��,>M���>Fo>��=�Ҭ���2����=C��<�x<��h�Fԣ=�zG<N
�op��p��=iE4��-Y=%�>�E��&��.=��G>���D�x����;�=����ao��9�vU�=����=�./�N���}EM=�D��,�=� 9=g ���C>4G �����h�ֻG��2��=$��=D�<=��o�f���g�ܽ� R�mW3==���E�=G�=��:�9 ༪ >hI=*�>�����r�����;�?=���<�����\��\�>�C`=fi�R�}������;�=?>7�,�7��bR��Ow�+�������zɽkК����=�' =�E���1v<*(��e�սԅb����z~
�l��<�)��-���P���O*������kʼ��h����z��=b�6>���=�%�0��ڄ�=������=�r�;�I����`>ٍ�]W��=�U�E/��W��g����<QK=�bԽ��=�א�=؝��*>����� ���=Y ޽ �$���<�͝=>�%>�����������ʘ���h���|���=�r�=8�>>�~�Mp=�μ�Ѵ�F�۽�d��jn�<|�I=r���~ (>T)��@Sj=��=��=i}����轱j;=0�2�w�<�?>�+W�!!7�~\���0�A]U��Vl>��=n)���v=��5���ϽUl�W��QQ伀j�=sC�=���V�1�
����^��S���.>;��<M @=y��[Wڼ�6=�)ѽ˅�=m���T�>��[>4J<�r�=�O�=�.#��|н��"�]� �Skv��KP> S�=ˑ�=b Žd%ͽ'�>�h�M~=b<����k�\�r���U=X�i�"���3\�7��<�>!=�3�=&%���;&<�Y��4>��[=k* ��f�f�?�ߺͽ�#��t潁@�<ņ��1a|����<�ӱ=��<���=�{e��k�=�EU=
�ͼMw�.� =V��;R���������ͽ�o��/<�k�=�D�=���=>{�����<|H��6>���=z�=lֹv�>�Pd�{�_�o��=��r=��3>jbJ��^w>� �=)�+�& >���j�1oν&�`��">�=tq@�7�4>7~=�0�=���^`=��>����=0�<���(M齻X~�9ه<��V�cl���ȼ����N���c��ʎ˼��>a�=�ˈ���ケX����<�ҽ_��e*�=�h �g�:V�B�z܂<��{����=$З< �0��4�=o@����=���=���;��!~>>�S5>9ý����V�y=,=3fT=�>�=�ir:oҭ�c���==�^]�B '���>Lܨ=^;<�X=�11���սB�~���^���ڽha�=ҽi=�Iz���p�����>E�<)��K�=�.���=>$�=��>e>�l^��o�=�Ŕ=h���2��u� =�J�=�v�=Yŋ=���=8z�=���=Q���� R<�Q�=L[t���;�[�bl�=;`�<�_|�e<>��<� =IJ>�����=�l);6�K���=�O�=a�A<� �r��
"�(�F�*]׽���ș�� <�3��p?��6�սÎm=�h��jk�=j�����~=�m��S�>A݂=Ua4;(���a���D4�:=ν��[�I^G��8ϽWP ;� =OC�=(r����=P���P >h4<�I����=�h2��E�=F8[;"G:�E)=���=/�<�u�<�iM>��Ӽ�f�����P>j��=�C����>�窽=楽�g��.rԽ~���
�=���<ꞙ;֜= ��˴ �E�Խ�� �b��<E�=�z�=�Fg�.&�<=��ܗ���~�< � =�|��?��=2�<�K^� BȽ��Ľ(��=�F�=�M��W��<���=4*��I>��Kw�xr����>Ц�� *:�D>����އ��g%>Ȅ/=�ޗ������">����頛�� �=���=ۇ�<�0D�cJ�=��m<���<�x��[JB>F�P��Wz��� ��~=�둽�%����M<���;�ƙ=�%w=�4&=�{��͢<6'�Pj��=_��RZ�A���\^�=[x �5޵=ޤ�=�F�=sL���/ӽ1�=3F�=�DY���m=^�m�.U�&,����=�X��G�<��
��ʳ=��=����y�c:ȦH���=�AS�zJ�= €<�����=�('����=8o�=��j=�4=Zf�����k���G��tY��+x<��2=q\=�X��b�=�E��!>
�F�L7V�q�� �=a�=1�[>�s�<�^�<B�H>�P%=��>1��;
��G���==��0>��%={��=t\�����M�=��"�ou��ǖ =��=�=b�M>��=q'�=�F=���=��\��� =Bʗ����=5����*;wg �Jf=c8����= �뽵�P=���;�-�i�r>��>n��=�j$>�
��DTc=@T)>|� =n��=�]��Ȱ�!��p�=M�>��4�������d>T(->|�=��"�f�q���ٽ=����d�{�׽����� ɽ ����'����v=g'?>�,=.,�=�R�=�M!�oL=�Q%>ʴ�ޑ=4���z�=�:>���<pX�<Wc5��L-=ߤ�=0��=�&��W��=��=/� �K(�sy;�ս0��=�1�W0?=6��* <.�ƻ$���+k<yY=�Q�LR,=AX�<�`�<&�Ƚ!�޽L�L��}��B���r��(�+F+<�;�@̙=�ř:��>�Q0������<��v���>��Q�:x���a=������=�<���=hg�Y(�=D �=�u�;U�=
��l晼��ֽv%>��%=# 7���=�݋��֖��(?=ĺ�=J���r�>[1e�@����s=MR>�o>���K>�x��si�=�=������E==bd�=Ի���Ĩ=�G�=*�I�7�D���X<��F���6�H_���ъ<���gL�=��D<��B=7��=�����OS��w��`��=�����,�~�����=/q���cٽ�$��;��=��<�^=��Ӽ��c=��v���<rF`=ʔ��Θ�= 9=��U���<����"q`�������z=�,*>�C�<��ܽѳ�|�����=�ݽ�E��#�ٽeC�>JtB=�n<�A�=�`�<�XC�5�F��sy����=�t��s�=� =ȵ�=e�=�8��zzA���̽�����&��W���~��=T�;���J=�G�<�,-=?�*<��I=�>�<�����h�=D�&=iN�=~��>��@-�X_����i����;���j|=w=U��o#�F�=�p���E�<K��;Ibw>�Z��ތ��4<dW�;�����6�:ʫ#>� <7�3����\dѼ+Tٽ�h�<�I>���=b��&z(��I =�[�;{:��ӽY྽
��=���=��D�������<d��=�x���i��>Ǽ?<7�!�`��;�O��]ĩ��!>4�T�<c�*<7C8��PD>�'ͽl7�>%��=������=)��������=l���'"���C� =xż��=!���Tl��%���F=M���y&�=4p�;c�ּ�%> �"���=8#P=��S�R1����v=��[=��E�W��=RE�C�>�oB��ׂ��)�=J�2�!�='sR��e$���=���f�Ž����<���R�6�x�/�.g��c�aC���\��
�&����=��ƻ�� =�s�<��=�ɏ���_��m]��AX=0�T<u�ˠ=��۽)���v����J��W ?�����Դ�I�B���[���;;P��<8�= ⃽��o�L�=�����Kw=�,G=�,�� �M��<��y�|������)=�]�= ��v:j��j�� �l����-���=�𽡒#���z=����l=�����=��>�&����۽5,�=y�<S�(�y���i��_�����!�A�">����K�L��yc�b�=oDi�ni��|���8���i��|H������:�>E�=Vt��(a�󓌽����|$��Ƚ��̬���l�\���8FF�^��\�=��=f+=�?/����q.<�U�=�Z���i���<d�˼���=��ܼ���:W%��Z\=�ɛ���>����(�dK��N/�<�µ�2�=�aRʼP�<��<��i��4l<��=�"����!=�|�=�R;�y�-��=�#=Ϧ�=,ޠ���$;���<��C��-D=D >�1���z)=A��� �>�Cb.<c�<U1'<$`e��i�=ڼ�=��>=:ɞ=�r�<s���O=叫���1�B9f�[�d�v`>=�=�|�#��=�ג=�9��&۽�a=&���Zɽ�=C��.��nm�=@�W=�x=���$��s�6=P�<��Z�n���ZF��q��"1>su�=�.��Y�=.{G=g ����BД��<.��-�=5� > W�S�����=��=�����p��tý�uɼ�j��Z���i���;���r���Q�W�ɼs�>�$>�n�=2R�<���=L�7���?������wF=���*7 >�Aw<D�������U �Y]<��8�3Cֻ�m�<K��ؽ�g�;����W+C����^�
=�3->FR<��'1�<1(�=��=��<(���s�=j؞��ޛ��M �6��-�=��>i|\� �7>%d�=��n�i~��[�;p`>�<ν��P��5D>7DD=u�<��̽������'����<S����
���=�ό��[>D�4<�����B^��g��z��=
ú���>���;g�ԼvI<�n��Ne�����2@d��Vt=� �8��=��\> ��=��x� [�⑼����ϙ=��
=v={͍=V]x=} ��P��P$>E��C}��`��H�=jn(>x�<9Z�=F��=s�{�#�^" �e�Խ�����>��ȼg;�=BZ<-��=�&�F�=UO�=;=�<� ��V(�h��=� �_�G��F�:q>��4�CN >Q�۽wv�<Y��=~���!=�'��鐽A�= im��c��� ��>5(�<x��1m�+Q#=�S�� ^���A�� �
��;� 콀���iW�<(�<�ﯼQ��=f��;V���3Ev��$��v5�=�ㄼ�>j�
��R�p)���=����T7�=r�{���G�xU��b�= ��=���o���s���&=M��=��~=��%=gI=t�G=�m���F�<!a0="1���R=mQ���.r=�"<�j�z��=d�����!��9~=������P��)="D�={:!>- :=���� ��=v&㽹ȝ;l��<��5>�<�� a�<ɐ�<���<C�����;ޫS=F�B��㰽QV<�E��g����ɽ�#6;��U>'gܽ^�U��꨽�MU�_�=�bżT?>`�,= q2>�^=���=�B�<A��K��=�!���v>��z��1#>�<�s��])�=�=�IM=�8=mb<��<�����穼���<0���\"���P>����V�=�����I�
2m��Nm=�m�<S!��Ǘ�<ن>zQ�<��q��(d�2(���K�=�/�=𙁽R�=ٓ0�����\@n�_=�_���>�=g� =܆4�����z~�U~�� e9���=�4#;r�ٽ�A�K���I�˻��=�=�=؆6�Zr��h=�gk,��q��M��-M��1n=S��;�����i�=����=����&���������ӡ�9%�=�gE>(�(����� !V=ۅ��A�(>��_���:mK=bJ��d'���=��<���=�W=��,��S�������}g=��K� ��[q�<F�����<�s���9>�Y�;��Z���ʺ�Յ=�xl=���<'���h�=��`Ƚ}�;�S�=*|׼�t�;=������=��2<�@T>I7�gɻ��Խ� >ؽ=l��� b+�m���Bi<�d'�q����E�Z����U=�za>& ?>I�x����@�$=�˼�o� �GvO��Z>y5<���k~�<�%#>�-� %�=�%�=��غ6�=Ϯ<Œ��@��=n�=RU�u0
<v����"�������=r[�_�[������^=0���:��<b�R%�=����K��=&͉���_>��+=F��u��CL���Լl�ݽL��=��<}YB���O�i�Y>���4�����ܼ#������Uܽ��=s����,����=R���+ �s�ֻ
���*Y�<��߼�G=!%��nCA=�3M��@�<�/N=��:����x��=[,�J'�=����{��=�߽`D�=���=�J�={@�;��=�oɽw�7>b>�;1C����<���;NM�=��6�`�E="z7�>7=
2�=��ѽʈ�;�M�;ի/=���;Em�=?�g<a����/�=�/��o>�=_l��hK=� �=��"�
��m����;���c�I;x =��j�yЄ<��=4M=�WR����
�3�K/5��R^>O��=�ϊ=!m½L[j=�b���(����
>1��(�ܼ� "�>�=XP��R��=��>ԗ<|��=������=Y���:��]��=8�>=E뉽�d2=��e��o�=��㽩(���ҽ<<�HK=�.��=��,��Ř<�<�=�o��E=a� ��=���;N&"���t�K޽R��<u�>{s�w��0�ʽb "���B=�8C�
����[O���G��н�`�g^C�.��=�T#>g���S � =w�=l�=պ�=`��=-�>�􀽾�<p2D�߭��o>�;��=>0=���-�컆���P$= ;<� ;���=EdK��ؖ��~߽tF=h�>�2��ی�c`{��]��*=C����s��)���˃=�}=���ٍ�J�=�Q���-I�F�����v��*�= α�J�N��>= >����<%�%�7>�c<���=hF�
�*��r�<���h����M�v5��4��:���=YJ:��׼;M�5=H�<.z�4���
�=e��q�ͽ"�%9o��< �<$�<D�3>f7o�~��=�~����`,�3Û=�&���t����=� �7.�V�=� �����u�&�ʽ��Y�L����������D=�_�0[��2 ����b0ۼ�2�= �=�MO�>$>۲�=�%��t�J�1>�!�&�����=�Y><A��<Z�k<|�ӽ.�o;᎐�ذ =�CP� �>�K��MӽȘ�=q�M�&{�=H�{�#׽=���ᵽ'M�=K�4�L���*�K�i;��U
�<nt�;�{.��Ee=��>���<���8>��=������p=��D= `�%m����= �;=�� >���=IT�<`9Խ�z��$�����<�H=�Z^���༭z�>�� =ࣽ=�4���$=
β�P9��p(=̷���J��Uλ���=��Z���н�b��_����Ľ�[���#��qy�Uo��*�������Ɇ����=0c����׽�J*�g�⽊=$�l����������q�;SV-���"�v��=��V�=�<���C��H��&M�=+6H���R<�B�=3Z�;&p5�H.!�N����>H�l�ί����.�;��;ϊ=GM�<;�����=�uS=F��� �O�<ձ��H���a����;g� �4��<6�3<ը���սw� >�5��#�����<e>�=?�=���͏\<2ۨ�xzM<�Dd�oN���� =0��������1�
�m�����c��O{=,yQ�j�ؼ� ����=!���="��</TM>Ȋ�����,�5=��= �'>s��=� ���¼fH����>=�:N=��X�)h�B�=�8��
!��?�=n���I� �&>8��� �g�|9�=�nV����=�G=�(`=?�_=iKL=���� ��:��ý��=c��ø���t>�փ<UЉ���>��=��=[��a�(��_�<>�n�$������=:S�=����A#���=d'��ֺ��!�=2���3��Q�����0��gӼс��H���^2g=���=4`ټ�,=����0���lE�=;�=tDd�sCj>�y��d¾�JE>���=��<^�=�BD;����xO>�g[=�f;�->�@ =����Z���Ϧ�Α=��;�x=+�3>���=`,(���N
> å=����#���A=���d���j��<��0=�� ���˽�����h�����=H�3�F H>m�U=���=E9�=8��|���/<R���nׯ=�P=���=�{�;; ��p=�+><{����>�<,��� ���ܽ��<4�<_S8���J�ڭ�Ce����Z���=}�k=\��=U=�<�΀��g=�(>Q�9��P��O^F=2��==w��T���@\�=}-�'��<ٜE=U��==b�\<
4����e=�;��>�>�g�=�ѽV������;�<"��<*+>�'���<W��4.�j���G#��?�<Uj���b��'a;5%!��ef:K� =D.���l�=�}潞Zҽ !���r��ֽ�R����S�z<Š�=��*>�Ri;���<Y�2�OJ�=�"�Wv½kq���=G�����=�u�< 95���=���<���=�a��̧������ h=���=f��=�m��8a�3��xx<=�#P�^�
=G>9K'���ývy~�T]����=���=>! <y���Q`���~�~[�= m�[���'����K��F�=�l�� WV��K9�*<�=�'I�?�= � ��GS��ء�:�)>y�����g�ڜ�u��>#��=��>+=h�=Se�<�m�=#�W������"�� ������s>$���¢��*=��%ν ؊�1PR�����H-����EZ+>õ+����=3�d��a�=7��=4;�&=� h�䕼�>7 =C���S����L>N���>�ܻL��<���=� ��+�� �¼:)�B�c;W�ۼ$?�=$�!�lW��h�n=�2=j=��V���_w�q��\��=@a�S\="���AW >�:��F�9=,�����v���=�4=��$>>��=U�0��X =@Tz=I/�<���=F���$�=�7J��x���>U��L�=� �=-�=aW:��~�=��:�h�<%h�=����hѼ��
�FE�=X�/=��(<z =�W�=�tK��\��K��P<����e���\�~��=��=:�<������^>
"�=�1~�C �=��=SP=�@*=��w�HM�:���v7��U�&>��ٽ0�:�'��w��\#��N����>��ӽ�`w>a�Ƚ�0��qo��u�='.���=�ߖ�;\�;{Q ��DL�O���
��=:�<���>���p������=��ȼS���M~�d��+�A==E�~����=�n�='������=Q(�����Sü�ܽz��<2V=��5�n����Y�=�~���>��'=����7�Ȼ�,��\M�x���Oy&��_ �O�ԽĪټh@�P�K=3*�&{=q��=��ؽ��o�3a2>�e ����n��=�X2>N>�� >�y=}���#Z�=��;�A�=g �=?[���݅�s3=@��9c=������� ���v���u����<��2>a?�rk�</������������!����o= x �2u���J����U>�=(l����)=�3���xn��F��=�=�v�=Y�M�:�\��9�=�J��-햻�c�^^��99&����:u^>+�^�=��=��O�)}���^�=�P��YE�=�5�Ē
=���<�t�y�i� _��g�=`� �:�~�~�q=�q<��I���X��YoW>"I$= Kս��?��(>��9>�a�;:��<3�����e,=��>'ڽ���?J���߻m��=΄�<J��<yL1>A�ݽ��=n =l'�=�yT�ֻ뺆�N�?����\,��e�=����ޑb<�I���A=�F��d���U">��:>��~�H~=����W�x���y=ayY���`=߄P��aG<��Y=�I(��"���;=r���������=%Z�=�1:Oh���->Y%s��0�I���bǐ=Ɵ�ioT� ���S ��ՠ=��w=<��=$1���c�<+�>��<�K7=3ǂ����=������=����.�=hVm��G�=��\����9�,>���=��5=�?��>9����ޭڽs𽝳R<�ە<���<7s�;�X��T^=c�5��'��ɚ>�H]�=�e��]G�:P�m����<�I�=����T��Ln >Y.�=T�����=��>A���40;��6S=�O)>#���?>^t�=�������
Ӟ<�����`U��L�*�Z=���q�m=4��<�$W�y=lV½P��<8�9>�.�<p{�=�e>�<���=�l�ܭܽ���%� >��%���׽ �\=�_��m�w=h��=3���v ��]��H�<��ݽ�n��۲>�}�������g==&ҽ��=*d�=[r����<e)�i��<X:�c�R�i�>��]=�H|�+_�=�Ƚhs�δڽ5:�w��=J���~=�7Z���=T�P<�s�� Z:\>��ƻ�Z���m�Y>-�+�����=dڇ��!����<��S=���U� >�C�=�`=�=����h���v=2nx=^�|�2�=@$'�mR>��>=܂>�.�=)�A= \1�]�x=� ���=(2G��k=W<���<���Jg=^2.>�X��9���ݽ��2<��4=^y.��/w= l�<�N�==ý���>9>��=�ay=�E�<� ���W�Q�e<��<�}O��<�<��˽� �<v�%>w>Ӓ��6$���ܼ�NJ��<*;���#g�$C,��4<�h���=�9=��!���=#�_=�B<���=�D��.#�% =�u ٽ���=���;���=�=m�;�9 ǽ�͈<?B=��.�����I�j�E-ǻ�f���4\��ɋ���V����=��,>�rY����y݈=�/V=Hz�=��5���vR$�K����� �<Z�ż��3<�٣��/�=C�޼?�=*��=�h=z��=�љ��}W���q={dN��鞽�ܽ0:��ټ��>/Sû�-�ֵ�<��<H2�<%�����=[?�=�j��c��=���=(}��/s�^F���$d=P� =fF��g����g=����s'>��~>*��=#S�=��?;�ż�� =�>>�e��1����>ϭ�<������=�=f��=���=�XC>��G=���=�L�=�H�=e�4=��Լ?X߽h�� ��=hv��7=�ܽ�z=-���r =v��=+ ��̶�<c�<޾>)���F�9�.$���RF����G=85=_�[��<�#�J`�=���=qϙ��Uռ��(:4K�<�U�=�W�y��\��6׼`�>?7Z=��=��P�J��<�l��6\��V/=P~;�6G�Д!=�����Ŝ=�eC=�Y=I���SݽJ.3��Yi�y#�3������g���O��9���<ȝ���S=i4z��J'<Iy
�#������ϼL)�==��<N��<�*>����9��1E�=���̽�-P��H��=��D������s��=W����pA ����=^�>Ɓ�<��b��ʞ<�vZ=�N ��XW<�y<�˜=LՁ<� ��)��;Uf��_�6�|򵽵�<�\�=_S�=I�A=)1=&lϽ������`<����X�Z=�D<�c`m;���<p�=~����=��c>0�H=��=���=pX���h5������>��ǰ<�_;=�4=���<�t�=Fî��=�������-�9>yL�L_<����^��\=��>��C�z�S�&,=��=�m�����;C���ٸ[=�u"=$ ���c�=8Y=���6T�<�F9>�i��&=��_^<�vh�>4�k��@m�:�=��=*%0��#m���b<����_�=���:�bǽ�4�k�>0%=��� go=�܏��o��p0��Lh�=�=�~��#PR��n&�iT��KW���8Ѽ�lJ�(�q=��G;.��<x���=�=[3�͊�<��V�?.��É=�S�<���={��=?i�<C$�=`4�=���t���a� ��e�=U޽L����'=����ϫ�=�1�;y��<���Gm3>@�-�aD���m=��9���=���� ����������-�����<{߽�i[>��=� ��&���*�ܼ@}p�����]3���>�=���yD�;~/)��e��ߘ[=zb1=����_�=���=�P�=�4=hko�e��=�0�� H�<�K!���<��Ƚ��`����=�Q�=��*�0K!=�(�=?w_�Ä�<C�=��/������=�_1>O
'<�J.=) �=q�e��ʠ����� e�t�>ܼJ=��<,���ྻ�� �o���*/>�r����~=���=2 '>� [>��<tv��V3���j�G��qB=1���rS>��
�C��=�=�N=�}���Ὃ�=��=�%����<j69=x�̽<pѽ�*�<��<���="��@@2=� ���}m���s=B퇼k��<�w�������=&���r�=g�=S�W�X\M=��-���Y���ǽI���bf�����<��B��ǽ=�1�=�
�=�
c;HMn�U���u�j=֫�23=��*��=�H-���:�d������<�Y����=�2�<�l�*�����<w�'�!�D>,ڄ�2�y� ͎�����4�
>�墽��ռ�d�=��7��=Q=�>��� ��g�w=��^<w�=�#>��=��g=�P��p�=SX���函����J�
=iH�ʷ���6����W=d}�=},�<�U���˼3<ԛO��I�̰˼� ��6Mƽg��<��q=�16=�ξ�{�|�F3k=���=̍J<�!>!~
�BDͼ9+����X�APƼ�c�=��K�r)���1�E�>y�н�f��ZV <b��e/��'E0=���<��^7Y��N�<�5�=P9�=n����i��<��ghֽp��=��0� 䵽
5�=`�<[/��j �?�;>VE=bf����$����G)=<0����=�
#���<� j�,���+�V��^���#=����s�=mbn����D��=d�=|T;dQ�<��%>4rl�6z�<�["�����7�J�T�m#���=5�^���<J��=_�ϽS�t�Z1g��/?��w7>rؙ�T="9���7�7
�g��=+X��!��L]c�\��=��ƽ�چ����<�X=�Tl<$D�qq=�:Z>�6�;v�<l�o�H�Խ��̽�j����Z=jv�����X>�S�=�o�=��&=̉�;���<0;�=�F�����<G0����;����ۼ�f����#��^�=�<����=����"/>8�@��c������DV��LS{�T;B���>9��<)�>���=����.��= ��[�����=�-�<u <n"�=�J!���=rƈ�KP��5ޤ���=R�4=҉�<�ν��)���#���=C�D�9K��� �<]Z�;��_>��=�:
�bG��g�����=`�ϼ������#=5����2��}=C�|��,�)�B>���2�<���~�J��=�x��0��=7���Wꃽ��(��d��Y�s>�衽�s�;��W�g����Ҽ�C���CU= S=�c�<���<'��=����]���˫�=�lm��ݷ�Jv+>����M�c(<{:%�?i<隴=�D��< b=����s����Mֽl��=�uȼp%���*>%�G< � �Sv>�������9[r���<�ȼ�-?=�d;p�4>hQg��½�cC�<�-=8�ѽ��t<�`�=�^��Ϭ��|}�=B=���Ի��<�)�e�F�=6E���`<׸�=1qݽ4���P�6�{׉�:NT�� *>���PX>�k�=�=�Zi����;>��=p��U��<6)c>:`�m�>xה���j�w=�=*�ٽ@i�{��qߟ=Lu�<� =��%>�G�=��̽*`�=�=ҽ��=AkY=�$p=���� �=&4��ؽ>@�cj���=��9>1���iv�<5�J��K���.�����9�R��.����������.U����;N��<@�=Ó���紻'7����j��\w<���= >|]���4��G�<��%����=`�½�b׽�bs<.�G{=��=���s��=pa�k��=��%>��b> h������.���,�2=�������Y��=E��=0J3<���<^/�=���=��K��}�����Lv��C���)6�/���~n�=5{�VN���>h�E=BAl=�ss�E>�t��P1.>��7<�s�M-������J��A�/>�I5>�{"�-�C�[�ܼ M<Zn]�򫶽��ϻ�\�=�t��{@������Yֿ=���� =�����B<5pT�I���vϾ�+뻵��<Bk�o���QC?=4��=f¾<���4i�<���=VHZ=֦S>�� �Y��SUP���!>�����/0�^"t��F�q��=�&B=cO׽=}���+��f >^rֻ�0��Tzża���ek�w��Y�=eٽ���=�=�<����">��:����#zF>{`�;31 ���<�N5���Ѽ@�����+���Ҽ9f>L�>��Z���O��W���G�yҴ�c˼S$=�h��ۈ�=T��=�MO=GsX��<�4�<���=$�=�,�<� ��QG>v��1�<�遽-�ý�ۼ=Т�=ƽa�)�k�&���$�ɞ���H������ܓ��i�:�j#>yC�=�����V�!�N�9궽�^�c�H���k���l�,��<��=-X���υ��욼Ta�7� ����� �=���$��^�>�<l䔽W1�� "��ro�;��=�{;�P_=��L���">�O��L��=]s�=f�����+=�e�=�ѡ=()u���G=f�<_G����޽�T�< >9J�C�>�LI>�~<�l=�끽�����D
�����RQ����ث�cǃ=P�����=��d$>��G=/~ȼ��� >"��� �2��.[�$!�<�6m=�I�>Ai�=�[�=r0v<v҈</����o�=���<|�ۼ�_;��H=��=��ǽĥ��_� �z�=sJ�=#&>E��,�E����,�+�^�L>��w���;��=�S��v �zs�=j����m���%P>*J>�$�;���=����Yz�4ؙ<�N�����=��9>�|�<
���ڻ�½�l,<3_)>�FH;���=��ѽ����h��=l2�=~�7�c�����=L�=E}^=����)L>a��<t����5�� ,�M��'�,�2��=�C=6��<��˽v����,=x��=ɞ�>�*껐��<@� =EX�=�v̽}��=0�k�� ��>�6;<�[<�'Z<�=��=� ����= G�<ҏ���a���x/�6��jl��G3=%�^=�4�,�����=PA#<F����]��À[=#1���/=�?�<�H ����=Y<������n�y=��~�V�@=oR�=�M�f�=��6=Y�=��⽝��T8���"��I9M=G�=�J�+�x>�ý��5>��P<���!+��W$�=r���6��M��=�C뽊� �j�=�B!=��\�L�ڽ�z~�f�`�x�=�+�>P�=����xG=kN��� V=��c=G��=�~2>���=���=���=nd >�(����H��z�=�o�b7���函%��<z��_V�<e�佦J��(>@�=�i�<��E>\- �.�z� �༙�f>��Ȉ���A<�J=g�q�'=c�&���>��>Z�=�Le= ��=qL�m�����q�k =Z8_<�׃�{H������l���yf�������@��C�;D���1߽RZt<��y=���h�ܽn��k��O�\�:*u< :ؽ�� >�˵�Ǻ�����I�=g||=�I1>���e��b D�#��-�:#�=t.;���&��Lh���6@��`��<R<��T=����;���0����M�=٫���)����?�¼�(E>�?�:�3�<(�<6 |=�]����=+!���И�" �<.c.�-��<�8=7�l=0� ���&=^����2N>] Y=!5=��I� �s���� �t���c��i��zǽ��X�^�N>�O>�p3���߽n�A��G�U�<�AV��PJ=��������@ΐ=~�ٽ9�����J=�˽Y~ĺ��R��:x= "3<���������<���CT�:r ¼���=?��=����Ԗ��^~p��f��������;���S�������*�h�3>�<�:f��;Sn���㻃Ā�l��;�<�e=1l*�j'��05�=�`4:��>��۽hs��mm��ʖ>��6=�W��� �Z>�Б�A:�Z�!>�WY=�V�����=�Ì��M)=;S̽�U:==��=%�=�ZK��C=F^����⽖dŻw^�P��<z�s=ڱ���G=1E�=
����;�D��=yk��\���C�J�n�Z�C�v��\ג=�=�m=Jë="EI�Z��� =$���F��<J��=O����v�{7����z������f�<z����=P�8�-��s��� ��5r������=�=��=>�,<cO�=VQȽΉ��F�=7����\��6D;��鼁kL='� >a��9T�߽��}
&>32 >�ߖ�o�1=Qe=0d�=�޼2F�|�=�`o�X�B��+޽�垼a�<�6'>d�=��V�=h����r�=��W=��#>�N�=m���1�=n�0<�����=L>�z�=-�@�3E�=�U�� ��k�����=�V����G�{e'=eM4=S�7;{;1">e$!;J�W�@� ��?�<�>�^3=/X��Ê=9�(>Y4>w�4� Q=z@�=@{���g{�;�#<�0>��<��c��47����%ʑ��������T{�=�� �(1�=��=I�a���=�'�=���<u)J=��>t���܇��˜�>�7=�� =Ϻ9��� �ʐ�g��0�_=4��=�����<��'����N*Z>�i?��� �X�=VmR�dž�����,��5+=i��� ׍�5��0 >�誻^v�;�k>�00�B`)�RU�����=c�����= ��< �B�(�+�>��� �=S=߽ѽ�ȼvEE=Q/�:f�r��E���w�v ��>��=x�;K�=��!/཯>��O30�A&�ố�w�ǽ���=�Dy=NA|>�3W��B�=X����ͽ�_�=��8�Lћ=�>�4
>H�=�F�<�ܽ�h|�c�<����=���{G1=G��=�[:�H
=]��="M=-��=��=_ݼ��XI�@��NSݽ�}���NN>����<�X
���v��=�����FͿ=�C=�Z:� B����=4�{=�1��P�<At�=Z�O�f��=��=�v��-,S�q�Z�|� =�T����w=i�M>A��=���=Ħ=��P>M�<��Ӱ=��!��p���l_(�ˀ�;6�ν��-�Vf���GP����M� �J�G�a�$���a��˞���=;��;�I'=[�#��?��?뷽1�ݽ��}=����O�W����==%�<
�<$�>��;�w9ĸ�����������ʽ�b1�(��=�׉���w��n���.=Ko0��-�=%½��&�sb��=�P��d� ��?Ⱦ^^����\��w�=
ǔ�AAʽ\m>�8�*�����ɽ���@�>)b���b�;�Co��׍<Q �=�彭잼��6����^Kݽ�*0�m��=ps������4˽��8��qI<C0罟�q�O&����1:yj)�.Sӽ�ᵽ��K=\b��6.= uʼz���C6�<��%��;��;��_���:�;/Ɣ<M�ɽ"K�Z��"�=Y��� ��=g" =a����4�V�<��o><�m�d2=@��=Dx��ݹ>LZ�Bt�=f�=�C3��\�����=����brѽM����
>)�=�А�u+�=�V�=�>����y�?>ͅ���r���>�89����q��=2�����<:@�����ȭ�=r�W������T���J����|>�R{���vν�aA��L���/�x�˼e�>�Q��7<�a��.#<�x���0K<�>X>�=��C>q�
>:ن�?b�;��Z���B>m�<=�_ݼ�€�Daz=��>��i=��e=������ �?�����=�m�=���������
<�=�F � ./��)�����Ϝ���ل=0+���۽�l>��<�xƼ���frW=_�8lT7�C��<fYK���
=�k�=�﻽H :T����┽��>��2>��X�QU�=2d��X��|.<�RoJ��Й<��x������ �WDa�f}��;O�<�{�=�=�f�<���{v�=YX��/���H �= pu=���O$�>�p���;�Z,��0�}a=�y�=�Z����/�H��S~ �`k0=�\��bn!�m@I�C�����=�̱=G�K��̋=!� �ưнZ���H�bZ�=c>/���~0,��h�U�g=b!�
����b<������o'>'�U�5G>��<������ ��T m��𘽈�=t9�����=�i=1�d�蚙��V��a��=�z]�V|W=M���M��=\$>�ղ���=��0���w=���m>>�Y�=�����ґ���\�[=��=&/@���=v�o=¡f=н�����=o݇�t*�=3ʽyg;F�>�Ғ���h�%Z'=���=���"��=����g�1�{�><D�<,4D�����c��D}=_��=q�=��Ƽj���o�f���<��G?�T@��N��i��ןD�����$����<��>�\��fU�=��R<x߽DF ���=!�>=n���E4e����=�t#�;�ٽ (�sd�=k��<N(����Q=��e���c�hR�=��۽$z�����B:=��=��<�m
>����N���">=��$>���>�>�lY����=�o>)������>�=9��=M>/V;::����B
������=�)���6��T��X=- ����
���[�����4�>.�=Nj?=��=�D�As���=���=#�="&=�Z-��F �om�<%|2����=����e�Ž�M�s� �������4����=1�����>��)��J�=k���.��c�<��ػc��<Z��uY�;*���D��=�� :1f�=�� >������l��u=��e>dk>Ѡ��mø��Y{<��<&������|M-���k�Z?-�<�=���Ϣ�=&ъ�C<Z�!����;�<T�����Ͻ��>yo���<���= a�c��dӰ�2���+=2!�FU����^>�d>^bG<� 3<@��=V0Խd}�j$s��TY�Zl�=�H<� >���=V ��ax�%H>��=���=���=V����" ��������=rq��b*��d=`��<ױ�� )ּ֘�=e�-�_�׽��Q>8�=_X��� q>m��� =r��q�<>�����n��R�>ć=��l=��j�n�H���L�9�R�0�=�>½��>��(����>����!b�>��<�O>҈���3J�J|N=��˼ �˼�� �a˗�`�=zs˼|�v=#�߽wB߽h��;T?�;k!.=Jõ���#=���<�vмzЍ��3 >8��=�
�=�K�� ��Y��=�Sw�Α =�nN= h߽,����#<Re�<w����<b�n�+����k��)�:�6g�=���oĥ����臁�Soڼ�h>��$�㱴=ݜ��L@�P�>y�;�n�)��@�=`N�'-=� T�\����=��½� <=��'= V/�'*�=H"� �<�ս�.��_)W>��N��r<=�. �tyV<�j��c;��%�=δ�=�;��iy= k۽AiQ������+P�՝�o*��]Ia>�엻���=k�=)�<�������8ha����=��l=M��=
�"=Z�>4Y�� ���-���� �=�|=Z��>/&ǽ*�۽v +� ������/��=�w�=ɵ<�����:�;g���4�>���_�=lk=PT�l �<#[0�f0ܼq�=[f�=�����>O�m��hA�ċj����=���=K���ź�tn��3�D�-�<qB��QJ=Ѱ5>y�h�O�>Mպ]8���Ľ���= A>��<I��<ap�i��������q2�H� ����=�4��@;�����*��={�D>r)���H<P��=i�6=�PK>�����0ڽ�����?�8G�=c�1�����#=�@=����u��=$�(>f��I�3ї=�{�T,�;>���4%=�+>+zK�U'�=ܶ��������:��������M�:>[��A }<�@�i��-�ɽ�궽�p>�4����4�v����$<rэ<��<�Z�>P���C�ļ���bnJ�$=�_>޽e=�D>�@K�z4�=Ά��@N�<�}-�����f��=��<xh��[��!��םϽ��I�`���?l=���� �=�rD>KG2��F�<q>E=���=�� >��ڽpn;����u�;����d��U�;>f��%:E�m��=��v;f�=a����ᆽ�����������;���=�Y���滼���=�ɱ<���V�=�c�;Zꬽ�@��/�-�h��=C �=:�T���J�D�%�cu<�h�;,��<��t��P�IN�4~���὾��=,`n���'>�����A�2�Ƽpr<�ӻ��?�����<��f�M-_<��>�ǀ<�6�=��"�R=ջ��<�Ľ4�S���y=S �=���=;@ؼY��š==:ڽ�T�=.�������k�=��`<ؚ7�%]����#����WA<8�a��ּ�vҽě��Gټ� ��F~����L=�{�=5Ȍ���>|Y?=YOX=`0����"�w���x��=4��<Y�����} >h�!����A��<F��<�Z0���;�(�H�#�}[�����ђ��^=2p8=���ت^��GK�M����=C#�W)����v=�b=C�v��o�=O�E����<���<���>z6>,�<�'�� �P=�d�:C�=���m�8>�5�c��=�U>x��=W��;3��=�u.�v�M�������2=�-��C��<
��B�O�k.�<��='�=��p�e��=)g-=����EU���_�=�:���E=a]=8
~�k��<�O���rB=�\�9�M.=�})����=����B&�f>.Y�����=�Lֽ�:�=c�[=�"��B�8��z�<i�=�����*��Y>_�>����œ����K>�ޥ���>�H>�.�<_��<1#�;IK��?�R삽��=v|��蝖=(F���b�� ֕���s�3��tH�����Hv�ʁ�=#����U�;�17>'�=��3��0�<��A>��]����=aI�=]m�=.��=2�r��[&;z�*<��q��^��8�=8�̽?#>+����N������ز�=::�=�+�=(d�<�&�<[��;Gv��U��=%�=>Y�_���=�� >ɪ=�������,X7��\<�\=��6��� >���=:��=9A=��Y��+>�煽 �@�漣=��}<:�#>p�\��P�<q��Y72�ɍ��sm@;Yԣ=�R<���֩�����6[�t��=���կ��q�=��}e&��u6>�=�<iE������w ��Z=&E%�E�=���:���x��=��+>Cu�����<�R�:���<�(2�u�'<�3���ν���<���S����e=�ֽ�����}�<��� �k=�q ��ʆ����o~=&T
��9���>;�����6�=�0���p
��=��I�%��V����x���=�u�=�TY������l��#��s����ƽ�ފ���e<6�=9(�t,e���p�=�����T�G�����<�}�wП���M<����S7�'Y=96���v�<FI >�c�<R�]�a�*�)�ֽ�W=�Ԍ=D����ޕ��vk�3�)���=^�������L �]N�=ۯG���^����='���s!����P>�=�x = 4p��
>��,�;���I=���=�b���,��(��c�<���\�&�%���>���=�%��������������;�}�<�+���K��͞�=�r�=�U=�NJ��Q�=�:>p��=�7�=^:�<rd>:�1=� ��al=��o:6���Th/>�üSV�nʿ�h3>�h�=G�-<0Hr����=1}�<%��=�u*>��=z<�=c��<�㩽[s�=4M��$5�O��K��;ԛ�r�=��`<b*�=j%j;�Y<�1��р���Y���ؽr��;�����y����$T<�3>�,>�� ���.=���=��>�#'=��-����yݠ=���;P~=���=G�����=6u��j~���[=_}I������J=��>���������=��Ͻ�������r��=0d0��'=������~�R��<R8>���=T����_�V�/�wln�P|i���1��k'��֚�h�=Z�Y=s򐽏#f> �����W<*�v=4�9[t�V�V�95�8��;��"t ��B���/F=A����#�M���t�������e����H�=A���T$��2�<�%�=��Խ�|F��'8�A�ռ\+ʽ$���E�K���4ݽ��;�⼶a=<���O��=�Ф;��<�+.�&æ=��:&H�'j����� �����g�b^o����=�ϗ= ՗=2�<^<#t�=��޽i�,>1�=�2���S=t'b�8�>=��C<&J���>8=��=�K&�1z1��tI= 6:=An�;��.��z���=��콗��=o�ؽ�]T��C�=���=����c��<jE��8�= �=.�=��<��)�g<v<Rz���@�o���A���7н KI>U�>��r<g#=k[���g3>��-�����E滽M矾s8�=&W@�0I�����X�=@�ݽ���f� =-��� =Lɼ=\��={��=��=��=�u����Y�Ԝ����B=���<Y�� ��=�$=M� >���<6�f���=�¼W<=>�c�=M�=�j>l��W~*�"�<�$�<�@�t!��o>�B��Jo=L���p�`=�ٟ���~��N�;i~a='7�=]���n�>�$���ڼ��6��%;�g�= *�=4�����>�W��'q�Sx�<��ռ�@<\$�k��=Nfl���k=��_�]n�=�#v���e=����To=��>� .���=6�½EU{���D>s ��� k<�����ήG�Bܺ�fSS���Y=������սI����#��'4�oc�<aw�=ul������A�g�,�E��o����\��l�=�7f���2=j�<s�=��{�=n"ʽ7#[�m��=>>؊Ѽ�L�=��5��/���ѽ����b��?�=z���-�=t��eS�R.E�R �;6g�=?e�z >��콪��'!��j����=Y�-=�ʽ@�>�T���$ɽ��ڽ��.�M�]��>s󏽱�Q����F�=�����=+��Qkν`0�;����: ��iǼ��L;܃^>��鼿{{��P���=�#=�S�=�IS����=��нmG�<2"$=.}�=!#i�\�C����:��d���:<����@�}�Vi���/=��=�<�=��=J�*���۽4ߧ=X�_=符�^�X���=�gq;?��h�n=�^�g[
�������=%��=� ������*=���;&=���-��O<oP�<�O<�j!�)���:p���Y�$�5=��<��V�K����"�<KӒ=r�U=���;>�g<�Z���
=�f�=�A��R�=�M;+Y=2�:K��;
���9�>��́=9dིw=%��(�=X+>{q���]��lٿ��> <�p�<��H<���=�� >����#_����=��<�Jm=jre�.D��t��=�i�<&|��2ȼq��.Gӽ6P��� ��C׽)�Z��j�=��&=~��= � =��=�]�C���IK=t���`A��/�.ߊ=˪��`=�Z��'�� F7>�ى=���셹=�Gͻ��T��j���H>�������=-�C=Α%=E�0=�Bm��.�=���=�38=����t��[�_������=h�����<J��=ry�����<l���\`=�׊�e<=��ü�F��wR�EE����Ѵ= X�w��=mX���?��Ebڼc�=��(��Bb��R�����o�=�0�<6/�=h/t<ԙJ�Ү�u�
�0��=c�= � lν`� �x��;+�ɢ�=�a�<�:ƽ拉=&���l�k��P������nܼZ!�^j$��ޤ<VA�<e�6=��ν��=|Y�=3���ީ=/U�����=P�=7��=U���{�<z1�4E�����cV�=�����M<��ʽ���;? *=��<�_h=�ϸ<r=��`��<�kս�!�X秽���=D�{>�Y����
�?�zP�>4��=��t|�:(b=�Є���];=œ[=��>���������=i�?>�B�g���HH=�x=�e�Dd����;��ּ��A>�!��r=�l�;�Z=(�<�������߀���h>Y�b=��ƽ.������=�:<��$>I..>y�<6꽰l#�!��=1���������=�5����<& �=x0w=�#L��� >��>��}pU=�ԑ=�u�=�ϣ���Dϓ=.��=�1 >��S=� �=/%.�'i���~J>&����&>�&�:�U�T)�=�"�����B=o�3�����P��S1=9y]=SC�� ~���k���<���� ��y/<d^ �l�&�LӽF]�=��3>�޽\/>7\��Q��;<\
��Oν���=����Ǻ9__���?��1-�o{f��=�ݎ:�z���L��$�=ۣ�u^���� ���R����>����m���?�$n^=�#�:C,�<-qi=�Qo>��=_�>�煽��u������ʀ��3�Uɤ�⯶=K��=>c�B���}�G�� ��̅���a�_����1=L�>>S�=h��==+�=X嫾8^��A =�8��=>���2��=���������Խr��=� r<��c��� JY��r�<M��|���a�B>���<A ��� ���ɓ=c��;(t�����B���-f� �n���=�T��l3r�5?K��j�;�[��O��p�;�2�=eS�<�n=d�!=4���8��=�'�=bC�=RMH��m����=�}=�h =��j����u�B���?=�7�=���=o�,�f<0>�=�sN<� [�#r�=��˽��=��/= Pr=�P<��=za=Q�->���>w�+���C���/>�E�=$3>�e=[���Y�=��1���R�ʢ��2ɼz���C�<w2�=�����w��= 텽���=cJ��Q�q==���ƿ�=F�U�yX&;VR>=���=�I�=�9�;ޙ+�Pc�=徙=�?�=_
�����g#>Eф�QiټZ�>�;��BAm�NB������3H�Ǚ�5ej=�rP��� >H1��`;��'u;���=�R���)%>o����4S�>��<�e�=�>Խ�6ս�=�B��<�<=�j<�$����=Ϳi>Ȑ<>�T=���=���M/�㏀�0}�bc1=�s��n>�崽�ڂ��-��D���T��J�#<Z�=y)>,<��Cc�<�B�����=���c�ӽ�9=���q�<Ӿ=��N�<�P�=��&=KL->��7�f� >_�޼F�C����=�9���1��h½z�9��==b �8�=]�<H����w���H��e�;<<=�iY �+���L��=!��=*�>�I3>V&=O�Ɩ �����3�V=)��<�[��-���㛁�8:�<�I#=ձ�=���Oh��P >������P���Ƽ �=i�7�����V�<�#;�r���ŽqS,��7��M*�P��;�Y%��-�=Q`���ڽ^�+��_����r���=�-�=�u=�k1� E<��p�+�F�X��T��nM><�<ȏ^= �k廣�<ʯ=�!m��@�=Ϣ����G��p���%>�҉=C;�=T��=��#��߬� ��=/��������[���л�M�<�h��=�=��s��v�<�4_�U�ӷ�w�=7y��L�@�D� =�ѽ8��<��
=y��=<�=�ڃ�]���Q�<������ߚ=.�;��;�g����;�œ!; �{<Yy#������6<ɫ��xI�=Xo����>����L�@�K���jȼ!�<DP'= �<�@��V潸���g����������%?=𙮽z����؏���&�񹆾-��=���=�(��#���>��=w��O����O�a)�����D�=vn�;^����GG�����?����ӻ!Kp���=�N���E�����;7q"��#��jH��2=��U�tVֽ�4�{�="���$�=��=�|i=��2�����#�WN�=���E�m.��AŒ<��W=��v�HQ��-DO=�o��˽6��=�B>���<MȢ���>��^����L=�O�X�L������ac�r� >������:��I�=���<O+Z�0�]���c=�>d>�e]��1��l >ˮF>������;�V^���ýk����ʽ��Q�X.�=^ߋ�V�>�b�=���>#���y>�G��������=n��;W�������=N�>R?7�rJ�&��=�����夽>C%=��<�֫=��<$�����=�1T�n�Ľ�ݑ���<�O�2�;�\c>���=L_=� >�=�=1M��9ؽ���=�v=�q>qc`��_O���� ��;k�����<���i�����p>g�{�����k��#��pn<I����E�<��;�3���G�<E�=��?>�d�<������弑���� ���B�=ۉ>t]E����=�.V�>Ʈ�N|=�^�ϥ<��]�FO�<X]�=!1������fһet�=���= �+��a�=&�k=�������Z�=�M�<�N�<n�;w\8��1�=|T�C���r>4�� �0=�Ƥ<ώ�=_��=u�9�IV�=ޘ��<Rt��̞=')>%�*����<?cp�N�����s�p��=��=����/������;�\�<��M=WX�<���=�'�6�}��I$>!�h=㜸�!_$���=��<M�~��t>�Rɽ�4���W>>�-�=����?��Xz��
���=ѭ;=_� > �>�?����=O�F�\N�͡1�g4 ��a
�(3�=���=��=�;�=d�::Mkh�ܒp�����(T����i=G�>�Ŧ=V>�<=��<<���=���^�=d9۽��R�6\�<qj��� =}ͽ�J��I�����=���=>Y�=n��<���9�7�T<�=��;�$����<x^Q=3JC=����ġ;ҳ�=@i=�g�=���=9n,�<0���ۧ=�h_:e�M<�y�"H>P���ʄ=.S����=E:.>��T:n�{�o��"��1p�Ŕ�<���=��R>��K��'�����<�%(��a)�#9���Y���k�>1p��t��-��N=B=1F��)ؼQ�L=�֙=����|�[��`�<��>����"7=H��=3볽y�]�3ӽ'?;=���=[���mp�<H�Q���=��ӻ�5����X�8��<)~�^z���:�=�S��s���`*ŽK����:=���=|�R��;�D�=�;y��} ��*���5�J��\��=w���d�S��:<�B1�d1�;*H<�W(� Y<�0n���h�=�Ǽ� �;��ؽ9s�=�������+��<�-%���
����:YP=���=E��R!p=��w�=gJw�V'�t��N>�1��,�E�)'�h�+>}�F=F�=��J�!��='ܑ���=4ȁ���޽੸���<��'=�=�2���tݽ�1<{[��P;���޽F�����w=���=�>�v{���������/��=_��=��n�
������Pv=8�>�ք�a9���5=�=�<7�+=��~�h�*��m����2�7G���3�L�R>�3;=��=h%�}b�<c
��+E=i��<��}�a���������=���c͐=QY
���j=>�������1꼆
%=he�=���=������h��*�=މ,=j�7<v)�����<Dr���Y ��}�=yI>F��<ʋ��냽j+�<�� >�
�=E�*�r�E=OU+��'=�V�=���� <x(M����~��*�^�HЩ���C��5>�헽_���ѹ=�O��S������+�w���ԽW�>��>h�,����� �At>���=t����A9������)>���<����M�="&���1����R9>ȩe=·A=��8=��������=<��=�E@==�=��]:<�=���=��F�� >2!�I�*��'��3�Q��v��+ͼ��h>4"=�~����E��h���<!�P��� ���&�{'���s[�tV5���1���>�)��n��<�=��=�+>�gj��o�0&=��W��
�����qͼ�q�����=45�=�k�=L/��޻������]�+F��%#"����=�� ���W=B�9=�fF=s��<���=��b���K�Z�s���=���=Ȇ��ƌ��`9=��<�9��pR>G�=m�:=qh �o^��a����2<��D<DY��D�;�G���j=)�=n��'4�:3������<9���l���
���=p\ĺ�b����m�6����<S%�<���;)�2�7M2�/Dl=bG-��">ˆ߼UE;�fx='���MI�=Ig�=6C�*l="\� �=���=J���2��G�:�7�=����W��Ƚ��n=��=K?x< V�=VO=du�:�#�7�o=e��8����P��=
�=Nv>�H�:�Yp<"��=�Y��b=Vu:>�e$<���:��Z���=���󔳽H�s���=�.�=͘=��:=�x��u^>�0콿/A>���=�/d�9�P��3�=���x!_=Q�=T��=�?�=�"��'�S�n�ͽ��>�%�<k�Q>j���(}=���=��ɽ��<FHk�ͭE>�� >�g���%�=>�=�ļ�� ��!L�X�=�� �$����p�s(<7�3��o��y���[=a<�+�<���=�e}=
�@= 2���= �4>h|�<�,i�M;ռ� ��̐�<YR���b�=�]�������e���=ʭ�w��=�|�=����9i�b����r��Uk�=�����W�Q�>wb�=�(�(-%>K[����:�D�=��2=��I=��W��ֻ�Л;��ʽ�C�=�}��h����W;D\���^�c� �`>�=T�=guj=��P>����c@�ՏJ��XT����<�ݴ�y� >`m�:տ��S/����ϻ�p=BLG�o=��5 >�����=���<s'<Rv >����A�/����<3����NW���q��^�;�T��<Y��f��YT<W��=���=P&�8|��=_���&<�<��=t�Զ
�9
��% >�:�=l��<牕���p=J��f��=�i�=�}j�s3��P����,ʽN
�=+X�*Qv� ώ=[�<[
�b� >%��z��=��X�@���Xs��/=��="�=���ws= N�<y ����콪 ����<{�W^��q������=����L�;:/�A>�X�=�F*�Z,�<IW=ǔ�=���Dž��NS>��=��'>C�O�<�,|�� `a>{\���<L_�=;��=r�e�� �゘�s���V� =EQ�=
=� h<�~�U��=
��龔�tu�<���<�1���&ս�f��&T����=<�-���ܽ�1�=DZͽ-�==���¨+>�!��K�@�]�=�_ܽ�,^=��=�P��8�=������=̂P>a����=n�w���>C�K��Ж�����H��;�E��� =W�8��K~� ��%ʃ�se=���>?I� ν Y�<���9a��˞��TB�<=h9=��e˞=�K
>FBR=����h=����,��H3��Xm��U�(=�qi�����<&�<���=N��=U �3�=8�;>o=�J�=�J�=���!Y<ۓ�=G�/=R���º���>�1ܽ[V��Jp>���'>n��=ږ�`𽽙P�<�O�:7 =�x
��؍��I�<�@�c���6�i�N�a��G����>�z;��=��=�_��0�_���K�qJ>oJL=CN=�8�?�S�d�aY�=M���zo��[���ka=���=����|FK>�O8����
��<=�X��ͼi8k=*-c�h>���=�M���=�J��>�~��F��2,�=���<A
�8�ҽ�^�=��̼K���60|<e2"�Y½+G�ɱy=��>=� >+�J��۩���Ҽ�>@A߼��V��{@=a�4�"ՙ��󓽖6ӽ�鬼�L�=�,>������� ���T>������=�&G=��k�N ��]���G=�7����o�[��<*i;z��S��ґ=�u-=��=�����D������+�($_�0��<�����":U&���+G�?�=>��)��2�;�+%�&�ƽ�z&�|}%�������=�ǟ=�<6��� ��K3�,V3��*.�Ͼ�<Q�M=U勽�]<���=y�ܽ^\�<l�=���=zh����<���!��!�<�3K�h T�#>��H�0�ԕ�=�{�=�?�<G����Dͼ�+�޽+4����y��y�X�J���!���!I3>�П= � �Y��<��{�Tu/=*����HĽ��s�m�=��ӻ�Ar=�Ѽr���-�=�$T=���<���</�=����3Փ:hy���B��.=����� 4>�ܮ���}��=�ľ��C$<==F�=�$<��f=������������!��(K=xZ>�� ��c���ʻ%땻�x��-�->do<���=$��=ܻ=�z/�.%�<�U��TF�=��&<��A���Ͻ"��=���<�9��P'=��ͽ�:��@>�c�������ɼ<���q�N>bZa����~��=����M�Z�<Jd >��:�= M�=�A��z"<>!N�c9�����"=���l ��db��eC>�g���𻦏��6�=;F ��8<���<�Ժ�"Ӆ�s��=���@dνH��=���SŽ��������\���q����;��ὖ��<����X��Wѯ�������=��=qWƼ��`Rƾ�F�=H׳=yYG�=�X�<t߆�j�����<q1$�5��ήM�| B���h�q=w�x=^�k��j ���=)�1�
P�LY�^.�;�0d�Zd���y �����uk��L?=�ν�4�<tX������ �.C�=򲢽��d;����5J�K|Ž��=w��J��=��D��G���|p��W>�֨�[�>�g��Q;�<>=)4���=s�=��B�6��=��
�JS�=P��x�U��� =���V����=����DT��������=����.�=��˽�[Ͻ�e�=��R�����5>'<cI=g�W=���=��=��x�Ǖ��A�� �������^�<��U�#�.�ԋ�me >OY=- �.ŋ�� <���:�����= �=50>r��=]$$�����4.������߽��(������d��<8�,�A,,>W6;�H)ʽ��=i2>�9��u8���:9ma=�騽Qj���"�a�C=�������=�E=/�ʽ/��<�����|�=��7>�z<�;���i>� �=~#P=X�U��'�wR����6�P�ք���jڽţĽ�1R�^�����=&�x��E0����s= ��$<���=�i����%�P��唾����<��H=ٽ�=@�t�P���*�>�̉�
�Y� �2>fXa�c�L����=/��=�t����c �=�׍=52�����;�B��E ǽ
�=C� >El���&ֽ� =a�=�B�=��=Q�ؼ�s�;�G���!p�o?O� ˽pL��v�<GbH=@��<W�=�ӽ�W�=���C��´=�[��Pڈ={�����=��=���V��=�h׽�����^�=��=XX缑���P�Q<[h�=1M'�^��=���=v�����P>P��`
���>{��=c��`��<��W��<'��Ϳ������=�{*����=A�=�1¼^��=��g=IP�<�K>%>����k����<̃p=�QR��m�*��=h����=S�`�ߤ�������|K=ap> �M��@��\�< oQ>��=�&9=� 7���5B>q��<�X<�/���;��=��,�&���a��;�UνDfH�ģn=�rH���=(�J��Ō��焽��轤6>=�)8<l`H>W�!�S���8��b�"<� +=��=�\�<L�<�e��߳
=^�;�(�=R�Tۇ�(q4=t9�<�}�=�q=�)=K���@���CA �*}����=w5���ƛ=x�ǽ>��=̋�oR�_V�=ŀ'�
0�C�Ľ�<��#D">r�,�����)=�2�:L�N���E�z~O=#*潵�>&�=�=�1<e}˽I�I<�+�����a=ޑ>i�>�(�������:<��=�m̼FB���ܽ��v=�\H��W��|��������W=Fs�=�����fE�k鴼��:8=�C>xS�=��4=�$�=� �<�(��9�2�@������}=�)ҽ���=KLϼ��A=W0q��������M�_=�ٽ�#�:D9`��w�7����6�����=�耽�_�=��d�AL=4ս��<=I0��9�.��=`�=VCs������8=�7��M�=u=��=��;�\�5[c��U>���=�Ņ=�$>= ��<�z�=gi���!>�;�<�Hm<�xҼ�}���6�:T!�>e'<�X��� =YVʽ�ً��Z�=M����#I�<����v���p�w"
�F
������9 ��A�ؽ0C�=��=�S���۬���=����+>�'�=Q?��~y��V=�����)=�=�¥�����v=N��oϏ>h��z�<�)<�i"��씄<Q���Q<����F�p�;�l>�Z)�~���I���9k=�y��%�8>��1�\S=�<��_��8�����!~���C�=&f���
=�����S<>�\�ud�=xʼ+ɽ�ƽ������^N�<�{4>�}�<��=�VK��ų=* ~�1�P��y=N1�FԼ�h>���=� �<r�%��"�;��P�=W�=���:T�"�bBɽ}��=`:E;w�7=T�u��.u�ᘞ��a=���
�d�����x�>��p�w]�%�H�l=}�|��[C���A��y׽�3m>0�$� G�=c�L=�F?��4>�Uļ��#=�ny���&���>���=L�����!�K�������)�>P_>p4���
�N��<C��<�T���$��Q���B��֣������}k1�+.����=h!>o�N���R�/ɧ�S�Q=����4�>):[=;��>P��=��M=?�<G�=2?�= G�� >S�*�c?���8>J�E��gJ=����%�V�X��=�=|�q�۽��w<C�=m
=�$��!�=�ڼ�?�</� �sD=|�3�C����o=P�3�Z���������#�;�O�=$��cgg<�x�=C�=�*==|�%�����ET���. �����׭c= ����g
�$9�i� ��d(�%#�=������<������A=���;�It=�R��]��<x�/�)D�^#���\=9o���̽#a�=y��'D>��%>�X�=1/�z�D>?������=�-U=��>�����ļο;��툽�m}=ɣ���ٽjJ���<e��=�ȵ:f�g=n;��
�[=�G��<��w�l�b��'E���j�iE =�����O̽�%��~ӽ���<�ڛ��v9>B�D=��>l/ȼb%�=������=׋7�eV��,�=��<�Q�:�<j@:<H6%��w�c(!��yx�L꒼䘫��R�=�۽�'�=�ɭ�/��uBH��Q:=O搽S:��� >��_��f$��x=�Q=S"���-�w~=Pc��3��=��~> ;~�`*�=:�=���=T����1=������Ù=x�w<���<�ee�e~�<��=:����=���=�͗<|ޢ�s:�=i�t= �I�cSe��:�<�U\=8�$>)aG>AW�=���N!�=֔��)H��M�(�ST�=3��6���E ӻ�)�k��=�˽H�:�9�=���=4��PZE� �5���=�>��;l۽�{_=t��=��<��]=��j<kZP=
��:{������v��
����<=�=�'�=�0�=�d��(��������=#�B�'�#�iD��U��3�>�o�=OEz=�o<#�Ͻ��3<vܴ<���=�]#�i�C�z�u=�=»��>�F�=�p;��G���~R=��=7 ʽ���Ca=�F<����=��=�OP=�#=ߕ��Y�i�;��=˗��� �=A�@=��<�ҽ�����ܽ7T4=8�5>�i˽�� ��"��U�t��=`� 1x=s��=�,н/�5��*>�}H=k&;=c,��3'սO��-B���-ʽh �����I��=M�G�����ˏ��s(>g�U������d=��=w;]�W����4:\�b<�>�7�E��N�=J���%��N��?k�������h�/���wv�r�<�����r9��~%:�ڊ>�8h�K�)�# =�r=��A�5�,�f ���n=�˿ ��'t<�"����� ��<n�׽��=����X#=�0�P l=�T��w�$����=�� =a���(>�˽V9.>A"?>�']>fo���ۤ=�~<�K���㼕��1�<�� �4�O<�6r=���=~ ��TG�����m��߼�<���_�=�֔=�?��*�<�;�A=�� �g�<�Wa=�ș>GT�klڼc���\ݩ< ��<��X�w��<n/w�W�=��= �H�n��<ȼ��};�">�=������=��>M�����^���@����;�� >�������&�^=r�y=�E�2�=�[�=��$���j=$#�=gʥ�?�E>]�½v��v�h��<��T�c����=���<��0�=�l�=@>�v��&J9>�ZԽ�����E�=���꯽�꽐$�5�����]�������={/>�xp��3��5u���Q;���>�>�Ŝ�>�� >�*�<
P�� �2=�17=��#>��2><�����>���@R��v��8���[E��"���1>���>���=ς=�Һ=�犽�Ia�Jj���S>o��N8 =,��x=��*��t�<��a� ��=<����Jr���;T�����c�Y�>)�½
@,��N>����*=)J>�+=M_?>��"��<��#�5�:=��<����Y=<�\{���=��.콩���R��=�����:=>Mf>] M>��
����<<����1����=d�ƺܼ��A��G���+ݽ-�}=��=`x�O'>=/q���s%>�N�|�ּl��==?��O�ʼ"�=Uƀ��A�/���D�����O<�ϻs�=d���� �A_�<$�s=��<L��<�2=��7=f��9��C[<l �95�=����ڴ=��=ϐ�=�e�n������������>�O�<jͺ={�e=8J4;�ܽ��=�����H�H0�=� �=���=��|�G�н�ʌ��K��)�[<1x=�uʼwj=��='�X>���M��<���=/+u=b�C�0.>B��<
�����<| >�M���=����;�ۨ�BL�Ø ��m��^�W�+p���.;�N�YB_�������=쏜�"N>wؼ=�P]>r�j��{�;�˽�:�����w�;�@'��X#�K�Ͻ��R����<�Г<�y�@,�=k��=�뽍����%,�-� ��H�=�_�=C�Ὅ�
�@�*�i�=���=�i=�S�:Ț��
���2�޵ =��v�|���cm'<l�=' �;��<5��j�G>=��=w-&��|/��"��b�>��=m4�=6_��Hh�Ood=���;E�?>�b�<�hM�Z�>�4/=r;�;re��(�l�m�=��=�LV��!>�=�9��&�=��˽q� �� �=W.��"ʹ=��&>�J�=��-��v �$,1>��;O�S��YF=��N����=L�=�q�=m���p�ƺ�N0�ݎ�_7�<S�>B��=)޻
lA��"��2c=H�Z�ዯ� U�<�ɏ��ZA>{�
�5Ž��m=c�r=�i&�ݡ��;𫽟����8Q=�r�=��@=���=i%
�ߧ5=(;>�&R�v�<:}���Ћ����<F���3� >�4������0>H�=� %���=3��<��q=��=���=���<!bL�kH#�73��[�w-��Z��=P�t���>Q��=�9u=�I��
/=Pᏽ�=�^>͑G��/U�XB��N�������?=���=�4=�-�9����̇�̬����6��j�=
=R�=~<Nf�2��>s0C;����-����(��{B�tYb�؎2��*>��?>�ѓ�����k�`"���c����<�_�3�ͽ+������#�<�j���7���=ʯt�|���B����t��{�==F��<c�Ƽ��>P�<t(��q;>��;�=�����S� >�����<P_���ad=\x"�"�Ͼ���ҦO�J�<�ƥ=�qC�p�6��>�Cl��: ���3�eb���� ���V< ����=<��=VM��j$����<����=�K���! �g*/>A�<'�6����"�~=cn���=�;[(
��7[=Z���u�� (�<� �<i����X���z��osѽs��-V;��ټ��=P��=])B=�%��B����=�3����A>�@�� ^W���弭� >�)G=�e���=0�W�?�]>~ٽ�4����=�Rѽ����|6=�����:�=�==-u��@�����= UG�+�D<�( < Q��?@M�yW={����U̽Ve������Y ��k>>si2�&�/������>\x�=�� �ᇒ��g��pz�G�콇8�<�s�=?�w��7ҼvzH;;I<�� ����<L���w ��0ߘ�О��ދ<��߽�)�<�k�<&F��)
.=��-=�&�=/�>E2�<�,�=�hd�rP�=���:�cG���B��n�="Z����=�X�=C S<�>�sf��ٸ�g���'=Y�̽�d@>Bń=~<�;a&>���H0>}�x<�_=�ν3U$��Dƽ�R=ԫ���d�=퇛=q,�.�N��ۀ=��V<� ��F>j��=������=h哽_��=�,�=5�<B ��&���$�� g�����
5R�8�e��=k���+R��>� =ױt�@rO���\����/�D=؂u<����*��= ���3P��
��<� ����=t����k�<�FY=�le=���t�"�B�X�K$�����~E�W.���`����<���<�'R=�.�S�<��˽��e�#F.������᳼����b'>��m�j�r< �����~X>jvӼ<�J>eT?�ܷ�����=Q�<r�����s=�U=�?ɽ��5�,k�;�\n��cb��=�=���=(2�ޠ�"Z�<״3���p=�c6<Q�:��<o�O��V��L�=�Z9�&���8{��~�r���RgX>��-=�
�=$\��9���ʇ�W�,���<���<~�ͽ��y=�W4>;���������㽀�=cA�� ����R�=ƽ{��q�޽HO�<�+��c*M�1�(�� j�V'�����T=��û{ M������4>[��={&�< ɽ}�B=��=�ٽ��+�=�<=� ��]ҽUǣ�!A�=D�����o����1��#>Q�v=�̚= =��=���tZ?��x��/�<���<�X]=�UY<���:���=����n нt��<3��� �@=�P�=���<E�����=`�G=�=3�'������;�����N��y��=���=������=_h0=��$>Y��=SҼ�=���j��'���2��F���0>O�\�a-=*Җ>> ����ý�3I= �=����:��1� �;��!>OK�����=�ط�QTh�]���� ����=`�j�_j�=��F��o�=ɨ'��j>��<z��=g�`=���=�� ��7�=���p��=ae=v��������>?�!= �<F�i��f������ =%� �i�X��8��%��=�0�=_=>� 1�l@��r� �> t="9E���=6��<6K��e<�m%���2��~���;<��=H�>g=�<̖>Xr.�K\��XĽ,b&=��'����=��?���Ž��ϻ�q��Q��<��Y<�h'>S��۽�N�ʠ@��5.=�,C>~b���wJ�y|��
G�� F`�(+��q�<�]��=����s�i=[â��OP=p��=*=��v=���@B���a�=z/��S+�<��=����ͽ����=0�>Nj�=dr�=�L׼��;S���w�'�>@ ��s��w�>��R!��5?=��>����x��~4>£�=��=��j=_>-����<&
ܻ�|���jo��|i>A�Ao�刼��A���g�=���=���=�ݸ< ���#��=��=6��󷢽�I�� p���>�����w����ɼ�O�=��O�%O}=K�>��O=i������=�H>�i�=rJV���򼇄?=�k���.>�k6=�^�=�%��@5���v%=��='e�=��<H�= �;�W>��=%y=�Fý;=D4�=b<� >����8���G�=�@<]�S��߲=��+�Ms��c>��� ��=�+v��X;=>>T��=�o��.�I�.C���
>����w'=��>�w��" b�:yi= ��=c�?��eT=z�Ἃ1+>�%ļ|ݔ��=zS��q$4=��
�.*<�������b>��=���wۆ�+����w=@b�ٓ�<�(�<�>��9�d�v���>X�=Qi=��!<#�?<�*>�sU=_C�����[ !=��9>�X�7X����w=�=�,��d �Tε��?���f��������=� Ž�Zv=(�м�i���b=^\��}#=���=�1�<��<I����\�O����Y��wf�@�k�{w!�W�E���7���{�=~��=6�>���=�Ȧ=�v���'��B�����@Ͼ,n�='�����Ž� {=:����R�=L=G�Ӓ�=&Oڽ�R��:���ij >��=�}�=��2>���f��=]: >zt�=����н��c<˽ͣ�������:�����<�c��䢻_��<Q{f=N٫=Vt�3���U��=󺍼y3"<�*�eg��1���(�=�`d��5K=����)��;�>���Y�<�;&��? >66��L��=��-�V�.��+=��=�2�=i5�=�F=��V>�=\0�����V��ac�=��F��Q�<[�3>`��x�=F ����<� ���a�
R`����߆ѽ"�@���=6�Z=��m=*H"��AȽ;�}�쀏=P�:=w��=KF���ֽ�=���=�D~=m�@>���2��������=����i���s�Bٽ\���l�=x-�<zQ��N8h=1/j��h=����[>��H=��`��Ah�x�0�]��=�Z�=ʎ�=z*�=�P����=���
>=�Ǽ }3='����W�3}�<~�p�\��< H�<`8m����<��U�hN5=a�=a���^���J-���=k4/=��<F;�<�@=�h�=�ݑ=f��=�����`1>��:]�;�L=�B���i;���=
]}=ϧ���K=����ԽJI�=C�J�m�v�⽻Ry=7�-=�'=吘��(Ҽ�A�=V���p)m�DO����=��N���ڽ#��<���=@T{<P�
<9C:��]=�V-��`T�����^����;o$�<�u�=Wr��{�J�� ���?8��)a���<c z�8Sv<+7��<<7j2��$���X�=ګ�>R�G=�\+>u �=D��=.�����i-6=i}>V-
>�nN�'$�=����'�޼ �8�I3����+<C(4����;�g�=]�Ž�a/�����R��ݡ�*W� -�=df�=��{�� P<\|�<�� ��ʦ<���<�ј=ʌ��P��K�qo#=R��k5=���=��(=k =Д#�Ҽ�;�����F�>_�r>��=��>r�2=` ����P��Kv��zeܼ=:�=�SD>ʞ>��L=��}=��=�6۽x�<�] >ccs>V��=� ����D��%u=�4���>�<O�=t�`=U�K�0e���.���A�rrb=�(��^�����BÀ�Vv ��*>='����^���茽�兽��]=��l�bz������<,S�=�p>�o�=��~��BJ=�����K>��� Il�67�UI�=G%>E��=����M�n=��=�)��c�=}Y�=���=,l�=�.�q�e=,=��E]Ѽ 罨b����{����z����=���=���=���<�8=N��="|&>�s�ԿN=�$�=4���p��=c��=�>�R�����K=>����� 0��e�=}oݽW�8:9s=�h7=�+>`�4>r��=�gɺ'���������wB(��/X�v��<�E8�9"��!�=U���[5�<�>k�ʞ�=m�v�ڣ�=���Q�=�k=lk��M
>���=4��=�:�=֭���4��4z=��>S�߽�W!� �T=9_��Ĩ��\I��_�=>�.��}�<���H�t�Ԗ�`��R�=�4!��"=���=�9�=���=u�R�,���� ��$.��нY1>w�J��8m=���<�܉�]��=`�h�n�����Fd��� �=��߽�0�=����Q '>�H�9N��$��������r�����۽)1�<3Sܽ�_=����o>��Ƚ=MI�A(>��{u=ZP���;��=eE>}ck���=�O^=�u�=�[!>�I�=��=�X{�K4Y<$a�<��ɼz��yRI��W�I���� �=���m�Z=�P=�0�;��0<n� �=N=)��<*}q�@27��u����s=Gb�=��N�>Td���ɽ� W=�(d=���<8ڤ=�L���[<=��ӽ���<E���#x�}r��`���6)=*�;�u�=�j4>��꽡���uݢ=�홽��!���>�+>7�.<I�=���v���<%궼�>ҼW�׼`ɯ��!�1C���=�@?>��=Q��h�/�@����ּ%��'����ϛ�|}d���>�3��ґ<U�J���>�5j�%�}��\�S&A>sK�=a��=j�ټ8xx�<Μ��=R֐;P�����]P�6 x>œ2�fǚ<�L>w��<��==�ɵ����=�0 � ������MW�Z9����=mt�����;�%���l;
=�X��{1�T��=��^�:�= =k��v=���o����h;��>�:�<ICe<�j��pt=|��=$D�=j���]�i<�iٽJ�=�H=�P�=_{�=L�l�)،=���=�c=F �=9Ql;�0����=}a=n�����;���#t2>���<��= ��������Ԓ��޷=�I���Ղ>���<t>�dv=xмM�a=��v=֛�=��y<�����= >,���q�=�å=:ϵ�'�Ͻ��׽}5������=�=갹���7��_A�w��=K�<=� ˽��:��Ma<Rѽ��:���=�F������<�D��=5���$�<�S<�����<��'��gP������>�%)�K�=6��h3��g�Կ=������<m���S*>��g=�E���z���@� i�zԦ�r��>��+!q�q���gD�L�&>��t=��3�9�G��H>���@�G��4����Y<&Ff<h���<>�(�Y�D���g(*��3��걽ec�=a�½ƞt��B@��`��.T���>0��=^]=QQL�=w�c�K�K�P��<���<�c���j�=uN3�_yr���>��`����=89�Q��=ۥ�=�?���*|;) Z>`Ex=.��`�Z�בn�ɂR=����������<5"7���=HH>�Ž8q�����<��%�i��L�����=�k>2V>E<��>�<�G�=�[�=^:ؼ�����
�<�&�=���=���<��=
� �o<)9=��X>�g��U �=�zg:�U�XW��| �)����ܱ� �Xb���0�=6�6��#�=�u�= �ݽP�.>��T��r=>j���ro�=c���(�����O>4y`;�Rn�+�=�-��a�k.�1^ؽI��;���=�L>$�� �Y��S�=� >��8�<�IL��ҽ�D2<�/�=�6�<X� >ˆ��$�g�/\�������f�2ç;!�t<��'���>��۽q�k�����!�=6w�=������D!�` >������I<���Ɯ�<�"���=e��=�~f��H>H'�=�8{�_$�=;�C�Ei�=(s����<��=$f����P�iW�=uME�k���fR9��r�<~W��k�=q:>��>��Ƚ�e���\���"�[P�����=�a?��4��7�%��T�����=R��=fD�;:`d��ἂ��=@T����ȵQ=�w%��R)�#SK=���=��Ƚ?�뽔�3�y��æ���%=k:ή{M>F��4�q����������`V)�ɘѽ��B=E�=�� <����>�w=�(�>"��=9sE=ԣ?��G<�G =�FS����=���=� �����j��<٩�<\=\(><��>�
.�SN > ˮ=:潑�н����* >lʾ;��V� � >�]m8��=��'�Ԗ��O/��C=���AD=f���/F�=*�E��e2�2 !>}����d�=�y=���<�5۽c����F��0/4=�{߼��;�����FB�Bh�:6�-�\�8��ZJ�γ��%�л>����+����=���{ӽ�S�(�����~=0��>&�Q=��C���ٽ�>�;�i.��*��[�<�:۾�+����<����-u���J���<=\&��F.�=��Ľ�l���6>��W����+C�=��׼�!��6����G�=�b��_<� ��;j �k8 ���3���&����=���.̧�Bh��#�=id�X�M��n�\#��zX����"�f�=k�;��>�����i��>�pc=s|�=�Pc<\� ���½
�v=J�0�+�R>^/���?=U�>~2��s'=�!���>��
�e[�=�G�r����1$>Hh>��:�>V1�:�;S=�i�=e���{�=��s�u&� �>H ��]0��/#<:����f��$�r>mɽ�ӵ<�m��%�<D⇾��ջ�2�=�mM>�����g��ev���=�!Ž�^<���Q��� �=�Gk�����7�68�=��=��F>:�[="Ý���l�Fa=E����,�=4� ]����%�����TC=�G����ν����m�ӪY=6W���ټ�/�� 9=���<��=]�F>t�ƽ+bQ=��x=rLy����<�}t=�����_G��C>B��|����<B�:��Us=�V[=uuW���ʽzk=p�m=}�f;zʽ~��6e={���3��=w@���E~={�i�P�>>z��=;����>l��4��=����iy�� �;F���#:�<s��h����ν=�7�=���W��������<|0�1������I?�ʔ��R����o=�~>Y�����&Aݽ��/�sC��c��J��1��=G�l<�x�<��q=����h���k���9�F>a�½���=d���
j{;{��]4H>�����\Jl�޼-=���YxU=lz<k��=�^����� RF�����H�)�C��>�=kQڼ��y=�I>�#>���=!���c=q���Q�]=Z>��=� =<aP���J�V->����H�F�%���y�<7a���h�32��8�����=l�?�Ȇ �,j�K$z���p���<6���Ԍ��u�=�|��Ծֽ�����=����I��"�>6:��;`���N�<H`;���=��'�E�5>�ӯ���>�����bJ����k={�i=[��<)g�=ܿ=�`r�n2�����]�=,�=�~��%P�=: ߼і<��V2����u�������
����<�= >�_W>A'��^���XD6��Q�gw����; ��=��ͽ=i���Sa=�h廾 (>Ko�=}���1�ʽ���v��=j뼲��;�D;���$=WE���N���] �7��=�T�<65���=N��=�� ��� =���=q'\�I,n>�M~��� ����� �=%�=M�ºx���,���~���L�\g���J=�HC=�4=$U?>�j���=�ؼp��>�u=@���y�=�:=�i�=-�>X�=�`��>���F)�=$�x<�Ȳ=�C�<���Ū�<�d�������;l9Ż��6�.X�k�E�g==iV=�P�<SE�=#���wѽam�=�==�Q��R��i<}���a�E}�^��������*�<ܽ:n~<o�)2�=a�=�l#>3���<�x ����=n+߽������<
�H�(;�<l���a��o�>=-ԉ=]F<RH7>o�=�*>�i����=L u<&���E������_N�=ws�=��}=�D=�̽��E�ãs�����Mҽ��<�� >Kʼ��8�>�L=�`꽺<Q�=$_A�닾���9�9y=��>n�ڼ�@y=�밼�i
�����c��E�߽���=�l=�� =��=�>`=Kj.=���<)��=_1�=X������=��۽{��O'Q���;Pq�=�u@=��@���V��=�ִ�Vǹ�;3��._�=&8^=���q�ǻ=%�?R�*3�q����� =���;�ػ�
�<��Z=!:>����€��P��=02A��=<i2�<#d�����_V<e0½�ie�k� � �ֽm9
=Tԡ=����">'=Yꅽ
w=��ü� >歄=�P:��� ���%>�2���U>���=;)�=4�ٽ9p���ϼ=��N�q:e�����$��x��+>�̚���_=�P�=�����=�ý��>�ג�J���%�J�Ľ��D��_<� �=?*��|�<N�=;2��.&<<V��=2�S�?T�� �!���<��}=`Lҽ������ý^h� 3�D\`��*�����=UO�<0|>�r��<�h�=J���w#%>jX>�Bټ��S�^G�ϛ(�\#��2�<7�o=���=�5�=( B�-��=�I�<m�>/�o�l�T<�4>S�4�8�h=P\�fnd��}�l���������mV3>��0>nM^��ڬ�D��=���8�?=�������=+�V=f0ý�13������;4�={#�<n�=�pS<sF�=�nj=�g`�=E\f<l s=��~=;��=���Z�+ ���-!�+M�=�Ӛ<]�>�Ĩ<�~����&��^=H��=�(:�()��=M��+C^g=�m>���T=��7=ޗ��x�+��Q?=������<�m���J��&��=�=�=K=��R=�Pn����=��Q�|� ��;�RY޽�Q1<�����f�:��c�1� �Ǡ���M?<�C>&��BPe;�I��ڴ�}/>�=���;~|�<#����:ν)[�=\A\=D��=Pen=R캽<ܟ�n"����<�@V=�>�h��i�\<Z��<a��<b�=3��=-���R��=�y�~��!;>����R�=x�ļ[�ͽ/[ּ8���4���W������Ώ���e���,��?>J��= �= v{;�],��=�#��"�=R�2�/T9�$t�;�����=�d�=��`��.ؽ�j �S�>r5/��n.<�Ž���]K��V��Q�������mg>�Q�=�z��M�w=����^��;�ᔽO��="�H=�V��'���ZQ>��0��`�=r!>�f<
����|>Iɽ*^>��;��U�؝/��*>�ny�ۆ�=-*�=+����L>/y�z��<a��=�u�=4dH�>��=T�"�~J�t��=J�=h�">�^�<�=����#T��*�"[����c�;�=��>?O�X�J>�\� ���̬Ƚh�F=����f���ң���н��,>=�<<���=(�>��N�ױ��%=�v���I�>�>2>li9��̽�����b�e9��$[�̂~=�> _߽.�<:KJ;Ŗ��~���u�����I���&����I;>F��4�=4�t=��v=� �<+)¼C� �7t8="���������<^���᯸���O�|<�薽CQ[=;��<�L>e�=a3L�����$�<S���7Ł���=���;-%��ϣ#�@����+�=v�J���"=i��ar��2Q�d):��.����Z� �G;�*��R8�=�6!����:+;��ڽ����J���ɳ ��4z<�#>����>V�= Z���Lλ7��<��x���@��w̽L��<Q��<�|~=�$�5�= (�=�b�=!�=6%���t=��?<6�=ծ=iaP�*5�<�鐾��#��6'<ۣͽߦɼ�5=�6�<.>+>�N�~c8=K��5絽/�=B�*=�Y�� Wt=m���H�B��V�/�����<ꃁ=KCܽ�@>;�4>ν7���Y=�2:
���>=�԰=Aő=�2������*Ͻvy�=""�<���=��D>��J:�e=q�O>�,+��� <�`ɽ����� :�*��<�M�<�:�=K�Լ+��q >��=�D|<ܼ�=+]�����3�=��b�Ԥ*>I��t�?����=3�������b)����=�t�=G%@;�j½��=��ػGę�K�ͻ�=�=�/���΀=���=y�Ѽ���=��8�j�=j����ʽ��=I}�`K4>b�+=K}�4��=_a^<�n�="����ކ�,�����2�o�=~0�<n�>1Hv����<|��=G�<�;>�%4=��t��=Ԭ=��Z��k��l�=�;�=僶��X�=�D=3F�=�'��% �=K��lֶ<�߽��a�M~������F#��Β=b����tD�ID�=�)�=G��Oٽw@�=��A=��/>o4��=w��=DP�:������<9>]���J�� Ǽ@I���?���?>�h��̰�@����|սu߿=�#=���0>��ȽH8�<�cc<<�#�b�3��|��� �<��L=�hM>���}�=/��嬗�shܽ�U��ޡp<' ��&22��>��<�Ѽ��9����=����i��=,��=�i�<�$��†��}j��c���`9�|q���̓=,d)=��U=�u�X���},�� ����u=�E��
�=r�W<e:�<)�3���u��SC�L"u=���)�=��}=ziU���=�o9��5�������W=*iֻ\�>.��=���=X.�ؔҽ'VǽVڽ:W��'�;fC��6�%=>��<���x�lG�K�/�����8%��%�=�ᴽ�,���">h�z=|)��3���V�=��"�.�]=��;>X��= �"�^��%��f��=�7=�N�A��=,Si=oC������ͳ�c9��G��=�� >�R ��d�<M�8>ޖ�=S��3>�Ot<�o��h�2�Or��
��<����}���z���w�\e�=fUͼG%�<0�=��L����=ĕ;kZ=�5<hv���� �
��v�$�ӵt=Ŗ1�
ߦ:�����������>��<��%����<54��x����#�s��=T�=$�<L���e��P|V<�=7x(���[��o=!���� �&�,�=� ��`v�hfD=C�Z>�<������������9��k��f�=d1l=�U��~^�ci��P��@׈�΂�=�{伻G��_>[�o<����j� <E/ٽcYm<����=���<�3z=��B>�=:�|<cj=��5r����=��ڽO�.�����G2=�#2<(l��L����ܽ�fO>i�"��o��k��3C�<�.g�^\*�q�0��j��>4E60�%���)>�*4>j�漾0\ׯ= 4�<���<���=eꁼ~R��g����>=�x>�~H�r�c>��o=��r=}o\<��B>ss�<��=n(�����b«���\/���<�$����6��W����E=W� �� >u�T= ad<.� �7�S=������v<���נ����<S���1I=�O'�#���s��d����F��n�=� �<V$�A��=�o����� �=}_��ި�<�L�=y=1>�3���C����<d!u��_>���Ɖ� F�l붼��=|Jn�"���$���P��|�ԽZ������@��=k<^��=h�=��Ͻ}�X���;3���ES��ա��½��=?>D��`�;g=��=����$��=�н]���i��mmp;mr���
���P>gZ�<�������l廽s1�;��8<�KO= r#>����e�[��;@��^�=5~�Lͽ<6�= �>����s���^*�X_+<�
�=j:I�3�轟P�<��=�l+>I�¼�a�<\�e�,�» bs<�����ͼ0ù<*O�t'
��S��S<'3���������Փ=p�<������=X�y�n�2>v.s=L��=�<�;p�=C����ؑ�ŷ8=����᪽��J�������<v��=�35���'��\���@�=[����[=+zK�z�g��K��rd ��V����<z�r�|Sh=��> ͽwNA=ڦ��E�˽�������{��ېѽ�܃�Q[�=]�<�꼎]3>3�<(;���=��0:p#"=��ͽ�͑�f�=�]f=��ڽq�/;��� p"�Z
&=��6<�&=w<��dǽ�=G^_>BA��Vs'< ��P<�޽�: =l�P��1�=zW�=��f���.��0>�|�=��>ؼ��@�=W��=�j6�7�K��M���M����<m���P0V�k:d=����O> Ӄ���ǻԗ�=9�k�8_� ?��H �=[f˽{��=T����0��eY��⧽Y>�h�=����j����=C7��ʼ�ͽ���>N(�=����M�{�Αa�9bR����=꡺=*��B,network_body._body_endoder.seq_layers.2.biasJ�wD໓(�=��=DL>���[��C:���s=�q� ��,�<*��<`i<�*M�f_-=[�����=Q��Mm�v���m��h�e�n�H=��|=�d��VѼ��K��N=� l<�<���<���8F�a���=Q=�}��p}�<�q��o�K��󕼕ҙ=��;��F<����VV=5ᦼ�� =���=
'���i=3V��3���Q�-��X���$�K�ƻѵ<��={z�<(�f=C���2 d=�D�>ʻ�A=��:��a=E��<-�9<k�n�.;3k�<�==���<P�>�+�j=ί����<���=��,�[<ȧ���9�j<�9p=4 ���;��=i?k=0l1�ϓ.=��~=:��9�ĝ���:=��E�D���a�U<��U=����\=,Z =�Xм}�X�=s�5�=q0�<���a��iFn=K��<��� ���8N��U�c-���=M�G=:a�<<<qe%�~ n<j#<��ʺ�<ۡ ;[��=��y<��=*AB/action_model._continuous_distribution.log_sigmaJL�7��-�*��B/action_model._continuous_distribution.mu.weightJ��AP<��?=41�<"�c�M�<��;�S�=��Ҽ'�<P<���$�Z��*����=N�=(�=قU���T�t=��� ���t�ȸ~=�4���P��Bp��*(3�2>w=�Ⱦ<$�ļ���:��ڼ����&V=�5=mv׼)�%=(��A���k]��
�=l��;�|�<1w�� �H=R+";�E <�C�=��7ϊ�=M~ĽD��:e��:�ּF
B; a=�Һ���=r��S��=�>�;l����׻f��א�<޿ȼp'�=ND <���<,����<,_=;~�=�$u<nB-�>v�<Q��Cýmm�= A��9=�4 �؟����;��J=hg��v��[n��L?f�'(�w�<��=�"w��3r�S{c=�����r��)<<�Q���`�ι�<��w=�5(�������SQ=dPl��I(���ʼ�*�=�]3<���<1�����娫��˼:=b��=6]ӽ�}����ɼ�� =~�O����;@ =4��<���=��<W��=���<gL=I�s�Ax=������<������9�H�̻<l�����=1gd=�v=(�������+��\�V��p�< ���5%�`�R�r�=� �=�T���f�sJ=;2�<񦘽���=�N����<��<�ݖ������/ۼ�G�<&���X�C=� ����=�6�<����߼�z��1��+�=�=�
��qֽjD���8�=�1�9�� ;�M��b9������=ན�}=m~<����q�=l��:͖=:�s=jH�;�5�� �=+��<�3�<*_�����m����N�� ��;mʣ= <aD��1,��_<�:J�w��&&�/�9�$=�xg=q�6�0�$����=Ub�=��I���=�.��ۣ=q�'��;���I����a3:0��=��9���=)�@�0m�<yg<W�= �����<"��S]��U�_2���J��*�&;V�F���k;L��;��q�W����ی;8W�:)w���j�:�)C=��X�a�Ү�<1���bO�<&�<*=B-action_model._continuous_distribution.mu.biasJŎ�<��V<**B46J �<2=bG=�Ml?��x>�&t?|��>�)E?Ǜ�>* B47J@@Z
obs_0

batch
b
version_number

b
memory_size

b)
continuous_actions

batch
b,
continuous_action_output_shape

B

14
Project/Assets/ML-Agents/Examples/3DBall/TFModels/3DBallMultiPower.onnx.meta


fileFormatVersion: 2
guid: 263a4a7f3580246cdb82b3e5466d7880
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 683b6cb6d0a474744822c888b46772c9, type: 3}
optimizeModel: 1
forceArbitraryBatchSize: 1
treatErrorsAsWarnings: 0
importMode: 1

7
Project/Assets/ML-Agents/Examples/3DBall/Prefabs/3DBallAgentArea.prefab.meta


fileFormatVersion: 2
guid: 7f24aa5e0e9d54a9b8bb72772633cee7
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

7
Project/Assets/ML-Agents/Examples/3DBall/Prefabs/3DBallMulti.prefab.meta


fileFormatVersion: 2
guid: c5e235d7c7cba4e5393f3e6b4c6bfe44
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

52
Project/Assets/ML-Agents/Examples/3DBall/Prefabs/3DBallAgentArea.prefab


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &8706416217891658087
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8706416217891658080}
- component: {fileID: 3027918195473112231}
m_Layer: 0
m_Name: 3DBallAgentArea
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &8706416217891658080
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8706416217891658087}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 5}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &3027918195473112231
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8706416217891658087}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3562b98ac771b4757b27379b333b9007, type: 3}
m_Name:
m_EditorClassIdentifier:
actorObjs: []
prefab: {fileID: 1321468028730240, guid: c5e235d7c7cba4e5393f3e6b4c6bfe44, type: 3}
numberOfParallel: 18
maxStep: 10
rewardType: 0
agentSpacing: 10
numPerRow: 6

840
Project/Assets/ML-Agents/Examples/3DBall/Prefabs/3DBallMulti.prefab


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1036225416237908
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4259352808153402}
- component: {fileID: 33399516572863624}
- component: {fileID: 135693586603893602}
- component: {fileID: 23610325484096200}
- component: {fileID: 54597526346971362}
m_Layer: 0
m_Name: Ball
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4259352808153402
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1036225416237908}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 4.31, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 4679453577574622}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &33399516572863624
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1036225416237908}
m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
--- !u!135 &135693586603893602
SphereCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1036225416237908}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
serializedVersion: 2
m_Radius: 0.5
m_Center: {x: 0, y: 0, z: 0}
--- !u!23 &23610325484096200
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1036225416237908}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: cf2a3769e6d5446698f2e3f5aab68915, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 0
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!54 &54597526346971362
Rigidbody:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1036225416237908}
serializedVersion: 2
m_Mass: 1
m_Drag: 0
m_AngularDrag: 0.01
m_UseGravity: 1
m_IsKinematic: 0
m_Interpolate: 0
m_Constraints: 0
m_CollisionDetection: 0
--- !u!1 &1218265376493012
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4082575947564308}
- component: {fileID: 33986757750372936}
- component: {fileID: 23248495933290848}
m_Layer: 0
m_Name: eye
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4082575947564308
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1218265376493012}
m_LocalRotation: {x: -0, y: 1, z: -0, w: 0}
m_LocalPosition: {x: 0.29999995, y: 0.07399994, z: 0.50040054}
m_LocalScale: {x: 0.29457998, y: 0.29457998, z: 0.29457998}
m_Children: []
m_Father: {fileID: 4294419716796784}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0}
--- !u!33 &33986757750372936
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1218265376493012}
m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &23248495933290848
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1218265376493012}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: f731be6866ce749fd8349e67ae81f76a, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 0
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!1 &1321468028730240
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4679453577574622}
m_Layer: 0
m_Name: 3DBallMulti
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4679453577574622
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1321468028730240}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 5}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 4259352808153402}
- {fileID: 4780098186595842}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1424713891854676
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4780098186595842}
- component: {fileID: 65010516625723872}
- component: {fileID: 114368073295828880}
- component: {fileID: 8027554674312172956}
- component: {fileID: 1306725529891448089}
- component: {fileID: 1758424554059689351}
m_Layer: 0
m_Name: Agent
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4780098186595842
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1424713891854676}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 5, y: 5, z: 5}
m_Children:
- {fileID: 4294419716796784}
m_Father: {fileID: 4679453577574622}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!65 &65010516625723872
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1424713891854676}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
serializedVersion: 2
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}
--- !u!114 &114368073295828880
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1424713891854676}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5d1c4e0b1822b495aa52bc52839ecb30, type: 3}
m_Name:
m_EditorClassIdentifier:
m_BrainParameters:
VectorObservationSize: 8
NumStackedVectorObservations: 1
m_ActionSpec:
m_NumContinuousActions: 2
BranchSizes:
VectorActionSize: 02000000
VectorActionDescriptions: []
VectorActionSpaceType: 1
hasUpgradedBrainParametersWithActionSpec: 1
m_Model: {fileID: 5022602860645237092, guid: 263a4a7f3580246cdb82b3e5466d7880, type: 3}
m_InferenceDevice: 2
m_BehaviorType: 0
m_BehaviorName: 3DBall
TeamId: 0
m_UseChildSensors: 1
m_UseChildActuators: 1
m_ObservableAttributeHandling: 0
--- !u!114 &8027554674312172956
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1424713891854676}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5a437e5faf08643acb9ac0d16f792dcf, type: 3}
m_Name:
m_EditorClassIdentifier:
agentParameters:
maxStep: 0
hasUpgradedFromAgentParameters: 1
MaxStep: 5000
ball: {fileID: 1036225416237908}
useVecObs: 1
m_RewardType: 2
goal: {fileID: 5497951568357209023}
epsilon: 0.25
stepvalue: 40
--- !u!114 &1306725529891448089
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1424713891854676}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3a5c9d521e5ef4759a8246a07d52221e, type: 3}
m_Name:
m_EditorClassIdentifier:
DecisionPeriod: 5
TakeActionsBetweenDecisions: 1
--- !u!114 &1758424554059689351
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1424713891854676}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3a6da8f78a394c6ab027688eab81e04d, type: 3}
m_Name:
m_EditorClassIdentifier:
debugCommandLineOverride:
--- !u!1 &1533320402322554
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4667923401885968}
- component: {fileID: 20793118999710892}
m_Layer: 0
m_Name: AgentCamera
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!4 &4667923401885968
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1533320402322554}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0.15}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 4294419716796784}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!20 &20793118999710892
Camera:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1533320402322554}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 2
m_BackGroundColor: {r: 0.46666667, g: 0.5647059, b: 0.60784316, a: 1}
m_projectionMatrixMode: 1
m_GateFitMode: 2
m_FOVAxisMode: 0
m_SensorSize: {x: 36, y: 24}
m_LensShift: {x: 0, y: 0}
m_FocalLength: 50
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.3
far clip plane: 1000
field of view: 60
orthographic: 0
orthographic size: 5
m_Depth: 0
m_CullingMask:
serializedVersion: 2
m_Bits: 4294950911
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 1
m_AllowMSAA: 1
m_AllowDynamicResolution: 0
m_ForceIntoRT: 0
m_OcclusionCulling: 1
m_StereoConvergence: 10
m_StereoSeparation: 0.022
--- !u!1 &1619100162539582
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4425897039098228}
- component: {fileID: 33259119028337980}
- component: {fileID: 23108868206887546}
m_Layer: 0
m_Name: mouth
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4425897039098228
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1619100162539582}
m_LocalRotation: {x: -0, y: 1, z: -0, w: 0}
m_LocalPosition: {x: 0, y: -0.18299997, z: 0.50040054}
m_LocalScale: {x: 0.27602, y: 0.042489994, z: 0.13891}
m_Children: []
m_Father: {fileID: 4294419716796784}
m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0}
--- !u!33 &33259119028337980
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1619100162539582}
m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &23108868206887546
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1619100162539582}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: f731be6866ce749fd8349e67ae81f76a, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 0
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!1 &1854695166504686
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4300192163442926}
- component: {fileID: 33165976320323760}
- component: {fileID: 23468552506669568}
m_Layer: 0
m_Name: Headband
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4300192163442926
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1854695166504686}
m_LocalRotation: {x: -0, y: -0, z: 0.016506119, w: 0.9998638}
m_LocalPosition: {x: 0, y: 0.341, z: 0}
m_LocalScale: {x: 1.0441425, y: 0.19278127, z: 1.0441422}
m_Children: []
m_Father: {fileID: 4294419716796784}
m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: -179.99998, z: 1.8920001}
--- !u!33 &33165976320323760
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1854695166504686}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &23468552506669568
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1854695166504686}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 04be259c590de46f69db4cbd1da877d5, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 0
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!1 &1859240399150782
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4294419716796784}
- component: {fileID: 33973749152356522}
- component: {fileID: 23340305563606254}
m_Layer: 0
m_Name: AgentCube_Blue
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4294419716796784
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1859240399150782}
m_LocalRotation: {x: 0, y: 1, z: 0, w: 0}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 6970511572856245227}
- {fileID: 4667923401885968}
- {fileID: 4082575947564308}
- {fileID: 4144856465265480}
- {fileID: 4425897039098228}
- {fileID: 4300192163442926}
m_Father: {fileID: 4780098186595842}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0}
--- !u!33 &33973749152356522
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1859240399150782}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &23340305563606254
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1859240399150782}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: c9fa44c2c3f8ce74ca39a3355ea42631, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 0
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!1 &1999020414315134
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4144856465265480}
- component: {fileID: 33069174244444078}
- component: {fileID: 23048386147321498}
m_Layer: 0
m_Name: eye
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4144856465265480
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1999020414315134}
m_LocalRotation: {x: -0, y: 1, z: -0, w: 0}
m_LocalPosition: {x: -0.29999995, y: 0.07399994, z: 0.50040054}
m_LocalScale: {x: 0.29457998, y: 0.29457998, z: 0.29457998}
m_Children: []
m_Father: {fileID: 4294419716796784}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0}
--- !u!33 &33069174244444078
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1999020414315134}
m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &23048386147321498
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1999020414315134}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: f731be6866ce749fd8349e67ae81f76a, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 0
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!1 &5497951568357209023
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6970511572856245227}
- component: {fileID: 3716559684926715089}
- component: {fileID: 2305766735990947174}
- component: {fileID: 7810081105142572163}
m_Layer: 0
m_Name: Goal
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &6970511572856245227
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5497951568357209023}
m_LocalRotation: {x: -0, y: -1, z: -0, w: 0}
m_LocalPosition: {x: 0, y: 0.6, z: 0}
m_LocalScale: {x: 0.2, y: 0.2, z: 0.2}
m_Children: []
m_Father: {fileID: 4294419716796784}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &3716559684926715089
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5497951568357209023}
m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
--- !u!135 &2305766735990947174
SphereCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5497951568357209023}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 0
serializedVersion: 2
m_Radius: 0.5
m_Center: {x: 0, y: 0, z: 0}
--- !u!23 &7810081105142572163
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5497951568357209023}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 36c7baa347d68f347a9aa9698aa1bcdd, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 0
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0

7
Project/Assets/ML-Agents/Examples/3DBall/Scenes/3DBallMulti.unity.meta


fileFormatVersion: 2
guid: 7cb36f1ed8092412289626e2e9d19db4
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

560
Project/Assets/ML-Agents/Examples/3DBall/Scenes/3DBallMulti.unity


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!29 &1
OcclusionCullingSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
m_OcclusionBakeSettings:
smallestOccluder: 5
smallestHole: 0.25
backfaceThreshold: 100
m_SceneGUID: 00000000000000000000000000000000
m_OcclusionCullingData: {fileID: 0}
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 9
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
m_FogDensity: 0.01
m_LinearFogStart: 0
m_LinearFogEnd: 300
m_AmbientSkyColor: {r: 0.8, g: 0.8, b: 0.8, a: 1}
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
m_AmbientIntensity: 1
m_AmbientMode: 3
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
m_HaloStrength: 0.5
m_FlareStrength: 1
m_FlareFadeSpeed: 3
m_HaloTexture: {fileID: 0}
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
m_DefaultReflectionMode: 0
m_DefaultReflectionResolution: 128
m_ReflectionBounces: 1
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0.44971168, g: 0.4997775, b: 0.57563686, a: 1}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 11
m_GIWorkflowMode: 0
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
m_IndirectOutputScale: 1
m_AlbedoBoost: 1
m_EnvironmentLightingMode: 0
m_EnableBakedLightmaps: 1
m_EnableRealtimeLightmaps: 1
m_LightmapEditorSettings:
serializedVersion: 12
m_Resolution: 2
m_BakeResolution: 40
m_AtlasSize: 1024
m_AO: 0
m_AOMaxDistance: 1
m_CompAOExponent: 1
m_CompAOExponentDirect: 0
m_ExtractAmbientOcclusion: 0
m_Padding: 2
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 1
m_FinalGather: 0
m_FinalGatherFiltering: 1
m_FinalGatherRayCount: 256
m_ReflectionCompression: 2
m_MixedBakeMode: 2
m_BakeBackend: 0
m_PVRSampling: 1
m_PVRDirectSampleCount: 32
m_PVRSampleCount: 500
m_PVRBounces: 2
m_PVREnvironmentSampleCount: 500
m_PVREnvironmentReferencePointCount: 2048
m_PVRFilteringMode: 2
m_PVRDenoiserTypeDirect: 0
m_PVRDenoiserTypeIndirect: 0
m_PVRDenoiserTypeAO: 0
m_PVRFilterTypeDirect: 0
m_PVRFilterTypeIndirect: 0
m_PVRFilterTypeAO: 0
m_PVREnvironmentMIS: 0
m_PVRCulling: 1
m_PVRFilteringGaussRadiusDirect: 1
m_PVRFilteringGaussRadiusIndirect: 5
m_PVRFilteringGaussRadiusAO: 2
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigmaAO: 1
m_ExportTrainingData: 0
m_TrainingDataDestination: TrainingData
m_LightProbeSampleCountMultiplier: 4
m_LightingDataAsset: {fileID: 0}
m_UseShadowmask: 1
--- !u!196 &4
NavMeshSettings:
serializedVersion: 2
m_ObjectHideFlags: 0
m_BuildSettings:
serializedVersion: 2
agentTypeID: 0
agentRadius: 0.5
agentHeight: 2
agentSlope: 45
agentClimb: 0.4
ledgeDropHeight: 0
maxJumpAcrossDistance: 0
minRegionArea: 2
manualCellSize: 0
cellSize: 0.16666667
manualTileSize: 0
tileSize: 256
accuratePlacement: 0
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
--- !u!1001 &255414642
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 1537641056927260, guid: 3ce107b4a79bc4eef83afde434932a68, type: 3}
propertyPath: m_IsActive
value: 1
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_Pivot.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_Pivot.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_RootOrder
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_AnchorMax.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_AnchorMin.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 3ce107b4a79bc4eef83afde434932a68, type: 3}
--- !u!1001 &321529408
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 3027918195473112231, guid: 7f24aa5e0e9d54a9b8bb72772633cee7,
type: 3}
propertyPath: maxStep
value: 200
objectReference: {fileID: 0}
- target: {fileID: 3027918195473112231, guid: 7f24aa5e0e9d54a9b8bb72772633cee7,
type: 3}
propertyPath: rewardType
value: 1
objectReference: {fileID: 0}
- target: {fileID: 3027918195473112231, guid: 7f24aa5e0e9d54a9b8bb72772633cee7,
type: 3}
propertyPath: numberOfParallel
value: 12
objectReference: {fileID: 0}
- target: {fileID: 3027918195473112231, guid: 7f24aa5e0e9d54a9b8bb72772633cee7,
type: 3}
propertyPath: decisionFrequency
value: 5
objectReference: {fileID: 0}
- target: {fileID: 8706416217891658080, guid: 7f24aa5e0e9d54a9b8bb72772633cee7,
type: 3}
propertyPath: m_RootOrder
value: 5
objectReference: {fileID: 0}
- target: {fileID: 8706416217891658080, guid: 7f24aa5e0e9d54a9b8bb72772633cee7,
type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8706416217891658080, guid: 7f24aa5e0e9d54a9b8bb72772633cee7,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8706416217891658080, guid: 7f24aa5e0e9d54a9b8bb72772633cee7,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8706416217891658080, guid: 7f24aa5e0e9d54a9b8bb72772633cee7,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 8706416217891658080, guid: 7f24aa5e0e9d54a9b8bb72772633cee7,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8706416217891658080, guid: 7f24aa5e0e9d54a9b8bb72772633cee7,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8706416217891658080, guid: 7f24aa5e0e9d54a9b8bb72772633cee7,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8706416217891658080, guid: 7f24aa5e0e9d54a9b8bb72772633cee7,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8706416217891658080, guid: 7f24aa5e0e9d54a9b8bb72772633cee7,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8706416217891658080, guid: 7f24aa5e0e9d54a9b8bb72772633cee7,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8706416217891658087, guid: 7f24aa5e0e9d54a9b8bb72772633cee7,
type: 3}
propertyPath: m_Name
value: 3DBallAgentArea
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 7f24aa5e0e9d54a9b8bb72772633cee7, type: 3}
--- !u!1 &807556622
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 807556627}
- component: {fileID: 807556626}
- component: {fileID: 807556624}
m_Layer: 0
m_Name: Main Camera
m_TagString: MainCamera
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!124 &807556624
Behaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 807556622}
m_Enabled: 1
--- !u!20 &807556626
Camera:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 807556622}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 2
m_BackGroundColor: {r: 0.46666667, g: 0.5647059, b: 0.60784316, a: 1}
m_projectionMatrixMode: 1
m_GateFitMode: 2
m_FOVAxisMode: 0
m_SensorSize: {x: 36, y: 24}
m_LensShift: {x: 0, y: 0}
m_FocalLength: 50
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.3
far clip plane: 1000
field of view: 35
orthographic: 0
orthographic size: 5
m_Depth: -1
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 0
m_AllowMSAA: 1
m_AllowDynamicResolution: 0
m_ForceIntoRT: 0
m_OcclusionCulling: 1
m_StereoConvergence: 10
m_StereoSeparation: 0.022
--- !u!4 &807556627
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 807556622}
m_LocalRotation: {x: 0.13052616, y: 0, z: 0, w: 0.9914449}
m_LocalPosition: {x: 25, y: 25, z: -43.83}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 15, y: 0, z: 0}
--- !u!1 &1583402087
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 1408885610532680, guid: 00a1ebe742cf2394d8c21484e3a02412,
type: 2}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1583402088}
- component: {fileID: 1583402090}
m_Layer: 0
m_Name: Ball3DSettings
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1583402088
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 4673284961943764, guid: 00a1ebe742cf2394d8c21484e3a02412,
type: 2}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1583402087}
m_LocalRotation: {x: -0.069583125, y: 0.0049145464, z: 0.0702813, w: 0.99508524}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 5, y: 0.19999993, z: 5}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1583402090
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1583402087}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ec51f47c5ed0478080c449c74fd9c154, type: 3}
m_Name:
m_EditorClassIdentifier:
gravityMultiplier: 1
fixedDeltaTime: 0.02
maximumDeltaTime: 0.33333334
solverIterations: 6
solverVelocityIterations: 1
reuseCollisionCallbacks: 1
--- !u!1 &1746325439
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1746325442}
- component: {fileID: 1746325441}
- component: {fileID: 1746325440}
m_Layer: 0
m_Name: EventSystem
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1746325440
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1746325439}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3}
m_Name:
m_EditorClassIdentifier:
m_HorizontalAxis: Horizontal
m_VerticalAxis: Vertical
m_SubmitButton: Submit
m_CancelButton: Cancel
m_InputActionsPerSecond: 10
m_RepeatDelay: 0.5
m_ForceModuleActive: 0
--- !u!114 &1746325441
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1746325439}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3}
m_Name:
m_EditorClassIdentifier:
m_FirstSelected: {fileID: 0}
m_sendNavigationEvents: 1
m_DragThreshold: 5
--- !u!4 &1746325442
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1746325439}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &1916479629
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3}
propertyPath: m_RootOrder
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3}
propertyPath: m_LocalRotation.w
value: 0.8681629
objectReference: {fileID: 0}
- target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3}
propertyPath: m_LocalRotation.x
value: 0.31598538
objectReference: {fileID: 0}
- target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3}
propertyPath: m_LocalRotation.y
value: -0.3596048
objectReference: {fileID: 0}
- target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3}
propertyPath: m_LocalRotation.z
value: 0.13088542
objectReference: {fileID: 0}
- target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: -45
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3}

11
Project/Assets/ML-Agents/Examples/3DBall/Scripts/Ball3DAgentArea.cs.meta


fileFormatVersion: 2
guid: 3562b98ac771b4757b27379b333b9007
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

11
Project/Assets/ML-Agents/Examples/3DBall/Scripts/Ball3DMultiAgent.cs.meta


fileFormatVersion: 2
guid: 5a437e5faf08643acb9ac0d16f792dcf
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

9
Project/Assets/ML-Agents/Examples/3DBall/Scripts/Ball3DRewardTypes.cs


using UnityEngine;
[System.Serializable]
public enum Ball3DRewardType
{
Time,
Distance,
Power
}

11
Project/Assets/ML-Agents/Examples/3DBall/Scripts/Ball3DRewardTypes.cs.meta


fileFormatVersion: 2
guid: f3f03c7c05bdf4566872a8b69e2970ae
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

127
Project/Assets/ML-Agents/Examples/3DBall/Scripts/Ball3DAgentArea.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Unity.MLAgents;
using UnityEngine.Serialization;
public class Ball3DAgentArea : MonoBehaviour
{
[HideInInspector]
public List<GameObject> actorObjs;
public GameObject prefab;
[Tooltip("Number of Parallel Environments. ")]
public int numberOfParallel = 1;
[Tooltip("Number of maximum steps the agent can take in the environment. ")]
public int maxStep = 100;
[Tooltip("Specifies which reward function to use. For all environments")]
public Ball3DRewardType rewardType = Ball3DRewardType.Time;
public float agentSpacing = 7.5f;
public int numPerRow = 6;
public int decisionFrequency = 5;
EnvironmentParameters m_ResetParams;
public void Awake()
{
Academy.Instance.OnEnvironmentReset += UpdateEnvs;
}
public void Start()
{
m_ResetParams = Academy.Instance.EnvironmentParameters;
actorObjs = new List<GameObject>();
AreaReset();
update_agents();
}
public void MakeNewAgent(int idx)
{
float xpos = (idx % numPerRow) * agentSpacing;
float ypos = (idx / numPerRow) * agentSpacing;
var pos = new Vector3(xpos, ypos, 5f);
actorObjs.Add(Instantiate(prefab, pos, Quaternion.identity));
}
public void update_agents()
{
foreach (var actor in actorObjs)
{
Ball3DMultiAgent agent = actor.GetComponentInChildren<Ball3DMultiAgent>();
agent.m_RewardType = rewardType;
agent.setMaxStep(maxStep * decisionFrequency);
DecisionRequester dr = agent.GetComponent<DecisionRequester>();
dr.DecisionPeriod = decisionFrequency;
}
}
public void AreaReset()
{
int currentN = actorObjs.Count;
if (numberOfParallel < currentN){
for (int i=currentN-1; i >= numberOfParallel; i--)
{
DestroyImmediate(actorObjs[i]);
}
actorObjs.RemoveRange(numberOfParallel, currentN-numberOfParallel);
}
else if (numberOfParallel > currentN)
{
for (int i=currentN; i < numberOfParallel; i++)
{
MakeNewAgent(i);
}
}
}
public void UpdateEnvs()
{
int N = (int)m_ResetParams.GetWithDefault("numParallel", numberOfParallel);
int newStep = (int)m_ResetParams.GetWithDefault("maxStep", maxStep);
int rtype = (int)m_ResetParams.GetWithDefault("rewardType", -1);
int df = (int)m_ResetParams.GetWithDefault("decisionFreq", decisionFrequency);
Ball3DRewardType rt = rewardType;
bool changed = false;
if (N != numberOfParallel)
{
changed = true;
numberOfParallel = N;
}
if (newStep != maxStep)
{
changed = true;
maxStep = newStep;
}
if (df != decisionFrequency)
{
changed = true;
decisionFrequency = df;
}
if (rtype == 0)
{
rt = Ball3DRewardType.Time;
}
else if (rtype == 1)
{
rt = Ball3DRewardType.Distance;
}
else if (rtype == 2)
{
rt = Ball3DRewardType.Power;
}
if (rt != rewardType)
{
changed = true;
rewardType = rt;
}
if (changed)
{
AreaReset();
}
update_agents();
}
}

178
Project/Assets/ML-Agents/Examples/3DBall/Scripts/Ball3DMultiAgent.cs


using System;
using UnityEngine;
using Unity.MLAgents;
using Unity.MLAgents.Actuators;
using Unity.MLAgents.Sensors;
using Random = UnityEngine.Random;
public class Ball3DMultiAgent : Agent
{
[Header("Specific to Ball3D")]
public GameObject ball;
[Tooltip("Whether to use vector observation. This option should be checked " +
"in 3DBall scene, and unchecked in Visual3DBall scene. ")]
public bool useVecObs;
Rigidbody m_BallRb;
EnvironmentParameters m_ResetParams;
[Tooltip("Specifies which reward function to use. ")]
public Ball3DRewardType m_RewardType = Ball3DRewardType.Time;
public GameObject goal;
[Tooltip("Specifies the radius of the goal region")]
public float epsilon=0.25f;
public int stepvalue=5000;
StatsRecorder statsRecorder;
int stepsInGoal = -1;
int timestep = 0;
float maxdist = 3.54f; // assumes max distance is 2.5 - -2.5 in each dim. This is an upper bound.
public override void Initialize()
{
m_BallRb = ball.GetComponent<Rigidbody>();
m_ResetParams = Academy.Instance.EnvironmentParameters;
SetResetParameters();
}
public override void CollectObservations(VectorSensor sensor)
{
if (useVecObs)
{
sensor.AddObservation(gameObject.transform.rotation.z);
sensor.AddObservation(gameObject.transform.rotation.x);
sensor.AddObservation(ball.transform.position - goal.transform.position);
sensor.AddObservation(m_BallRb.velocity);
}
}
public override void OnActionReceived(ActionBuffers actionBuffers)
{
var actionZ = 2f * Mathf.Clamp(actionBuffers.ContinuousActions[0], -1f, 1f);
var actionX = 2f * Mathf.Clamp(actionBuffers.ContinuousActions[1], -1f, 1f);
if ((gameObject.transform.rotation.z < 0.25f && actionZ > 0f) ||
(gameObject.transform.rotation.z > -0.25f && actionZ < 0f))
{
gameObject.transform.Rotate(new Vector3(0, 0, 1), actionZ);
}
if ((gameObject.transform.rotation.x < 0.25f && actionX > 0f) ||
(gameObject.transform.rotation.x > -0.25f && actionX < 0f))
{
gameObject.transform.Rotate(new Vector3(1, 0, 0), actionX);
}
bool fell = ((ball.transform.position.y - gameObject.transform.position.y) < -2f ||
Mathf.Abs(ball.transform.position.x - gameObject.transform.position.x) > 3f ||
Mathf.Abs(ball.transform.position.z - gameObject.transform.position.z) > 3f);
float reward = 0.0f;
if (m_RewardType == Ball3DRewardType.Time)
{
reward = TimeReward(ball.transform.position, goal.transform.position);
}
else if(m_RewardType == Ball3DRewardType.Distance)
{
reward = DistanceReward(ball.transform.position, goal.transform.position, fell);
}
else if(m_RewardType == Ball3DRewardType.Power)
{
reward = PowerReward(ball.transform.position, goal.transform.position);
}
AddReward(reward);
float dist = Vector3.Distance(ball.transform.position, goal.transform.position);
if (dist <= epsilon)
{
stepsInGoal++;
}
if (fell)
{
EndEpisode();
}
}
void FixedUpdate()
{
timestep++;
}
public override void OnEpisodeBegin()
{
gameObject.transform.rotation = new Quaternion(0f, 0f, 0f, 0f);
goal.transform.position = new Vector3(Random.Range(-2.25f, 2.25f), 3.0f, Random.Range(-2.25f, 2.25f)) + gameObject.transform.position;
gameObject.transform.Rotate(new Vector3(1, 0, 0), Random.Range(-10f, 10f));
gameObject.transform.Rotate(new Vector3(0, 0, 1), Random.Range(-10f, 10f));
m_BallRb.velocity = new Vector3(0f, 0f, 0f);
// goal.transform.position = new Vector3(2.25f, 3.0f, 0.0f) + gameObject.transform.position;
ball.transform.position = new Vector3(Random.Range(-1.5f, 1.5f), 4f, Random.Range(-1.5f, 1.5f))
+ gameObject.transform.position;
//Reset the parameters when the Agent is reset.
SetResetParameters();
if (stepsInGoal >= 0)
{
var statsRecorder = Academy.Instance.StatsRecorder;
statsRecorder.Add("Environment/EvalMetric", (float)stepsInGoal / (float)MaxStep);
}
MaxStep = stepvalue;
stepsInGoal = 0;
timestep = 0;
}
public override void Heuristic(in ActionBuffers actionsOut)
{
var continuousActionsOut = actionsOut.ContinuousActions;
continuousActionsOut[0] = -Input.GetAxis("Horizontal");
continuousActionsOut[1] = Input.GetAxis("Vertical");
}
public void SetBall()
{
//Set the attributes of the ball by fetching the information from the academy
m_BallRb.mass = m_ResetParams.GetWithDefault("mass", 1.0f);
var scale = m_ResetParams.GetWithDefault("scale", 1.0f);
ball.transform.localScale = new Vector3(scale, scale, scale);
}
public void SetResetParameters()
{
SetBall();
}
float TimeReward(Vector3 ball, Vector3 goal)
{
float dist = Vector3.Distance(ball, goal);
if (dist <= epsilon)
{
return 1.0f;
}
return 0.0f;
}
float DistanceReward(Vector3 ball, Vector3 goal, bool fell)
{
float dist = Vector3.Distance(ball, goal);
float reward = -dist;
if (fell)
{
reward += -maxdist*(MaxStep - timestep);
}
return reward;
}
float PowerReward(Vector3 ball, Vector3 goal)
{
float dist = Vector3.Distance(ball, goal);
//distance between our actual velocity and goal velocity
dist = Mathf.Clamp(dist, 0, maxdist);
//return the value on a declining sigmoid shaped curve that decays from 1 to 0
//This reward will approach 1 if it matches perfectly and approach zero as it deviates
return Mathf.Pow(1 - Mathf.Pow(dist / maxdist, 2), 2);
}
public void setMaxStep(int value)
{
stepvalue = value;
MaxStep = value;
}
}

32
config/ppo/3DBallMulti_distance.yaml


behaviors:
3DBall:
trainer_type: ppo
hyperparameters:
batch_size: 64
buffer_size: 5000
learning_rate: 0.0003
beta: 0.001
epsilon: 0.2
lambd: 0.9
num_epoch: 3
learning_rate_schedule: constant
network_settings:
normalize: true
hidden_units: 128
num_layers: 2
vis_encode_type: simple
reward_signals:
extrinsic:
gamma: 0.999
strength: 1.0
keep_checkpoints: 5
max_steps: 5000000
time_horizon: 5000
summary_freq: 10000
environment_parameters:
maxStep: 1000
rewardType: 1
numParallel: 18
decisionFreq: 5

32
config/ppo/3DBallMulti_power.yaml


behaviors:
3DBall:
trainer_type: ppo
hyperparameters:
batch_size: 64
buffer_size: 5000
learning_rate: 0.0003
beta: 0.001
epsilon: 0.2
lambd: 0.9
num_epoch: 3
learning_rate_schedule: constant
network_settings:
normalize: true
hidden_units: 128
num_layers: 2
vis_encode_type: simple
reward_signals:
extrinsic:
gamma: 0.999
strength: 1.0
keep_checkpoints: 5
max_steps: 5000000
time_horizon: 5000
summary_freq: 10000
environment_parameters:
maxStep: 1000
rewardType: 2
numParallel: 18
decisionFreq: 5

32
config/ppo/3DBallMulti_time.yaml


behaviors:
3DBall:
trainer_type: ppo
hyperparameters:
batch_size: 64
buffer_size: 5000
learning_rate: 0.0003
beta: 0.001
epsilon: 0.2
lambd: 0.9
num_epoch: 3
learning_rate_schedule: constant
network_settings:
normalize: true
hidden_units: 128
num_layers: 2
vis_encode_type: simple
reward_signals:
extrinsic:
gamma: 0.999
strength: 1.0
keep_checkpoints: 5
max_steps: 5000000
time_horizon: 5000
summary_freq: 10000
environment_parameters:
maxStep: 1000
rewardType: 0
numParallel: 18
decisionFreq: 5
正在加载...
取消
保存