From 0133619af291f691bba5871993e2b765879e64be Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Sat, 2 Oct 2010 17:02:02 -0700 Subject: [PATCH 1/7] Attempt at fixing mantis #5057 -- CPU pinned high with HGAssetBroker. --- .../Asset/HGAssetBroker.cs | 55 ++++++++++++------- 1 file changed, 34 insertions(+), 21 deletions(-) diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/HGAssetBroker.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/HGAssetBroker.cs index 034e69272e..e31be21a8c 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/HGAssetBroker.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/HGAssetBroker.cs @@ -219,11 +219,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset else asset = m_GridService.Get(id); - if (asset != null) - { - if (m_Cache != null) - m_Cache.Cache(asset); - } + if (m_Cache != null) + m_Cache.Cache(asset); return asset; } @@ -273,18 +270,10 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset } if (IsHG(id)) - asset = m_HGService.Get(id); + return m_HGService.GetData(id); else - asset = m_GridService.Get(id); + return m_GridService.GetData(id); - if (asset != null) - { - if (m_Cache != null) - m_Cache.Cache(asset); - return asset.Data; - } - - return null; } public bool Get(string id, Object sender, AssetRetrieved handler) @@ -304,7 +293,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset { return m_HGService.Get(id, sender, delegate (string assetID, Object s, AssetBase a) { - if (a != null && m_Cache != null) + if (m_Cache != null) m_Cache.Cache(a); handler(assetID, s, a); }); @@ -313,7 +302,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset { return m_GridService.Get(id, sender, delegate (string assetID, Object s, AssetBase a) { - if (a != null && m_Cache != null) + if (m_Cache != null) m_Cache.Cache(a); handler(assetID, s, a); }); @@ -331,12 +320,30 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset m_Cache.Cache(asset); if (asset.Temporary || asset.Local) + { + if (m_Cache != null) + m_Cache.Cache(asset); return asset.ID; + } + string id = string.Empty; if (IsHG(asset.ID)) - return m_HGService.Store(asset); + id = m_HGService.Store(asset); else - return m_GridService.Store(asset); + id = m_GridService.Store(asset); + + if (id != String.Empty) + { + // Placing this here, so that this work with old asset servers that don't send any reply back + // SynchronousRestObjectRequester returns somethins that is not an empty string + if (id != null) + asset.ID = id; + + if (m_Cache != null) + m_Cache.Cache(asset); + } + return id; + } public bool UpdateContent(string id, byte[] data) @@ -363,10 +370,16 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset if (m_Cache != null) m_Cache.Expire(id); + bool result = false; if (IsHG(id)) - return m_HGService.Delete(id); + result = m_HGService.Delete(id); else - return m_GridService.Delete(id); + result = m_GridService.Delete(id); + + if (result && m_Cache != null) + m_Cache.Expire(id); + + return result; } #region IHyperAssetService From ab4be3ffdfd8f68e5650077eeb75d155a0223f53 Mon Sep 17 00:00:00 2001 From: Melanie Date: Sun, 3 Oct 2010 16:34:17 +0100 Subject: [PATCH 2/7] Initial port of the Warp3D map tile renderer --- .../Resources/CoreModulePlugin.addin.xml | 1 + .../World/WorldMap/IMapTileTerrainRenderer.cs | 39 -- .../World/WorldMap/MapImageModule.cs | 588 ------------------ .../World/WorldMap/ShadedMapTileRenderer.cs | 244 -------- .../World/WorldMap/TexturedMapTileRenderer.cs | 418 ------------- .../World/WorldMap/WorldMapModule.cs | 2 +- .../Region/Framework/Interfaces/ITerrain.cs | 4 +- .../SimianGrid/SimianGridServiceConnector.cs | 2 +- prebuild.xml | 3 + 9 files changed, 8 insertions(+), 1293 deletions(-) delete mode 100644 OpenSim/Region/CoreModules/World/WorldMap/IMapTileTerrainRenderer.cs delete mode 100644 OpenSim/Region/CoreModules/World/WorldMap/MapImageModule.cs delete mode 100644 OpenSim/Region/CoreModules/World/WorldMap/ShadedMapTileRenderer.cs delete mode 100644 OpenSim/Region/CoreModules/World/WorldMap/TexturedMapTileRenderer.cs diff --git a/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml b/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml index ee070756fd..e85e4e95f0 100644 --- a/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml +++ b/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml @@ -18,6 +18,7 @@ + diff --git a/OpenSim/Region/CoreModules/World/WorldMap/IMapTileTerrainRenderer.cs b/OpenSim/Region/CoreModules/World/WorldMap/IMapTileTerrainRenderer.cs deleted file mode 100644 index de9bb1d471..0000000000 --- a/OpenSim/Region/CoreModules/World/WorldMap/IMapTileTerrainRenderer.cs +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System.Drawing; -using Nini.Config; -using OpenSim.Region.Framework.Scenes; - -namespace OpenSim.Region.CoreModules.World.WorldMap -{ - public interface IMapTileTerrainRenderer - { - void Initialise(Scene scene, IConfigSource config); - void TerrainToBitmap(Bitmap mapbmp); - } -} diff --git a/OpenSim/Region/CoreModules/World/WorldMap/MapImageModule.cs b/OpenSim/Region/CoreModules/World/WorldMap/MapImageModule.cs deleted file mode 100644 index c83ac85870..0000000000 --- a/OpenSim/Region/CoreModules/World/WorldMap/MapImageModule.cs +++ /dev/null @@ -1,588 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; -using System.Collections.Generic; -using System.Drawing; -using System.Reflection; -using log4net; -using Nini.Config; -using OpenMetaverse; -using OpenMetaverse.Imaging; -using OpenSim.Framework; -using OpenSim.Region.Framework.Interfaces; -using OpenSim.Region.Framework.Scenes; - -namespace OpenSim.Region.CoreModules.World.WorldMap -{ - public enum DrawRoutine - { - Rectangle, - Polygon, - Ellipse - } - - public struct face - { - public Point[] pts; - } - - public struct DrawStruct - { - public DrawRoutine dr; - public Rectangle rect; - public SolidBrush brush; - public face[] trns; - } - - public class MapImageModule : IMapImageGenerator, IRegionModule - { - private static readonly ILog m_log = - LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - private Scene m_scene; - private IConfigSource m_config; - private IMapTileTerrainRenderer terrainRenderer; - - #region IMapImageGenerator Members - - public Bitmap CreateMapTile(string gradientmap) - { - bool drawPrimVolume = true; - bool textureTerrain = false; - - try - { - IConfig startupConfig = m_config.Configs["Startup"]; - drawPrimVolume = startupConfig.GetBoolean("DrawPrimOnMapTile", drawPrimVolume); - textureTerrain = startupConfig.GetBoolean("TextureOnMapTile", textureTerrain); - } - catch - { - m_log.Warn("[MAPTILE]: Failed to load StartupConfig"); - } - - if (textureTerrain) - { - terrainRenderer = new TexturedMapTileRenderer(); - } - else - { - terrainRenderer = new ShadedMapTileRenderer(); - } - terrainRenderer.Initialise(m_scene, m_config); - - Bitmap mapbmp = new Bitmap((int)Constants.RegionSize, (int)Constants.RegionSize, System.Drawing.Imaging.PixelFormat.Format24bppRgb); - //long t = System.Environment.TickCount; - //for (int i = 0; i < 10; ++i) { - terrainRenderer.TerrainToBitmap(mapbmp); - //} - //t = System.Environment.TickCount - t; - //m_log.InfoFormat("[MAPTILE] generation of 10 maptiles needed {0} ms", t); - - - if (drawPrimVolume) - { - DrawObjectVolume(m_scene, mapbmp); - } - - return mapbmp; - } - - public byte[] WriteJpeg2000Image(string gradientmap) - { - try - { - using (Bitmap mapbmp = CreateMapTile(gradientmap)) - return OpenJPEG.EncodeFromImage(mapbmp, true); - } - catch (Exception e) // LEGIT: Catching problems caused by OpenJPEG p/invoke - { - m_log.Error("Failed generating terrain map: " + e); - } - - return null; - } - - #endregion - - #region IRegionModule Members - - public void Initialise(Scene scene, IConfigSource source) - { - m_scene = scene; - m_config = source; - - IConfig startupConfig = m_config.Configs["Startup"]; - if (startupConfig.GetString("MapImageModule", "MapImageModule") != - "MapImageModule") - return; - - m_scene.RegisterModuleInterface(this); - } - - public void PostInitialise() - { - } - - public void Close() - { - } - - public string Name - { - get { return "MapImageModule"; } - } - - public bool IsSharedModule - { - get { return false; } - } - - #endregion - -// TODO: unused: -// private void ShadeBuildings(Bitmap map) -// { -// lock (map) -// { -// lock (m_scene.Entities) -// { -// foreach (EntityBase entity in m_scene.Entities.Values) -// { -// if (entity is SceneObjectGroup) -// { -// SceneObjectGroup sog = (SceneObjectGroup) entity; -// -// foreach (SceneObjectPart primitive in sog.Children.Values) -// { -// int x = (int) (primitive.AbsolutePosition.X - (primitive.Scale.X / 2)); -// int y = (int) (primitive.AbsolutePosition.Y - (primitive.Scale.Y / 2)); -// int w = (int) primitive.Scale.X; -// int h = (int) primitive.Scale.Y; -// -// int dx; -// for (dx = x; dx < x + w; dx++) -// { -// int dy; -// for (dy = y; dy < y + h; dy++) -// { -// if (x < 0 || y < 0) -// continue; -// if (x >= map.Width || y >= map.Height) -// continue; -// -// map.SetPixel(dx, dy, Color.DarkGray); -// } -// } -// } -// } -// } -// } -// } -// } - - private Bitmap DrawObjectVolume(Scene whichScene, Bitmap mapbmp) - { - int tc = 0; - double[,] hm = whichScene.Heightmap.GetDoubles(); - tc = Environment.TickCount; - m_log.Info("[MAPTILE]: Generating Maptile Step 2: Object Volume Profile"); - EntityBase[] objs = whichScene.GetEntities(); - Dictionary z_sort = new Dictionary(); - //SortedList z_sort = new SortedList(); - List z_sortheights = new List(); - List z_localIDs = new List(); - - lock (objs) - { - foreach (EntityBase obj in objs) - { - // Only draw the contents of SceneObjectGroup - if (obj is SceneObjectGroup) - { - SceneObjectGroup mapdot = (SceneObjectGroup)obj; - Color mapdotspot = Color.Gray; // Default color when prim color is white - - // Loop over prim in group - foreach (SceneObjectPart part in mapdot.Parts) - { - if (part == null) - continue; - - // Draw if the object is at least 1 meter wide in any direction - if (part.Scale.X > 1f || part.Scale.Y > 1f || part.Scale.Z > 1f) - { - // Try to get the RGBA of the default texture entry.. - // - try - { - // get the null checks out of the way - // skip the ones that break - if (part == null) - continue; - - if (part.Shape == null) - continue; - - if (part.Shape.PCode == (byte)PCode.Tree || part.Shape.PCode == (byte)PCode.NewTree || part.Shape.PCode == (byte)PCode.Grass) - continue; // eliminates trees from this since we don't really have a good tree representation - // if you want tree blocks on the map comment the above line and uncomment the below line - //mapdotspot = Color.PaleGreen; - - Primitive.TextureEntry textureEntry = part.Shape.Textures; - - if (textureEntry == null || textureEntry.DefaultTexture == null) - continue; - - Color4 texcolor = textureEntry.DefaultTexture.RGBA; - - // Not sure why some of these are null, oh well. - - int colorr = 255 - (int)(texcolor.R * 255f); - int colorg = 255 - (int)(texcolor.G * 255f); - int colorb = 255 - (int)(texcolor.B * 255f); - - if (!(colorr == 255 && colorg == 255 && colorb == 255)) - { - //Try to set the map spot color - try - { - // If the color gets goofy somehow, skip it *shakes fist at Color4 - mapdotspot = Color.FromArgb(colorr, colorg, colorb); - } - catch (ArgumentException) - { - } - } - } - catch (IndexOutOfRangeException) - { - // Windows Array - } - catch (ArgumentOutOfRangeException) - { - // Mono Array - } - - Vector3 pos = part.GetWorldPosition(); - - // skip prim outside of retion - if (pos.X < 0f || pos.X > 256f || pos.Y < 0f || pos.Y > 256f) - continue; - - // skip prim in non-finite position - if (Single.IsNaN(pos.X) || Single.IsNaN(pos.Y) || - Single.IsInfinity(pos.X) || Single.IsInfinity(pos.Y)) - continue; - - // Figure out if object is under 256m above the height of the terrain - bool isBelow256AboveTerrain = false; - - try - { - isBelow256AboveTerrain = (pos.Z < ((float)hm[(int)pos.X, (int)pos.Y] + 256f)); - } - catch (Exception) - { - } - - if (isBelow256AboveTerrain) - { - // Translate scale by rotation so scale is represented properly when object is rotated - Vector3 lscale = new Vector3(part.Shape.Scale.X, part.Shape.Scale.Y, part.Shape.Scale.Z); - Vector3 scale = new Vector3(); - Vector3 tScale = new Vector3(); - Vector3 axPos = new Vector3(pos.X,pos.Y,pos.Z); - - Quaternion llrot = part.GetWorldRotation(); - Quaternion rot = new Quaternion(llrot.W, llrot.X, llrot.Y, llrot.Z); - scale = lscale * rot; - - // negative scales don't work in this situation - scale.X = Math.Abs(scale.X); - scale.Y = Math.Abs(scale.Y); - scale.Z = Math.Abs(scale.Z); - - // This scaling isn't very accurate and doesn't take into account the face rotation :P - int mapdrawstartX = (int)(pos.X - scale.X); - int mapdrawstartY = (int)(pos.Y - scale.Y); - int mapdrawendX = (int)(pos.X + scale.X); - int mapdrawendY = (int)(pos.Y + scale.Y); - - // If object is beyond the edge of the map, don't draw it to avoid errors - if (mapdrawstartX < 0 || mapdrawstartX > ((int)Constants.RegionSize - 1) || mapdrawendX < 0 || mapdrawendX > ((int)Constants.RegionSize - 1) - || mapdrawstartY < 0 || mapdrawstartY > ((int)Constants.RegionSize - 1) || mapdrawendY < 0 - || mapdrawendY > ((int)Constants.RegionSize - 1)) - continue; - -#region obb face reconstruction part duex - Vector3[] vertexes = new Vector3[8]; - - // float[] distance = new float[6]; - Vector3[] FaceA = new Vector3[6]; // vertex A for Facei - Vector3[] FaceB = new Vector3[6]; // vertex B for Facei - Vector3[] FaceC = new Vector3[6]; // vertex C for Facei - Vector3[] FaceD = new Vector3[6]; // vertex D for Facei - - tScale = new Vector3(lscale.X, -lscale.Y, lscale.Z); - scale = ((tScale * rot)); - vertexes[0] = (new Vector3((pos.X + scale.X), (pos.Y + scale.Y), (pos.Z + scale.Z))); - // vertexes[0].x = pos.X + vertexes[0].x; - //vertexes[0].y = pos.Y + vertexes[0].y; - //vertexes[0].z = pos.Z + vertexes[0].z; - - FaceA[0] = vertexes[0]; - FaceB[3] = vertexes[0]; - FaceA[4] = vertexes[0]; - - tScale = lscale; - scale = ((tScale * rot)); - vertexes[1] = (new Vector3((pos.X + scale.X), (pos.Y + scale.Y), (pos.Z + scale.Z))); - - // vertexes[1].x = pos.X + vertexes[1].x; - // vertexes[1].y = pos.Y + vertexes[1].y; - //vertexes[1].z = pos.Z + vertexes[1].z; - - FaceB[0] = vertexes[1]; - FaceA[1] = vertexes[1]; - FaceC[4] = vertexes[1]; - - tScale = new Vector3(lscale.X, -lscale.Y, -lscale.Z); - scale = ((tScale * rot)); - - vertexes[2] = (new Vector3((pos.X + scale.X), (pos.Y + scale.Y), (pos.Z + scale.Z))); - - //vertexes[2].x = pos.X + vertexes[2].x; - //vertexes[2].y = pos.Y + vertexes[2].y; - //vertexes[2].z = pos.Z + vertexes[2].z; - - FaceC[0] = vertexes[2]; - FaceD[3] = vertexes[2]; - FaceC[5] = vertexes[2]; - - tScale = new Vector3(lscale.X, lscale.Y, -lscale.Z); - scale = ((tScale * rot)); - vertexes[3] = (new Vector3((pos.X + scale.X), (pos.Y + scale.Y), (pos.Z + scale.Z))); - - //vertexes[3].x = pos.X + vertexes[3].x; - // vertexes[3].y = pos.Y + vertexes[3].y; - // vertexes[3].z = pos.Z + vertexes[3].z; - - FaceD[0] = vertexes[3]; - FaceC[1] = vertexes[3]; - FaceA[5] = vertexes[3]; - - tScale = new Vector3(-lscale.X, lscale.Y, lscale.Z); - scale = ((tScale * rot)); - vertexes[4] = (new Vector3((pos.X + scale.X), (pos.Y + scale.Y), (pos.Z + scale.Z))); - - // vertexes[4].x = pos.X + vertexes[4].x; - // vertexes[4].y = pos.Y + vertexes[4].y; - // vertexes[4].z = pos.Z + vertexes[4].z; - - FaceB[1] = vertexes[4]; - FaceA[2] = vertexes[4]; - FaceD[4] = vertexes[4]; - - tScale = new Vector3(-lscale.X, lscale.Y, -lscale.Z); - scale = ((tScale * rot)); - vertexes[5] = (new Vector3((pos.X + scale.X), (pos.Y + scale.Y), (pos.Z + scale.Z))); - - // vertexes[5].x = pos.X + vertexes[5].x; - // vertexes[5].y = pos.Y + vertexes[5].y; - // vertexes[5].z = pos.Z + vertexes[5].z; - - FaceD[1] = vertexes[5]; - FaceC[2] = vertexes[5]; - FaceB[5] = vertexes[5]; - - tScale = new Vector3(-lscale.X, -lscale.Y, lscale.Z); - scale = ((tScale * rot)); - vertexes[6] = (new Vector3((pos.X + scale.X), (pos.Y + scale.Y), (pos.Z + scale.Z))); - - // vertexes[6].x = pos.X + vertexes[6].x; - // vertexes[6].y = pos.Y + vertexes[6].y; - // vertexes[6].z = pos.Z + vertexes[6].z; - - FaceB[2] = vertexes[6]; - FaceA[3] = vertexes[6]; - FaceB[4] = vertexes[6]; - - tScale = new Vector3(-lscale.X, -lscale.Y, -lscale.Z); - scale = ((tScale * rot)); - vertexes[7] = (new Vector3((pos.X + scale.X), (pos.Y + scale.Y), (pos.Z + scale.Z))); - - // vertexes[7].x = pos.X + vertexes[7].x; - // vertexes[7].y = pos.Y + vertexes[7].y; - // vertexes[7].z = pos.Z + vertexes[7].z; - - FaceD[2] = vertexes[7]; - FaceC[3] = vertexes[7]; - FaceD[5] = vertexes[7]; -#endregion - - //int wy = 0; - - //bool breakYN = false; // If we run into an error drawing, break out of the - // loop so we don't lag to death on error handling - DrawStruct ds = new DrawStruct(); - ds.brush = new SolidBrush(mapdotspot); - //ds.rect = new Rectangle(mapdrawstartX, (255 - mapdrawstartY), mapdrawendX - mapdrawstartX, mapdrawendY - mapdrawstartY); - - ds.trns = new face[FaceA.Length]; - - for (int i = 0; i < FaceA.Length; i++) - { - Point[] working = new Point[5]; - working[0] = project(FaceA[i], axPos); - working[1] = project(FaceB[i], axPos); - working[2] = project(FaceD[i], axPos); - working[3] = project(FaceC[i], axPos); - working[4] = project(FaceA[i], axPos); - - face workingface = new face(); - workingface.pts = working; - - ds.trns[i] = workingface; - } - - z_sort.Add(part.LocalId, ds); - z_localIDs.Add(part.LocalId); - z_sortheights.Add(pos.Z); - - //for (int wx = mapdrawstartX; wx < mapdrawendX; wx++) - //{ - //for (wy = mapdrawstartY; wy < mapdrawendY; wy++) - //{ - //m_log.InfoFormat("[MAPDEBUG]: {0},{1}({2})", wx, (255 - wy),wy); - //try - //{ - // Remember, flip the y! - // mapbmp.SetPixel(wx, (255 - wy), mapdotspot); - //} - //catch (ArgumentException) - //{ - // breakYN = true; - //} - - //if (breakYN) - // break; - //} - - //if (breakYN) - // break; - //} - } // Object is within 256m Z of terrain - } // object is at least a meter wide - } // loop over group children - } // entitybase is sceneobject group - } // foreach loop over entities - - float[] sortedZHeights = z_sortheights.ToArray(); - uint[] sortedlocalIds = z_localIDs.ToArray(); - - // Sort prim by Z position - Array.Sort(sortedZHeights, sortedlocalIds); - - Graphics g = Graphics.FromImage(mapbmp); - - for (int s = 0; s < sortedZHeights.Length; s++) - { - if (z_sort.ContainsKey(sortedlocalIds[s])) - { - DrawStruct rectDrawStruct = z_sort[sortedlocalIds[s]]; - for (int r = 0; r < rectDrawStruct.trns.Length; r++) - { - g.FillPolygon(rectDrawStruct.brush,rectDrawStruct.trns[r].pts); - } - //g.FillRectangle(rectDrawStruct.brush , rectDrawStruct.rect); - } - } - - g.Dispose(); - } // lock entities objs - - m_log.Info("[MAPTILE]: Generating Maptile Step 2: Done in " + (Environment.TickCount - tc) + " ms"); - return mapbmp; - } - - private Point project(Vector3 point3d, Vector3 originpos) - { - Point returnpt = new Point(); - //originpos = point3d; - //int d = (int)(256f / 1.5f); - - //Vector3 topos = new Vector3(0, 0, 0); - // float z = -point3d.z - topos.z; - - returnpt.X = (int)point3d.X;//(int)((topos.x - point3d.x) / z * d); - returnpt.Y = (int)(((int)Constants.RegionSize - 1) - point3d.Y);//(int)(255 - (((topos.y - point3d.y) / z * d))); - - return returnpt; - } - -// TODO: unused: -// #region Deprecated Maptile Generation. Adam may update this -// private Bitmap TerrainToBitmap(string gradientmap) -// { -// Bitmap gradientmapLd = new Bitmap(gradientmap); -// -// int pallete = gradientmapLd.Height; -// -// Bitmap bmp = new Bitmap(m_scene.Heightmap.Width, m_scene.Heightmap.Height); -// Color[] colours = new Color[pallete]; -// -// for (int i = 0; i < pallete; i++) -// { -// colours[i] = gradientmapLd.GetPixel(0, i); -// } -// -// lock (m_scene.Heightmap) -// { -// ITerrainChannel copy = m_scene.Heightmap; -// for (int y = 0; y < copy.Height; y++) -// { -// for (int x = 0; x < copy.Width; x++) -// { -// // 512 is the largest possible height before colours clamp -// int colorindex = (int) (Math.Max(Math.Min(1.0, copy[x, y] / 512.0), 0.0) * (pallete - 1)); -// -// // Handle error conditions -// if (colorindex > pallete - 1 || colorindex < 0) -// bmp.SetPixel(x, copy.Height - y - 1, Color.Red); -// else -// bmp.SetPixel(x, copy.Height - y - 1, colours[colorindex]); -// } -// } -// ShadeBuildings(bmp); -// return bmp; -// } -// } -// #endregion - } -} diff --git a/OpenSim/Region/CoreModules/World/WorldMap/ShadedMapTileRenderer.cs b/OpenSim/Region/CoreModules/World/WorldMap/ShadedMapTileRenderer.cs deleted file mode 100644 index fef2ef3995..0000000000 --- a/OpenSim/Region/CoreModules/World/WorldMap/ShadedMapTileRenderer.cs +++ /dev/null @@ -1,244 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; -using System.Drawing; -using System.Reflection; -using log4net; -using Nini.Config; -using OpenSim.Framework; -using OpenSim.Region.Framework.Scenes; - -namespace OpenSim.Region.CoreModules.World.WorldMap -{ - public class ShadedMapTileRenderer : IMapTileTerrainRenderer - { - private static readonly Color WATER_COLOR = Color.FromArgb(29, 71, 95); - - private static readonly ILog m_log = - LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - private Scene m_scene; - //private IConfigSource m_config; // not used currently - - public void Initialise(Scene scene, IConfigSource config) - { - m_scene = scene; - // m_config = config; // not used currently - } - - public void TerrainToBitmap(Bitmap mapbmp) - { - int tc = Environment.TickCount; - m_log.Info("[MAPTILE]: Generating Maptile Step 1: Terrain"); - - double[,] hm = m_scene.Heightmap.GetDoubles(); - bool ShadowDebugContinue = true; - - bool terraincorruptedwarningsaid = false; - - float low = 255; - float high = 0; - for (int x = 0; x < (int)Constants.RegionSize; x++) - { - for (int y = 0; y < (int)Constants.RegionSize; y++) - { - float hmval = (float)hm[x, y]; - if (hmval < low) - low = hmval; - if (hmval > high) - high = hmval; - } - } - - float waterHeight = (float)m_scene.RegionInfo.RegionSettings.WaterHeight; - - for (int x = 0; x < (int)Constants.RegionSize; x++) - { - for (int y = 0; y < (int)Constants.RegionSize; y++) - { - // Y flip the cordinates for the bitmap: hf origin is lower left, bm origin is upper left - int yr = ((int)Constants.RegionSize - 1) - y; - - float heightvalue = (float)hm[x, y]; - - if (heightvalue > waterHeight) - { - // scale height value - // No, that doesn't scale it: - // heightvalue = low + mid * (heightvalue - low) / mid; => low + (heightvalue - low) * mid / mid = low + (heightvalue - low) * 1 = low + heightvalue - low = heightvalue - - if (Single.IsInfinity(heightvalue) || Single.IsNaN(heightvalue)) - heightvalue = 0; - else if (heightvalue > 255f) - heightvalue = 255f; - else if (heightvalue < 0f) - heightvalue = 0f; - - Color color = Color.FromArgb((int)heightvalue, 100, (int)heightvalue); - - mapbmp.SetPixel(x, yr, color); - - try - { - //X - // . - // - // Shade the terrain for shadows - if (x < ((int)Constants.RegionSize - 1) && yr < ((int)Constants.RegionSize - 1)) - { - float hfvalue = (float)hm[x, y]; - float hfvaluecompare = 0f; - - if ((x + 1 < (int)Constants.RegionSize) && (y + 1 < (int)Constants.RegionSize)) - { - hfvaluecompare = (float)hm[x + 1, y + 1]; // light from north-east => look at land height there - } - if (Single.IsInfinity(hfvalue) || Single.IsNaN(hfvalue)) - hfvalue = 0f; - - if (Single.IsInfinity(hfvaluecompare) || Single.IsNaN(hfvaluecompare)) - hfvaluecompare = 0f; - - float hfdiff = hfvalue - hfvaluecompare; // => positive if NE is lower, negative if here is lower - - int hfdiffi = 0; - int hfdiffihighlight = 0; - float highlightfactor = 0.18f; - - try - { - // hfdiffi = Math.Abs((int)((hfdiff * 4) + (hfdiff * 0.5))) + 1; - hfdiffi = Math.Abs((int)(hfdiff * 4.5f)) + 1; - if (hfdiff % 1f != 0) - { - // hfdiffi = hfdiffi + Math.Abs((int)(((hfdiff % 1) * 0.5f) * 10f) - 1); - hfdiffi = hfdiffi + Math.Abs((int)((hfdiff % 1f) * 5f) - 1); - } - - hfdiffihighlight = Math.Abs((int)((hfdiff * highlightfactor) * 4.5f)) + 1; - if (hfdiff % 1f != 0) - { - // hfdiffi = hfdiffi + Math.Abs((int)(((hfdiff % 1) * 0.5f) * 10f) - 1); - hfdiffihighlight = hfdiffihighlight + Math.Abs((int)(((hfdiff * highlightfactor) % 1f) * 5f) - 1); - } - } - catch (OverflowException) - { - m_log.Debug("[MAPTILE]: Shadow failed at value: " + hfdiff.ToString()); - ShadowDebugContinue = false; - } - - if (hfdiff > 0.3f) - { - // NE is lower than here - // We have to desaturate and lighten the land at the same time - // we use floats, colors use bytes, so shrink are space down to - // 0-255 - - if (ShadowDebugContinue) - { - int r = color.R; - int g = color.G; - int b = color.B; - color = Color.FromArgb((r + hfdiffihighlight < 255) ? r + hfdiffihighlight : 255, - (g + hfdiffihighlight < 255) ? g + hfdiffihighlight : 255, - (b + hfdiffihighlight < 255) ? b + hfdiffihighlight : 255); - } - } - else if (hfdiff < -0.3f) - { - // here is lower than NE: - // We have to desaturate and blacken the land at the same time - // we use floats, colors use bytes, so shrink are space down to - // 0-255 - - if (ShadowDebugContinue) - { - if ((x - 1 > 0) && (yr + 1 < (int)Constants.RegionSize)) - { - color = mapbmp.GetPixel(x - 1, yr + 1); - int r = color.R; - int g = color.G; - int b = color.B; - color = Color.FromArgb((r - hfdiffi > 0) ? r - hfdiffi : 0, - (g - hfdiffi > 0) ? g - hfdiffi : 0, - (b - hfdiffi > 0) ? b - hfdiffi : 0); - - mapbmp.SetPixel(x-1, yr+1, color); - } - } - } - } - } - catch (ArgumentException) - { - if (!terraincorruptedwarningsaid) - { - m_log.WarnFormat("[MAPIMAGE]: Your terrain is corrupted in region {0}, it might take a few minutes to generate the map image depending on the corruption level", m_scene.RegionInfo.RegionName); - terraincorruptedwarningsaid = true; - } - color = Color.Black; - mapbmp.SetPixel(x, yr, color); - } - } - else - { - // We're under the water level with the terrain, so paint water instead of land - - // Y flip the cordinates - heightvalue = waterHeight - heightvalue; - if (Single.IsInfinity(heightvalue) || Single.IsNaN(heightvalue)) - heightvalue = 0f; - else if (heightvalue > 19f) - heightvalue = 19f; - else if (heightvalue < 0f) - heightvalue = 0f; - - heightvalue = 100f - (heightvalue * 100f) / 19f; - - try - { - mapbmp.SetPixel(x, yr, WATER_COLOR); - } - catch (ArgumentException) - { - if (!terraincorruptedwarningsaid) - { - m_log.WarnFormat("[MAPIMAGE]: Your terrain is corrupted in region {0}, it might take a few minutes to generate the map image depending on the corruption level", m_scene.RegionInfo.RegionName); - terraincorruptedwarningsaid = true; - } - Color black = Color.Black; - mapbmp.SetPixel(x, ((int)Constants.RegionSize - y) - 1, black); - } - } - } - } - m_log.Info("[MAPTILE]: Generating Maptile Step 1: Done in " + (Environment.TickCount - tc) + " ms"); - } - } -} diff --git a/OpenSim/Region/CoreModules/World/WorldMap/TexturedMapTileRenderer.cs b/OpenSim/Region/CoreModules/World/WorldMap/TexturedMapTileRenderer.cs deleted file mode 100644 index 8b34f6ebdc..0000000000 --- a/OpenSim/Region/CoreModules/World/WorldMap/TexturedMapTileRenderer.cs +++ /dev/null @@ -1,418 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; -using System.Collections.Generic; -using System.Drawing; -using System.Reflection; -using log4net; -using Nini.Config; -using OpenMetaverse; -using OpenMetaverse.Imaging; -using OpenSim.Framework; -using OpenSim.Region.Framework.Scenes; - -namespace OpenSim.Region.CoreModules.World.WorldMap -{ - // Hue, Saturation, Value; used for color-interpolation - struct HSV { - private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - public float h; - public float s; - public float v; - - public HSV(float h, float s, float v) - { - this.h = h; - this.s = s; - this.v = v; - } - - // (for info about algorithm, see http://en.wikipedia.org/wiki/HSL_and_HSV) - public HSV(Color c) - { - float r = c.R / 255f; - float g = c.G / 255f; - float b = c.B / 255f; - float max = Math.Max(Math.Max(r, g), b); - float min = Math.Min(Math.Min(r, g), b); - float diff = max - min; - - if (max == min) h = 0f; - else if (max == r) h = (g - b) / diff * 60f; - else if (max == g) h = (b - r) / diff * 60f + 120f; - else h = (r - g) / diff * 60f + 240f; - if (h < 0f) h += 360f; - - if (max == 0f) s = 0f; - else s = diff / max; - - v = max; - } - - // (for info about algorithm, see http://en.wikipedia.org/wiki/HSL_and_HSV) - public Color toColor() - { - if (s < 0f) m_log.Debug("S < 0: " + s); - else if (s > 1f) m_log.Debug("S > 1: " + s); - if (v < 0f) m_log.Debug("V < 0: " + v); - else if (v > 1f) m_log.Debug("V > 1: " + v); - - float f = h / 60f; - int sector = (int)f % 6; - f = f - (int)f; - int pi = (int)(v * (1f - s) * 255f); - int qi = (int)(v * (1f - s * f) * 255f); - int ti = (int)(v * (1f - (1f - f) * s) * 255f); - int vi = (int)(v * 255f); - - if (pi < 0) pi = 0; - if (pi > 255) pi = 255; - if (qi < 0) qi = 0; - if (qi > 255) qi = 255; - if (ti < 0) ti = 0; - if (ti > 255) ti = 255; - if (vi < 0) vi = 0; - if (vi > 255) vi = 255; - - switch (sector) - { - case 0: - return Color.FromArgb(vi, ti, pi); - case 1: - return Color.FromArgb(qi, vi, pi); - case 2: - return Color.FromArgb(pi, vi, ti); - case 3: - return Color.FromArgb(pi, qi, vi); - case 4: - return Color.FromArgb(ti, pi, vi); - default: - return Color.FromArgb(vi, pi, qi); - } - } - } - - public class TexturedMapTileRenderer : IMapTileTerrainRenderer - { - #region Constants - - private static readonly ILog m_log = - LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - // some hardcoded terrain UUIDs that work with SL 1.20 (the four default textures and "Blank"). - // The color-values were choosen because they "look right" (at least to me) ;-) - private static readonly UUID defaultTerrainTexture1 = new UUID("0bc58228-74a0-7e83-89bc-5c23464bcec5"); - private static readonly Color defaultColor1 = Color.FromArgb(165, 137, 118); - private static readonly UUID defaultTerrainTexture2 = new UUID("63338ede-0037-c4fd-855b-015d77112fc8"); - private static readonly Color defaultColor2 = Color.FromArgb(69, 89, 49); - private static readonly UUID defaultTerrainTexture3 = new UUID("303cd381-8560-7579-23f1-f0a880799740"); - private static readonly Color defaultColor3 = Color.FromArgb(162, 154, 141); - private static readonly UUID defaultTerrainTexture4 = new UUID("53a2f406-4895-1d13-d541-d2e3b86bc19c"); - private static readonly Color defaultColor4 = Color.FromArgb(200, 200, 200); - - private static readonly Color WATER_COLOR = Color.FromArgb(29, 71, 95); - - #endregion - - - private Scene m_scene; - // private IConfigSource m_config; // not used currently - - // mapping from texture UUIDs to averaged color. This will contain 5-9 values, in general; new values are only - // added when the terrain textures are changed in the estate dialog and a new map is generated (and will stay in - // that map until the region-server restarts. This could be considered a memory-leak, but it's a *very* small one. - // TODO does it make sense to use a "real" cache and regenerate missing entries on fetch? - private Dictionary m_mapping; - - - public void Initialise(Scene scene, IConfigSource source) - { - m_scene = scene; - // m_config = source; // not used currently - m_mapping = new Dictionary(); - m_mapping.Add(defaultTerrainTexture1, defaultColor1); - m_mapping.Add(defaultTerrainTexture2, defaultColor2); - m_mapping.Add(defaultTerrainTexture3, defaultColor3); - m_mapping.Add(defaultTerrainTexture4, defaultColor4); - m_mapping.Add(Util.BLANK_TEXTURE_UUID, Color.White); - } - - #region Helpers - // This fetches the texture from the asset server synchroneously. That should be ok, as we - // call map-creation only in those places: - // - on start: We can wait here until the asset server returns the texture - // TODO (- on "map" command: We are in the command-line thread, we will wait for completion anyway) - // TODO (- on "automatic" update after some change: We are called from the mapUpdateTimer here and - // will wait anyway) - private Bitmap fetchTexture(UUID id) - { - AssetBase asset = m_scene.AssetService.Get(id.ToString()); - m_log.DebugFormat("Fetched texture {0}, found: {1}", id, asset != null); - if (asset == null) return null; - - ManagedImage managedImage; - Image image; - - try - { - if (OpenJPEG.DecodeToImage(asset.Data, out managedImage, out image)) - return new Bitmap(image); - else - return null; - } - catch (DllNotFoundException) - { - m_log.ErrorFormat("[TexturedMapTileRenderer]: OpenJpeg is not installed correctly on this system. Asset Data is emtpy for {0}", id); - - } - catch (IndexOutOfRangeException) - { - m_log.ErrorFormat("[TexturedMapTileRenderer]: OpenJpeg was unable to encode this. Asset Data is emtpy for {0}", id); - - } - catch (Exception) - { - m_log.ErrorFormat("[TexturedMapTileRenderer]: OpenJpeg was unable to encode this. Asset Data is emtpy for {0}", id); - - } - return null; - - } - - // Compute the average color of a texture. - private Color computeAverageColor(Bitmap bmp) - { - // we have 256 x 256 pixel, each with 256 possible color-values per - // color-channel, so 2^24 is the maximum value we can get, adding everything. - // int is be big enough for that. - int r = 0, g = 0, b = 0; - for (int y = 0; y < bmp.Height; ++y) - { - for (int x = 0; x < bmp.Width; ++x) - { - Color c = bmp.GetPixel(x, y); - r += (int)c.R & 0xff; - g += (int)c.G & 0xff; - b += (int)c.B & 0xff; - } - } - - int pixels = bmp.Width * bmp.Height; - return Color.FromArgb(r / pixels, g / pixels, b / pixels); - } - - // return either the average color of the texture, or the defaultColor if the texturID is invalid - // or the texture couldn't be found - private Color computeAverageColor(UUID textureID, Color defaultColor) { - if (textureID == UUID.Zero) return defaultColor; // not set - if (m_mapping.ContainsKey(textureID)) return m_mapping[textureID]; // one of the predefined textures - - Bitmap bmp = fetchTexture(textureID); - Color color = bmp == null ? defaultColor : computeAverageColor(bmp); - // store it for future reference - m_mapping[textureID] = color; - - return color; - } - - // S-curve: f(x) = 3x² - 2x³: - // f(0) = 0, f(0.5) = 0.5, f(1) = 1, - // f'(x) = 0 at x = 0 and x = 1; f'(0.5) = 1.5, - // f''(0.5) = 0, f''(x) != 0 for x != 0.5 - private float S(float v) { - return (v * v * (3f - 2f * v)); - } - - // interpolate two colors in HSV space and return the resulting color - private HSV interpolateHSV(ref HSV c1, ref HSV c2, float ratio) { - if (ratio <= 0f) return c1; - if (ratio >= 1f) return c2; - - // make sure we are on the same side on the hue-circle for interpolation - // We change the hue of the parameters here, but we don't change the color - // represented by that value - if (c1.h - c2.h > 180f) c1.h -= 360f; - else if (c2.h - c1.h > 180f) c1.h += 360f; - - return new HSV(c1.h * (1f - ratio) + c2.h * ratio, - c1.s * (1f - ratio) + c2.s * ratio, - c1.v * (1f - ratio) + c2.v * ratio); - } - - // the heigthfield might have some jumps in values. Rendered land is smooth, though, - // as a slope is rendered at that place. So average 4 neighbour values to emulate that. - private float getHeight(double[,] hm, int x, int y) { - if (x < ((int)Constants.RegionSize - 1) && y < ((int)Constants.RegionSize - 1)) - return (float)(hm[x, y] * .444 + (hm[x + 1, y] + hm[x, y + 1]) * .222 + hm[x + 1, y +1] * .112); - else - return (float)hm[x, y]; - } - #endregion - - public void TerrainToBitmap(Bitmap mapbmp) - { - int tc = Environment.TickCount; - m_log.Info("[MAPTILE]: Generating Maptile Step 1: Terrain"); - - // These textures should be in the AssetCache anyway, as every client conneting to this - // region needs them. Except on start, when the map is recreated (before anyone connected), - // and on change of the estate settings (textures and terrain values), when the map should - // be recreated. - RegionSettings settings = m_scene.RegionInfo.RegionSettings; - - // the four terrain colors as HSVs for interpolation - HSV hsv1 = new HSV(computeAverageColor(settings.TerrainTexture1, defaultColor1)); - HSV hsv2 = new HSV(computeAverageColor(settings.TerrainTexture2, defaultColor2)); - HSV hsv3 = new HSV(computeAverageColor(settings.TerrainTexture3, defaultColor3)); - HSV hsv4 = new HSV(computeAverageColor(settings.TerrainTexture4, defaultColor4)); - - float levelNElow = (float)settings.Elevation1NE; - float levelNEhigh = (float)settings.Elevation2NE; - - float levelNWlow = (float)settings.Elevation1NW; - float levelNWhigh = (float)settings.Elevation2NW; - - float levelSElow = (float)settings.Elevation1SE; - float levelSEhigh = (float)settings.Elevation2SE; - - float levelSWlow = (float)settings.Elevation1SW; - float levelSWhigh = (float)settings.Elevation2SW; - - float waterHeight = (float)settings.WaterHeight; - - double[,] hm = m_scene.Heightmap.GetDoubles(); - - for (int x = 0; x < (int)Constants.RegionSize; x++) - { - float columnRatio = x / ((float)Constants.RegionSize - 1); // 0 - 1, for interpolation - for (int y = 0; y < (int)Constants.RegionSize; y++) - { - float rowRatio = y / ((float)Constants.RegionSize - 1); // 0 - 1, for interpolation - - // Y flip the cordinates for the bitmap: hf origin is lower left, bm origin is upper left - int yr = ((int)Constants.RegionSize - 1) - y; - - float heightvalue = getHeight(hm, x, y); - if (Single.IsInfinity(heightvalue) || Single.IsNaN(heightvalue)) - heightvalue = 0; - - if (heightvalue > waterHeight) - { - // add a bit noise for breaking up those flat colors: - // - a large-scale noise, for the "patches" (using an doubled s-curve for sharper contrast) - // - a small-scale noise, for bringing in some small scale variation - //float bigNoise = (float)TerrainUtil.InterpolatedNoise(x / 8.0, y / 8.0) * .5f + .5f; // map to 0.0 - 1.0 - //float smallNoise = (float)TerrainUtil.InterpolatedNoise(x + 33, y + 43) * .5f + .5f; - //float hmod = heightvalue + smallNoise * 3f + S(S(bigNoise)) * 10f; - float hmod = - heightvalue + - (float)TerrainUtil.InterpolatedNoise(x + 33, y + 43) * 1.5f + 1.5f + // 0 - 3 - S(S((float)TerrainUtil.InterpolatedNoise(x / 8.0, y / 8.0) * .5f + .5f)) * 10f; // 0 - 10 - - // find the low/high values for this point (interpolated bilinearily) - // (and remember, x=0,y=0 is SW) - float low = levelSWlow * (1f - rowRatio) * (1f - columnRatio) + - levelSElow * (1f - rowRatio) * columnRatio + - levelNWlow * rowRatio * (1f - columnRatio) + - levelNElow * rowRatio * columnRatio; - float high = levelSWhigh * (1f - rowRatio) * (1f - columnRatio) + - levelSEhigh * (1f - rowRatio) * columnRatio + - levelNWhigh * rowRatio * (1f - columnRatio) + - levelNEhigh * rowRatio * columnRatio; - if (high < low) - { - // someone tried to fool us. High value should be higher than low every time - float tmp = high; - high = low; - low = tmp; - } - - HSV hsv; - if (hmod <= low) hsv = hsv1; // too low - else if (hmod >= high) hsv = hsv4; // too high - else - { - // HSV-interpolate along the colors - // first, rescale h to 0.0 - 1.0 - hmod = (hmod - low) / (high - low); - // now we have to split: 0.00 => color1, 0.33 => color2, 0.67 => color3, 1.00 => color4 - if (hmod < 1f/3f) hsv = interpolateHSV(ref hsv1, ref hsv2, hmod * 3f); - else if (hmod < 2f/3f) hsv = interpolateHSV(ref hsv2, ref hsv3, (hmod * 3f) - 1f); - else hsv = interpolateHSV(ref hsv3, ref hsv4, (hmod * 3f) - 2f); - } - - // Shade the terrain for shadows - if (x < ((int)Constants.RegionSize - 1) && y < ((int)Constants.RegionSize - 1)) - { - float hfvaluecompare = getHeight(hm, x + 1, y + 1); // light from north-east => look at land height there - if (Single.IsInfinity(hfvaluecompare) || Single.IsNaN(hfvaluecompare)) - hfvaluecompare = 0f; - - float hfdiff = heightvalue - hfvaluecompare; // => positive if NE is lower, negative if here is lower - hfdiff *= 0.06f; // some random factor so "it looks good" - if (hfdiff > 0.02f) - { - float highlightfactor = 0.18f; - // NE is lower than here - // We have to desaturate and lighten the land at the same time - hsv.s = (hsv.s - (hfdiff * highlightfactor) > 0f) ? hsv.s - (hfdiff * highlightfactor) : 0f; - hsv.v = (hsv.v + (hfdiff * highlightfactor) < 1f) ? hsv.v + (hfdiff * highlightfactor) : 1f; - } - else if (hfdiff < -0.02f) - { - // here is lower than NE: - // We have to desaturate and blacken the land at the same time - hsv.s = (hsv.s + hfdiff > 0f) ? hsv.s + hfdiff : 0f; - hsv.v = (hsv.v + hfdiff > 0f) ? hsv.v + hfdiff : 0f; - } - } - mapbmp.SetPixel(x, yr, hsv.toColor()); - } - else - { - // We're under the water level with the terrain, so paint water instead of land - - heightvalue = waterHeight - heightvalue; - if (Single.IsInfinity(heightvalue) || Single.IsNaN(heightvalue)) - heightvalue = 0f; - else if (heightvalue > 19f) - heightvalue = 19f; - else if (heightvalue < 0f) - heightvalue = 0f; - - heightvalue = 100f - (heightvalue * 100f) / 19f; // 0 - 19 => 100 - 0 - - mapbmp.SetPixel(x, yr, WATER_COLOR); - } - } - } - m_log.Info("[MAPTILE]: Generating Maptile Step 1: Done in " + (Environment.TickCount - tc) + " ms"); - } - } -} diff --git a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs index fbc8a50350..a182eeae7d 100644 --- a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs +++ b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs @@ -1011,7 +1011,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap if (terrain == null) return; - byte[] data = terrain.WriteJpeg2000Image("defaultstripe.png"); + byte[] data = terrain.WriteJpeg2000Image(); if (data == null) return; diff --git a/OpenSim/Region/Framework/Interfaces/ITerrain.cs b/OpenSim/Region/Framework/Interfaces/ITerrain.cs index b42e872e6f..8aacb35699 100644 --- a/OpenSim/Region/Framework/Interfaces/ITerrain.cs +++ b/OpenSim/Region/Framework/Interfaces/ITerrain.cs @@ -73,7 +73,7 @@ namespace OpenSim.Region.Framework.Interfaces public interface IMapImageGenerator { - System.Drawing.Bitmap CreateMapTile(string gradientmap); - byte[] WriteJpeg2000Image(string gradientmap); + System.Drawing.Bitmap CreateMapTile(); + byte[] WriteJpeg2000Image(); } } diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianGridServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianGridServiceConnector.cs index 4409d5ce00..168b233893 100644 --- a/OpenSim/Services/Connectors/SimianGrid/SimianGridServiceConnector.cs +++ b/OpenSim/Services/Connectors/SimianGrid/SimianGridServiceConnector.cs @@ -413,7 +413,7 @@ namespace OpenSim.Services.Connectors.SimianGrid return; } - using (Image mapTile = tileGenerator.CreateMapTile("defaultstripe.png")) + using (Image mapTile = tileGenerator.CreateMapTile()) { using (MemoryStream stream = new MemoryStream()) { diff --git a/prebuild.xml b/prebuild.xml index 530c417d80..5746890ac8 100644 --- a/prebuild.xml +++ b/prebuild.xml @@ -1370,11 +1370,13 @@ ../../../bin/ + true ../../../bin/ + true @@ -1389,6 +1391,7 @@ + From 27340f616edfc2c6c199cb9d550b0ca3f67d2c6f Mon Sep 17 00:00:00 2001 From: Melanie Date: Sun, 3 Oct 2010 16:34:55 +0100 Subject: [PATCH 3/7] Addign the new / renamed files for previous commit --- .../LegacyMap/IMapTileTerrainRenderer.cs | 39 ++ .../World/LegacyMap/MapImageModule.cs | 549 +++++++++++++++ .../World/LegacyMap/ShadedMapTileRenderer.cs | 244 +++++++ .../LegacyMap/TexturedMapTileRenderer.cs | 418 ++++++++++++ .../World/Warp3DMap/MapImageModule.cs | 624 ++++++++++++++++++ .../CoreModules/World/Warp3DMap/Perlin.cs | 273 ++++++++ .../World/Warp3DMap/TerrainSplat.cs | 343 ++++++++++ .../CoreModules/World/Warp3DMap/Viewport.cs | 165 +++++ 8 files changed, 2655 insertions(+) create mode 100644 OpenSim/Region/CoreModules/World/LegacyMap/IMapTileTerrainRenderer.cs create mode 100644 OpenSim/Region/CoreModules/World/LegacyMap/MapImageModule.cs create mode 100644 OpenSim/Region/CoreModules/World/LegacyMap/ShadedMapTileRenderer.cs create mode 100644 OpenSim/Region/CoreModules/World/LegacyMap/TexturedMapTileRenderer.cs create mode 100644 OpenSim/Region/CoreModules/World/Warp3DMap/MapImageModule.cs create mode 100644 OpenSim/Region/CoreModules/World/Warp3DMap/Perlin.cs create mode 100644 OpenSim/Region/CoreModules/World/Warp3DMap/TerrainSplat.cs create mode 100644 OpenSim/Region/CoreModules/World/Warp3DMap/Viewport.cs diff --git a/OpenSim/Region/CoreModules/World/LegacyMap/IMapTileTerrainRenderer.cs b/OpenSim/Region/CoreModules/World/LegacyMap/IMapTileTerrainRenderer.cs new file mode 100644 index 0000000000..e892b1479c --- /dev/null +++ b/OpenSim/Region/CoreModules/World/LegacyMap/IMapTileTerrainRenderer.cs @@ -0,0 +1,39 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System.Drawing; +using Nini.Config; +using OpenSim.Region.Framework.Scenes; + +namespace OpenSim.Region.CoreModules.World.LegacyMap +{ + public interface IMapTileTerrainRenderer + { + void Initialise(Scene scene, IConfigSource config); + void TerrainToBitmap(Bitmap mapbmp); + } +} diff --git a/OpenSim/Region/CoreModules/World/LegacyMap/MapImageModule.cs b/OpenSim/Region/CoreModules/World/LegacyMap/MapImageModule.cs new file mode 100644 index 0000000000..9e6e366cec --- /dev/null +++ b/OpenSim/Region/CoreModules/World/LegacyMap/MapImageModule.cs @@ -0,0 +1,549 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Reflection; +using log4net; +using Nini.Config; +using OpenMetaverse; +using OpenMetaverse.Imaging; +using OpenSim.Framework; +using OpenSim.Region.Framework.Interfaces; +using OpenSim.Region.Framework.Scenes; + +namespace OpenSim.Region.CoreModules.World.LegacyMap +{ + public enum DrawRoutine + { + Rectangle, + Polygon, + Ellipse + } + + public struct face + { + public Point[] pts; + } + + public struct DrawStruct + { + public DrawRoutine dr; + public Rectangle rect; + public SolidBrush brush; + public face[] trns; + } + + public class MapImageModule : IMapImageGenerator, IRegionModule + { + private static readonly ILog m_log = + LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + + private Scene m_scene; + private IConfigSource m_config; + private IMapTileTerrainRenderer terrainRenderer; + + #region IMapImageGenerator Members + + public Bitmap CreateMapTile() + { + bool drawPrimVolume = true; + bool textureTerrain = false; + + try + { + IConfig startupConfig = m_config.Configs["Startup"]; + drawPrimVolume = startupConfig.GetBoolean("DrawPrimOnMapTile", drawPrimVolume); + textureTerrain = startupConfig.GetBoolean("TextureOnMapTile", textureTerrain); + } + catch + { + m_log.Warn("[MAPTILE]: Failed to load StartupConfig"); + } + + if (textureTerrain) + { + terrainRenderer = new TexturedMapTileRenderer(); + } + else + { + terrainRenderer = new ShadedMapTileRenderer(); + } + terrainRenderer.Initialise(m_scene, m_config); + + Bitmap mapbmp = new Bitmap((int)Constants.RegionSize, (int)Constants.RegionSize, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + //long t = System.Environment.TickCount; + //for (int i = 0; i < 10; ++i) { + terrainRenderer.TerrainToBitmap(mapbmp); + //} + //t = System.Environment.TickCount - t; + //m_log.InfoFormat("[MAPTILE] generation of 10 maptiles needed {0} ms", t); + + + if (drawPrimVolume) + { + DrawObjectVolume(m_scene, mapbmp); + } + + return mapbmp; + } + + public byte[] WriteJpeg2000Image() + { + try + { + using (Bitmap mapbmp = CreateMapTile()) + return OpenJPEG.EncodeFromImage(mapbmp, true); + } + catch (Exception e) // LEGIT: Catching problems caused by OpenJPEG p/invoke + { + m_log.Error("Failed generating terrain map: " + e); + } + + return null; + } + + #endregion + + #region IRegionModule Members + + public void Initialise(Scene scene, IConfigSource source) + { + m_scene = scene; + m_config = source; + + IConfig startupConfig = m_config.Configs["Startup"]; + if (startupConfig.GetString("MapImageModule", "MapImageModule") != + "MapImageModule") + return; + + m_scene.RegisterModuleInterface(this); + } + + public void PostInitialise() + { + } + + public void Close() + { + } + + public string Name + { + get { return "MapImageModule"; } + } + + public bool IsSharedModule + { + get { return false; } + } + + #endregion + +// TODO: unused: +// private void ShadeBuildings(Bitmap map) +// { +// lock (map) +// { +// lock (m_scene.Entities) +// { +// foreach (EntityBase entity in m_scene.Entities.Values) +// { +// if (entity is SceneObjectGroup) +// { +// SceneObjectGroup sog = (SceneObjectGroup) entity; +// +// foreach (SceneObjectPart primitive in sog.Children.Values) +// { +// int x = (int) (primitive.AbsolutePosition.X - (primitive.Scale.X / 2)); +// int y = (int) (primitive.AbsolutePosition.Y - (primitive.Scale.Y / 2)); +// int w = (int) primitive.Scale.X; +// int h = (int) primitive.Scale.Y; +// +// int dx; +// for (dx = x; dx < x + w; dx++) +// { +// int dy; +// for (dy = y; dy < y + h; dy++) +// { +// if (x < 0 || y < 0) +// continue; +// if (x >= map.Width || y >= map.Height) +// continue; +// +// map.SetPixel(dx, dy, Color.DarkGray); +// } +// } +// } +// } +// } +// } +// } +// } + + private Bitmap DrawObjectVolume(Scene whichScene, Bitmap mapbmp) + { + int tc = 0; + double[,] hm = whichScene.Heightmap.GetDoubles(); + tc = Environment.TickCount; + m_log.Info("[MAPTILE]: Generating Maptile Step 2: Object Volume Profile"); + EntityBase[] objs = whichScene.GetEntities(); + Dictionary z_sort = new Dictionary(); + //SortedList z_sort = new SortedList(); + List z_sortheights = new List(); + List z_localIDs = new List(); + + lock (objs) + { + foreach (EntityBase obj in objs) + { + // Only draw the contents of SceneObjectGroup + if (obj is SceneObjectGroup) + { + SceneObjectGroup mapdot = (SceneObjectGroup)obj; + Color mapdotspot = Color.Gray; // Default color when prim color is white + + // Loop over prim in group + foreach (SceneObjectPart part in mapdot.Parts) + { + if (part == null) + continue; + + // Draw if the object is at least 1 meter wide in any direction + if (part.Scale.X > 1f || part.Scale.Y > 1f || part.Scale.Z > 1f) + { + // Try to get the RGBA of the default texture entry.. + // + try + { + // get the null checks out of the way + // skip the ones that break + if (part == null) + continue; + + if (part.Shape == null) + continue; + + if (part.Shape.PCode == (byte)PCode.Tree || part.Shape.PCode == (byte)PCode.NewTree || part.Shape.PCode == (byte)PCode.Grass) + continue; // eliminates trees from this since we don't really have a good tree representation + // if you want tree blocks on the map comment the above line and uncomment the below line + //mapdotspot = Color.PaleGreen; + + Primitive.TextureEntry textureEntry = part.Shape.Textures; + + if (textureEntry == null || textureEntry.DefaultTexture == null) + continue; + + Color4 texcolor = textureEntry.DefaultTexture.RGBA; + + // Not sure why some of these are null, oh well. + + int colorr = 255 - (int)(texcolor.R * 255f); + int colorg = 255 - (int)(texcolor.G * 255f); + int colorb = 255 - (int)(texcolor.B * 255f); + + if (!(colorr == 255 && colorg == 255 && colorb == 255)) + { + //Try to set the map spot color + try + { + // If the color gets goofy somehow, skip it *shakes fist at Color4 + mapdotspot = Color.FromArgb(colorr, colorg, colorb); + } + catch (ArgumentException) + { + } + } + } + catch (IndexOutOfRangeException) + { + // Windows Array + } + catch (ArgumentOutOfRangeException) + { + // Mono Array + } + + Vector3 pos = part.GetWorldPosition(); + + // skip prim outside of retion + if (pos.X < 0f || pos.X > 256f || pos.Y < 0f || pos.Y > 256f) + continue; + + // skip prim in non-finite position + if (Single.IsNaN(pos.X) || Single.IsNaN(pos.Y) || + Single.IsInfinity(pos.X) || Single.IsInfinity(pos.Y)) + continue; + + // Figure out if object is under 256m above the height of the terrain + bool isBelow256AboveTerrain = false; + + try + { + isBelow256AboveTerrain = (pos.Z < ((float)hm[(int)pos.X, (int)pos.Y] + 256f)); + } + catch (Exception) + { + } + + if (isBelow256AboveTerrain) + { + // Translate scale by rotation so scale is represented properly when object is rotated + Vector3 lscale = new Vector3(part.Shape.Scale.X, part.Shape.Scale.Y, part.Shape.Scale.Z); + Vector3 scale = new Vector3(); + Vector3 tScale = new Vector3(); + Vector3 axPos = new Vector3(pos.X,pos.Y,pos.Z); + + Quaternion llrot = part.GetWorldRotation(); + Quaternion rot = new Quaternion(llrot.W, llrot.X, llrot.Y, llrot.Z); + scale = lscale * rot; + + // negative scales don't work in this situation + scale.X = Math.Abs(scale.X); + scale.Y = Math.Abs(scale.Y); + scale.Z = Math.Abs(scale.Z); + + // This scaling isn't very accurate and doesn't take into account the face rotation :P + int mapdrawstartX = (int)(pos.X - scale.X); + int mapdrawstartY = (int)(pos.Y - scale.Y); + int mapdrawendX = (int)(pos.X + scale.X); + int mapdrawendY = (int)(pos.Y + scale.Y); + + // If object is beyond the edge of the map, don't draw it to avoid errors + if (mapdrawstartX < 0 || mapdrawstartX > ((int)Constants.RegionSize - 1) || mapdrawendX < 0 || mapdrawendX > ((int)Constants.RegionSize - 1) + || mapdrawstartY < 0 || mapdrawstartY > ((int)Constants.RegionSize - 1) || mapdrawendY < 0 + || mapdrawendY > ((int)Constants.RegionSize - 1)) + continue; + +#region obb face reconstruction part duex + Vector3[] vertexes = new Vector3[8]; + + // float[] distance = new float[6]; + Vector3[] FaceA = new Vector3[6]; // vertex A for Facei + Vector3[] FaceB = new Vector3[6]; // vertex B for Facei + Vector3[] FaceC = new Vector3[6]; // vertex C for Facei + Vector3[] FaceD = new Vector3[6]; // vertex D for Facei + + tScale = new Vector3(lscale.X, -lscale.Y, lscale.Z); + scale = ((tScale * rot)); + vertexes[0] = (new Vector3((pos.X + scale.X), (pos.Y + scale.Y), (pos.Z + scale.Z))); + // vertexes[0].x = pos.X + vertexes[0].x; + //vertexes[0].y = pos.Y + vertexes[0].y; + //vertexes[0].z = pos.Z + vertexes[0].z; + + FaceA[0] = vertexes[0]; + FaceB[3] = vertexes[0]; + FaceA[4] = vertexes[0]; + + tScale = lscale; + scale = ((tScale * rot)); + vertexes[1] = (new Vector3((pos.X + scale.X), (pos.Y + scale.Y), (pos.Z + scale.Z))); + + // vertexes[1].x = pos.X + vertexes[1].x; + // vertexes[1].y = pos.Y + vertexes[1].y; + //vertexes[1].z = pos.Z + vertexes[1].z; + + FaceB[0] = vertexes[1]; + FaceA[1] = vertexes[1]; + FaceC[4] = vertexes[1]; + + tScale = new Vector3(lscale.X, -lscale.Y, -lscale.Z); + scale = ((tScale * rot)); + + vertexes[2] = (new Vector3((pos.X + scale.X), (pos.Y + scale.Y), (pos.Z + scale.Z))); + + //vertexes[2].x = pos.X + vertexes[2].x; + //vertexes[2].y = pos.Y + vertexes[2].y; + //vertexes[2].z = pos.Z + vertexes[2].z; + + FaceC[0] = vertexes[2]; + FaceD[3] = vertexes[2]; + FaceC[5] = vertexes[2]; + + tScale = new Vector3(lscale.X, lscale.Y, -lscale.Z); + scale = ((tScale * rot)); + vertexes[3] = (new Vector3((pos.X + scale.X), (pos.Y + scale.Y), (pos.Z + scale.Z))); + + //vertexes[3].x = pos.X + vertexes[3].x; + // vertexes[3].y = pos.Y + vertexes[3].y; + // vertexes[3].z = pos.Z + vertexes[3].z; + + FaceD[0] = vertexes[3]; + FaceC[1] = vertexes[3]; + FaceA[5] = vertexes[3]; + + tScale = new Vector3(-lscale.X, lscale.Y, lscale.Z); + scale = ((tScale * rot)); + vertexes[4] = (new Vector3((pos.X + scale.X), (pos.Y + scale.Y), (pos.Z + scale.Z))); + + // vertexes[4].x = pos.X + vertexes[4].x; + // vertexes[4].y = pos.Y + vertexes[4].y; + // vertexes[4].z = pos.Z + vertexes[4].z; + + FaceB[1] = vertexes[4]; + FaceA[2] = vertexes[4]; + FaceD[4] = vertexes[4]; + + tScale = new Vector3(-lscale.X, lscale.Y, -lscale.Z); + scale = ((tScale * rot)); + vertexes[5] = (new Vector3((pos.X + scale.X), (pos.Y + scale.Y), (pos.Z + scale.Z))); + + // vertexes[5].x = pos.X + vertexes[5].x; + // vertexes[5].y = pos.Y + vertexes[5].y; + // vertexes[5].z = pos.Z + vertexes[5].z; + + FaceD[1] = vertexes[5]; + FaceC[2] = vertexes[5]; + FaceB[5] = vertexes[5]; + + tScale = new Vector3(-lscale.X, -lscale.Y, lscale.Z); + scale = ((tScale * rot)); + vertexes[6] = (new Vector3((pos.X + scale.X), (pos.Y + scale.Y), (pos.Z + scale.Z))); + + // vertexes[6].x = pos.X + vertexes[6].x; + // vertexes[6].y = pos.Y + vertexes[6].y; + // vertexes[6].z = pos.Z + vertexes[6].z; + + FaceB[2] = vertexes[6]; + FaceA[3] = vertexes[6]; + FaceB[4] = vertexes[6]; + + tScale = new Vector3(-lscale.X, -lscale.Y, -lscale.Z); + scale = ((tScale * rot)); + vertexes[7] = (new Vector3((pos.X + scale.X), (pos.Y + scale.Y), (pos.Z + scale.Z))); + + // vertexes[7].x = pos.X + vertexes[7].x; + // vertexes[7].y = pos.Y + vertexes[7].y; + // vertexes[7].z = pos.Z + vertexes[7].z; + + FaceD[2] = vertexes[7]; + FaceC[3] = vertexes[7]; + FaceD[5] = vertexes[7]; +#endregion + + //int wy = 0; + + //bool breakYN = false; // If we run into an error drawing, break out of the + // loop so we don't lag to death on error handling + DrawStruct ds = new DrawStruct(); + ds.brush = new SolidBrush(mapdotspot); + //ds.rect = new Rectangle(mapdrawstartX, (255 - mapdrawstartY), mapdrawendX - mapdrawstartX, mapdrawendY - mapdrawstartY); + + ds.trns = new face[FaceA.Length]; + + for (int i = 0; i < FaceA.Length; i++) + { + Point[] working = new Point[5]; + working[0] = project(FaceA[i], axPos); + working[1] = project(FaceB[i], axPos); + working[2] = project(FaceD[i], axPos); + working[3] = project(FaceC[i], axPos); + working[4] = project(FaceA[i], axPos); + + face workingface = new face(); + workingface.pts = working; + + ds.trns[i] = workingface; + } + + z_sort.Add(part.LocalId, ds); + z_localIDs.Add(part.LocalId); + z_sortheights.Add(pos.Z); + + //for (int wx = mapdrawstartX; wx < mapdrawendX; wx++) + //{ + //for (wy = mapdrawstartY; wy < mapdrawendY; wy++) + //{ + //m_log.InfoFormat("[MAPDEBUG]: {0},{1}({2})", wx, (255 - wy),wy); + //try + //{ + // Remember, flip the y! + // mapbmp.SetPixel(wx, (255 - wy), mapdotspot); + //} + //catch (ArgumentException) + //{ + // breakYN = true; + //} + + //if (breakYN) + // break; + //} + + //if (breakYN) + // break; + //} + } // Object is within 256m Z of terrain + } // object is at least a meter wide + } // loop over group children + } // entitybase is sceneobject group + } // foreach loop over entities + + float[] sortedZHeights = z_sortheights.ToArray(); + uint[] sortedlocalIds = z_localIDs.ToArray(); + + // Sort prim by Z position + Array.Sort(sortedZHeights, sortedlocalIds); + + Graphics g = Graphics.FromImage(mapbmp); + + for (int s = 0; s < sortedZHeights.Length; s++) + { + if (z_sort.ContainsKey(sortedlocalIds[s])) + { + DrawStruct rectDrawStruct = z_sort[sortedlocalIds[s]]; + for (int r = 0; r < rectDrawStruct.trns.Length; r++) + { + g.FillPolygon(rectDrawStruct.brush,rectDrawStruct.trns[r].pts); + } + //g.FillRectangle(rectDrawStruct.brush , rectDrawStruct.rect); + } + } + + g.Dispose(); + } // lock entities objs + + m_log.Info("[MAPTILE]: Generating Maptile Step 2: Done in " + (Environment.TickCount - tc) + " ms"); + return mapbmp; + } + + private Point project(Vector3 point3d, Vector3 originpos) + { + Point returnpt = new Point(); + //originpos = point3d; + //int d = (int)(256f / 1.5f); + + //Vector3 topos = new Vector3(0, 0, 0); + // float z = -point3d.z - topos.z; + + returnpt.X = (int)point3d.X;//(int)((topos.x - point3d.x) / z * d); + returnpt.Y = (int)(((int)Constants.RegionSize - 1) - point3d.Y);//(int)(255 - (((topos.y - point3d.y) / z * d))); + + return returnpt; + } + } +} diff --git a/OpenSim/Region/CoreModules/World/LegacyMap/ShadedMapTileRenderer.cs b/OpenSim/Region/CoreModules/World/LegacyMap/ShadedMapTileRenderer.cs new file mode 100644 index 0000000000..eb1a27f9ec --- /dev/null +++ b/OpenSim/Region/CoreModules/World/LegacyMap/ShadedMapTileRenderer.cs @@ -0,0 +1,244 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Drawing; +using System.Reflection; +using log4net; +using Nini.Config; +using OpenSim.Framework; +using OpenSim.Region.Framework.Scenes; + +namespace OpenSim.Region.CoreModules.World.LegacyMap +{ + public class ShadedMapTileRenderer : IMapTileTerrainRenderer + { + private static readonly Color WATER_COLOR = Color.FromArgb(29, 71, 95); + + private static readonly ILog m_log = + LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + + private Scene m_scene; + //private IConfigSource m_config; // not used currently + + public void Initialise(Scene scene, IConfigSource config) + { + m_scene = scene; + // m_config = config; // not used currently + } + + public void TerrainToBitmap(Bitmap mapbmp) + { + int tc = Environment.TickCount; + m_log.Info("[MAPTILE]: Generating Maptile Step 1: Terrain"); + + double[,] hm = m_scene.Heightmap.GetDoubles(); + bool ShadowDebugContinue = true; + + bool terraincorruptedwarningsaid = false; + + float low = 255; + float high = 0; + for (int x = 0; x < (int)Constants.RegionSize; x++) + { + for (int y = 0; y < (int)Constants.RegionSize; y++) + { + float hmval = (float)hm[x, y]; + if (hmval < low) + low = hmval; + if (hmval > high) + high = hmval; + } + } + + float waterHeight = (float)m_scene.RegionInfo.RegionSettings.WaterHeight; + + for (int x = 0; x < (int)Constants.RegionSize; x++) + { + for (int y = 0; y < (int)Constants.RegionSize; y++) + { + // Y flip the cordinates for the bitmap: hf origin is lower left, bm origin is upper left + int yr = ((int)Constants.RegionSize - 1) - y; + + float heightvalue = (float)hm[x, y]; + + if (heightvalue > waterHeight) + { + // scale height value + // No, that doesn't scale it: + // heightvalue = low + mid * (heightvalue - low) / mid; => low + (heightvalue - low) * mid / mid = low + (heightvalue - low) * 1 = low + heightvalue - low = heightvalue + + if (Single.IsInfinity(heightvalue) || Single.IsNaN(heightvalue)) + heightvalue = 0; + else if (heightvalue > 255f) + heightvalue = 255f; + else if (heightvalue < 0f) + heightvalue = 0f; + + Color color = Color.FromArgb((int)heightvalue, 100, (int)heightvalue); + + mapbmp.SetPixel(x, yr, color); + + try + { + //X + // . + // + // Shade the terrain for shadows + if (x < ((int)Constants.RegionSize - 1) && yr < ((int)Constants.RegionSize - 1)) + { + float hfvalue = (float)hm[x, y]; + float hfvaluecompare = 0f; + + if ((x + 1 < (int)Constants.RegionSize) && (y + 1 < (int)Constants.RegionSize)) + { + hfvaluecompare = (float)hm[x + 1, y + 1]; // light from north-east => look at land height there + } + if (Single.IsInfinity(hfvalue) || Single.IsNaN(hfvalue)) + hfvalue = 0f; + + if (Single.IsInfinity(hfvaluecompare) || Single.IsNaN(hfvaluecompare)) + hfvaluecompare = 0f; + + float hfdiff = hfvalue - hfvaluecompare; // => positive if NE is lower, negative if here is lower + + int hfdiffi = 0; + int hfdiffihighlight = 0; + float highlightfactor = 0.18f; + + try + { + // hfdiffi = Math.Abs((int)((hfdiff * 4) + (hfdiff * 0.5))) + 1; + hfdiffi = Math.Abs((int)(hfdiff * 4.5f)) + 1; + if (hfdiff % 1f != 0) + { + // hfdiffi = hfdiffi + Math.Abs((int)(((hfdiff % 1) * 0.5f) * 10f) - 1); + hfdiffi = hfdiffi + Math.Abs((int)((hfdiff % 1f) * 5f) - 1); + } + + hfdiffihighlight = Math.Abs((int)((hfdiff * highlightfactor) * 4.5f)) + 1; + if (hfdiff % 1f != 0) + { + // hfdiffi = hfdiffi + Math.Abs((int)(((hfdiff % 1) * 0.5f) * 10f) - 1); + hfdiffihighlight = hfdiffihighlight + Math.Abs((int)(((hfdiff * highlightfactor) % 1f) * 5f) - 1); + } + } + catch (OverflowException) + { + m_log.Debug("[MAPTILE]: Shadow failed at value: " + hfdiff.ToString()); + ShadowDebugContinue = false; + } + + if (hfdiff > 0.3f) + { + // NE is lower than here + // We have to desaturate and lighten the land at the same time + // we use floats, colors use bytes, so shrink are space down to + // 0-255 + + if (ShadowDebugContinue) + { + int r = color.R; + int g = color.G; + int b = color.B; + color = Color.FromArgb((r + hfdiffihighlight < 255) ? r + hfdiffihighlight : 255, + (g + hfdiffihighlight < 255) ? g + hfdiffihighlight : 255, + (b + hfdiffihighlight < 255) ? b + hfdiffihighlight : 255); + } + } + else if (hfdiff < -0.3f) + { + // here is lower than NE: + // We have to desaturate and blacken the land at the same time + // we use floats, colors use bytes, so shrink are space down to + // 0-255 + + if (ShadowDebugContinue) + { + if ((x - 1 > 0) && (yr + 1 < (int)Constants.RegionSize)) + { + color = mapbmp.GetPixel(x - 1, yr + 1); + int r = color.R; + int g = color.G; + int b = color.B; + color = Color.FromArgb((r - hfdiffi > 0) ? r - hfdiffi : 0, + (g - hfdiffi > 0) ? g - hfdiffi : 0, + (b - hfdiffi > 0) ? b - hfdiffi : 0); + + mapbmp.SetPixel(x-1, yr+1, color); + } + } + } + } + } + catch (ArgumentException) + { + if (!terraincorruptedwarningsaid) + { + m_log.WarnFormat("[MAPIMAGE]: Your terrain is corrupted in region {0}, it might take a few minutes to generate the map image depending on the corruption level", m_scene.RegionInfo.RegionName); + terraincorruptedwarningsaid = true; + } + color = Color.Black; + mapbmp.SetPixel(x, yr, color); + } + } + else + { + // We're under the water level with the terrain, so paint water instead of land + + // Y flip the cordinates + heightvalue = waterHeight - heightvalue; + if (Single.IsInfinity(heightvalue) || Single.IsNaN(heightvalue)) + heightvalue = 0f; + else if (heightvalue > 19f) + heightvalue = 19f; + else if (heightvalue < 0f) + heightvalue = 0f; + + heightvalue = 100f - (heightvalue * 100f) / 19f; + + try + { + mapbmp.SetPixel(x, yr, WATER_COLOR); + } + catch (ArgumentException) + { + if (!terraincorruptedwarningsaid) + { + m_log.WarnFormat("[MAPIMAGE]: Your terrain is corrupted in region {0}, it might take a few minutes to generate the map image depending on the corruption level", m_scene.RegionInfo.RegionName); + terraincorruptedwarningsaid = true; + } + Color black = Color.Black; + mapbmp.SetPixel(x, ((int)Constants.RegionSize - y) - 1, black); + } + } + } + } + m_log.Info("[MAPTILE]: Generating Maptile Step 1: Done in " + (Environment.TickCount - tc) + " ms"); + } + } +} diff --git a/OpenSim/Region/CoreModules/World/LegacyMap/TexturedMapTileRenderer.cs b/OpenSim/Region/CoreModules/World/LegacyMap/TexturedMapTileRenderer.cs new file mode 100644 index 0000000000..071314ac9a --- /dev/null +++ b/OpenSim/Region/CoreModules/World/LegacyMap/TexturedMapTileRenderer.cs @@ -0,0 +1,418 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Reflection; +using log4net; +using Nini.Config; +using OpenMetaverse; +using OpenMetaverse.Imaging; +using OpenSim.Framework; +using OpenSim.Region.Framework.Scenes; + +namespace OpenSim.Region.CoreModules.World.LegacyMap +{ + // Hue, Saturation, Value; used for color-interpolation + struct HSV { + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + + public float h; + public float s; + public float v; + + public HSV(float h, float s, float v) + { + this.h = h; + this.s = s; + this.v = v; + } + + // (for info about algorithm, see http://en.wikipedia.org/wiki/HSL_and_HSV) + public HSV(Color c) + { + float r = c.R / 255f; + float g = c.G / 255f; + float b = c.B / 255f; + float max = Math.Max(Math.Max(r, g), b); + float min = Math.Min(Math.Min(r, g), b); + float diff = max - min; + + if (max == min) h = 0f; + else if (max == r) h = (g - b) / diff * 60f; + else if (max == g) h = (b - r) / diff * 60f + 120f; + else h = (r - g) / diff * 60f + 240f; + if (h < 0f) h += 360f; + + if (max == 0f) s = 0f; + else s = diff / max; + + v = max; + } + + // (for info about algorithm, see http://en.wikipedia.org/wiki/HSL_and_HSV) + public Color toColor() + { + if (s < 0f) m_log.Debug("S < 0: " + s); + else if (s > 1f) m_log.Debug("S > 1: " + s); + if (v < 0f) m_log.Debug("V < 0: " + v); + else if (v > 1f) m_log.Debug("V > 1: " + v); + + float f = h / 60f; + int sector = (int)f % 6; + f = f - (int)f; + int pi = (int)(v * (1f - s) * 255f); + int qi = (int)(v * (1f - s * f) * 255f); + int ti = (int)(v * (1f - (1f - f) * s) * 255f); + int vi = (int)(v * 255f); + + if (pi < 0) pi = 0; + if (pi > 255) pi = 255; + if (qi < 0) qi = 0; + if (qi > 255) qi = 255; + if (ti < 0) ti = 0; + if (ti > 255) ti = 255; + if (vi < 0) vi = 0; + if (vi > 255) vi = 255; + + switch (sector) + { + case 0: + return Color.FromArgb(vi, ti, pi); + case 1: + return Color.FromArgb(qi, vi, pi); + case 2: + return Color.FromArgb(pi, vi, ti); + case 3: + return Color.FromArgb(pi, qi, vi); + case 4: + return Color.FromArgb(ti, pi, vi); + default: + return Color.FromArgb(vi, pi, qi); + } + } + } + + public class TexturedMapTileRenderer : IMapTileTerrainRenderer + { + #region Constants + + private static readonly ILog m_log = + LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + + // some hardcoded terrain UUIDs that work with SL 1.20 (the four default textures and "Blank"). + // The color-values were choosen because they "look right" (at least to me) ;-) + private static readonly UUID defaultTerrainTexture1 = new UUID("0bc58228-74a0-7e83-89bc-5c23464bcec5"); + private static readonly Color defaultColor1 = Color.FromArgb(165, 137, 118); + private static readonly UUID defaultTerrainTexture2 = new UUID("63338ede-0037-c4fd-855b-015d77112fc8"); + private static readonly Color defaultColor2 = Color.FromArgb(69, 89, 49); + private static readonly UUID defaultTerrainTexture3 = new UUID("303cd381-8560-7579-23f1-f0a880799740"); + private static readonly Color defaultColor3 = Color.FromArgb(162, 154, 141); + private static readonly UUID defaultTerrainTexture4 = new UUID("53a2f406-4895-1d13-d541-d2e3b86bc19c"); + private static readonly Color defaultColor4 = Color.FromArgb(200, 200, 200); + + private static readonly Color WATER_COLOR = Color.FromArgb(29, 71, 95); + + #endregion + + + private Scene m_scene; + // private IConfigSource m_config; // not used currently + + // mapping from texture UUIDs to averaged color. This will contain 5-9 values, in general; new values are only + // added when the terrain textures are changed in the estate dialog and a new map is generated (and will stay in + // that map until the region-server restarts. This could be considered a memory-leak, but it's a *very* small one. + // TODO does it make sense to use a "real" cache and regenerate missing entries on fetch? + private Dictionary m_mapping; + + + public void Initialise(Scene scene, IConfigSource source) + { + m_scene = scene; + // m_config = source; // not used currently + m_mapping = new Dictionary(); + m_mapping.Add(defaultTerrainTexture1, defaultColor1); + m_mapping.Add(defaultTerrainTexture2, defaultColor2); + m_mapping.Add(defaultTerrainTexture3, defaultColor3); + m_mapping.Add(defaultTerrainTexture4, defaultColor4); + m_mapping.Add(Util.BLANK_TEXTURE_UUID, Color.White); + } + + #region Helpers + // This fetches the texture from the asset server synchroneously. That should be ok, as we + // call map-creation only in those places: + // - on start: We can wait here until the asset server returns the texture + // TODO (- on "map" command: We are in the command-line thread, we will wait for completion anyway) + // TODO (- on "automatic" update after some change: We are called from the mapUpdateTimer here and + // will wait anyway) + private Bitmap fetchTexture(UUID id) + { + AssetBase asset = m_scene.AssetService.Get(id.ToString()); + m_log.DebugFormat("Fetched texture {0}, found: {1}", id, asset != null); + if (asset == null) return null; + + ManagedImage managedImage; + Image image; + + try + { + if (OpenJPEG.DecodeToImage(asset.Data, out managedImage, out image)) + return new Bitmap(image); + else + return null; + } + catch (DllNotFoundException) + { + m_log.ErrorFormat("[TexturedMapTileRenderer]: OpenJpeg is not installed correctly on this system. Asset Data is emtpy for {0}", id); + + } + catch (IndexOutOfRangeException) + { + m_log.ErrorFormat("[TexturedMapTileRenderer]: OpenJpeg was unable to encode this. Asset Data is emtpy for {0}", id); + + } + catch (Exception) + { + m_log.ErrorFormat("[TexturedMapTileRenderer]: OpenJpeg was unable to encode this. Asset Data is emtpy for {0}", id); + + } + return null; + + } + + // Compute the average color of a texture. + private Color computeAverageColor(Bitmap bmp) + { + // we have 256 x 256 pixel, each with 256 possible color-values per + // color-channel, so 2^24 is the maximum value we can get, adding everything. + // int is be big enough for that. + int r = 0, g = 0, b = 0; + for (int y = 0; y < bmp.Height; ++y) + { + for (int x = 0; x < bmp.Width; ++x) + { + Color c = bmp.GetPixel(x, y); + r += (int)c.R & 0xff; + g += (int)c.G & 0xff; + b += (int)c.B & 0xff; + } + } + + int pixels = bmp.Width * bmp.Height; + return Color.FromArgb(r / pixels, g / pixels, b / pixels); + } + + // return either the average color of the texture, or the defaultColor if the texturID is invalid + // or the texture couldn't be found + private Color computeAverageColor(UUID textureID, Color defaultColor) { + if (textureID == UUID.Zero) return defaultColor; // not set + if (m_mapping.ContainsKey(textureID)) return m_mapping[textureID]; // one of the predefined textures + + Bitmap bmp = fetchTexture(textureID); + Color color = bmp == null ? defaultColor : computeAverageColor(bmp); + // store it for future reference + m_mapping[textureID] = color; + + return color; + } + + // S-curve: f(x) = 3x² - 2x³: + // f(0) = 0, f(0.5) = 0.5, f(1) = 1, + // f'(x) = 0 at x = 0 and x = 1; f'(0.5) = 1.5, + // f''(0.5) = 0, f''(x) != 0 for x != 0.5 + private float S(float v) { + return (v * v * (3f - 2f * v)); + } + + // interpolate two colors in HSV space and return the resulting color + private HSV interpolateHSV(ref HSV c1, ref HSV c2, float ratio) { + if (ratio <= 0f) return c1; + if (ratio >= 1f) return c2; + + // make sure we are on the same side on the hue-circle for interpolation + // We change the hue of the parameters here, but we don't change the color + // represented by that value + if (c1.h - c2.h > 180f) c1.h -= 360f; + else if (c2.h - c1.h > 180f) c1.h += 360f; + + return new HSV(c1.h * (1f - ratio) + c2.h * ratio, + c1.s * (1f - ratio) + c2.s * ratio, + c1.v * (1f - ratio) + c2.v * ratio); + } + + // the heigthfield might have some jumps in values. Rendered land is smooth, though, + // as a slope is rendered at that place. So average 4 neighbour values to emulate that. + private float getHeight(double[,] hm, int x, int y) { + if (x < ((int)Constants.RegionSize - 1) && y < ((int)Constants.RegionSize - 1)) + return (float)(hm[x, y] * .444 + (hm[x + 1, y] + hm[x, y + 1]) * .222 + hm[x + 1, y +1] * .112); + else + return (float)hm[x, y]; + } + #endregion + + public void TerrainToBitmap(Bitmap mapbmp) + { + int tc = Environment.TickCount; + m_log.Info("[MAPTILE]: Generating Maptile Step 1: Terrain"); + + // These textures should be in the AssetCache anyway, as every client conneting to this + // region needs them. Except on start, when the map is recreated (before anyone connected), + // and on change of the estate settings (textures and terrain values), when the map should + // be recreated. + RegionSettings settings = m_scene.RegionInfo.RegionSettings; + + // the four terrain colors as HSVs for interpolation + HSV hsv1 = new HSV(computeAverageColor(settings.TerrainTexture1, defaultColor1)); + HSV hsv2 = new HSV(computeAverageColor(settings.TerrainTexture2, defaultColor2)); + HSV hsv3 = new HSV(computeAverageColor(settings.TerrainTexture3, defaultColor3)); + HSV hsv4 = new HSV(computeAverageColor(settings.TerrainTexture4, defaultColor4)); + + float levelNElow = (float)settings.Elevation1NE; + float levelNEhigh = (float)settings.Elevation2NE; + + float levelNWlow = (float)settings.Elevation1NW; + float levelNWhigh = (float)settings.Elevation2NW; + + float levelSElow = (float)settings.Elevation1SE; + float levelSEhigh = (float)settings.Elevation2SE; + + float levelSWlow = (float)settings.Elevation1SW; + float levelSWhigh = (float)settings.Elevation2SW; + + float waterHeight = (float)settings.WaterHeight; + + double[,] hm = m_scene.Heightmap.GetDoubles(); + + for (int x = 0; x < (int)Constants.RegionSize; x++) + { + float columnRatio = x / ((float)Constants.RegionSize - 1); // 0 - 1, for interpolation + for (int y = 0; y < (int)Constants.RegionSize; y++) + { + float rowRatio = y / ((float)Constants.RegionSize - 1); // 0 - 1, for interpolation + + // Y flip the cordinates for the bitmap: hf origin is lower left, bm origin is upper left + int yr = ((int)Constants.RegionSize - 1) - y; + + float heightvalue = getHeight(hm, x, y); + if (Single.IsInfinity(heightvalue) || Single.IsNaN(heightvalue)) + heightvalue = 0; + + if (heightvalue > waterHeight) + { + // add a bit noise for breaking up those flat colors: + // - a large-scale noise, for the "patches" (using an doubled s-curve for sharper contrast) + // - a small-scale noise, for bringing in some small scale variation + //float bigNoise = (float)TerrainUtil.InterpolatedNoise(x / 8.0, y / 8.0) * .5f + .5f; // map to 0.0 - 1.0 + //float smallNoise = (float)TerrainUtil.InterpolatedNoise(x + 33, y + 43) * .5f + .5f; + //float hmod = heightvalue + smallNoise * 3f + S(S(bigNoise)) * 10f; + float hmod = + heightvalue + + (float)TerrainUtil.InterpolatedNoise(x + 33, y + 43) * 1.5f + 1.5f + // 0 - 3 + S(S((float)TerrainUtil.InterpolatedNoise(x / 8.0, y / 8.0) * .5f + .5f)) * 10f; // 0 - 10 + + // find the low/high values for this point (interpolated bilinearily) + // (and remember, x=0,y=0 is SW) + float low = levelSWlow * (1f - rowRatio) * (1f - columnRatio) + + levelSElow * (1f - rowRatio) * columnRatio + + levelNWlow * rowRatio * (1f - columnRatio) + + levelNElow * rowRatio * columnRatio; + float high = levelSWhigh * (1f - rowRatio) * (1f - columnRatio) + + levelSEhigh * (1f - rowRatio) * columnRatio + + levelNWhigh * rowRatio * (1f - columnRatio) + + levelNEhigh * rowRatio * columnRatio; + if (high < low) + { + // someone tried to fool us. High value should be higher than low every time + float tmp = high; + high = low; + low = tmp; + } + + HSV hsv; + if (hmod <= low) hsv = hsv1; // too low + else if (hmod >= high) hsv = hsv4; // too high + else + { + // HSV-interpolate along the colors + // first, rescale h to 0.0 - 1.0 + hmod = (hmod - low) / (high - low); + // now we have to split: 0.00 => color1, 0.33 => color2, 0.67 => color3, 1.00 => color4 + if (hmod < 1f/3f) hsv = interpolateHSV(ref hsv1, ref hsv2, hmod * 3f); + else if (hmod < 2f/3f) hsv = interpolateHSV(ref hsv2, ref hsv3, (hmod * 3f) - 1f); + else hsv = interpolateHSV(ref hsv3, ref hsv4, (hmod * 3f) - 2f); + } + + // Shade the terrain for shadows + if (x < ((int)Constants.RegionSize - 1) && y < ((int)Constants.RegionSize - 1)) + { + float hfvaluecompare = getHeight(hm, x + 1, y + 1); // light from north-east => look at land height there + if (Single.IsInfinity(hfvaluecompare) || Single.IsNaN(hfvaluecompare)) + hfvaluecompare = 0f; + + float hfdiff = heightvalue - hfvaluecompare; // => positive if NE is lower, negative if here is lower + hfdiff *= 0.06f; // some random factor so "it looks good" + if (hfdiff > 0.02f) + { + float highlightfactor = 0.18f; + // NE is lower than here + // We have to desaturate and lighten the land at the same time + hsv.s = (hsv.s - (hfdiff * highlightfactor) > 0f) ? hsv.s - (hfdiff * highlightfactor) : 0f; + hsv.v = (hsv.v + (hfdiff * highlightfactor) < 1f) ? hsv.v + (hfdiff * highlightfactor) : 1f; + } + else if (hfdiff < -0.02f) + { + // here is lower than NE: + // We have to desaturate and blacken the land at the same time + hsv.s = (hsv.s + hfdiff > 0f) ? hsv.s + hfdiff : 0f; + hsv.v = (hsv.v + hfdiff > 0f) ? hsv.v + hfdiff : 0f; + } + } + mapbmp.SetPixel(x, yr, hsv.toColor()); + } + else + { + // We're under the water level with the terrain, so paint water instead of land + + heightvalue = waterHeight - heightvalue; + if (Single.IsInfinity(heightvalue) || Single.IsNaN(heightvalue)) + heightvalue = 0f; + else if (heightvalue > 19f) + heightvalue = 19f; + else if (heightvalue < 0f) + heightvalue = 0f; + + heightvalue = 100f - (heightvalue * 100f) / 19f; // 0 - 19 => 100 - 0 + + mapbmp.SetPixel(x, yr, WATER_COLOR); + } + } + } + m_log.Info("[MAPTILE]: Generating Maptile Step 1: Done in " + (Environment.TickCount - tc) + " ms"); + } + } +} diff --git a/OpenSim/Region/CoreModules/World/Warp3DMap/MapImageModule.cs b/OpenSim/Region/CoreModules/World/Warp3DMap/MapImageModule.cs new file mode 100644 index 0000000000..47b163925d --- /dev/null +++ b/OpenSim/Region/CoreModules/World/Warp3DMap/MapImageModule.cs @@ -0,0 +1,624 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Drawing.Imaging; +using System.IO; +using System.Reflection; +using CSJ2K; +using Nini.Config; +using log4net; +using Rednettle.Warp3D; +using OpenMetaverse; +using OpenMetaverse.Imaging; +using OpenMetaverse.Rendering; +using OpenMetaverse.StructuredData; +using OpenSim.Framework; +using OpenSim.Region.Framework.Interfaces; +using OpenSim.Region.Framework.Scenes; +using OpenSim.Region.Physics.Manager; +using OpenSim.Services.Interfaces; + +using WarpRenderer = global::Warp3D.Warp3D; + +namespace OpenSim.Region.CoreModules.World.Warp3DMap +{ + public class Warp3DImageModule : IMapImageGenerator, IRegionModule + { + private static readonly UUID TEXTURE_METADATA_MAGIC = new UUID("802dc0e0-f080-4931-8b57-d1be8611c4f3"); + private static readonly Color4 WATER_COLOR = new Color4(29, 71, 95, 216); + + private static readonly ILog m_log = + LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + + private Scene m_scene; + private IRendering m_primMesher; + private IConfigSource m_config; + private Dictionary m_colors = new Dictionary(); + private bool m_useAntiAliasing = true; // TODO: Make this a config option + + #region IRegionModule Members + + public void Initialise(Scene scene, IConfigSource source) + { + m_scene = scene; + m_config = source; + + IConfig startupConfig = m_config.Configs["Startup"]; + if (startupConfig.GetString("MapImageModule", "MapImageModule") != "Warp3DImageModule") + return; + + List renderers = RenderingLoader.ListRenderers(Util.ExecutingDirectory()); + if (renderers.Count > 0) + { + m_primMesher = RenderingLoader.LoadRenderer(renderers[0]); + m_log.Info("[MAPTILE]: Loaded prim mesher " + m_primMesher.ToString()); + } + else + { + m_log.Info("[MAPTILE]: No prim mesher loaded, prim rendering will be disabled"); + } + + m_scene.RegisterModuleInterface(this); + } + + public void PostInitialise() + { + } + + public void Close() + { + } + + public string Name + { + get { return "Warp3DImageModule"; } + } + + public bool IsSharedModule + { + get { return false; } + } + + #endregion + + #region IMapImageGenerator Members + + public Bitmap CreateMapTile() + { + bool drawPrimVolume = true; + bool textureTerrain = true; + + try + { + IConfig startupConfig = m_config.Configs["Startup"]; + drawPrimVolume = startupConfig.GetBoolean("DrawPrimOnMapTile", drawPrimVolume); + textureTerrain = startupConfig.GetBoolean("TextureOnMapTile", textureTerrain); + } + catch + { + m_log.Warn("[MAPTILE]: Failed to load StartupConfig"); + } + + m_colors.Clear(); + + Vector3 camPos = new Vector3(127.5f, 127.5f, 221.7025033688163f); + Viewport viewport = new Viewport(camPos, -Vector3.UnitZ, 1024f, 0.1f, (int)Constants.RegionSize, (int)Constants.RegionSize, (float)Constants.RegionSize, (float)Constants.RegionSize); + + int width = viewport.Width; + int height = viewport.Height; + + if (m_useAntiAliasing) + { + width *= 2; + height *= 2; + } + + WarpRenderer renderer = new WarpRenderer(); + renderer.CreateScene(width, height); + renderer.Scene.autoCalcNormals = false; + + #region Camera + + warp_Vector pos = ConvertVector(viewport.Position); + pos.z -= 0.001f; // Works around an issue with the Warp3D camera + warp_Vector lookat = warp_Vector.add(ConvertVector(viewport.Position), ConvertVector(viewport.LookDirection)); + + renderer.Scene.defaultCamera.setPos(pos); + renderer.Scene.defaultCamera.lookAt(lookat); + + if (viewport.Orthographic) + { + renderer.Scene.defaultCamera.isOrthographic = true; + renderer.Scene.defaultCamera.orthoViewWidth = viewport.OrthoWindowWidth; + renderer.Scene.defaultCamera.orthoViewHeight = viewport.OrthoWindowHeight; + } + else + { + float fov = viewport.FieldOfView; + fov *= 1.75f; // FIXME: ??? + renderer.Scene.defaultCamera.setFov(fov); + } + + #endregion Camera + + renderer.Scene.addLight("Light1", new warp_Light(new warp_Vector(0.2f, 0.2f, 1f), 0xffffff, 320, 80)); + renderer.Scene.addLight("Light2", new warp_Light(new warp_Vector(-1f, -1f, 1f), 0xffffff, 100, 40)); + + CreateWater(renderer); + CreateTerrain(renderer, textureTerrain); + if (drawPrimVolume) + CreateAllPrims(renderer); + + renderer.Render(); + Bitmap bitmap = renderer.Scene.getImage(); + + if (m_useAntiAliasing) + bitmap = ImageUtils.ResizeImage(bitmap, viewport.Width, viewport.Height); + + return bitmap; + } + + public byte[] WriteJpeg2000Image() + { + try + { + using (Bitmap mapbmp = CreateMapTile()) + return OpenJPEG.EncodeFromImage(mapbmp, true); + } + catch (Exception e) + { + // JPEG2000 encoder failed + m_log.Error("[MAPTILE]: Failed generating terrain map: " + e); + } + + return null; + } + + #endregion + + #region Rendering Methods + + private void CreateWater(WarpRenderer renderer) + { + float waterHeight = (float)m_scene.RegionInfo.RegionSettings.WaterHeight; + + renderer.AddPlane("Water", 256f * 0.5f); + renderer.Scene.sceneobject("Water").setPos(127.5f, waterHeight, 127.5f); + + renderer.AddMaterial("WaterColor", ConvertColor(WATER_COLOR)); + renderer.Scene.material("WaterColor").setTransparency((byte)((1f - WATER_COLOR.A) * 255f)); + renderer.SetObjectMaterial("Water", "WaterColor"); + } + + private void CreateTerrain(WarpRenderer renderer, bool textureTerrain) + { + ITerrainChannel terrain = m_scene.Heightmap; + float[] heightmap = terrain.GetFloatsSerialised(); + + warp_Object obj = new warp_Object(256 * 256, 255 * 255 * 2); + + for (int y = 0; y < 256; y++) + { + for (int x = 0; x < 256; x++) + { + int v = y * 256 + x; + float height = heightmap[v]; + + warp_Vector pos = ConvertVector(new Vector3(x, y, height)); + obj.addVertex(new warp_Vertex(pos, (float)x / 255f, (float)(255 - y) / 255f)); + } + } + + for (int y = 0; y < 256; y++) + { + for (int x = 0; x < 256; x++) + { + if (x < 255 && y < 255) + { + int v = y * 256 + x; + + // Normal + Vector3 v1 = new Vector3(x, y, heightmap[y * 256 + x]); + Vector3 v2 = new Vector3(x + 1, y, heightmap[y * 256 + x + 1]); + Vector3 v3 = new Vector3(x, y + 1, heightmap[(y + 1) * 256 + x]); + warp_Vector norm = ConvertVector(SurfaceNormal(v1, v2, v3)); + norm = norm.reverse(); + obj.vertex(v).n = norm; + + // Triangle 1 + obj.addTriangle( + v, + v + 1, + v + 256); + + // Triangle 2 + obj.addTriangle( + v + 256 + 1, + v + 256, + v + 1); + } + } + } + + renderer.Scene.addObject("Terrain", obj); + + UUID[] textureIDs = new UUID[4]; + float[] startHeights = new float[4]; + float[] heightRanges = new float[4]; + + RegionSettings regionInfo = m_scene.RegionInfo.RegionSettings; + + textureIDs[0] = regionInfo.TerrainTexture1; + textureIDs[1] = regionInfo.TerrainTexture2; + textureIDs[2] = regionInfo.TerrainTexture3; + textureIDs[3] = regionInfo.TerrainTexture4; + + startHeights[0] = (float)regionInfo.Elevation1SW; + startHeights[1] = (float)regionInfo.Elevation1NW; + startHeights[2] = (float)regionInfo.Elevation1SE; + startHeights[3] = (float)regionInfo.Elevation1NE; + + heightRanges[0] = (float)regionInfo.Elevation2SW; + heightRanges[1] = (float)regionInfo.Elevation2NW; + heightRanges[2] = (float)regionInfo.Elevation2SE; + heightRanges[3] = (float)regionInfo.Elevation2NE; + + uint globalX, globalY; + Utils.LongToUInts(m_scene.RegionInfo.RegionHandle, out globalX, out globalY); + + Bitmap image = TerrainSplat.Splat(heightmap, textureIDs, startHeights, heightRanges, new Vector3d(globalX, globalY, 0.0), m_scene.AssetService, textureTerrain); + warp_Texture texture = new warp_Texture(image); + warp_Material material = new warp_Material(texture); + material.setReflectivity(50); + renderer.Scene.addMaterial("TerrainColor", material); + renderer.SetObjectMaterial("Terrain", "TerrainColor"); + } + + private void CreateAllPrims(WarpRenderer renderer) + { + if (m_primMesher == null) + return; + + m_scene.ForEachSOG( + delegate(SceneObjectGroup group) + { + CreatePrim(renderer, group.RootPart); + foreach (SceneObjectPart child in group.Children.Values) + CreatePrim(renderer, child); + } + ); + } + + private void CreatePrim(WarpRenderer renderer, SceneObjectPart prim) + { + const float MIN_SIZE = 2f; + + if ((PCode)prim.Shape.PCode != PCode.Prim) + return; + if (prim.Scale.LengthSquared() < MIN_SIZE * MIN_SIZE) + return; + + Primitive omvPrim = prim.Shape.ToOmvPrimitive(prim.OffsetPosition, prim.RotationOffset); + FacetedMesh renderMesh = m_primMesher.GenerateFacetedMesh(omvPrim, DetailLevel.Medium); + if (renderMesh == null) + return; + + warp_Vector primPos = ConvertVector(prim.AbsolutePosition); + warp_Quaternion primRot = ConvertQuaternion(prim.RotationOffset); + + warp_Matrix m = warp_Matrix.quaternionMatrix(primRot); + + if (prim.ParentID != 0) + { + SceneObjectGroup group = m_scene.SceneGraph.GetGroupByPrim(prim.LocalId); + if (group != null) + m.transform(warp_Matrix.quaternionMatrix(ConvertQuaternion(group.RootPart.RotationOffset))); + } + + warp_Vector primScale = ConvertVector(prim.Scale); + + string primID = prim.UUID.ToString(); + + // Create the prim faces + for (int i = 0; i < renderMesh.Faces.Count; i++) + { + Face face = renderMesh.Faces[i]; + string meshName = primID + "-Face-" + i.ToString(); + + warp_Object faceObj = new warp_Object(face.Vertices.Count, face.Indices.Count / 3); + + for (int j = 0; j < face.Vertices.Count; j++) + { + Vertex v = face.Vertices[j]; + + warp_Vector pos = ConvertVector(v.Position); + warp_Vector norm = ConvertVector(v.Normal); + + if (prim.Shape.SculptTexture == UUID.Zero) + norm = norm.reverse(); + warp_Vertex vert = new warp_Vertex(pos, norm, v.TexCoord.X, v.TexCoord.Y); + + faceObj.addVertex(vert); + } + + for (int j = 0; j < face.Indices.Count; j += 3) + { + faceObj.addTriangle( + face.Indices[j + 0], + face.Indices[j + 1], + face.Indices[j + 2]); + } + + Primitive.TextureEntryFace teFace = prim.Shape.Textures.GetFace((uint)i); + Color4 faceColor = GetFaceColor(teFace); + string materialName = GetOrCreateMaterial(renderer, faceColor); + + faceObj.transform(m); + faceObj.setPos(primPos); + faceObj.scaleSelf(primScale.x, primScale.y, primScale.z); + + renderer.Scene.addObject(meshName, faceObj); + + renderer.SetObjectMaterial(meshName, materialName); + } + } + + private Color4 GetFaceColor(Primitive.TextureEntryFace face) + { + Color4 color; + + if (face.TextureID == UUID.Zero) + return face.RGBA; + + if (!m_colors.TryGetValue(face.TextureID, out color)) + { + bool fetched = false; + + // Attempt to fetch the texture metadata + UUID metadataID = UUID.Combine(face.TextureID, TEXTURE_METADATA_MAGIC); + AssetBase metadata = m_scene.AssetService.GetCached(metadataID.ToString()); + if (metadata != null) + { + OSDMap map = null; + try { map = OSDParser.Deserialize(metadata.Data) as OSDMap; } catch { } + + if (map != null) + { + color = map["X-JPEG2000-RGBA"].AsColor4(); + fetched = true; + } + } + + if (!fetched) + { + // Fetch the texture, decode and get the average color, + // then save it to a temporary metadata asset + AssetBase textureAsset = m_scene.AssetService.Get(face.TextureID.ToString()); + if (textureAsset != null) + { + int width, height; + color = GetAverageColor(textureAsset.FullID, textureAsset.Data, out width, out height); + + OSDMap data = new OSDMap { { "X-JPEG2000-RGBA", OSD.FromColor4(color) } }; + metadata = new AssetBase + { + Data = System.Text.Encoding.UTF8.GetBytes(OSDParser.SerializeJsonString(data)), + Description = "Metadata for JPEG2000 texture " + face.TextureID.ToString(), + Flags = AssetFlags.Collectable, + FullID = metadataID, + ID = metadataID.ToString(), + Local = true, + Temporary = true, + Name = String.Empty, + Type = (sbyte)AssetType.Unknown + }; + m_scene.AssetService.Store(metadata); + } + else + { + color = new Color4(0.5f, 0.5f, 0.5f, 1.0f); + } + } + + m_colors[face.TextureID] = color; + } + + return color * face.RGBA; + } + + private string GetOrCreateMaterial(WarpRenderer renderer, Color4 color) + { + string name = color.ToString(); + + warp_Material material = renderer.Scene.material(name); + if (material != null) + return name; + + renderer.AddMaterial(name, ConvertColor(color)); + if (color.A < 1f) + renderer.Scene.material(name).setTransparency((byte)((1f - color.A) * 255f)); + return name; + } + + #endregion Rendering Methods + + #region Static Helpers + + private static warp_Vector ConvertVector(Vector3 vector) + { + return new warp_Vector(vector.X, vector.Z, vector.Y); + } + + private static warp_Quaternion ConvertQuaternion(Quaternion quat) + { + return new warp_Quaternion(quat.X, quat.Z, quat.Y, -quat.W); + } + + private static int ConvertColor(Color4 color) + { + int c = warp_Color.getColor((byte)(color.R * 255f), (byte)(color.G * 255f), (byte)(color.B * 255f)); + if (color.A < 1f) + c |= (byte)(color.A * 255f) << 24; + + return c; + } + + private static Vector3 SurfaceNormal(Vector3 c1, Vector3 c2, Vector3 c3) + { + Vector3 edge1 = new Vector3(c2.X - c1.X, c2.Y - c1.Y, c2.Z - c1.Z); + Vector3 edge2 = new Vector3(c3.X - c1.X, c3.Y - c1.Y, c3.Z - c1.Z); + + Vector3 normal = Vector3.Cross(edge1, edge2); + normal.Normalize(); + + return normal; + } + + public static Color4 GetAverageColor(UUID textureID, byte[] j2kData, out int width, out int height) + { + ulong r = 0; + ulong g = 0; + ulong b = 0; + ulong a = 0; + + using (MemoryStream stream = new MemoryStream(j2kData)) + { + try + { + Bitmap bitmap = (Bitmap)J2kImage.FromStream(stream); + width = bitmap.Width; + height = bitmap.Height; + + BitmapData bitmapData = bitmap.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.ReadOnly, bitmap.PixelFormat); + int pixelBytes = (bitmap.PixelFormat == PixelFormat.Format24bppRgb) ? 3 : 4; + + // Sum up the individual channels + unsafe + { + if (pixelBytes == 4) + { + for (int y = 0; y < height; y++) + { + byte* row = (byte*)bitmapData.Scan0 + (y * bitmapData.Stride); + + for (int x = 0; x < width; x++) + { + b += row[x * pixelBytes + 0]; + g += row[x * pixelBytes + 1]; + r += row[x * pixelBytes + 2]; + a += row[x * pixelBytes + 3]; + } + } + } + else + { + for (int y = 0; y < height; y++) + { + byte* row = (byte*)bitmapData.Scan0 + (y * bitmapData.Stride); + + for (int x = 0; x < width; x++) + { + b += row[x * pixelBytes + 0]; + g += row[x * pixelBytes + 1]; + r += row[x * pixelBytes + 2]; + } + } + } + } + + // Get the averages for each channel + const decimal OO_255 = 1m / 255m; + decimal totalPixels = (decimal)(width * height); + + decimal rm = ((decimal)r / totalPixels) * OO_255; + decimal gm = ((decimal)g / totalPixels) * OO_255; + decimal bm = ((decimal)b / totalPixels) * OO_255; + decimal am = ((decimal)a / totalPixels) * OO_255; + + if (pixelBytes == 3) + am = 1m; + + return new Color4((float)rm, (float)gm, (float)bm, (float)am); + } + catch (Exception ex) + { + m_log.WarnFormat("[MAPTILE]: Error decoding JPEG2000 texture {0} ({1} bytes): {2}", textureID, j2kData.Length, ex.Message); + width = 0; + height = 0; + return new Color4(0.5f, 0.5f, 0.5f, 1.0f); + } + } + } + + #endregion Static Helpers + } + + public static class ImageUtils + { + /// + /// Performs bilinear interpolation between four values + /// + /// First, or top left value + /// Second, or top right value + /// Third, or bottom left value + /// Fourth, or bottom right value + /// Interpolation value on the X axis, between 0.0 and 1.0 + /// Interpolation value on fht Y axis, between 0.0 and 1.0 + /// The bilinearly interpolated result + public static float Bilinear(float v00, float v01, float v10, float v11, float xPercent, float yPercent) + { + return Utils.Lerp(Utils.Lerp(v00, v01, xPercent), Utils.Lerp(v10, v11, xPercent), yPercent); + } + + /// + /// Performs a high quality image resize + /// + /// Image to resize + /// New width + /// New height + /// Resized image + public static Bitmap ResizeImage(Image image, int width, int height) + { + Bitmap result = new Bitmap(width, height); + + using (Graphics graphics = Graphics.FromImage(result)) + { + graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; + graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; + graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; + graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality; + + graphics.DrawImage(image, 0, 0, result.Width, result.Height); + } + + return result; + } + } +} diff --git a/OpenSim/Region/CoreModules/World/Warp3DMap/Perlin.cs b/OpenSim/Region/CoreModules/World/Warp3DMap/Perlin.cs new file mode 100644 index 0000000000..af59d7a1ba --- /dev/null +++ b/OpenSim/Region/CoreModules/World/Warp3DMap/Perlin.cs @@ -0,0 +1,273 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using OpenMetaverse; + +namespace OpenSim.Region.CoreModules.World.Warp3DMap +{ + public static class Perlin + { + // We use a hardcoded seed to keep the noise generation consistent between runs + private const int SEED = 42; + + private const int SAMPLE_SIZE = 1024; + private const int B = SAMPLE_SIZE; + private const int BM = SAMPLE_SIZE - 1; + private const int N = 0x1000; + + private static readonly int[] p = new int[SAMPLE_SIZE + SAMPLE_SIZE + 2]; + private static readonly float[,] g3 = new float[SAMPLE_SIZE + SAMPLE_SIZE + 2, 3]; + private static readonly float[,] g2 = new float[SAMPLE_SIZE + SAMPLE_SIZE + 2, 2]; + private static readonly float[] g1 = new float[SAMPLE_SIZE + SAMPLE_SIZE + 2]; + + static Perlin() + { + Random rng = new Random(SEED); + int i, j, k; + + for (i = 0; i < B; i++) + { + p[i] = i; + g1[i] = (float)((rng.Next() % (B + B)) - B) / B; + + for (j = 0; j < 2; j++) + g2[i, j] = (float)((rng.Next() % (B + B)) - B) / B; + normalize2(g2, i); + + for (j = 0; j < 3; j++) + g3[i, j] = (float)((rng.Next() % (B + B)) - B) / B; + normalize3(g3, i); + } + + while (--i > 0) + { + k = p[i]; + p[i] = p[j = rng.Next() % B]; + p[j] = k; + } + + for (i = 0; i < B + 2; i++) + { + p[B + i] = p[i]; + g1[B + i] = g1[i]; + for (j = 0; j < 2; j++) + g2[B + i, j] = g2[i, j]; + for (j = 0; j < 3; j++) + g3[B + i, j] = g3[i, j]; + } + } + + public static float noise1(float arg) + { + int bx0, bx1; + float rx0, rx1, sx, t, u, v, a; + + a = arg; + + t = arg + N; + bx0 = ((int)t) & BM; + bx1 = (bx0 + 1) & BM; + rx0 = t - (int)t; + rx1 = rx0 - 1f; + + sx = s_curve(rx0); + + u = rx0 * g1[p[bx0]]; + v = rx1 * g1[p[bx1]]; + + return Utils.Lerp(u, v, sx); + } + + public static float noise2(float x, float y) + { + int bx0, bx1, by0, by1, b00, b10, b01, b11; + float rx0, rx1, ry0, ry1, sx, sy, a, b, t, u, v; + int i, j; + + t = x + N; + bx0 = ((int)t) & BM; + bx1 = (bx0 + 1) & BM; + rx0 = t - (int)t; + rx1 = rx0 - 1f; + + t = y + N; + by0 = ((int)t) & BM; + by1 = (by0 + 1) & BM; + ry0 = t - (int)t; + ry1 = ry0 - 1f; + + i = p[bx0]; + j = p[bx1]; + + b00 = p[i + by0]; + b10 = p[j + by0]; + b01 = p[i + by1]; + b11 = p[j + by1]; + + sx = s_curve(rx0); + sy = s_curve(ry0); + + u = rx0 * g2[b00, 0] + ry0 * g2[b00, 1]; + v = rx1 * g2[b10, 0] + ry0 * g2[b10, 1]; + a = Utils.Lerp(u, v, sx); + + u = rx0 * g2[b01, 0] + ry1 * g2[b01, 1]; + v = rx1 * g2[b11, 0] + ry1 * g2[b11, 1]; + b = Utils.Lerp(u, v, sx); + + return Utils.Lerp(a, b, sy); + } + + public static float noise3(float x, float y, float z) + { + int bx0, bx1, by0, by1, bz0, bz1, b00, b10, b01, b11; + float rx0, rx1, ry0, ry1, rz0, rz1, sy, sz, a, b, c, d, t, u, v; + int i, j; + + t = x + N; + bx0 = ((int)t) & BM; + bx1 = (bx0 + 1) & BM; + rx0 = t - (int)t; + rx1 = rx0 - 1f; + + t = y + N; + by0 = ((int)t) & BM; + by1 = (by0 + 1) & BM; + ry0 = t - (int)t; + ry1 = ry0 - 1f; + + t = z + N; + bz0 = ((int)t) & BM; + bz1 = (bz0 + 1) & BM; + rz0 = t - (int)t; + rz1 = rz0 - 1f; + + i = p[bx0]; + j = p[bx1]; + + b00 = p[i + by0]; + b10 = p[j + by0]; + b01 = p[i + by1]; + b11 = p[j + by1]; + + t = s_curve(rx0); + sy = s_curve(ry0); + sz = s_curve(rz0); + + u = rx0 * g3[b00 + bz0, 0] + ry0 * g3[b00 + bz0, 1] + rz0 * g3[b00 + bz0, 2]; + v = rx1 * g3[b10 + bz0, 0] + ry0 * g3[b10 + bz0, 1] + rz0 * g3[b10 + bz0, 2]; + a = Utils.Lerp(u, v, t); + + u = rx0 * g3[b01 + bz0, 0] + ry1 * g3[b01 + bz0, 1] + rz0 * g3[b01 + bz0, 2]; + v = rx1 * g3[b11 + bz0, 0] + ry1 * g3[b11 + bz0, 1] + rz0 * g3[b11 + bz0, 2]; + b = Utils.Lerp(u, v, t); + + c = Utils.Lerp(a, b, sy); + + u = rx0 * g3[b00 + bz1, 0] + ry0 * g3[b00 + bz1, 1] + rz1 * g3[b00 + bz1, 2]; + v = rx1 * g3[b10 + bz1, 0] + ry0 * g3[b10 + bz1, 1] + rz1 * g3[b10 + bz1, 2]; + a = Utils.Lerp(u, v, t); + + u = rx0 * g3[b01 + bz1, 0] + ry1 * g3[b01 + bz1, 1] + rz1 * g3[b01 + bz1, 2]; + v = rx1 * g3[b11 + bz1, 0] + ry1 * g3[b11 + bz1, 1] + rz1 * g3[b11 + bz1, 2]; + b = Utils.Lerp(u, v, t); + + d = Utils.Lerp(a, b, sy); + return Utils.Lerp(c, d, sz); + } + + public static float turbulence1(float x, float freq) + { + float t; + float v; + + for (t = 0f; freq >= 1f; freq *= 0.5f) + { + v = freq * x; + t += noise1(v) / freq; + } + return t; + } + + public static float turbulence2(float x, float y, float freq) + { + float t; + Vector2 vec; + + for (t = 0f; freq >= 1f; freq *= 0.5f) + { + vec.X = freq * x; + vec.Y = freq * y; + t += noise2(vec.X, vec.Y) / freq; + } + return t; + } + + public static float turbulence3(float x, float y, float z, float freq) + { + float t; + Vector3 vec; + + for (t = 0f; freq >= 1f; freq *= 0.5f) + { + vec.X = freq * x; + vec.Y = freq * y; + vec.Z = freq * z; + t += noise3(vec.X, vec.Y, vec.Z) / freq; + } + return t; + } + + private static void normalize2(float[,] v, int i) + { + float s; + + s = (float)Math.Sqrt(v[i, 0] * v[i, 0] + v[i, 1] * v[i, 1]); + s = 1.0f / s; + v[i, 0] = v[i, 0] * s; + v[i, 1] = v[i, 1] * s; + } + + private static void normalize3(float[,] v, int i) + { + float s; + + s = (float)Math.Sqrt(v[i, 0] * v[i, 0] + v[i, 1] * v[i, 1] + v[i, 2] * v[i, 2]); + s = 1.0f / s; + + v[i, 0] = v[i, 0] * s; + v[i, 1] = v[i, 1] * s; + v[i, 2] = v[i, 2] * s; + } + + private static float s_curve(float t) + { + return t * t * (3f - 2f * t); + } + } +} diff --git a/OpenSim/Region/CoreModules/World/Warp3DMap/TerrainSplat.cs b/OpenSim/Region/CoreModules/World/Warp3DMap/TerrainSplat.cs new file mode 100644 index 0000000000..7bf675daff --- /dev/null +++ b/OpenSim/Region/CoreModules/World/Warp3DMap/TerrainSplat.cs @@ -0,0 +1,343 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Diagnostics; +using System.Drawing; +using System.Drawing.Imaging; +using log4net; +using OpenMetaverse; +using OpenSim.Framework; +using OpenSim.Services.Interfaces; + +namespace OpenSim.Region.CoreModules.World.Warp3DMap +{ + public static class TerrainSplat + { + #region Constants + + private static readonly UUID DIRT_DETAIL = new UUID("0bc58228-74a0-7e83-89bc-5c23464bcec5"); + private static readonly UUID GRASS_DETAIL = new UUID("63338ede-0037-c4fd-855b-015d77112fc8"); + private static readonly UUID MOUNTAIN_DETAIL = new UUID("303cd381-8560-7579-23f1-f0a880799740"); + private static readonly UUID ROCK_DETAIL = new UUID("53a2f406-4895-1d13-d541-d2e3b86bc19c"); + + private static readonly UUID[] DEFAULT_TERRAIN_DETAIL = new UUID[] + { + DIRT_DETAIL, + GRASS_DETAIL, + MOUNTAIN_DETAIL, + ROCK_DETAIL + }; + + private static readonly Color[] DEFAULT_TERRAIN_COLOR = new Color[] + { + Color.FromArgb(255, 164, 136, 117), + Color.FromArgb(255, 65, 87, 47), + Color.FromArgb(255, 157, 145, 131), + Color.FromArgb(255, 125, 128, 130) + }; + + private static readonly UUID TERRAIN_CACHE_MAGIC = new UUID("2c0c7ef2-56be-4eb8-aacb-76712c535b4b"); + + #endregion Constants + + private static readonly ILog m_log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name); + + /// + /// Builds a composited terrain texture given the region texture + /// and heightmap settings + /// + /// Terrain heightmap + /// Region information including terrain texture parameters + /// A composited 256x256 RGB texture ready for rendering + /// Based on the algorithm described at http://opensimulator.org/wiki/Terrain_Splatting + /// + public static Bitmap Splat(float[] heightmap, UUID[] textureIDs, float[] startHeights, float[] heightRanges, Vector3d regionPosition, IAssetService assetService, bool textureTerrain) + { + Debug.Assert(heightmap.Length == 256 * 256); + Debug.Assert(textureIDs.Length == 4); + Debug.Assert(startHeights.Length == 4); + Debug.Assert(heightRanges.Length == 4); + + Bitmap[] detailTexture = new Bitmap[4]; + + if (textureTerrain) + { + // Swap empty terrain textureIDs with default IDs + for (int i = 0; i < textureIDs.Length; i++) + { + if (textureIDs[i] == UUID.Zero) + textureIDs[i] = DEFAULT_TERRAIN_DETAIL[i]; + } + + #region Texture Fetching + + if (assetService != null) + { + for (int i = 0; i < 4; i++) + { + AssetBase asset; + UUID cacheID = UUID.Combine(TERRAIN_CACHE_MAGIC, textureIDs[i]); + + // Try to fetch a cached copy of the decoded/resized version of this texture + asset = assetService.GetCached(cacheID.ToString()); + if (asset != null) + { + try + { + using (System.IO.MemoryStream stream = new System.IO.MemoryStream(asset.Data)) + detailTexture[i] = (Bitmap)Image.FromStream(stream); + } + catch (Exception ex) + { + m_log.Warn("Failed to decode cached terrain texture " + cacheID + + " (textureID: " + textureIDs[i] + "): " + ex.Message); + } + } + + if (detailTexture[i] == null) + { + // Try to fetch the original JPEG2000 texture, resize if needed, and cache as PNG + asset = assetService.Get(textureIDs[i].ToString()); + if (asset != null) + { + try { detailTexture[i] = (Bitmap)CSJ2K.J2kImage.FromBytes(asset.Data); } + catch (Exception ex) + { + m_log.Warn("Failed to decode terrain texture " + asset.ID + ": " + ex.Message); + } + } + + if (detailTexture[i] != null) + { + Bitmap bitmap = detailTexture[i]; + + // Make sure this texture is the correct size, otherwise resize + if (bitmap.Width != 256 || bitmap.Height != 256) + bitmap = ImageUtils.ResizeImage(bitmap, 256, 256); + + // Save the decoded and resized texture to the cache + byte[] data; + using (System.IO.MemoryStream stream = new System.IO.MemoryStream()) + { + bitmap.Save(stream, ImageFormat.Png); + data = stream.ToArray(); + } + + // Cache a PNG copy of this terrain texture + AssetBase newAsset = new AssetBase + { + Data = data, + Description = "PNG", + Flags = AssetFlags.Collectable, + FullID = cacheID, + ID = cacheID.ToString(), + Local = true, + Name = String.Empty, + Temporary = true, + Type = (sbyte)AssetType.Unknown + }; + newAsset.Metadata.ContentType = "image/png"; + assetService.Store(newAsset); + } + } + } + } + + #endregion Texture Fetching + } + + // Fill in any missing textures with a solid color + for (int i = 0; i < 4; i++) + { + if (detailTexture[i] == null) + { + // Create a solid color texture for this layer + detailTexture[i] = new Bitmap(256, 256, PixelFormat.Format24bppRgb); + using (Graphics gfx = Graphics.FromImage(detailTexture[i])) + { + using (SolidBrush brush = new SolidBrush(DEFAULT_TERRAIN_COLOR[i])) + gfx.FillRectangle(brush, 0, 0, 256, 256); + } + } + } + + #region Layer Map + + float[] layermap = new float[256 * 256]; + + for (int y = 0; y < 256; y++) + { + for (int x = 0; x < 256; x++) + { + float height = heightmap[y * 256 + x]; + + float pctX = (float)x / 255f; + float pctY = (float)y / 255f; + + // Use bilinear interpolation between the four corners of start height and + // height range to select the current values at this position + float startHeight = ImageUtils.Bilinear( + startHeights[0], + startHeights[2], + startHeights[1], + startHeights[3], + pctX, pctY); + startHeight = Utils.Clamp(startHeight, 0f, 255f); + + float heightRange = ImageUtils.Bilinear( + heightRanges[0], + heightRanges[2], + heightRanges[1], + heightRanges[3], + pctX, pctY); + heightRange = Utils.Clamp(heightRange, 0f, 255f); + + // Generate two frequencies of perlin noise based on our global position + // The magic values were taken from http://opensimulator.org/wiki/Terrain_Splatting + Vector3 vec = new Vector3 + ( + ((float)regionPosition.X + x) * 0.20319f, + ((float)regionPosition.Y + y) * 0.20319f, + height * 0.25f + ); + + float lowFreq = Perlin.noise2(vec.X * 0.222222f, vec.Y * 0.222222f) * 6.5f; + float highFreq = Perlin.turbulence2(vec.X, vec.Y, 2f) * 2.25f; + float noise = (lowFreq + highFreq) * 2f; + + // Combine the current height, generated noise, start height, and height range parameters, then scale all of it + float layer = ((height + noise - startHeight) / heightRange) * 4f; + if (Single.IsNaN(layer)) layer = 0f; + layermap[y * 256 + x] = Utils.Clamp(layer, 0f, 3f); + } + } + + #endregion Layer Map + + #region Texture Compositing + + Bitmap output = new Bitmap(256, 256, PixelFormat.Format24bppRgb); + BitmapData outputData = output.LockBits(new Rectangle(0, 0, 256, 256), ImageLockMode.WriteOnly, PixelFormat.Format24bppRgb); + + unsafe + { + // Get handles to all of the texture data arrays + BitmapData[] datas = new BitmapData[] + { + detailTexture[0].LockBits(new Rectangle(0, 0, 256, 256), ImageLockMode.ReadOnly, detailTexture[0].PixelFormat), + detailTexture[1].LockBits(new Rectangle(0, 0, 256, 256), ImageLockMode.ReadOnly, detailTexture[1].PixelFormat), + detailTexture[2].LockBits(new Rectangle(0, 0, 256, 256), ImageLockMode.ReadOnly, detailTexture[2].PixelFormat), + detailTexture[3].LockBits(new Rectangle(0, 0, 256, 256), ImageLockMode.ReadOnly, detailTexture[3].PixelFormat) + }; + + int[] comps = new int[] + { + (datas[0].PixelFormat == PixelFormat.Format32bppArgb) ? 4 : 3, + (datas[1].PixelFormat == PixelFormat.Format32bppArgb) ? 4 : 3, + (datas[2].PixelFormat == PixelFormat.Format32bppArgb) ? 4 : 3, + (datas[3].PixelFormat == PixelFormat.Format32bppArgb) ? 4 : 3 + }; + + for (int y = 0; y < 256; y++) + { + for (int x = 0; x < 256; x++) + { + float layer = layermap[y * 256 + x]; + + // Select two textures + int l0 = (int)Math.Floor(layer); + int l1 = Math.Min(l0 + 1, 3); + + byte* ptrA = (byte*)datas[l0].Scan0 + y * datas[l0].Stride + x * comps[l0]; + byte* ptrB = (byte*)datas[l1].Scan0 + y * datas[l1].Stride + x * comps[l1]; + byte* ptrO = (byte*)outputData.Scan0 + y * outputData.Stride + x * 3; + + float aB = *(ptrA + 0); + float aG = *(ptrA + 1); + float aR = *(ptrA + 2); + + float bB = *(ptrB + 0); + float bG = *(ptrB + 1); + float bR = *(ptrB + 2); + + float layerDiff = layer - l0; + + // Interpolate between the two selected textures + *(ptrO + 0) = (byte)Math.Floor(aB + layerDiff * (bB - aB)); + *(ptrO + 1) = (byte)Math.Floor(aG + layerDiff * (bG - aG)); + *(ptrO + 2) = (byte)Math.Floor(aR + layerDiff * (bR - aR)); + } + } + + for (int i = 0; i < 4; i++) + detailTexture[i].UnlockBits(datas[i]); + } + + output.UnlockBits(outputData); + + // We generated the texture upside down, so flip it + output.RotateFlip(RotateFlipType.RotateNoneFlipY); + + #endregion Texture Compositing + + return output; + } + + public static Bitmap SplatSimple(float[] heightmap) + { + const float BASE_HSV_H = 93f / 360f; + const float BASE_HSV_S = 44f / 100f; + const float BASE_HSV_V = 34f / 100f; + + Bitmap img = new Bitmap(256, 256); + BitmapData bitmapData = img.LockBits(new Rectangle(0, 0, 256, 256), ImageLockMode.WriteOnly, PixelFormat.Format24bppRgb); + + unsafe + { + for (int y = 255; y >= 0; y--) + { + for (int x = 0; x < 256; x++) + { + float normHeight = heightmap[y * 256 + x] / 255f; + normHeight = Utils.Clamp(normHeight, BASE_HSV_V, 1.0f); + + Color4 color = Color4.FromHSV(BASE_HSV_H, BASE_HSV_S, normHeight); + + byte* ptr = (byte*)bitmapData.Scan0 + y * bitmapData.Stride + x * 3; + *(ptr + 0) = (byte)(color.B * 255f); + *(ptr + 1) = (byte)(color.G * 255f); + *(ptr + 2) = (byte)(color.R * 255f); + } + } + } + + img.UnlockBits(bitmapData); + return img; + } + } +} diff --git a/OpenSim/Region/CoreModules/World/Warp3DMap/Viewport.cs b/OpenSim/Region/CoreModules/World/Warp3DMap/Viewport.cs new file mode 100644 index 0000000000..472f86e5fa --- /dev/null +++ b/OpenSim/Region/CoreModules/World/Warp3DMap/Viewport.cs @@ -0,0 +1,165 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Drawing; +using OpenMetaverse; + +namespace OpenSim.Region.CoreModules.World.Warp3DMap +{ + public class Viewport + { + private const float DEG_TO_RAD = (float)Math.PI / 180f; + private static readonly Vector3 UP_DIRECTION = Vector3.UnitZ; + + public Vector3 Position; + public Vector3 LookDirection; + public float FieldOfView; + public float NearPlaneDistance; + public float FarPlaneDistance; + public int Width; + public int Height; + public bool Orthographic; + public float OrthoWindowWidth; + public float OrthoWindowHeight; + + public Viewport(Vector3 position, Vector3 lookDirection, float fieldOfView, float farPlaneDist, float nearPlaneDist, int width, int height) + { + // Perspective projection mode + Position = position; + LookDirection = lookDirection; + FieldOfView = fieldOfView; + FarPlaneDistance = farPlaneDist; + NearPlaneDistance = nearPlaneDist; + Width = width; + Height = height; + } + + public Viewport(Vector3 position, Vector3 lookDirection, float farPlaneDist, float nearPlaneDist, int width, int height, float orthoWindowWidth, float orthoWindowHeight) + { + // Orthographic projection mode + Position = position; + LookDirection = lookDirection; + FarPlaneDistance = farPlaneDist; + NearPlaneDistance = nearPlaneDist; + Width = width; + Height = height; + OrthoWindowWidth = orthoWindowWidth; + OrthoWindowHeight = orthoWindowHeight; + Orthographic = true; + } + + public Point VectorToScreen(Vector3 v) + { + Matrix4 m = GetWorldToViewportMatrix(); + Vector3 screenPoint = v * m; + return new Point((int)screenPoint.X, (int)screenPoint.Y); + } + + public Matrix4 GetWorldToViewportMatrix() + { + Matrix4 result = GetViewMatrix(); + result *= GetPerspectiveProjectionMatrix(); + result *= GetViewportMatrix(); + + return result; + } + + public Matrix4 GetViewMatrix() + { + Vector3 zAxis = -LookDirection; + zAxis.Normalize(); + + Vector3 xAxis = Vector3.Cross(UP_DIRECTION, zAxis); + xAxis.Normalize(); + + Vector3 yAxis = Vector3.Cross(zAxis, xAxis); + + Vector3 position = Position; + float offsetX = -Vector3.Dot(xAxis, position); + float offsetY = -Vector3.Dot(yAxis, position); + float offsetZ = -Vector3.Dot(zAxis, position); + + return new Matrix4( + xAxis.X, yAxis.X, zAxis.X, 0f, + xAxis.Y, yAxis.Y, zAxis.Y, 0f, + xAxis.Z, yAxis.Z, zAxis.Z, 0f, + offsetX, offsetY, offsetZ, 1f); + } + + public Matrix4 GetPerspectiveProjectionMatrix() + { + float aspectRatio = (float)Width / (float)Height; + + float hFoV = FieldOfView * DEG_TO_RAD; + float zn = NearPlaneDistance; + float zf = FarPlaneDistance; + + float xScale = 1f / (float)Math.Tan(hFoV / 2f); + float yScale = aspectRatio * xScale; + float m33 = (zf == double.PositiveInfinity) ? -1 : (zf / (zn - zf)); + float m43 = zn * m33; + + return new Matrix4( + xScale, 0f, 0f, 0f, + 0f, yScale, 0f, 0f, + 0f, 0f, m33, -1f, + 0f, 0f, m43, 0f); + } + + public Matrix4 GetOrthographicProjectionMatrix(float aspectRatio) + { + float w = Width; + float h = Height; + float zn = NearPlaneDistance; + float zf = FarPlaneDistance; + + float m33 = 1 / (zn - zf); + float m43 = zn * m33; + + return new Matrix4( + 2f / w, 0f, 0f, 0f, + 0f, 2f / h, 0f, 0f, + 0f, 0f, m33, 0f, + 0f, 0f, m43, 1f); + } + + public Matrix4 GetViewportMatrix() + { + float scaleX = (float)Width * 0.5f; + float scaleY = (float)Height * 0.5f; + float offsetX = 0f + scaleX; + float offsetY = 0f + scaleY; + + return new Matrix4( + scaleX, 0f, 0f, 0f, + 0f, -scaleY, 0f, 0f, + 0f, 0f, 1f, 0f, + offsetX, offsetY, 0f, 1f); + } + } +} From 4f70ac018b9084e429fc5161b868ed739da81bd1 Mon Sep 17 00:00:00 2001 From: Melanie Date: Sun, 3 Oct 2010 16:40:11 +0100 Subject: [PATCH 4/7] Adapt to core changes --- OpenSim/Region/CoreModules/World/Warp3DMap/MapImageModule.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Region/CoreModules/World/Warp3DMap/MapImageModule.cs b/OpenSim/Region/CoreModules/World/Warp3DMap/MapImageModule.cs index 47b163925d..a99b20c91d 100644 --- a/OpenSim/Region/CoreModules/World/Warp3DMap/MapImageModule.cs +++ b/OpenSim/Region/CoreModules/World/Warp3DMap/MapImageModule.cs @@ -310,7 +310,7 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap delegate(SceneObjectGroup group) { CreatePrim(renderer, group.RootPart); - foreach (SceneObjectPart child in group.Children.Values) + foreach (SceneObjectPart child in group.Parts) CreatePrim(renderer, child); } ); From 0b13cfa4dd729b9142b1f7c5669390dae80d760a Mon Sep 17 00:00:00 2001 From: Melanie Date: Sun, 3 Oct 2010 16:50:50 +0100 Subject: [PATCH 5/7] Port ExecutingDirectory from omfOS Util class. --- OpenSim/Framework/Util.cs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs index e7a7f49148..addfe5d1af 100644 --- a/OpenSim/Framework/Util.cs +++ b/OpenSim/Framework/Util.cs @@ -91,6 +91,17 @@ namespace OpenSim.Framework public static FireAndForgetMethod FireAndForgetMethod = FireAndForgetMethod.SmartThreadPool; + /// + /// Gets the name of the directory where the current running executable + /// is located + /// + /// Filesystem path to the directory containing the current + /// executable + public static string ExecutingDirectory() + { + return Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); + } + /// /// Linear interpolates B<->C using percent A /// From bda02da152090c0902dc39557419376f4b017bae Mon Sep 17 00:00:00 2001 From: Melanie Date: Sun, 3 Oct 2010 16:57:45 +0100 Subject: [PATCH 6/7] Add the Warp3D dll --- bin/Warp3D.dll | Bin 0 -> 77824 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 bin/Warp3D.dll diff --git a/bin/Warp3D.dll b/bin/Warp3D.dll new file mode 100644 index 0000000000000000000000000000000000000000..8781a82bab7dca696490eb41e89f08f2db9c2716 GIT binary patch literal 77824 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 R8t7}FuYtY>{?BRPzW{xD_vios literal 0 HcmV?d00001 From 72c1b09d5792af6f1bfac3bb1215b56bd11a6b87 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Sun, 3 Oct 2010 10:35:53 -0700 Subject: [PATCH 7/7] Upgraded Mono.Addins.dll to 0.5, coming from here: http://monoaddins.codeplex.com/ --- ThirdPartyLicenses/MonoAddins.txt | 41 +++++++++++++++++++++++++++++ bin/Mono.Addins.CecilReflector.dll | Bin 0 -> 364032 bytes bin/Mono.Addins.Setup.dll | Bin 0 -> 103424 bytes bin/Mono.Addins.dll | Bin 185344 -> 202752 bytes 4 files changed, 41 insertions(+) create mode 100644 ThirdPartyLicenses/MonoAddins.txt create mode 100644 bin/Mono.Addins.CecilReflector.dll create mode 100644 bin/Mono.Addins.Setup.dll diff --git a/ThirdPartyLicenses/MonoAddins.txt b/ThirdPartyLicenses/MonoAddins.txt new file mode 100644 index 0000000000..10c23b37dd --- /dev/null +++ b/ThirdPartyLicenses/MonoAddins.txt @@ -0,0 +1,41 @@ +Authors: Lluis Sanchez Gual + +The MIT License + +Copyright (C) 2007 Novell, Inc (http://www.novell.com) + + + +Permission is hereby granted, free of charge, to any person obtaining +a copy + of this software and associated documentation files (the "Software"), +to deal + in the Software without restriction, including without limitation +the rights +to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell +copies of the Software, and to permit persons to whom the +Software is +furnished to do so, subject to the following conditions: + + + +The above copyright notice and this permission notice shall be included in + +all copies or substantial portions of the Software. + + + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. +IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/bin/Mono.Addins.CecilReflector.dll b/bin/Mono.Addins.CecilReflector.dll new file mode 100644 index 0000000000000000000000000000000000000000..a1a638265cadfb76da851ff70a83701cfc7b6362 GIT binary patch literal 364032 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 literal 0 HcmV?d00001 diff --git a/bin/Mono.Addins.Setup.dll b/bin/Mono.Addins.Setup.dll new file mode 100644 index 0000000000000000000000000000000000000000..8aa6d5f2cf1f1f4cae069eabea7c1a10a4d7c101 GIT binary patch literal 103424 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 literal 0 HcmV?d00001 diff --git a/bin/Mono.Addins.dll b/bin/Mono.Addins.dll index 5dc95203dbc8044042adfcc9a8c824d1c7630fa9..ea330fdc9b7d3f098d3ccb58d877b5630a4199c0 100644 GIT binary patch literal 202752 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 literal 185344 zcmdSC3!G$Cb?<-X)TvWdr@DKlrh2Mprh#c5(-f^ji-Oe+&I~FdAR;QtfV@FP#Dmo{ zMrj)X6W^fGsBzR7QDS`LVXhiA8YL#ajrfYs4jL10p7-7)CO5f8{eORJ?NfESy9V_0 zx&Qy?^RG{zKIg3cT6?Xv*Is+?wf8yi;#WtND2fuUpZzR~KEz$WefIyp|J_3H#IBD_ zMDK5W@#qh2dh8dEe$q3pTbjACpFh2S&(P?50Z8IBELqqO|Wt6Pucw(kS{u?1(8~CR~Q?K7TI-3xE6V zqc*_xQ@x^Si~SAn;nl*TX!}eQoo~;T=tfTvLc(pP5{<2e{9JEaW}>KGig^w1k14&M zc;MRS9pL@I=RuY*t82i!hz9tI6Z=d3s{uG}AgGG|`Pzv4VAqNLYoC=9(QpN4qrq1; z#Crs(*Zh9Ad&|te5@g?uzg!&ddV3tts?X@(<&Vt!XFl)R^RB$^+0hM4SLgj}uRZaa zXFV$_a`Ji$lP&Mw6#ezSP0=Qve;h@r-u3&@-^bA{_VoYmzxI3_WzDWn55;lP-N2tXCj$GIvzGtbn;kdr1HGMu7%rgsmc3eldpl2naGU6Q7A)AJ`q4}~cFwI-4zr*&ovV(R1^uSs50o|R;()14%G zmM(f&ntvmX(q=8Z*7CD9MQKjM$i{oSN!`fdKz86bkQ=M#pCPbn6=AuJ)cvV5{mS97PH3q?H_; z(nH!x7nQUpQq}TfNZCsB&3wcSj+O@dSs#PZvBSE{~sxN?T)Dm7Nc;1HCuM4q` z0Y+gqIoE2;o$*l0CCWRw`dm98q>|_-_@lWNxo+W79rc@@AB$eZo$yw&eIJ-d@iJ^m z7NB-`oa>#$bF%1x)Ts#6<6Lj6MTA)eSdVjYr3*dMcv+&He?kn4E0akViAtNRO0$Y^ zN9h8wA*a)KE;{1~$Mp)Ja5<9xQat_0Gh{Fa-Vcnfr+!FZ%Mo5YjVMdR&9X{=T1{($ z=LIE>Qv)R37DdHr#UB!rt#mFY@>6Sv6gJrh=`66}@}J zoC;-QJ@KmUVz8H3&6){ieky!kG!!h0T28LnY&|!gexVSy`Y4uyh)M~F#LJ@U;VA#tm^C|U2r!W*|#T!AH~m$RU}&L`LfIj!~|B+){Uviu83$XNZ3>)J_Y zymu^d>WxFqS{K>Q+SN*&w5n5`PL~o>r+8!PqVYy6+52@6SB+0ZnGpdoPv`Vp4bScQ zX4E4by0-+LNTw{8EDaJ{mTxeLVi)g0#JNdy=|iJ`f;ZHxHJK&-Gr+piZG&1fUT(mP zT28sySbgDPLj0hFmi&+AWg=NXFhH8Fy(qC7^l*=)iXe4@R<631@TSfi(j5que}Wu( zAP`NCQ-|)6ytb2c@zOyI zE%GEmKLJ=>{4D<`v&nWX*_v*xc2~(49h+`9)nfwJZuG7qQY-Wfs(ZUmX(%Byuh$!b zNwK3pvjypeR-Lymi6Y1At+oL9xDg!-GVOkgf1N!c13}sZWt3oT>@|ZnHnLwy%hmC^ ztEMMX0$92FFrE#oI#8euQ=ko3pe=gmXwXL6Q0jTSzk++YAGihBrNCCXl(~LK#ogV| zcdk9ZEqXKWP#f7Z6+Ribl9d?qFTR03#3coWqN)-`Vl$7R%@FB zTLfCFgYx_r>@8%~R94WFUgFV23VM#tkzT?~g#~r5{x}}e{2Mql%vfmTLt6pMv6XZT zlhB3y-hJx8P^GDIo$jIuIQg1 zOtMS3Udg4lsNeMbW1@SgIjumnnG)}1rb+htXQF_T{!^qprG=I-CbF9fdM!HjoCBTF z=qA=3G~-IAi_l_8k->QHUh*zAV+=fF-+<rYWkf9WEbehw7*vIOvd0!RnDJ zWObGzX78KfKi#=Xr05srd*Ar}SZYAxmvg;`>l8Rv)+tX1rgm`&@IoGVjh?`DEU<%I zLXkW+J=go#iuJKc|M^9SYVXM7H2vRs#D&e+cC?(t+fxTc1l`=4Yz! zX8N$^`Y<&cKc1{~yAWNXUdZoGo@LKUjtd<)J%3wtE=CIK9{F8*qomhWP>#~bmd*mu ztmLO93}W`60HR9&W#FDK0+<{#i)P&Zx07V@r<*!I-PEqeT?~Vi!9aE4g^<8TJ7bCW zLiL^~Mh}8&$_~_^OuJU6OQ~6h)~dA|t;Vhg<~s;&XRU18X(lv{PAkhnKT~l3^9AvE zOWR|uG0c&PPJ6ufYGpmv8b8!-#;s<{b!>ZcYqQix*51Mcf|#|TuxQ%a(rTGO({8ug zb!qI`vkk)p6`6r!HzwwkBKK z_I?DxZH@Cf-WqRB?0vdkgZg4RD2!@Gn!r`3)ApV;eQSG(PE+;PRBOsh+U~9ByMw&8 zk7`9d1UQ03J6k)c-VvSlbWgl*?QBgSYVT-aN{b9GRIME*iv2H(yI+8RIodjFO;d;I z)^zKLy`NGY0vC_!Jx%!>Rl@E_^z@NicXdx8=^}cHw%KS?TZE6y4a!sbuy_+W01+m|1JB z^v@(HU48^C-w>2r5XQj9pxZ5ou54q_2P}wwb$t-ykY97%d2Pk@&Fi_Bb>~jr9|Z1n zz-!=|f)o75+{^JF!21h;zjGZN>>}BWf5g2U|5{)fFe)~HPtWhr{8$7dT1-blY%@`s zJ!-&gg=wVYKs!q+X?_USCcBqaxv7g*bX%1I80&vom9{Ar8xhr)j-jNRRtX~yW8M42 zI&}!O(VTlsQ8MFK^y^^!imr~wlS(6hlb8JnFI%@&noZQM_A9Zt+n~R;!dul+>BZpo zcLtI(a&QZ8t|2piDEmm#_-wV%0e3VGEpG!0^ z`oZb>Bcngyou&+}A6?YA*;@t}X#GIZI?a!h?I~Mv+!RHyY-R`?g8`3pBIpKN>iJus zOeHK@v7Y*XT0N~FvOf3D`qV{Zb;9@l zEv45Ot4~C~PYmp0@v-Te_0dRTs-BVQkP|AHfwiWH%@UPSgn4D z>5C(Xt|>{M5Q7V$|9${5T1odf1y@^DFLkfD#CR-}xSH}hYmM0uZtVSS&@JQ9^6>!C zY<_1q_g8Z%9dfbhbMd6jtZ}QV29qm<=!R_4-=bp@GpuZUkspwmiS2hp^fA&;iWW?d z6k`ahO7p=}?ds|tVr!&T z?aq?SOh|!`w<4@v*?3-JFw$)4%(bd>1QxO*Vn2`T?OcWIOwaEu+Dnj~{BB82$*TQ@ z=F{UYvgQ_rjoHFGEXhn)H!J-YA^*OTVEVF_KODQ&*t>BiRs%CLnbr37QyagCOX~7S zuCl(niT4+C4ejWqh~*aP%T{F(Z5DNw-T-&EY`PgFgE1d>RtQN%;w&?>n4w+Lg;wcU zCEo*TZuA$O`$=R|=|71TG)uzhRkFKz>t^AZU1z;`|9J{VO?fY0UyxQ$7NllNBZu)g z*{<=N4n06AnD3&AXNzYLW~~}P zPE{A?O8}M`({{7f%&&&Y!x`#D5u!+>F(;W@V|&8@t8A1F!N_}v)_Ctcp*3DYYpm89 zbF5BQ0iq*-vxUS&Yhppd+?p7P#+XfckeQ+J&H)ohjWV|d42Df*R9kStqz3ICh5sg*^DTT523TbNC(bzv0CDlg^#*kKms>Vr8yHBdys zWVMhx&BGoA41=X*Wn`&mo?`30ifpk@yCl-&%k=zKli6wFvL>-CR2JZWSvhCD65x+X z=Tn3CApb6m{XHr2g=n#m@za!hxLAXe~fa0isSul@9SG z2%&HIBGA?Syw7e7`*XsWK08gZCs#5M59lksuU_^_MW4E%=!XIMu5?7`PcIJw?qMYG?i(V3!u%z$LhB<;{w{t=lm@l!p- zs!n5TP2p*~o-9kA79<>WFX$#;a5Wp=mW>0{;~Ci6fvC z0@N2abE~sRp5zAz>Z#3z>Tr7npujE#fK-@gv09s8yB#63R;F$%-FrHkJWO;;-PuY` zy;6cqCOLXK9f<+D=vUalv4lR6nX<9~@)*9~} zCrm<5O2y;$7zK?jKb$Dsz!R5@=c>HWL7MLb?UY2L%cBbjnQ!(Pz0HGeI&M#3aZhxq zb~@YI>^<&qMsM?|42w>UY?0|HNh_TNgP!9>yVlm$;Vr|si!~H1vcOsiVUeS;xqmh} z+HBFBH@YN$If)k3TGvLrzKEDiuFwR~tI4wN$ugQL(JWuODi*f46bjwUz1EhY1zu$6 zb$Q>qx@_IL_5SLDIxzc#TeM6gKZE;6xvN|nhUu11BP%dCV%cJiJ@HK5A$;_Xb@1;Y z8&3lM&=Q3WUpqX%$F(J24v`4ggN5g#Skny4aCl)w2pK^9b0YT5&B=vp9zHJYw6Q^exrg<;E`39W%!@e zml0o9CA);Dvke=>HRzHqr0X^F#X2hujYD793ffOA_vZG*d=kS(P2HzIO&`sZ^)v0- zsII78w;l#9M{yZC3zDF^3ZVL(R<%;aL}JDx)x^Df`3x{RhWJHnbsihCu>ND?IBnqb z^CL2NB-g{>filw%wnfsR+kjohH7+2(_I%y?aU@w|?5&YgS1ll2kO7qDPv@U`MWm+9 z=lVZ}X_B!v{z7MQN2swcGHAS@Chw0)j&jKIH;~xW`(&{q+pR$Mxqh?G8lc57vrqk1 zHYtCy&C$hVGDDsf6NoLFD*aQ4+=p*B=Csu;OK;xCZP(@b8UBV8l-{WN;LW?Qw7-|M zUJmU*3*+tiW1`=soTDjcBB|!T3Z5~ed}LM&J@go?{(f3Dhge$7O%XhJ=fjs8K3Xx= zsF_obby^e2vU=NE&O|eC&FSY)Abzh-db~EQcai~wkf*b$$?}*NRL?)Jj2lEmWV_HU zosH>2Q0i%Ft0}ew;Q@wwO>-jRZEJ{g1uM%iWDY4YAJbzAXF5l9NxGMU&;`}UoA6g3 zALmE#KGih8vQ=sKtYRx?KiyfKyr9xQ7kZ_pk~+;*>s*Ku)rR(_Ue(5QDY>`%mf6O< zv&1Fg2`eep9Fa?HIyp}A3wTb9Oipd51+FMUw3dH{THE-q0DKle$SAdprp8yLcvpAu zZ>-XP1-RB7*YP2)jkUNwgSfhsM!2@;tETsMi-wqi8~6^LMMrEJtyK=`_*AgD0Ky?S z(drTW%kGn4#aM!frYof{mCET=iyp-@I;zOustw>E9qN||kB81E@Av=?C&EI9w;|WJb z!uTV}|IACnD2Z0pF=Rz=2LtH2x8a6r9(iGHCe0y`Kd%+UG9FS^x|E;S)ysv2gK|H0 z-{qe9f2Z7u=(*rPUr4za4uun>9@lneVYapgR;FbZL{_}~)C9tG-4hA3+0h=!@ilyG z@xD>>dtq}l&%r#S_<~xDuHYK#`ZPi(*e~EGd)6PzW#><#EcflbjR+5k4W)WMUX=BSA>-d7 z%8JqjmcG4sAH`C|GnNi`DrTL|g=7qPI!*tr#)PpLa54{~fYaTMld=jpy%WgB(p*;> zRme*yL*qdi(1oBZuCAcd6UGOOaWHIG=z|i`P3wnW=Z^gc4v;!od>5~=nN=%#cj(j# znDVUTxsA3Yjq$SOx~$wvVUwQ522TMz7#cNgJW{iP5hNd`_Yqe}`FyHc^Wl$8W^SXf zk;_^hzhtmrO42f;x|=FkCBt_0G@ci@-pZv6^*bjx_wx>!MJlx&w~ZbQO)BQ_UCC$Y z_#A!N_vt6u9Pkq^pIF^z&1>Uc)6B({FnI_-J-h6g@b9rEcl(6j;AXSJ@4UC zJN*e)LC=EDCjz@>9b8@P4O}nhQZ4nHo?nb^gzgVD8p?JxXHC2}d9-!Yj1{)WfN@xY zNvpO@P#vyakM+JzMq$B?zCsS~#};eXEaktNP^1O|WCy5v%w#cyi8TS^D{?szVlNSX zO{n0r;hjcX`3$K#d(Kl9gOvPn~Kq|&_UBB9dy&w?Wo30yF2%!5ZI>g?_BylICBeDD4P46N`D7ieBxy#%0EHC zT=cj#u(tx6#do%0<4KjnY~zLSX3Hi|Rq0l#`g9nF9pQPW2J~<= zv-(Rnwxef}*C{Y{WPa`$j0)a_$LJU_lgSIPvM0E8=F(j=a%sw%dcgE#x;O3A%nR;< zYFeARs9xJYwcp<-l9W!~)*CLEVqA1&^eu8bm2xYFTVm+jqofDrGp?KiMPLuU7sL*F z=lKkDH$6xH#?WYQh=Qa5erWTP7J#{qX08MMmB3+Wlz!fS;Zg9!sQrmDB;4aFEl zRSKriWJCX_k(vy3JMhu?Ri5d8qCep(%hd_IQ(N0lGnAjo&60{70;LBeFLTjiC5avQ zZGgx|H-g#LHCFQT!D+5C_q5RWq2d!}v}SY*U0`(E;li*T&_!lDXwBdO;G*C5LR_hS z5ZB#P_h5ppk=>&$rTW*aJsB2+O3xn;M!pI&xdM|4bSnMbCgdtH|1bhw=|98(mPk@x z>ErD{Gf<)s<2(b*2=F0m7uw55XJo(Fv&?TN#455TM{6@gQJx;fkg4>QXZ|XsQNA#W zJ$>lIg!Ywa9wK^}wTGKk!Tif&gXmC9n^aa5SKTS?CzHO`*wn_Zml4-yI9!}9gRN2i zwIYkcO+U3PYLqu-b-|8lG0Ol?w?y&H`yk)XGo_MF-9CeO?(Xcm{4MhFXD9$t+NUxP zPWmA>%c6F7fLM4}QC?@mG0wjUinFxK@o1TJi^9iw38}r`Z}z0^f?tqCAxmveZ$Sj} zN9%;$DOpY(3~+r5kYKDqo9h55P1>!PrCgeV|LlI~k|L zBCRyK`3X>JE?vfww)S+66R;Ff`nDcDhq$L7CZC;zE!_YjSz1{+hKxcUVSmL$vZCBs z%R5fD>Iyg|_-(Dsa!-7cFs^o=Mg}X#1L`5R7`pasb(@|)C3@wiD0(>MyWJY(Ap!Tr zrxSZU*T;Ggt}rQ7TTF@@$<$`AFzUCEu-G~G7X@=icFrN^?IcKjquKcS!Z0CkqO`(< zRB@UMUKSsRSN-PEWE8T9IN3?OmJKW>`$MFx;y zg&40jfXHQ<7vBH_NY(=20|o#IPZBS~o@9YS5F+vq(wHc8943vR&<+? zDV82-5(`5=f_6ZSgHc3d<$P98Tv~yUVwp*C!t_0CRX14O_R19@ShzXuE$!{F zte?)K*+4Z@l|?LA`3%d>)~Ia($0zOTq+YW zFtAvt5&JZfE_$2$HP~I6#B~NNbfB?KY-i&Qjs5TpXP=wER2wec5D*(RrveIJzrx!7iFkFAV%E~BL%NE5H6Hu2E z#^cZ|oee|}LALyJ0JzT+NeAzvc1iv$U^r9HK-12iTL35dm4Hm{%@(O9CP7s%uUFy2OBV#Y_-%xc!V)ogXOn$!8=c5Xe-;N*mnUGl((=usd;<)WLpihiU$ zKNZp9wPxL_noxQD)Xtx&nsl1!!dr=udUtFM!|;G-*30HHL|nRmiFir(a%%1dQuhi; zFSU=V%jkz>5xt1LD79_#y;V7-zZTF`)3YyY6}Kx>t8EV3Qd{;*z4wvfS@mc0beda3 zP21N~TWly&Q3Sefdj74^YZIHNw=*toSEh{Ei8R@9yr=T(0nW}9t0dmQ{u=QrHLyxQ z8CwIGgi4*U$??Rb(c0BIp-)OeuM(L+na~RPGNq06q^1hUO@cHQ9*N#XP{e|EwUIMr zmzuA=bwrK+P7uhC2gnwiK@cR48ZIk%30YHsr)asvSA-ijFB&r2N6z`t%Au1#+%md? z|1xb%H$uB~VMZC+%HggPt)tquPpG!i{+!CU&JQEV`~NEl!P~L_JEBehUjEy3mU|8o z3+%FX-MRuAIdYh_Yj_rg@VZYN|CNkO^?0q3qTFz7@+(2LXt9&+Q0Ge3*2_K0)`r{x z*vZ{m+Z9dX{n{`Wf3#PAHTkq~1hB~an$QltE(6tU;7jb;=;(R7l2&U94buw_ zv__=WG{c)Y&4*;)!5Arb1HMLGUw8_Qzu_y}YC%=&#THd;(M9YTK6__k-9onnoz`AN zgPK5xg!#2#VqSf$OB-L2hSZ?Uie01UCs1YE5ewj|0uZo~;YLmmR(pLe&ka9=>RhzB2Gxg&M{~%f{xkBPkSOHZB2On8@5Q_@X5Q!Qxxe=Lkt$xn>f=)IxhtxH}I`G zl~fC=cEPg==E^mRn!k<^f6N^D=IVQhxB6TBYj0*}nxxW9D?FUc`5r5V7M9k$;n%VG ztnIhA)EA&y)L1}|QDcntP}!|L*$(Wxw8|naR@s(Uw#_Eaw%JJeb5ymhUNxUM3mp;Uch;cXrB?j z|It5k?c^Ep*ra>}e;=@v{6z)*rsroPoh$N4YB)JqB>wr-pR2uQt<=*qV2o-dou`b@ za8>+WmMM75BrX7M5}^6e!r9`nO678r^v{K)sj0e< zdLMzN>df(Cyetgvn7pd)q*CHVI@e;bQ22|^6Z*Sc>L+F47IYN+Q(XVfr5yB|p1(Yr zhqjM0I{Ngc{U1xr1!X*0x)O|+XlmI1GBC4QGh2Og(CYt&LDoQvz}^?(N~%sao7(p^ zN-&E!>z_w0U737b!2XpIq-PL|lRo;l4qmX=`mY*96_#cmGX`e_D^32!L0}!gBmrO_ zRom4xzmDA01EHuHWuVqgAU)8el(+J$7rte!8dKA)>YZVrK1EpVFkwF=tf-&V zZm8c~1H5EgmXX2249K8o<>_U}$nHddafro#OVU0pudZowDaZnyCCkxC3O9-(KQ<`x zu?8I0Uwwtw|3QSXq1%cC+QnSRY=@m*pd35HF=8983GN{4UTS$gi=Y9!Rr0RQ`)2We zUwt6KZG1q!NZ~<2Wv-z9k&rb@$2X9SbFen6lri7TJm$+hh{&|Ib#&Y&E+IAUNZ~Qe z2Jq(8A^JLMuU!~TvRVA2fqohrrJur@-)1i?xQtq1*y9worM0C@fh}Ix77E+any|v2 zufl>)>9DYoKBaTo4=VliIsP%-9qoXgP~ColUmD==N2&J;I=sszt2fJ{!^${tazF=HF0B6`hl8mZWPFg{U;fIEn@*`rG7 zt6ULV4+g$KsBK#le>nG|zSHv$h^__wvj%v`?Jt|eu+FK?xJGK#4y%JFlZa`wLu2*f zP|rrV_5NTiXv36x)3#2w*!L-mwpHExXH>YhKuxvIf1{+3?Va>?nOxU1c@Cf{kbXvp zrt7*Fivp|a3%<+3YK=Q~;26=qYg2dWJ^Ns|t&?@S2LKQmRNL3gj%tK5LKT`d%seCp z?%4DcZ*;qyt|66WaFA%0kjT7_!_DR+H>!oT?1|o_ik>j7*=93hYn(QHvuHKp3h{db zg*Y)vAr{uKnE`GYyK7}K^gs<|ZRtt>;Aq~UHto%nwHX3-U#P;icwzSr3fnTOFn3%> zO|>)$(_JBDr+w_|laVdg3Ema7d(u&@wimROg0`mJ7pa)G7xVo=G3`;s`2NL7lehM^ z);88ZB|%4lc59m#G1XI#%Ap^si=F1!?oduAZB2G>QAtx?(zgdCO^qrk$%jV{?64(= z)(+2-<`lQLljZh&E2E1+zB@c$o!aJR^p4T_+F5_7SteV~6!O?I8K;c=m$07pA|9wB zcBa}kk=5*fYiB+j${guZd8A9_5kV@CaLGTa#_1nrsXWT1a#vcM5`t77Rg%gh*GuJ* zqwo%ra*Jk2kc^M5VydElSqUWU)}E?v5R9sJYeEj<5)dpW+&LXwXDm38p% z0TcdAd8~;~A7H+IAL3rlNBt{$%FdN2;Jn&i#UGQ$IQU>%T77kX+X~NTLudK8n@{>{ zXdadR$LLO~Hd5{1t)4}D5i)auu>F@|x=Bc3e;h0uFVh&C^+(87LbcpBf zX7-T{XZDNp4ezC;sNQY-yxz(E9B>J<{-xeF{{dJX*hhMFe_F}eIbrjtZ;0N7Je*s? z`3z#Xg^(lBOsoz_0rn!r0mW!8)yYA#+_jwD@0|I_t6u&=FUVh786F?Yyw0nE6cqaq z6e}q7)U~B)wp->1wo}%@zwC(=$ytOHs)#mym2by3$RDfHvA-E6?bQ1O#oF7f-o}cz z<9H*=jDXt!&bB~8)99^i?>mNQB_Z`=D_Hbfu)Y_~i4r5~sfhN<1~LZuS$nd78iDO?KGEmdlV(eP7v;3KIUjU3 zRlXYvv^#{nv%sLUXO`?*oxV;ODFWD;odPpSPmlcdxp7Kf7t1tuOuPB za@mq2UWJs0NKaoMX)7$*$_}>n-mjuH?U=9uov&X<=k2ZSP5r49Cydlz{il7~V0< zr8d606&i%~^uGj)!yjKn!9}^!SEx+eJ0hD)zv=l8MxO_d^Q_!|gg7qaO~R7?tuWoF z$MzV7RlC1Txj4U312!L7vr6yTUvPWM^`+kN?YUf8*uhJl<&nJCa!%MSxGa3wSYr@z zEy?MfLirv!-VoU!|4KAF5u=>_R^=8@%Kus-qC5*6uO8wk{Wws_<=3mX18=1s;7hPWeQ z4R`=kW!$=Fxy-a=J^y=^YPHN9T~8>Tg?0`wRiQOZ^AAd+N?VKpX+kBNUdiBTc&a2+ zlHMBWYN$0dlRTPzIAf6Y(8U%)R%Q z%o~$6z>xb`u8i3WXwx)`I@~vL2NAzU4X;Aqhy(gfvzGZQ+|f5J>ywtS>N0%)B@UJR zzl*by!7(c_EU?zFwVJ4$6#{U_U@SQBbh6Qm6w1i8s5ECNhqc78Kqiu2ruI+ewB1d9<^gTdghGoi9JHX3a|eZ|*2#ltBb{)= zgxq)NuZ`vp1vSu9?Ows9Ntr@M1c%)Pl zci4D%%ugJ*-YaMhc8!FHbw%V00_<1Cqt0q+#}*w{kZk%NQf3U$*r}@1?NfYA|!-8uYFsAN0Lc&mf z^MK;_$(Sb&qK#yXeHvjfPxe;we>T@RlqvIrrWgGo7jsQ(;Ku;#aiPBkZAN}puj3u5 zWSA;U++p9ls$MUUo=M#1>JLQeO2wFk-v_AtSojJuj1g1hWg_hnR{G}?;*8up8q zRY=7Tbdr(7W`f&^W^IE*ygj&LqBj-NK7wdZur_rnX&2RsI&&3`B(luZaJ;Ml&(t!S zBA5|%wq;XVu@!A|tki}Ia&d-`Bo9WQ10nHEoKl+quYs3*5vDeLAesP zHQ^2@%JsdD7mAL)(==X|aD}7fQ9$eW(OKyFeROTk+xt`Sf3nGeMAF@*5327SsMbp1 z3|R@gOBn4cySndAQDGb@C;^(Bn{2c0|00O14hw^)-k~#lJV9D}IONAUGZ`SOo&~uE z>Xe>`Ege#*Dj)Nc!It)Tz;x{m)0=O}Tc{|T>RgMREwYtc^}RZMj5Dz;AmRHCL*Ls( z`#|j%`Dd^9ie89TxDkv+v|qPW54p9B-z?gn9=Mb?Z^K7;0| zxUx&TC{fOm%4dky*>f%td_i#B91_ERJp@*t+fjGVaXMcnc`#UQmljnXz2RHbn4K^DQnG0!YcW#ueVxHG6PWyH(-1{DlW?sRD`WFS+F z=W5ehm%VB9)LnH_LC zL82-t1Bq<1{IDdVb-h`wYe1=_Ort!>o9ZrGqG-=zLt_#94A z7Q9sFm~-92HN^h`(L+$%U`oq-GZJG~x^L%VvJ}rJ0jJCjda&!|fp5uQ0<+|ZI9$a% zM7Fky=@`3?2)jgCYCK5rR1+&`GbwR8LrXGoH)J|re!|dsoa80xz72-jc>q-zRlxGM zfCZzD@Y?+iB9PkbqT#_#BL@Yg)zV8LRc(>h4&l}2i%om|doc#^NN{0c=U)Fm4X~qJ z`#X2$$w`K5?(TBC)IKjF?Vb>jr=B6VVdJ~ zQrsU_pHlI=cd)N;XaC>Vp#m?AwBt4<8d}phd5*>PWwri-tPiE2x@nMnv#9NJPp~Jm zqscY~T}aUER5LWjI}33eIlivhXQzIVdOW+ej--S3c0GtbgX^nYLwOyKp2jhCSceWUT;%#L3%!0)Mupd$lfa2&jdM~!F4`Yfsgil zsUcqqK9yZ3*=Ecv-L}vB#0uZ;*a>nBNTg=g>`phssy-LjOaNrhwE0Gn29=j7uf(#z z@G{@LlK(tb3R7L$ZCe6LT{zI=yW63V=*-y`>ZRhfM!;Y6qg8S-b;J&RtcvFs%$UoK6w1Xb%;>x*rLBL_WYhr{fkYPhvH?u2K%*5E(Jgu*1tqCM}Pl+lIlL` z#3GbNl9`{kZ|DkO|HhE}1AD%c!K$5}KQH8Q8p zHfe>KtvnPUugU02+%TxbfGxt0>b;mr3iIl!+n&aH_*lwZIL}*Bhl+{*5b}SDOPWN# zX~wzO>(VR8i&J0HrC0JWR-ejm=U#U<-(ioUmz+SD{gQmH!V(bj#-v2Kz5ztLjNhhqlksx6YibGXFuqMs9ez&`pc*H^d-`V?(cI`k;MZbL(6 z|5DY?%f3=HJ9w(wib|ZaIQts#oa?ZqINId;ux@+ot|G1`9CHfA&h|6iRk(b>kb>8e zEX)OkS*IUR*U7n)D+jicm3DU6yx*d~?|P^_lYtQ4D~CTiyuY4MTg(9o;vAzmZwPs4 zZ{IIbG)*@2KcSFcCqmOEyBWYfUpZJOQ_C%&c8@A$i>CWz@P|ZiB;L?~+D^V^K(U8p zm_x~YxtEj>6P!*`ZWvrvuL8$6h4)h(=Oo80Rs_P04$4z>J;&b@hrY$2MI7uZi?bNU zMwJz$6kYk~cv%nqliKK=ibpD7XOv*fU0k39+V5)*l&3SWpn}fgU>@&Wf^DZs{~+QU zzIzpS?}oQ4k0*@pzWx!J!PvJcHw9#r1|ticbtv8=l>d z17I({3JYUDT1oLpJ1QQ}=W%L|eW0?6_`z&D%j-1ml4E3@ahJnqxijz@_!VnUF>X1MkL8x^m-5`t~&e^E3zfhcyA zp`~rED(eQ$lekfScs*ZMK&(IE4#K%4{zo zCcemT^bDT$3vxxf;8FZ#X@pGTWwG5Sue@*IWK@Z3i@@&N`Nzzb-AJf;HRQp5AwQXR zMSjpTv;JY}9X#Ds&S;l{$P$P3VeWT%?sg;ZrrE8^JmmeP^?7dsFjvmOvPF%o$yUNt z@$wJbuRlB7!b zjPbvOf+VkN2&YDb%~zt2)lOi|F6u>T=qH51+%Xjw%>aA0VD0&u@%!m&Z#o`u;1H~q zX%4}zUBn45+~?uL6lZ9HUq#GhLZX+Bw(~)u5mQOiKoYk)MDoPGf9ks~)smKei}G#? zwfl(xkd9C5Cf4Q$9xz7}B4;2kzUK3?b$}`7BGJsV!o}qqU{Og**L)2?`#EWJM1+dKqPmb?)V;rf<{b3y5{BnP7!M8HLWiVmlsu_YC)oPT*bi}=6?uORL5oNrrwo}S7>xp12ePafNC24r;?FncT=%V>u zc(hT*n;lhO>JsDbm!PVhuYL_pf$Wcf4-e%2m=b>k|16g%_#>`@Z-T2kq|rrpa;e7p z2|mW9y>VA_VN}>}n(vBYH)#E29iOFqhc#{X_7dxU8LHOn40W;&*(UG)z&4xnIV{`m zgC0~&^*EAC3ivr(>+APIV6WgR>Zh}5PU2lZKGSk8mEzEQbu!#k#d!G~RrI&v6c9ag zlZ?+rPrz_BP2yjE?S28i&>+#xH5*f0FPiZg?+&}L{(`VsLeH5D%j;hSU?(5w{E~*@ z^DK+6#rMf6l6*ZRv2YPiKTkbT?M$Q=!OPnkVZ-X|GuhHC^M8k=oNMM^oG_D)8Iy?w z7l4!#oP>*Yb`!PQ1mN<8pTC7@7jSg0IKDc;zwfU3-g;-QAzH~6l#Hkjus5Q=S+j>gaJX-M z>o|A)#2UgB;p-&EL%(RbW5SOmMaG_iz=onMT%6 z<^4vJy}-pJaB;|(G4q%n!4}(R6UtRrdK8y>{BpU1V?*d1;ZnJ&^+~jGWZq~Z=@CiT z7^!OeiEkr{9E^9B?+&h`xz?8_IXH%^sHe{DrqxG%%A5ILJXFk_*uN|5LZ*zbj*ErW zZpuKI)6@D7kRb}8++7HPMgeE(p3S7hSg@D}rvhq*Ttjo}PyZ*OE z76lIfIWnM)f1$?6OVFWWtsc>p)kfpO>)L@4e?uyYs;3ebNJ(QR}homx5zxc>$M`fuW&ov+SmVEwlV za#sOaA723$We{J9EgOR<{_f~C2+aZLFxl*_@R;sev`zbC^=+p;UGLZ|h*35^IHRwf z@NKn*jEaSmiGXeKyM(uEJoVp00sGp}N`u7zP3pYIB18{gYDMgSwjBI>q{^a%@|#?@t&WDVEejy`$9&yDkCZN*gjL#>jwB;1+Hi|C&YzRch=6C*H>9A zTGc%+ioad zC(UeR;j`P6@(JE5`Q08FS+5{G}Jk4m7^wy6t<^X~f$PxkO6}Oqnmb+$Ub8 z>JHBR*{Xc1G=xLN!5#3Q#zHQ8{~7^cn8)tH{9?+stywDS@A&e>J|%3Vlo9VZlwYD? z0DcyKyO#F<8MZ^5f1zG{QfQSb`0g~m#E6Ac&QlZ* z_V5+IhjT?_Jv*QT=D^X#09wW>(z&oBk;s&eXC_&ZiMmn}o;9;`3zTgFoRg zJ%3d6QSQ$Z&xdFBHhaIKOnun(Kq|!Y{NT*qar4y;tEdN3;-Ici;#Aw&P zFMW}yH}O>lDo3~Io6FU%x_?f99Y3E5ej9Jtp(g8Qwg4lI0 zbFaRe=wD5lTKW>W);o>vJ={%zl&$QR3%TD!2_59JcMLD-^i}EpxTeEMvx~Cu#(BE_ zUfX_Avld&Gr}n#W`rGMhT1NT@y52(BmqE}Z!%_B6zd=X`Uw(AZTp4<+eanX9umNz z{%Z$>msYWM&SwmFY{+QGsEkln&!l$jQRiHFJz(Y(J{T=KIXMh+U>!#%`^(N&>Mj?9 zB+w1HemU}JbAl&{D9{O_(}?8p5dgLJ$surYf@Pjk_eJpsDT5+o~1 zLEi6Xu<$Z6=hQ+QTz(5oJxZm&X^Jk^03Nx`w~9~m;u&}MTLfDXKFEr@QViXv2#Ga; z$_C9<1WG54+4%uhkBY7Rb)TqY%kKm!!^1PnzYR74I?TnOpiVwp%|G`AYQtT5(=gtY z$vElBL!sX$V9pO@*$D4DsmwO>$Dt9fGPJhi6hr{xWf3C8)#JvvfvnMGUR0ki$iWRk zZJz`@9J9HY6>#?Nx}HmqR@zqhU<%cws(+$2FfxM<3#wVo^UA+OoopF!YOa`M{WML! zGbesNooav$ZKuYoUx?+t;L^`G$Zq z*9Pnu1YB1HASE)4qR?Gq*M)?V{ zVio`~%43LG0K_Nw@6w--=fF0eT&W-H*uO;5x*5*!W81`acz9{TY|cLHnj)B z%U_m+EeM_19?hQX?5Pa^98%6141Qcr+|}WB?5t2#0s-`B&iHdS%|QVwOS!5n@RGy^ zy!5ycFF`|G33G_6$Bl6X4RIybA+8=b#uYTgy;c$w<7EYJzuXoN;_g29T{?cc2%kD!_#RKc^Kw77nm%iM;HSVR4NbtmMPupgrGeA; z4O|}W)4IeEz}+H$8W#lzPY%_$@V~zqd&wpf7=)S5pOFSwz_=K*W1{>-Pi>^cTGI~7 z)3_~a5zR)TqgN-p)>$yzmTMZr5@xN2BV-&J2W1q~7pb4lQq^~ctQ=gttsvXL(@_rT zLGoMga7Mn2Mzh7?uC|eWY4j$=nNBYtuP)a+xRkGcF&Aye)+#^Gy$r_`vF|d1&0suS z(C&rnX}9bD1KJJB`2Q#EC z;m-)PzJvZ^GP(tx#LMdM77r-j*t$aR0IiG#aoV%&Uv(ti(cd6I`49Qmw6Beaxty~R zHik&bD7B((dvsVh{$?TmBj;E=6*v_>->TrrT+ig%#-*S9tBG9 zJZwT^w#O}Oa!^mN#;7>K_k6I&ZDd=NAywe9i}ED3P2(eU<8d@TDJ=t!90mJs>OcGnnT7E7ZYu zkg-qE_JqY<+5Ap21Z{f$5z*&1MQVr48<;E~CyJ^gX!br!4xw?)AjSF|nr#)jp0S@z zclcuBokR;k!&$&$3UJp+{;8ZX3|LAYXTM;*9QG1QD*Hd3PG$rDC(F*~U5^5;-Gg_N ziRRWFDqT;H@?qs%@`%#$miTrxEVMnb`nNm;MexA;R0P5D=uVTNIUr180~%QdQ^Xvx zj}Q$Ucfc#wxj{Zn%)vvB*m*>WEt|NjO&c7ZH^D96%JiU);$J{5Z~%Y)4XC{^GkmUe za@H?Woj&2{kAwaR3J)$pzbyQ%dmVYY9^1SpBrgx8cv792Vm3l+wB`8aJBf}P4^M1x0@&Y zXRpqpge&gqJj0qz?u{>9qdLRYTK+Vi`0Sz`U7tUL7frBlAw^-xe6(QTNae{yG;0g-r*x<)B&fEeFoLn!YEJjq+?5%7pq8^((3vVqrfaFZc}CW4Ok-^gA^U z#Y!BYXM6sV=%p3=jv_RB#sJU#Lp)807LO-!ytFD-D5+!T|9ywUR|(R0x^%kaK-QqI z4Y(w#sn34eSkUG<|i!0@?}(P!76HxYZ8}clS+wg>cSIWr^Lv$PBzf2 zfS|qMyB!8?nEI$9M77blMU{4EE0|UIndJ4#ol-d8BbSis@*#G5T!UR{CaZ*nyIdC>@hJ&Z-0@w0y0z!T*8gj)u-PEeMJpSr6*BzYxIKPnsDFAHPj1B ze?>u+E{8kHUY(wQaJ0I~&aiLU@xWO+Z2YM;@HqbgDOQgpmuCM1$ZgF}UZg9^YD>rP z|0dK0WF4x5vDEiK`O3@1s&d`hxC1n)1HfA3w@7a@F92-D&;Se^6vLXG0n}sxn4}xv zatE078sG{Cm_!;tB1{sKG6P5~0hr_%K%xe~CI}6n84BN~xuTAdxYM+71u>FFxn%Zb z&$>^38kkRibe{?-S2U49UZxThGUZ@ti@MLn2|9Exkkq9eo13$-P*p(?)~8nH;^Fc1K4k3gfF`!UYyJ{==4)po4a_`1>UQYbNQexSe z;gbmulp3(20^n)`Xaau?K*szUfF|(Q0F=bc`7v{&3WL()K!$a-&nR#pkZFJ7h@vWC zq^hk2ho3c?9Cv%jvhc%79WdU59%#dBVM+KrogPCxT0Eo>^?hfOA?B7%I2B2(EN5y~ zPuRw^fa)Xpz^cUW>tR3`8Z5#CP9s6?D|*sK0MvJ8hbpA~=TbL5vhYf7eomXQjAYCc zWsCNmOi9@24-f_&KdYim-P`d+`3Kg~?|%&Fha43)_+9A5^GNtF+*N{ph*$Ilu7`6q zfEPBYz9;`$V6Rdeu%TKQib(;7p%`tD=1|FXQe+s^3?>vt&u(-FLNIPK6T!blLNLau z68BJx;IA^sXr#Z&uufucmurQqz+H7xix8aQ#{jNx55JZ7SFf+r4uEUw00rWRw;%zym|k3 z9!=4spOJ1at6@jc6mzj3S79dnBj;jEHi9PT&gJ?zS6P*!Uv3TBFTK5 zXb;2zcCdii1F$uIxt0EFG-GAU?n=Z;)H?)t6J%TQ6y^9H-3tn9!iw&t*!MQ&)8@V- zB|nd$>9Fi&d`M-ehh2Gr&;zH2`JIEF{5(EGaPaf+(LoMz&CdfGt@Gvhcf~FFatsp$ z16|f&Uj@e9=a7v-)xWZCBy7SOh#ohtfe0Gn3egZ(j~nB9O@!a(=n<+2zfdGBq>ood zaaUF8pMkr6f9FxrjZTKaocB1d?t2C`&VaE(39QSu_(ig|E*ZQNh8N z@o0Xx4D#^-_XF<=S%JqwA@EI)8~G-v$|tT+3~}|iF|ME??k&T(dfXUSP{pMUs=79R zV-LV2?`Lw?uc&KDhE-L^yez|_zT@c7*yz{2Pz)p=`6d;4R{B>BC=}%683quA0^sfP z+UmY=2zU`+WR1JxPmm<#*|t3w0Z(OW^3;6+u|QmzI^bpimHb!0#XhS^nDY0qTRgJz zcff4`bf(yTq0ZW1_o7gTbK>sbBJq{{pZI^^2#7PMwO$iQr=`p5{ii+3(&BIH`TZUF z&CY3_#ozy)cQP#GpLl8q%og2hT)TPjZez)cd1|`kTLjtP>IYw=zUaUVWihj%Ia{B( z&HsmIkBxhB#Db)3jiJAoIymM#8GkCT?yr-qSzG)=plPlN(S`Tg0ixz4FmfBpP!jw(N+8k)HCbO43U(EGqTq;^Wt@WP8{nw11 zuZLJ!dJsP9kZSdfH9sTliv-N22ah3uzJHQ{dj2k89IK;Ib|be4OaG;4@Mto6KG4^R zm%|ff*KDU$5%@2wYKaY|7N<$U%zz+v_GM|FUPbVoqvN>+E91VmQ%>6Sz+f#(^>`B3 z6wNkEoKZS8;I}WOq zKJ&g|;pRdT&xUAqp2vF{+k|Fp@+m~tmBw~O6%ob?+NyGR-}WI7GH87ond4!wMsA?L z&Idsgs2HYmUnT6YQZxVDM*nq#cdXii_!h2~Lv`Ll1h-0@!gHkxjhPIE;jSvg#><+M zGmLEqGBk1_VTk`zC`>YhQXJq<-^r`@o%TRjvA=;wbj~{owvQpkmHaEz$=XK#Ri11b zu;MX_8F0n6#^U*g-t{)1b|^!kD=$vFvS96 z?|@PMKS3ZYovTivjh(~P4GQaQZs;X70MD>)vqI(d;LjIKAKCCc6&V-p?;&I*ec9(K z+MoOhj^$lH@4!N(Ka9?*^#2p4#-=UI?{F^q2#Q4;60D21eh`4gvWmJR8yUt{WwZ0| zr~jTIvesaVzV%li?p*ZD!MnHt+y0lBSLl{^|Sie^6y-^EHScF78QOs z=vmK`=D)+E4;l*pIQh*>C+in4i?(6LU60=VZY3zG^s6&#RF%`c;`R29O?o-8uEX{# z8KX{)eQ=}A1IPRq0V)J2C(+oaps=Hf6m&3u_=?j&EUbTmGA8d<$%fRD{!c%+IMqAZ^( z%_Mj&YO-_!wo?}oYb|c-_dJwMe;3)FCeD3P0kuy4 z&ma@mO2rLg?k~zMAXEFvnv&FS{3`di4(q2`p@OFOs(PMAJBT9TtS-qx>7hW*eFG3! z?Jr~1sdduszX&g{<@Sqe14gI&x9_(wvk=zSQwPjCes!~-eshSQc+2Tgw2^>V4M6Ai zYk>w-LE;j7*M=(1>M!xxF($k`er@~3hgSH~R5E-=23C-Jz5-ppQyTzl945V28#$~U ztFIG{-ex$wNb>bU;Sl;d0i0e7&k)!|qukd$2+eEO zthzMpo2{xBy|D7|ZduwFfbwu3azu67n?a>-8LjWEjdb*<_tRHjLqVL4QjCvn{C$kU zrlIR);PH0R)rQaEfcfJ9mIn{s5ruXlNnJY#lCC>Ek9`nS@K>5)f$L1Jg1@(|vm4?Z zkE+xMZfEB-EN-yxhU%L-o6zqqT9M&f;8<|(omJ-sdQ#vjv1?` z`M;^{S)zK`Jd@r$d|lWSs#3nozlwb|CjSgeC#9F3O~UF&ck=2BAqVyV=o^USU84JNWk2+z$>F-t z?qGqevuDcCQlH}tjy+JlPrUpRz`<_TV`##@n9tZQS-6zK<7GV>&6{@oXW(p2*0(3= z*N)b>^A!I3BGvarc~LNA`4!&1W?$urF9&N%&gYIjM%{-LVVr#EKIOqq8XpfOuk{dR zRqY{^inVA$akkcWsg^2G44S_M0{JTRT_lQ*ZgMv*l9;&MJrI|X-y><*@y&cI;0P5H zC}G9Wr-;hb>kD6Cn zh~}ZeZ>cSmC0u%wWpR`F6w)sciIWK(65tSs8AVf8bspDz&Et5=*TJk8GaL#`8>}ae zNdydCQeXP-vetGlf=%{FH{tGO^-J?ltF_U5f+(4GBP__y>17ax2v9C zdCIZcV9PW`aTqfP(@SVu96FziHieF}_HuX~H_&VEBC%v<2dI?w+8MyQT-R|GvUD-0 zf{B&fjBS&~fAOJh`j0U9P$KD05|@=e%K9I`k(*X(17%GctBAu;R{Fb=-^+i=Sh@d_ zHqm@cfuGiA>5QY_29Gu01(bqbgGc`N%G9T5jwH~rPV-A)xVf|xfRY5r75DynB$!|w z(_b03Wn9mvluNjVxbC)d;i3P)zjQ#kF&hboDIWoEE~kHB|+frIpxV8_g+3oXx-*N`lqQY${^0d zb^(|E7Ch-PUP68iYw5km3?r)#@yJqWCFiYy!%}CDs!((!W?%Gbf=rp=5QO`xf&n9i z8-Xrlq)SrdHoAwapoiud7I@dM;_FSO%)|21Q>ajAZl8cptOwzKSyniLQUrRrWIuaG zZtF_%V_#TCrqF!~>I7H}R(l{! zW7?cMZJe+97>d_r73Zj5UPldsPC{7vrvO|)8mHE|aS(j3lNsK*rn-11-e zC4p@a(7#nQ5)~lh6@b%WCpOj-20;|hp%Y`8{cLV5rnW2t<=9v{mCUW93Z4641!J`M z8DazdcP1I_<@#l=Vf)x+=ia{GdH$!6jdA2Zax>;?;XuzK5zl!2rN%R!Wpo&u;_i=l z48whUtc%g*;r>aGAhVC{YPkO}D&dKKf#E*nDcaEEz+dLvOH1|GX`a(_oGH(-&VL3z z#Ba|(D54vRK45k8&R;|54crJdAV1bEPa#FRsMQUhmv*jwRb2CgX;|m7YP;LIIU@Q8 zj*B=p+>5)SWLS!wCd*K?IhlCax5?NPbt%a9PsCkOeq&lSv=FvFt+hc-vEno&Rt2w> zHv5=fOX2#_uD>P{42Md#Hz&5Qt9R9EN;rq0Tbc9srrv*p3b$q$43KvjK;jVqzO6yc zBmh2bG1Q&|K&`-=Oqhw&ddNuZlb7t15i;8P;qPBV9cT2T&`3ykyWZk zR>>i<4JtXNLkL(qbz5g1vRI2nX3!z@w%O0&H*-9xhC2C!$Qb?j2A!-}_o*UPNoejJTK4Z3m_$}~UdA(P6===8u0fNuiuk-A6GXFE3WxfeR;18`mEGub9zpPX% zmb9|0R4e)ycl9l}@I^S&4BbiTpZ}m>zO<;v4J{oK)6#zl7OJH`-{eU#e}R_H2}{cQ zr&fwRVgPF=zjPKO5t@F+=tLonuvs!of{kVLhi7vB3g*-OOk!=k|=8?E&v@NMvGun2*&pp~^j6e>y7jxYDnubXR zp9vAXo*zU^+@uVE3jxeFTv7&8%OhQ_pnKu(u1;N*`Amrpk`46_=X2dqf=|!yiLRu5 zeWXku`D+Km(_4?4%$mWySjOO9E`fnSYX+N*psTvg@8dyn{^?V#iDmOQ?d#Y7#Jlxz}=`V?AwHu?Eus0p)VgNvGwKg^8dryo4`j^ zU4P*By*HUHlaL`HfrKS&VHmc6pp$?Q5RpX`5n0?9R8-oh6L5<|p(vt)`$8#J#9eWz z)oQH^RjatvTC3GsXx(bnTD8^or*-N7`#tBrnaKjR|NlRqygT=tyWe~6x#ym{{Qy;N z&y~=sLW4bvM}+4;g>0uOH(yP!sBZ`zw04$di6tL|U$TDdm)6dHiM4(=6#UZK*)Os5 zi#uq32&+mFa`-4mSh4T`d4ChVQr;H}!cc!a6Tke^((3&jB0$S@%&t1h%AQ+$N%^H5g6`& zzaN32kf}h<%^)LV@STjWK&Pd0KRjqUDeGrEJVUV!{P%A{upD+|)h&N70_DFm5eNT* zJxXkQD~|~g3I!C4a48aq|xHuC-2X3)<{|2<~l0egoP@V~7r96@CNS2EVutg(~J3gcXY% z@jMyGh39qhXBqpmL`~qG|6i_)8W2PRA+rJr1VUy<`I6UJ??%3)ycWm}3lU8Nz7_bY z@$rvi6?HN!`=0oMa<^YIyOveZAI_HV2nSCMLl!NgI~b+S(U;pslXH;bHMbvqtMK&Y zw$bF;O|^Lo32r0pv~6bi7n#1>iq*$(jtHBVpAoG*u-8EJ!9OD_*d_O_)c+Z9>`H;5 z6txJhG2a6n>cy~eglVcJvb7Yca6NW25<=Bq3Q)8m*1McN67Q_ASnE=HFR|WB#JeTH z6}u%s4Z$|*t!>ea=rFf5PvHyNA{Y;TA$4&*>%xu)H?S^<=sX^9r}*ygabmb|>y?P2 zctP>M-Q&biMfuGjpPk18y&LCoQf=!^NC4Z*Qw=0&?m*9v0bHLu4dI_)xl%>f;*c1v zq+X9|L2L4ah3(`KIEKr1vZCx{V)y$?yw)oa7$P_m&?#TkzDHy0oQxISwcVZ*zCk+* zo#RR7&68WP>{&DE3+z5hs>&IJNi^N+0Gmo9ow&Sfi=tv~8`ouawKu;9deBbNbfQGU z_$;@ez!==#A{4C~n@3|{kPQ@NvFs$+Bf6h3raB*c{apS$<1Vyr>{fcRS9+MF*zshq zQc;IQxt5zf2+5)wyp9e6P!om#Js$9XKiNx$X_KZ^laA`4Vl6J-C@(7SVL^F$?T-x0 z*rK3G+cM)xuntLgS!%0Q(*p6;5#MEVyo_8oXwPe+-p)-8MUz!Rm9`n#!#zOUR+6-u zwOs^eH?UezT5a}q=Xfv&m=AK8jrh?^+wt2!07rbP1AYl`)9~GeFX;O`8+Rz+UrHZg zKCzD}7wCP;N?O z8kMU*7KF$riXbUy8g^f!hjG|4boKEB4;TuM3^qD)FWQBgJ?gBONJn8=8rRD*xsFak z0-jK)3Ir-+_d{E#Xy9cf53L*^)vZ6>t|#euS!SnWl;ljP)BnEiH5?HY&N|m-_d;RQ zm_rxjUe@2~`LYFPYGpRTw$E+RTu|Yzn;36U#9o?jD- zWI2CkoHBnFi{coq;KTwP;$#+VoV0e1lUT+Hzs!pDOKWGpL0&tYCqEBW7U)7V=mavS z3(g2vLUw-z@$(NuYNd#1X_+hA zTAp8*xQhb`6=)z&~@#E z)oXn)DOZR^dW~?f`?kEN0LYp850RUo+BO>)R_#cauXJE^AfVStNpU%&0$lI zaL*LRRyl4BI_5YXVKTCejl{Vxekl;ocIDS=nhYmBmlG^74g{unjF*_Z7?(X>z;2m9*XM!R!a?R_h9bD%1hznxEYM29nX#D;lDC> zu05?YWXW-tn=UAwKn5(qo(l6nkl@c+3UYY-3X zaT30u9)os!f$8s}-Jms``~O$F)j|GgMf$%+dewMdE{b|j$UC`KBxDIoBf&$U-j=~N z*+L&5i(oys4*L2> zfQMoO*R4*4jc-B4{nL=w3OCeR0swR0FmaLgMid~#`X7K7%Uw*_n*tk7;ikTWyyk8P z0foex$o_<`#A0J1@zE3}1mP7i#L`lVbhD4agS`e*Jj7BbwD*u46nNNKh5&dA7GYyz z@;T&uA6f$Ye)#UjN00oggDe7uDSw*2gp=pf+!Qn|@g4d7AoN6a7eDq#{?&ozC*b!t zs3$EP22>U!oH`M?#7QRE>lR6U7m&Vo>Lqq25JHj&Yc8YtG#Kx2e0$(4q!E!lTHwAx z8d`Zc86-*JX!8wFHQz|IW$2G_tOD0-4RN^lsCdkv2*3$vDcE_VeE4LyJhK+lLaUT0_a(6NX zsgtOzrTva|(nhRTovK0!{T?)yNLiX$O`eQj*hlIhw%lC|uT@}13Th=tJA^wS$C!2S zfq@Vcze5q+GSPWJS|+-fgHhOD0LSb#s1w~{SSOVM(7L=z7qH&AeQQt8*Rpc);GR^U z^iXeb&;g_Uj_NnU$LJkTNQTOwPz%zBM&~-jkC`MGPkb43Ad^+e!ybr2^RO5E1n+}o z#{&)ahqsV>W@n4N7mCCXTL#x=&m$&s^87_nF>P|S;el#Xw>?m|So*3QDZuk88f%S;>etc8V987_K zY+Z7NlYm=}FBqFDu|NN5;4wBQi)f-6gaJmwJcRu!Rwu$hjnF&|e#6y0<$>9RdWaT# zkW*DQU_>%6qLRg|ApHo|OGmI}g%P9sU{_r;hXAe6o)h;hN~Eh?$fdjO!;6+CmiDOK zq?|AeQSi@hiT*j#4J2Y-AsWv;NK7dAusEDAoelFhf-+YV3&I13VM=jgQQV^ePAtIj z-htWp#S|8OjFJ02*|~6r1B|Oj3&vn>L;o4Wx#5?@;9(<$IInqp(Qa?c;HvGj0h+f+G#p*TBQf!XVCs|j zd`A)E!$8T1V!FpV2A9>CcRA@Rzp_|3`+eZ5O`pZo^;MK0M~cNw;^q@X`RgO#kZk z;oo5RKJCKy+im(A3gP>pjoxJVezA5D2;l}9fS*HycJu&LpNvY}D3Nd+XB=-y9Hs5z zs4vb0{G1TPA!5T^G#H}U6yzl)=Lz1Hcq%lW?&vDg9E>T|A4Wb$?b?KN^`ju364MQ7 zy~B7?*8^DylP`nzMmLn&Y|Bt8^5CBtMibNy(4OdOl;&RPlIFbBt%$2YbeseCMn2x{ z6sJu*oZ7;~D;o!z2f(xc0)Jj9F#Kkw!6+i?b>q-&biQtHWvJ12|K>-P{D!}f*4pW>*fm< zvw#3gVq15ZU_U|@Y-$6EJzTJ_6|kf$nY+X@j~B3mh(*zmGYCmR3~cpvM+)}p0(LO5 zM+tUi0oy?A(Skj>fE_~Y6v55|wmbH~w5O-&IuHv|~48}Pv!Xu;j@Lj*|AGHOhabhe4cyCEK56BW@H{+(=vc| zVWt^&T+OM?{Kv?zx`EGDHm1#Hki~l)X})g@OANkU*FyT$iZ1nJKbE(AA~1=ltWjof z$rn}@Cv~8Y_&-6pu{z4)M_vCZ)>Kheq{@4?e1yD2)8XDNS22x3KgKXAjZV_540%nU z2jeY=5a4iyL(@GV6;yIHw&OwGfw-saLzOy7%tt6mCPS0nMl#8gw96}oZ$nNhBh{5r z-D8Uz*U53P@`q)!cruDGc=#M)xRo>+Nr(Hie7BG{$xqB{>L>X*hWUvnqH`TWSi zIFX?%F32*tp3a^*l!GLDZ4ue> zOw8{P)%)Z-IN-Es-|m1;#K#re_M<<{b3qA7f%@Ug4xjgNxhEPUYO5(e^s{2q

&a`F7rsV(D2)8EjxU4luhJjL7iwGBvHI0}@(8t?x&Y~AA41M#GLlN80Wn72 z32X|?JDx#Z1stViChZa;9z>Ac#-`0a$q3LCaV?qGb75*LqR9K&-i0r8SCNH>;Fo{4 zgQIq#9!CVM3B@Th>e<4RZ{&4D4fau+52Z}fuXL=e8BaRKl%2yGCLrve*%y#Qoi2F3Z1{CP6%djwM2sXWHOW&V^y)%D_LSSYqi-O$h>OSBn>i#vB(>$wdX=jvlPj`#nvN9l8tbbDkPBohHlBOV=nRrCGRf1 z<+)H~(hbZ&HB!i8A@I~_N0yL2-Rct_1EpH)Hd?J}LB_cj1pgb`UR4iWdW9Tw@kwQv z$&i}xY7P}S_kb$E4-?VYqz_0)IM?a$Wj1oPq8Eq}#@bv7M0sWTcn@ zD={Al&51XE0UQeRQf$|ga~>lUwuf8q?DQmDlNte9 zU54g>LWc9x!3fJgTiz$~^?^C*;{?3ckqD9d1?)^`uG>ayjXw%l^yObl=|o>dd{4o{ zBV~sE5;N(6PPN5B6cu_Y@Xk3*uhavG%)0oH)u`K_=6e0Qs{_t&X=3nO+s^N3^$UFO zc6jCyaRA?^9e#}BAunTAP@L!<;y`?9JN#I|XMwLM!gq61wa2BZb=DzbF`iAvt2X)$Gk{!y|Xy_&hSz7@yr`VXpY7+ zeKxkd{ucP==se4BBKqDU-$w$yzcg~@hehb41l>&E=N6%l2KoShJkj4NLUVLK&_@A- zLGKr65AQ5+5a%=+rQMwZG0Ckot|uxfA^OY!M&(J{7i4v1?nRscw9Y$#?ncFY+JP?m zYMosJCzVLCP|2}e%U&n0m_4w|hy8m&Vv;VdV0;>OH}z8zA_pyR`7y|C(|HK$Eu$5> z`ClMVAB{om5&tW4FV=6w-y3FGW*GeIy{l*SW07ej-0rxzg#F`jrU77f0NBe{p9Los zMPrwzaWc;`6U$4PpW7rqv~ombhI&heyyaDN?hj|%%F0XRb!D$=OSaEH z;xEM4f{*3Kz#)I!KYu=KpLJ;O9!lOmoZL2YbsY{c66{w%sf#}cJ!s$ z>NlVT{~s`TKZHX66bO4ZDU^i5-4}w)T{8|ABb&9lBg`+ zA$z=^oT+<$1y(bFz#7LhjEZYtthIllj@`B=5l=H2B6j;QqEt8d&JiomKE<;e(7IYY z5pBY)15m5_?30F0LutqLZvKH}rHz@-KKRN>!jP+*VCSDL^8X>BCW@Rj$_k`3wjc+g zAl4h}t;UC(Ze@aMIg7@4yrvz@w- zihCU~rI0{RhxaJ@=Oprn9_es&qpk&k>rpZlKr}El>C80X;30+Th?l`pEb^4lgeaV9 zDob`w!Y}6i6AAYK%vzKAVgp@CqdV~#5p;QVkNpxF!H-IJ+g92?0% z)NyUO;29lLX(8V7giA|7lW?NzgegKhWj&_04`>UF+bH|SwBjPEF2YC_{$Fd zy3rq$Ba$=!WQ0x!SGJ10*9>=z5$)o};D#&4Y~%-lc#DG{l!=S;K_Q9fAP_6~%swCs z?z7=9R!pBEIY4eLhQUXl6*Twa(SzNKM{DQ3cp3wyLT(#FS--S)_G_c1-{%T`Y3=Nn z*fa_Nzt0!^(%RWCvGiLg$FG1vIbKi)tmhEHbsfPR3XS#0yJdJ^-r*(B93+2Bol3tt2QQ`dL89u9ieQ*%9@{86i5Gp6N}=| z1r;Y2;JDU=G2DDjI&5R%5Qi{e<5f)k74Sfzp!i{e0#<{Q+DJk*H0pXGf<*WVZP)B1PRJvOfR2o%>9f8-)AG!tO2#}kga zKbQ>=U<=!bSv3){z;ps-!S%Cck9*ETfv9)a3^A9m5BD&q7sUAhZqmyOOyTnl^a>P5@@ijxC zc^gIk@yB4p1V?`BChyO(Y7zZ^jgv%;eFl)JB7Op<#*r!~0z_EXxToPf+*+3WOxtG{u$3GIm*q z!ecZxoE|*}-Y|oVq4JjvM|>c=d}1B$M__W5C1D|c5P{Ibx4Rz!2}tW+k#F5DU%Hd= zCO993omaB<%4O8zcKjDId z5k(AAWkomjb;0X5A-r>n{*8GB8yxop!cAh4H!Bc= z?$8x~Vg6Dxkm$0d$m2@FX%paQcEZ0`@c$k9Crtl}7ys?>?|1M|nEn-C@Ne;{iO73u z1PuQq7_NU8O!)7FzgzHqt5O4L;n|tT(3TGR>k4q!5L9Buq-A5QJvh#{7a>Q>HrduJ z*;y+LEQQqJXXQHxlU)kN$j3c#f3wuGjx5#45_(Jpw(EmdjeS113f2`2mD(2>Sot<= zdK^QLt@{MX6?BRCM*)^6H3Y71y#}y9A4bheW>-smJYddARWFVNjN(rKUc&j)VXKnF zswB(R5*qDZs2|rqQKB)ml9M!knF4>`mEXSZO0i5Sgz=YX5Tu=uz5>l?vfwOL=P!ky z{8@oz*vFUF+y!ChcNGBiee#O8kZyAv#c5rPI93uAT-uD3Fj6*Y!|UP6BhM{Eqr|;L z^x~5$L)B#&_SI-?V`*w6BEYKPO#H|#!@b}Dmh%#Nfou&)melya1(1ot0poE6;%SK0 zEG)wuaneKJGGV_SDCj^z9#SDXDZUy_uajayN;+=%MaZB|3fwR5gM-LUzB+#li;m#! z>fA?$fSg;X1L(i~R$v?Gx2SG}uKjz}e`mV>xj1yjKP>no3-N3J@cc*U(Aoc^yYl~7 z*Z#Nd%KtCu&_%kB6VG)ZjywG8l(mrm#4f@t*7AINsFbqdOS9(=I-;FpZD4|5x!fxL#F?yaSo#eYs~M9sULC$y5o) z{|^y8t~3A*hjSm$t|wgoN^6^#slyS69+L^l6Mlidp&ug)Io(Iv>UYmN?z7R%0)U44hk>IGvxaMBm)Qp8+PLv_q|5NG6nh_mLu#L06s=Ob=RE;{EEgp8d)DeP0@ zsvGMNub{E&LSd}UA+M@W3#SI74Zo?CZV^r`Lc8D!R5lpiwZoRRFizu31N5dnv6HNM zCx^*~s&>aJ7|V_*`qln$!yoGpELQGxK+QFieq zrgmOyeDp`5wc;~e%y06W7`y{+2yvauqJ-71Fn*1sKDQk*Q8Y^!^4yQsOORM~6aTN*9$U7hM zh;TMdW`!wZJe7fw7f=?Xq9~w5T8{ymqDkwqwD73Iaj-PtHjD`f>MtQSl8hAHJyczp z*onEN*$H9A?7-6rq;?2333%O6G!zA5%#{#hit{7|&%Ru0GgcX`sf=YNBaUE)cqh+1 zwl)r`G;9`6#`5RZ7{eCXEsi~MNDRAyqA3g*@#dc(#bmVgBIX?%;#$|yf-P+|{(9Jw zrP)JSw2RfwVtW213e1K+CU9515E21Wy zOr$5DBm6=3G>7x;(O z9D{E@z6bCX#`+%eMo@zM0eTNqHwQInCEtwY?Mg;$z-rwPCz5Qbr5ln=Sqw65Ni}BJ zr@IIKq&$)7?%fL2#AzxYfVq{g6ukyPcnoi z#jQlil1XdOo{_GE+jKIP4(8b`|33JBfUmgDh@XmYBfjD~I{@&}`0m0N)EVZPe@rv>Y0wAu|&Tin(=A!FqJF1VGj zruIN2?l5GFBKy76*=Y`(u#_dC+n6xfGPnYh5G(V$!qa2go*Ws={S$7o z0~7&iPeVt}Um;etrdMpG1Hys_F>;Zg1^_Mt?dU`l>w}z7VFV?yM0}Z0xv3?(=RcIH4I&#Sa9v{gFc0KLf&YyD0ZVlwtp9p!2MeA^=&VW;^23 zOTfx_4VjmkEQ!`(U(aHYKn2qbr8uLK9Y-~l;ho?LM&@K8e-7}?LlI|oGg&bz3fT!& zRi`GwL3w9bXL8scxU&iYwF|al(K()QBhgTG>I`^oh;ZDG+lMBz?~sFK5E*8hXCQV@ zX6s&TX~eHbhL;}ZH^DIy)AKMJg{YhFtbDuW)5pqx~AS$BlZU*PRvq$g>( z9(F1(XF)hkWj>eUS1Lu5o0LPvu;BB6-+3U6%93mf@nKj%?&5kmMY2Ro?a3I98xz2j zpj~CM5X*R8Zg1qdMC9IYYMBi4DDqn}oL}<<%5+CH@ncG$JIre;gl8tD{iQohLyY#Y zBF6AQXHDusgCB=<{MS$wRt5b>WPdm3?S!K20w3wl|1s)<{e^4b1O5F2xlQV4LqlP!Ju&Hqn!o$)P&?pz~jXxXTSZ5g(c|t0FDQj6u|>5^ zkZnMMC*O~R5TXyQg~XtgN7Ux<>KnAFf`<+GrnTwuEf`+c2|2P zhi{BO3GQ2mSZT0Ny>w$`O#5asrWKdpv7VT;1DVu9g#Blbn62a%SZgZFcg{o4j5^pqmvEED3aMkEEIEEgJpEJYeXn~E+9dlA~{dCvoWI=)}w zV{!RM|Kstc@EwOQpcz=@?=r-}k6Bgvt}`oPugvqekpC>oWG{h!E@Ckq4W(d*& zt$#vCBy8`$^%SEm4q}4JoGjrS#AZ9ge|hvHpn2BSYYA4I*xx4CCzV(p|Zr{AiIlek$zzd z;Tr~gKtq_TQIPWV?tb0B4cVZ8lMz|!(v@bm9vI`!hwy9rNB#!$F4rrIUc@ZR9Dz`lcOzTak155l z$EeB8Dd0Afv1K0z!A51AEV05t6_TYui(%WAPE^QfZLnatp?@QCX{!wZC3QIpRHZR| z=J!7OOby?g_<}l@S^>nD76R*PpiL#Qg zzYvi@SY=_bKP)fxG;@TG__93_{3tA2poIHW$?}F+gV3sVcdImfbxPIa!CKU@P)PnC zD@RwOzy_ThVbWZ|O;(KBxt*@T>|II>;jVykD()W&1A!qM|BKO3HWmxw!+snz5!dHF zmlSZmj}{vTt)71&N{r=JGFz$l0XTtpfi{8M+cptGDq%$O1tX!}4ss#i9^{)t3@*Kc znjd-yT8RCaM=-E!lYWF3*Q9MjaWgKCf&};V)H1Gip}Q4AUxd&d+P5fA|1Qo`T^D(x zhh5~!=DR3QsDmI+Q12m6#i4hfr|;+MN%u6|4>HMpg~U;DUow*@5%rU+@r$v(L)}5` zM8E!nC@fa;ppG!v_t3Q!oy9Im6?Us^C&#GfwlP}&JcLN-en2KsnwJ~CtHHMbA0wgc&>Un*#=ErnzMGm4TJm&faL?Q~NL(j~HDYHt&>Q`r z#B^19Vqb=CZX)nF=hH@q>WPTcWPgO*d8%X*SN7Y4oG*qe^wadJeJOh{3z7z*E4F5$ zNL;e&p-~sFfMjMMxYyJGGt^X1d-idJ56P55&u`5_ZX`=`%+_lc5m|-$)l36K-})Lz z>e`qo^s$M?63-{sCV#R-2JMY6&pDcGscpaicxuJ&81s1hhA&l8lgv2Ay z|FF*4-x-2-q=}{BAWd33r%9~!i{;P2FRh*Z5^McpxiaueYiGa2(r?gzU^Q03f#EyQ zbzm(c*o^14LW>m6L02!~$orsk3i#r85jsbhaTeT!FSc{z+7yOF`E%Q_nh@+=r`7d; zg6^@)yOc=&{5baWkN1EbgZ0my~m;O zVWnQoXLyb5WW?^ZaAvDnh=|<0bF_E_5yzXK52TJR<=5g&N*>1|CIs$<4{SnsR8UXE zGw(=R)>VSM^Lzp482yoV3~_7GDj2GMiXYrG2jx^~`AkHLalSh|MW9A|3Qny@Am{$M zu!Tc8dJ463SPci}hx-u}H%aEhtLpG;z+T@G`=w!w}&zRslz6)=s!nQ6pig z1371wQfwR$pk1+sIE+z&BW^2a`pw}zNz45?#yyOL!@P%gxYtCmqU zSlC9wAs=%Ocqo%yd+lW5Xo`bm1N0eeP)fpW&>x261z_B$&S-N)SiF4~+)BLn2DI0u z#LE*V2;RVU4(6+qU|)#u8hioW@m+(*05|NSd=#hBh>SBvyA$IIplo493T{_cZD}9L zs_v;w?&51#YT*Jp0}x7Kx#e(#EvD?#&li~q+Y;yR;_I@+1wM2LGB^+4ZTNz6@=U-u zz(ZJ0yz_?oM(eTH;YtPn`(TYCN~+aWIgfoX?4JWSr3L80t5ULigZy={8HvhC6~|}i z?F^yUx`C=gh@J@l??|#V)C5V#R3|VG1rAFJlvAK>0yV{#p>5nUTt$QmjyID*)FgTb zhpo3`*vBFe?l0__?cPXxuMn^8I#ld+F*$OkYe9ivg=mFIT}wit44dq7t6sEe3EZR+ zD@$y?BJ!veX3P0}RfhSFJag6*XH+GCguviQQu%d0l`cmKEU%TZBDuddID__EM8y6K z63@?-*&@V!2j8vum~Z}}?rT!A6NY>%E_Y)NMcvDeCeL4??a4ljBdte*{VhXGb!ivx zlBZ--3tSFxy%&Mi{XsQ~Zilm8u{$qhosm{VbX1VoNH^T<1G?dukUbSuuR@<{a>7vM z{1fiN7dZ}MPXFJ-_);l&Iy{9A>2*M{+AJ!b^Mc*+E^Nb$6|@ooAyQLms;ob$<% z*IFj*pAQep!wv?)fybgxfTxntG-0Y>WK}1j2;p2H(=(B^fJ|qROqBt|3cOHe<_FPR zi3W;fD31g*1R8TI!%t*6xKBz7nlxKQ>lwiTDBu; zV=>OZ8cFM=Z2&F>(E5ASMQS??_!TnVo=>DpCbKh&c-?BL&mCRJGff=7izF*3ZHF-@ zrP`AySWuy>2f!$4RVI=NQII7Qp3kO(SINjT`HYlyrEKmbTVNn!-+?aMOvdk{_zn6F z@y7#RhF|LA1KEQ3Pw`E`H?D*KGk_a|k36(E9{Rl)--{ja01X!BL2rptp7=VqX0-f(JA5j;=KP4-&^XZ)#cn7O` z0mam=EWEwU>U^eQGOyaxlFY3L8!U&Q!{`-~gP1y+5Stz{N7I8H1?uS`jB6g{krrLf z#_Spk;ua&rfwozIx*Ubz^*v2B@W>vBW#+hSECm1%EfNp705?hKFx52|u!}JJ=e>2g z2&3azELy}2N;A*17`6+dPF*|!;w9s$-=K!1|81pvq7C{{ef+($Jd-7=TzhRjgOs_r z9cU9OPh^M6Zpm&% zCGnu`kfL<{@8=6y-c{!hctk4itxFyOo<_m5GMOP|CX-s4B`i%vvO=Yj&ygp%NUE>r zqf2&`s*SBum!T>(HngBq+1*WcFJh&Y8r|>n(N%U8-T%x=dnhaIQN&8Cl2t{lv^rU> zth8E}#gjccveF)1W`ukpoRYa@dh!lb4`72%G#Niw>2AmW-h(6gD7I_n`#AmMS}i%_ z@F0GR`6cHVjc`Ay1O627%C*3M+JWyhwH^GQ2HffR{(`SK{yBgj#n(}W0?J@p zwS4Hz@>kcmkGU7|k0CGdQolmeThTyz4Q4RZ6JVBh1*kYIw3Co)A}mWKK1XR2vwNYni}71b3%`MPF419~p&kAn;5cSa z?0`=JHyz)p_=?9dfaW&%<;N`Wk8<$-YQ>OS3OXrP-4Ir+rvn28@cSGdEGAQTx+6%1LoBy?Z0iX1f%N^-2d_7l8&cn0q~fq$zK8o-9}CpikQk(g1Y!~CL9v1K&<~C(J=iGF3QUk* zt^9|ygjuc4m!qsJ<`T#d^7@ppzTL_Y6)HniXgQX!4Ily)$q*HqYC(pm=qgoQ^_8D; zr6*%L1TrySpr1D4cPM~jeg>J>d>{Cq;I|l${buG_;9u{6p9S1ze1F9k_^)dm#Jid~ zzX2bx+5+x~1C1tt$G%OBVR2Co77a(3<8!!ZCs*dR&Rb~Kd+xd|2Cru}6WoeTxW!$LfnW9Q%M}x}k`WN#> z7Dv_5z4!`s(97Hd7{^kX6LiBYZrs;R(RgtsKZqtWXxD(_)gx;d>?!eT7(JxTUa#1& zUaCQ6Q68Gp4DN~F);CeEg8+weBuQALzvL)d1CT7Y=bYJ z_N>UH526yN1REdnXXvmuS@uF$RowMKm3BFi!hRKw15nP8UPyu`;aiR`$aiJqSc9zr zrV07BGNHeoy(Fw-v*^o3cN!?qRd5tfn38J$@Px>eNLaC$$BzQD!dCwLB{QS++8M0y zPy;WKK(Rz2v@#UsPJC>9i*f*X6yb4>J+iT~B<5d&tbmR;;fL2>_84CYSBsAMKLol= zZf?P*k5D_$V3a+^vycHkF214OqE;Ll%Ci_{DP+V_|9mD=O4W2s*s{#W32?qH6LkXA z8~dy2HKaOZG7a=-3#NXC-Vh8u$>^jeGz=;q`+G#t4waOL%1it!5gzNYx$ZaUJRaBoxO!ZMO~k3xai2A7OKZnO4DVCY8PI-1v^}HSjZ@ z=??BP3O7Y{yeQ#IWs$u|)g9-(I;}hC{wT7wlgTBjuxSt&*<-9$*}N)sR29`N2|M8t z%u!hQ*4_3&mBZ+LEI!ije)yPBIV3#xpMm($ux1s$pkE%FFHGk$Q`goXe);FN^+YX6 zR@Lgap&aekxp(iMy3zLjAF`1$4I3#Hxpw~z(-Xz6@KLUofHnkqE>Mwi1 z9@w=#60NI8@ny}Q9_eQyNDKR3czX}@(6UE?AonVW7wXbjAN+IMYT?v8L#*`GG!a(e z_--3vpWD$zu_j0ylp@xi@O6tla(u`!HXCOhB9fii8lEbA`#wV7 zm~{n53b3IFFJEW{kX!lJ!e|z?&m^=Q6;?`eyYTiny>U8* zIXlzZAwwRvQcFEcG8>UhnOsNS#o)%|qyBmDBFqA!uq;c7?7Nf0dS$4pikmmNEni64 zj)3%B8xmyJUyA(u^ha*%TVs)-w*LoJbD5jg9o&KA?%0Zdk0@Y z`>@LU<KZfVQZO6n1;C%#dzc&N@%}Mnx^Tp#xNtn`ejwy{ zR3zF4nanPfqlKY2#%!wuab+%opTHSBFP;pyU4exBt6?vkZ)({Se&KW#tBs zGdIz;4CAf@49S4)tr!5ey=wd&q;}EhkB0KgQg42Q7TR{=LdD|9sG5l~{m{-?fT{u8riHLPYSQ(e} zY3t}>HjO1AC=v2U%%>z@fHB3f~e1t%CCSI z(Gb*>;_czAcE-B0VCGrkNF#Cg$i4_)#iiP;&$S&ds?n@*P%>N_>shlq7 ze-YW_=lcIfkmB|9HHfSQA9+|%SEx3T!H6f@4frVs<=|VPVwUhHwYt?_K>$j3;a*eh z4w-cy&{EOef_+iV#dix5#;A_|NuGqgeMHDCMy>5-4ekTf7{o6_S--S)_G_ahe?OV5 z0{u1arNU^xH1`cuS!>Z9f!IyO{9r?v%@1uh4O%;=VZBnuW#IH&m^UrOgKiNgndLk+p`<;ovokd7Z zsFiyL%FWU6+amNX{@L8TFoA$y53eEqDo9;{hUj41jMmO=Ml9;wcUPOx=Fd)?YAwePi&_N@3K0t4~OmVu5tc)TW<(1z` zymfjI{7fcIhE&aIbq8eE*^L+u6rJ6{kpXj`{OTw4YZoBOQf}JuuY=~JyQBNDs!LMC zq&HLMKFk~gDxZS*OJte4G}9BXoxcr0tHsOpRuVT{UXmJ)a1|xh72(W3Fj9p5t%x?e z54B%$q^yr_dpL>sGvGNJuPKj6TA3#b-u=9HL=SHztyhBcCa_B=2p6pmf~{k)?19}d z%Yirq;mEcDg&0q?5i!+VKu6GHJha|WIB^i37tWp-1mad28;o0MG#F5#@ql>HV?0GE zgbUA;d5k9-3N0HBE+TJKbvI*RHrd`|`2eMqIt{BQ+g{|MlR#gb`91uF3p@QO4@v6H zgBSrPY?yaq9}#jnxH6HWEt!xz2vX=Nar#%y2^YDrujtB}5PDFk^y$iR?=w>4;5I)6h+}K3APiGekAqh-X-6zXjP0#diX6knm<5@tK#sqDjTmvNo}HehgEawJ;3nN^JoXl})iy2>Ws4z@J^l+B=VB2a6T z6s4C5qL+3T?z80i6BVXI_5cdfA$f~bt#1wkl0Pid8h$hJah_G#xSx3qd|_Xd*LK(s zz#Bv{jS?+_w_>y?E~W;^Do;-GRm;_6R-P^PP3;9DVUNk)h+M1p{Mj1M{}4&ZyiTp! zwK?K@g~2ArMyN@9m_O2cwH$^Pq^IqZuXXjHQoZnQ$z47<*>F^t=VCptB!ig(SK>=Hmc?GgyhjPNCUp`dg=K{0@a9SI)cPfILk1JeU4a~8;uY~{ zqg8X9YY21*A;iz6{#md$)iZ9jTONug2r!t$k&?Fc7Je5!5P2(~$id!E|L?xa<0RvB*RynsT7V zyC35f=WiD;WaCik6wM=KiqsY)Or96WYS;%`U6q=KcmxA@ERvYw3t3(br}qACyNcA#mC zMe7tJ2jAHi)d+v7#>mqRV5ptsPP8Wc%B2V_#~8Ow;2l`Cv*m)iQT*}O2Zair>jJmI z|8&qmuolJ$^Ot&%0n2?yK6K@B%~7zp!s)YJTuGK>2kZ&afFhUw@pMW#j8*Qiz~{jF7cU7Edk*J@TE3YmA9lDyJ<7}XKvHm3(#f|p%O@@ERr}v% z`M8@xa#)fMT1Ib)kOD$f1SQ1yavFpWaLQzKBTJ3YOq+6?hK{H6@1VsdaapuO`3{#d z=@Er*Up_x5Us%pX&0_n3Eiq{fYb+qv-StT^(hKgrfl?AnLMRZK70)2?Tnqo)w()Ft zPKU5^B;Df$bdMad>ZX@HCGvh#5KVYp7=4JY07smI{FKTX`u;*s>`4LnaCyL<1_ohw zMLoPrr8D(FRxWfi&(E@MyQUpJI@z&q|5w^M)@_4YAXt!~HJwUx5JE2M8poL>kVj@q zUFTR)$}+?(^<-NEF2?YoSPAFIeqaX|4Ch$&utRWzmJI5Ra2Pk5pditrEf1kgiX|<+ zh}w;%&V(<$2pM~Gi$cPmtd|wGJaoB>30&mFKu}N>H^$?-90}Nsya>82W-u6->vC+e zsE_UvZlcaxt=WAGb1XNTMWuq{MR5PV%tNbFBu3FyBTrbzEvd<4mhTCKOsiz5zFC95 zh93#4ofcYE)DF}1ar`8#*H5wTRX!v!AB=AzJ_uZS9Ubqx10ymAuy6bQ5z=o0WtC>m zho^|&412r^i{z~Run>M(;Ti$+4X`SQ|9G!XL z=C9%SFsCcZOVVIK=eY~ePSGBdaX@yt$ArU!|X&_%$>oTY1%!Ug77~itAb3# zz>u4xQf5RC9#0R==pV2`*a#|801-NXX76Wlhs+04`G%aS+8Z|-fy%7;0KbkfEUGM?epYVl)- zH-O?6mP3bZZ{$I$i2Emo0p_3Q<`}u#2E|&tEwY3an?LbMonR0y^ew`LWUFM_K&LCQ z7wdG1@axfdQXYMeeJ;y`F?t>9GJjbS7n32;a=7N0%u(`S@t0b^3vZ|&owvX%YLF~f zFFlqGwwRAFAmlySN2HG}DGG8?b&AJlBu`bcjy#X_|E+f%#i3&{JJ8hgtA z8t_Wcwe($*n_B&kkY`Wtmy=6p;vgP7ZK7A7Cr(05T;JDvXyW3yn_?aNKcc~144NU! zzm~uq$Gi0$m{sV#xm)&B;7uH6*auhP3wTpyW3BM?1^*vt<`BfU3z``Nr}i`x@p&%D z3bPT}LS`?K4h ztGlYukR0^*Ru$?s^_TeA%k|N;6s_9W1(5=`RLDSGsQ<|b#`-@QUr_%%o4OvXVv*2~ zF!4%&mS@Z9x92dJTkZY}2x$pnh!8^YeQrO7qw30KCla1C*-o)QXznVw$v{^$7>Hnj z$9go5r6>Y+Q(_WeVj=%p5-P{oa&#l+O18=#RBj_Zh_^ew3g^rO7+!u_XQw?HC3T0v z+$Y6dSMBF^RdR)%t??ndCE*OYMNtDnZN_@UWITp^E@Pjdl!t4-@|y_d@Dp=6T0MfJ z#+#pGDk1}Qxt3fWszM2?4#J~)GB*h1pf1dV0+$S;AeUeCb61k@tQeiB0(@(cd=$pr(jJS^0CB&HE~*PozU9#nmBc{bcJq~(WIvw zJQK1H7!v--FHRpla`ectdyFA{^L_DCVOCv+eQ!_%oQq%HEi>@oW!aOydtxhneEyCx zH|_=8AqSgHy&aRmP&;tSQlA|7WlY~m;{*3QWX4o_wtq;?STIZbpjP3^Qy#0X}Z}h8ea|%tc{_y-@7egl`Im z&69%pSD5j55yn#Q0IY40*(_AZ-I7B;7q(a$Eqye8%!#r#-I zr<^{cV)hbqn3&VbtAJlv-hx}XE-W{&-z@mY#H{YdQ1iOc&naTx((T@EVe^dGcXnfK zlvU8r7%^v698nQAXN!4J#SdZMlxD6*kE5Sk_oq2%F3kmEE*A5=xom|^Vm<&&xp{8x zj=5p;PhiST;$YhA4`!&*Fw4yhV9L!AFxdxw$1aKf!5&dz4orSr5z9kI2$YmvffeRV zfqHO%Jv^@lG{UKtldKhHy|~p{Xp=y_MT=2k?h$B!+(T1g9tCtBUAFXxfbbTEX%*-z3oR3M(S4q zGUiG1l;rxB9?ybWpETPAx)acy<{9%xfgTpWd1I0ZZ)AdOm~m9loaSK(@UVf0)1en2s9j!aXvQ3U;wNzlf>;~+=N0pJ6NE9 zneU6+F#>&VaI-7id_cpUFATP!0Lobi8(siiAke=Jwz#1Et`_J^bETxW8PIun-S`@T zehTPL^qcDidInGoGafu#fmmJ_sLXj)+};CpmDA06O`tCU&2cK69UjQebgy|9+@`zp zri2>+D2BV5-xQx?1*&o05@-sbJ8@Uz*8(jPsNM--l2u`ri_d{hnLy`@+hC^(0s`m^ z&}L_Z!*#6+bEo)hbVh|pOAiCW-Wz93h;{Znprf5eXAg0EOWZ~~nUJZkF#iD5gd1jB zB!#k`%*$wJiufD^2roA|3&gDvPz=yv;xo6V zj5~j2Qp|oZ9h2^LUI`>QF{i_1l`!w_wE^bC687m{ zn_z#T*JhZn_PPn?p?&D{gMM#D1N^yt{tWy3wd+d4;eG0FDw)6XmL7-3=C7PpPje2; zq?uQLWXv&#*E6j>`qOOc&%CvWxwe+}8T~IPQJ<8`G8hvt9WcbfxIcjQ>jzu_N#Is7 zPZi9)13pKbZw>eg=3fVxxMTh~AQbn^jzQ;@c;MwJqKS2ObhIeIbbkz za)g+^nEUr3=Ayx@pDi%M=58^6A?9;pYU-N9P06zpju|tAp~j23A5702KIA5tzL+^N z*TZzo*L8n}%&;U?4~eBm)u1xREK4!$Lql(a{pq1h_m!cnjkkvq|EZWJO?x7J7yR^2 z)6a#&XB^UVNE}VeQx9x5TsujN&6ckSwHGJQfj+O{HV{5#Lrh^dZXw+ zB4)R~v?s-WvV^J?dwLYp9WCZ~F{g@o@Td()QQL9Rs7G;~ zr0kmKw%)|7?0sw!wKtCDH{(8sdAs=3Pz`&n?asWdhuOFnOEg(9@9agY&^S{W#-nj+ z{NIc_wsJM*0w==UD+6jbYce-ihRwPR>EtSyj?vV$o;B?CnWrlqb6bWr@O~{@>OP6N zVG!*tO*ChUIlrl~$}z_^jfJT(+%M%C*UXqFipe-Vv$6S2_&I!J2sB?mj%MrlzTlT@ zYftM@ZRSllzlUR{Pgn=@hzaY^r;dkt@XAvs+}`8hl`F-(Sj=n0yk5+E#C#IwK`URH zK)U*E{hf&6bzmIx?gZAxKPIq#v@d@%f$1tWZl6f{d_l|~)^Ds1{QLvyGAB`pR!WV1 zCo!IuzGc8@&n>1~rA(!|V*IBDf}q$vsBESq;=+WrgGtQw%~^8%)`yo-$TrIOlRJH zD){Hbe0`t4)#4T3S-76qG|r-bjsNCx)A~4O;jCGGf_~a+X7#~X69UF^>2x#w-!e<$ zoOLGre>#o_m6aN`?H-%;ePFiFIv=LySzAZ#lV+cY{&LW4(mDHMrAfpXgXZC}S#(vO zEyAO;_1~6IA0d=u*mDnFdC~#2pMJni$j_<+Sl-zOl48|=ai6-smT_vY*ZxI6p4ldR zPg~@B2Qs$xV*cR3I2PC&26cmZ-GMz|-gaOe%uS=%f~U`64XmEivmP984r@$nL*qGo zBN!C2V$P|(yTmmqfmQ)}u%yIn8mMktYIl~z%=AH$PxBC;Kcd1-aKtnQ5PU~{HGtIcI~x$qFP&AM%_d&x#yAOJrEBBz!Rc1i%uftHajZoLnhTyrXpK3mPq*kibLoBx-QH((bdh;ppjGCfJ`m{s?0a_fB(rv= z`aGoX8R4a7tA&>KT^IeXNz78WHGobtXIkioeXofwGdnDFJD}6ehZg#I--jY+n#KET zxTgS}ZFUH>%DmQhbMzc@&TP7&&Ttg(9J5uR)#mHITj4h00Cnrv?*X&YY!YaV83BH< z$~>%Y(UyKsL|2(P2ddAx;&z`v?6)7l?PZ0`Kl)9Ko@-v7L!WeWP#^Cpgmax=N7tAM z2Wc$-?iY)lZz@Cww8nI=?-RSgTncS2^Esft3DCkr2x%~eFCh06NBf!3J0<=4eFnui5iWqS9|I-AUk0=o1O|q z|JJ|B++pf1^iBWS?j2^h_1SH}v$3t_Xbbfl@Jj4Xv&=$`1O5=Z%Y0^`0|)ep{lvU> zgrp!f_!IMnKw3*bF)NRx+nWw+={{3&l=zH3I-m*nwYMl_o*l3N&=Q3ZOCk5i~@;2!ZuO#Na)t4#la`^C4J#PRAjcHpA;lO}btLVFK9FTUNJdWu5( zBbMh(g|Er*x6aO+Vo~zK6gT^F2H_Of=wAySNG&S+Hxl$nQIsY+eDdWHBO5{Ce!eMah!83G!>BRJZ~YkisyW0p#vLc zB|^^P^CdlVLc;=6;+$)t<$%J@jTSl&P{euCLK_`PA)Tpw-&US&w3-&BaIoq$$)aRBjFhia9 zc*e%^!L;*|eG*>ERy6~n#jG>6YB8|5sq&?~8r zO2;^7TIf%a3(EFz)>`OIxQ%r-Sm-lAY)|K53)KSJ%V~k)l_`uFdVt9| zb1bw7ZcWb77P>riZCSH(s)hWaAC*pUR$AzLLvJYC+qu$0*TQX*bE80{-32%eeV;(9 zqC?V<8Jz7Fnjp{)^%-4|Zi3r87CJ3G+nwxuqL8@=Zd07?*D#-}%&qAKfHE5htuYUz zpD5eMnQEbJ0?iR&&>FL3*nsjmPH40Gyn0x={9vcvLiY{Zv-}We ztc6}2wl%uQnV0uDvHS>UnLw+|)x&0$ALsPE-r#SQ`DobU@{^sH1wyAE-d65ApX8zQ z%UhjKw$SGqlOCQfKigSygF@qm-&uZ+^O``b%;e#Zm4DBni!o1?kdnWjhe*4t^APEJ zO&%hhou7wDk!$l1sqTV2M5?#D0;+q)fyRlD(H<``OQVacO_`!gdDdZ$ZK;z`B73eZkIbsT+ z2Q5?!=z8Zpfvz_FM?7D?#aVkxkWa_lNprXRAWdRU;a@ZFTOm(4`~J#(Ur&=6yPVJ`?Eb=-ne4;S&Oe#QDgG)o?r2LNATj zyW5@4(yi+D)`*kbyPahg`U<(e$Jt<^W!@C?V`syi>N7ra1@1-u%0j(IPQi_nQ}3pm zj)wO+`{$tr=00a_9(u{S-`Ok>rMy$SJ>Wbq&=Y3wk!N&!(5bqIu{>esjXbs6L(bs> zt%)8t@@(^SXS0P`1=?nz?~Pmlx92T%5!@bjKD5v^aC_MKT%f0-mw9JnjjZCwn!*hu zn*g0^p}FP9#U61sS?HRwlVguM+Xd1RJ?6Y2kjkHrITL=uSX8ol%z5WNg(z8Vb9Vfc z(CX;jqaNw@3+EjR{bJPPfIbmuP4u^;&c+Je=N5W%)B-@E2N-Tml;wNENm=M)_4X3CiQikF=$1zK(9jTuq#inICuVeU=9tE#U4;eGZ#fg3Ur zNJ1bC0a39c0y0JBBoHDAQ=*{KN=R-S~PTn ze%sl^NcL54J6kPk89H0N?d)LG8loN1E@ziTv?JQ(>=mT08S3EIG_Ko1dA6$Ch86&& zZY8uzO;4E()YC^eQFb1)=)R$=^}EhiMlG-m6gFoYr6W)7;?D0n+kJFx=l7i5KDwpz z`_A5%DCS!A$DxmO{?N&Pnb11*;?O5Mf8@+%)T(w3y(9T!r@=>?JAdMAV6+N$>9~x2 zPXAXaU90*St=;Dww&?KCzjgl9+4WZmOFiYM(0=FO4nkrzK64HW;=Sl+j(Uy5LeyuU zIjI&^4jYvDxszql{9&g65|h2(zdNfLi8cMZ^B5zsrvGsE zSVY$JpfligDg7aLx%$ePV$p_SvwCqW?G>7)gtieuxpZ2*>$)lZ4?Cqd3#iJN&Tb46S$j$ie4Q zC`Wi?X=I^2v?Yo9)9AgD3y-bQ2mEx&j?srD3?7J3< zK@SwfxpdUSe1zSgF7{D#Mo8B%`pB6ye5^{=Ya~p~AHFcNlivNdln@(!8PMQegj&?< z;kN?qWF&f)s#m`wVZR#whs<=H`ktWsfim@WMyo>43}3FY^iGSmVZ^fZ9!Aph*?Puq zO1CQX+VD3rb9Cr^LR)YeQ=OcnM_ELg)lJtil5xn@&5UFma`g%cLoa=v*zx*@L|DFd_i*W< z8%GqVzIqrV>9f9iE2DkR+N6lnPmlVDW2(ZG*PUZ@?%xE}!L}Z&pJcQzS*0G^I_nco$C@=j_hckJKR^#)^ilGE zMpSe;L64D`7>BdE{7ldAQB{`{^)5eMbH+gZql9suCuw&dmjKIfeV3DT{-;tG>gz$e z!6LF}gY^nQPUWC`yA07AKjU=V^QY+T7E#ZiqIWUcl3Y1*Ilhl(j}5CCd0FN#o%^|@ zi;UdbWtg5LNRiGD)2kV^0KJ5;!(UL$R=&j;p*tTCL@UAweTzlcj{Ky{NL~DQ2|GOW z?_CP?oPQ8%QIC(r?Z2-3l92T7X#J2y)VpJ}dyv9JugB_KLFmCvYOEe;(Opgjz5`$k zqkYcx_zv80dYgp77R&}ZY*D5=TaDNGUvZvX>j`?WMdxDAJV8&esK0xnGf}T$Bx_uu z{!viqn~}Yei?sVS<Ymwm(K@n}xbm5f9~rs#PR zh89ikTB>6{D(`xl-s#6|&X}sp4#jgR)0K?GdY9?B7LoNX({&OvL@PqMUTqPr2<7?) zi)e06)3;ePZq#g`4HiuuwOmct+bsG8!lvt;7ST#FLm#q;R+1T7eakfqsnl54nR=Tb zXzOaA>;6e$TSBB~v-B;3cxN+9ueXS_wNh{Vj$^WQJ42Tp7DQSwTkm2dS};fNNkID< zNq^4Kha?RBd4Jb4b?AG_WfjmPUC+{Wj3{Pv#@TwKgz>1%)sG26t?x~ps}KK6N~byY zb6xiXA<=?!^dXC`9rxU#veKqR(F7FQbY1D@q$v8A>7q2R$=kv0fbgqx`J2&g4jAR@Z>D3a(;}Fr;2~v#(PpF8lbS0My z3y#Z(>X=10V^Ww^Da60YVjx}zs_8>8(O{jOj}R#flmAYo4zEC5>FkrCRr5a=O` zzBh}r7V9#+$MQyOiQb7@Z|aGc3SM{4*JDx$wWtpZHt1z~wMGAAw9_K8XUlXdZl@_1 z(w=2{ibb?)U!XTyM0&kK7pHRx-1ZA~86)Yz3-ufcgYN!0>muC{h!?tH#qUQ+WQ-Bt|)FRTl7QNDX_r5lAbqw< z54MO_wbeQ+Q~Hy7@Cv=uBI>~_^?pX8gIDQ;jHCyz(mzTVdhm^`HM%q2EMXS&?7v#) z`^Zt(=mCu6?BW_d%py9wxK>YKv?_E>>dE+~<0%&X=G1*z*XbJ=wW>dzn(SPs?_{*a zp?a>>>n);sUavP;L@ipUH`;WEJKfvm2EEs!m(XW7>CSlJK-T7c^w~{%HKQ#K>C(-5 zjSV|^>K9qR)SCpMMaj;u^>#+m6SwP~g0TMmly$q_YtcH#&Avld;>`|eL8kjt)}6Y> zqH|T(?7MV~(N;BN^kDZldaFgJ0__xNl8f3m z`gP|I`j&1|`mR(*J*jswTBZ7?MVu$~7`!W@_I*3LJo_oVnbBI+bIjSLW_`oR28x3wnQ` zgqQR|Msi~Il6LWag>Eq@mzQ*ik<{g7-Pwjwo-ga3ftau8vOvsN^*lzB=c~FQknUAI z3U3^|5_afRyr4n9KwlooeoYq(3UwO0DfL=AzW~j#sNdL=)lNOnqM>7xot?VD zBD(!}Q^zc#+mAQ(C5&2B;aEq#rFUC2b?kDWxp)IWR--kEP>n@rj4c3awy1{D3Pvre zdF*T1Z|Q>)rY;&Aao*M;yaAxGy$E^k(lLv!8T$m#8Xw^tML%ZI9b-Suen)Tj(Q@;y zK4j4YV-IG(t5fqO&j-dXG4JVN7Ck-o`|S60nU5|qyLHT>m&Tsx?AB|1RH5G2Pg?ZO zSe^5}-r=K5%?J8Ni}sIwDft7P+gHllKXy>&hkA-d{~8-k`%usG(aCC$Ug4w8IeYXC zKANWfruQ>yQC-KKtUlJA`%#{RdgXkqcOE0?*l|y&y}EyYDR0O)M}4A;E&3Fz;wQRB zP^fTR0Z_9I`xDmBPxNj^Ex1vc2DJJ($+KcyNzOjqa6F-#RQ0%4wO=1#v`RIMQ|2?h zW`LBp80d4onNf>s0s2DU_A?IS74LxF*@t4A?{9UOme z&Ubo-k6w4a*EK$RAm<0Y!bgwh{G@O2(Nj79(HnjAOpar=`sleFV|M%K<(wq*qmN$C z>1ambeuP?^Ieu48vZ-U#0+j5en1_6{Cnwcha~X zt4wDf(F&Al+@TbcR=h6Vx|p7fWFMYo$}FPu@+>pgB05>mG7T2dnRu32VG;SJS!NBR z*3b##32l-vKEus2+ZjENyNBf}+w8P4$BysbE!z~I!mSNW9bbU3H5SbtU#_#wev7IR zmScXji0%V&%)nvN+UR%(Xg#A*<=y*{IO=YMRZeftl4kTBM3Xrghp{)LUhW1oXHY| zn!WBEZwA^hI#oHr46}&JJHd?cW1iXV1XF3lJ{@1xZJ?QJQF({uYM`m{W6lPO*)Y0o zImxW>!yKTV1yUC(?<6zIBGQ+W%mj<*CgvnlW)Zb-kg2qY+Be9|vxsgZPBwKG(QU-Z zCT0=o*Hk^5YY$LUc=Wib*|H z+CaB7rV-K6GCIImlQnKy>ouvWz;T-5DU zlLd=TXZLF-+}UlcIfOYv7KLt9#+eBd1l=>?>2BjqB_py0+q+FL%{GiYkBR0IAHC77 z(A?moce@pv4Hl6%GudqS(MR1%%^n|p-mTmmV${MjXQufPC|}(anmn;%?o5+4QP7z{ zv&=w?nkJ^_R+wUoE(WSJb1k|a=yVgaXg$ywW(^SLbm*yx*}1dLdW&8KnqxKzQuhtG z$DC=l`lwZ%X|5~eba=yhk2%Y1wdml){<&wFU5wU+QVN^(*=CP~h4KprXPj;JTQs!r z#N4yZL5oTXhX5V6Xl~)C+_@&TNNTo-(G-hT6&53G9;0=kn+s0^T4BR}S2zP`wIJLa zoB=edSn9dCFiZWylv(s@;kmizm>P@r6-IKa%nFNsDqIS5gGK2@7w6758-27Yx7uvA zD8K01+_2g0qnmPT%^@G%o?B;9CrRn~MeB3xO@ANVpL?De(sjgx8}yo0gIk2YE?_kn8{S$I<*aGnOVb#?Cxx}+}z@$ z*PRPY&l0IwL-CB<3r&AU>r_MW7eFyVp^J)}^+jegqgA0BinwVT(O!#w=#_=At)-Igh2mqox0=vt9y+o6 zN;AWvwRumdRc3`ncj6`U)}H5MJ)YgqSd&3cQL^%~dxdb5eq zs*pQrxw_Hpkg!nCNylZ}Xm(kYQb=KYY`T$?o&Xv!jp}lfI(^a<=O#0EI@gTn`^~1t zN3-$y$7UbB?%ZNl_y}+J%_c^zn5l&JTSV{6Z#DTdq_qbpZtr%hnII@Mw{ThaUzxd# zT0;XSUkp@Z!xnMa4Hm5`yar(pNld)Fy%lJy4I4eVK;34xTXfdsa($cGB}i>9d_w)& z9I)wrTYPu-+l@Pu>H^)IJX_sivMjnB=uWfRqE`!_>VB8Ws*srUqI|vCz^FytJ^9`4 z>&>ClCG643p&q|Ax1B+#MQxkhv&ROrXAYrNcq4dymyPC-MPE<8zRLp!&!RZYEg93} zK{J?9tLk4esmH^n;VcO|spRsU$IJ?g%7Ff0)>yQ#q^8G{=1xW}>hh9vdpu^ypl-qm!*=*)? zt5k2yl4r~wMo0%Q;Tf~vBJzozF^2@9gx~epY}~n2-t$h!DG&E}*7Rqz#Th(hP}jd0 z`Wbc42iszXNlZmCx0q3W*q?iBHB$m%&zl<tn?-a3@UGcq5#0d1YxY`1bXAGtg=@#`KRm`xVF3iP4b#WA-kI@8%> z`d3kT@;Qw?W}`(PO}V)H9y55pgdLiak+;VjV6;kwO7rtRGE=I#oMUuLI8tAKtqp?b;_-Yk3f+oG3ClW}3Yu|dN2l-`?a+yfSUTRL00?x;l)mUbH6QM<9IlyD4C2Y0(g6M#Cp z{bLey?rE`}A-8$4poIwQDHb0aL*KX@G=j*+B3}!Ef;kEY5RI+x*IIoahmFt z?asSE!oEB$r&l+3^9n+(>buiM^~!a3G7_Edg66{^n5bivG;a= zlrS}6>JvcC7gC;-%Zy%q+|`Vp=eg3?y+y)8=S)4TS6}x|i_V=o4`_o$E2f^T`ntOW zap`^CJqc((P(EG>y+3sg(zzE2`X^97Hy?=RQJ1ncy^e7YTXZ5&e>dx538VRUtXpgm zwc%JdX3;gN^LicYuD7V9?Bednx{p~jx2ym$w=-&0wPn9X%v}~m%GUQf&fPDFUwsU4 z4_eexwz1a$_b?-zbeCPzeSo|A5~<6pDUTqm|D}x7EoBemn*v7p=tYE;`RIWLf->P~S}S95Fm zmhBWbR}e-Tdqa1ik6LnuyQ6$`dCmxThD}E$jB=YTq7p{AD=b=2KG-R6S6Xyoc}q@# zdmE$H(7N*F>Qr~VMGutE26{{oN*~m9w7Zp&oc4}!cQK;-&4IngxS=bg*4>VK zk-ZOhSK2VXD|gomQtzjHq{q3B31Us2;BN8}-od-ueKaI*qPy2e6MGlA?v+v=>E~p( zzeTjlOm+ubMEzOf&ajAf$tCVwiDa zMy;XarY%>exd$v7Ic+x3VTF#Y3rf!^8+IzbDBcm4e;Iy-P&vI8^L#4N< zL(^9GKGWTNE%%a2o_>4pv)zZTldvw+pXz;%d&Bh{#yvmJy^RsxL#Gw0dG4J)`r1^v z$PoWMpEP>^1MA4VR_xgJU*KLkHmVCzEuOB|8^f-l3AurzuZ-sqtudJEp@PLaBxwR7D@ zx6((m@pE4DeB`J_Zk>;21I2vwx)X6P@zK3GF?WrRKJUH6-RPqsdCS}Twujw{?7ETY+Qg?pz(bh~<`yTKy5UA@xl&or_x zS9vIjUOM?Gjb1aY@xszxP5Ci%jr$nqB0ks}cazPNbbgJy)uLH=0~t@(&8a{x+XLyY zc6SQGjeC}RwY%GHZayY7wDpK>mIwVTBVpKHa=?`n5D zqgCp)=@AEc`sma?*SH6KG@;LR?vEDzFg={M&JEopdi}%n(mpr1Sw5QH=O%Z*Mc2DZ z|I$6=qYKMVjeeiS@*l$35;4*Ug&{7ce^`orLYz?bjG$m>)lIkBZT)-*lBKXQ-3XC z=gjz5pAGJMMzoIMbCK>gM)2KcWcB`?yI;b1UvNWG2{0H1iEIM)K?|MAou3_|i zGFiR{-3>OZU}k}O(A{HE38Vdj)LAos-RnU&{|>I1S}^nE{NKBC7`2AZpIM%%;Tz9!AgME%EMN&%0ALP@c~#vgI$ha~Q1(ktKS; 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�?B5m6$g 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 v^eR3&I4L