浏览代码

Merge remote-tracking branch 'origin/master' into hdrp-xr-lighting

/main
Robert Srinivasiah 6 年前
当前提交
7427bb14
共有 102 个文件被更改,包括 5790 次插入1647 次删除
  1. 987
      ImageTemplates/HDRenderPipeline/Scenes/1xxx_Materials/1202_Lit_DoubleSideNormalMode.unity.png
  2. 45
      ImageTemplates/HDRenderPipeline/Scenes/1xxx_Materials/1202_Lit_DoubleSideNormalMode.unity.png.meta
  3. 999
      ImageTemplates/HDRenderPipeline/Scenes/2xxx_Lighting/2103_BakeMixed.unity.png
  4. 148
      ScriptableRenderPipeline/Core/CoreRP/GeometryUtils.cs
  5. 14
      ScriptableRenderPipeline/Core/CoreRP/ShaderLibrary/Common.hlsl
  6. 6
      ScriptableRenderPipeline/Core/CoreRP/ShaderLibrary/CommonLighting.hlsl
  7. 6
      ScriptableRenderPipeline/Core/CoreRP/ShaderLibrary/Debug.hlsl
  8. 2
      ScriptableRenderPipeline/Core/CoreRP/ShaderLibrary/ImageBasedLighting.hlsl
  9. 2
      ScriptableRenderPipeline/Core/package.json
  10. 20
      ScriptableRenderPipeline/HDRenderPipeline/HDRP/Camera/HDCamera.cs
  11. 34
      ScriptableRenderPipeline/HDRenderPipeline/HDRP/Debug/DebugDisplay.hlsl
  12. 46
      ScriptableRenderPipeline/HDRenderPipeline/HDRP/Debug/MaterialDebug.cs
  13. 2
      ScriptableRenderPipeline/HDRenderPipeline/HDRP/Editor/Decal/DecalMenuItems.cs
  14. 94
      ScriptableRenderPipeline/HDRenderPipeline/HDRP/Editor/EditorRenderPipelineResources/ReflectionProbesPreview.shader
  15. 4
      ScriptableRenderPipeline/HDRenderPipeline/HDRP/Editor/HDAssetFactory.cs
  16. 4
      ScriptableRenderPipeline/HDRenderPipeline/HDRP/Editor/HDRenderPipelineMenuItems.cs
  17. 7
      ScriptableRenderPipeline/HDRenderPipeline/HDRP/Editor/Material/Lit/BaseLitUI.cs
  18. 5
      ScriptableRenderPipeline/HDRenderPipeline/HDRP/HDRenderPipeline.cs
  19. 8
      ScriptableRenderPipeline/HDRenderPipeline/HDRP/HDStringConstants.cs
  20. 2
      ScriptableRenderPipeline/HDRenderPipeline/HDRP/Lighting/Deferred.shader
  21. 13
      ScriptableRenderPipeline/HDRenderPipeline/HDRP/Lighting/GlobalIlluminationUtils.cs
  22. 2
      ScriptableRenderPipeline/HDRenderPipeline/HDRP/Lighting/LightEvaluation.hlsl
  23. 2
      ScriptableRenderPipeline/HDRenderPipeline/HDRP/Lighting/LightLoop/Deferred.compute
  24. 2
      ScriptableRenderPipeline/HDRenderPipeline/HDRP/Lighting/LightLoop/LightLoop.cs
  25. 18
      ScriptableRenderPipeline/HDRenderPipeline/HDRP/Lighting/LightLoop/LightLoop.hlsl
  26. 2
      ScriptableRenderPipeline/HDRenderPipeline/HDRP/Lighting/LightLoop/lightlistbuild-clustered.compute
  27. 10
      ScriptableRenderPipeline/HDRenderPipeline/HDRP/Lighting/Volumetrics/Resources/VolumetricLighting.compute
  28. 31
      ScriptableRenderPipeline/HDRenderPipeline/HDRP/Lighting/Volumetrics/VBuffer.hlsl
  29. 125
      ScriptableRenderPipeline/HDRenderPipeline/HDRP/Lighting/Volumetrics/VolumetricLighting.cs
  30. 4
      ScriptableRenderPipeline/HDRenderPipeline/HDRP/Material/Decal/DecalUtilities.hlsl
  31. 18
      ScriptableRenderPipeline/HDRenderPipeline/HDRP/Material/DiffusionProfile/DiffusionProfileSettings.cs
  32. 2
      ScriptableRenderPipeline/HDRenderPipeline/HDRP/Material/LayeredLit/LayeredLit.shader
  33. 2
      ScriptableRenderPipeline/HDRenderPipeline/HDRP/Material/LayeredLit/LayeredLitDataDisplacement.hlsl
  34. 2
      ScriptableRenderPipeline/HDRenderPipeline/HDRP/Material/LayeredLit/LayeredLitTessellation.shader
  35. 211
      ScriptableRenderPipeline/HDRenderPipeline/HDRP/Material/Lit/Lit.hlsl
  36. 2
      ScriptableRenderPipeline/HDRenderPipeline/HDRP/Material/Lit/Lit.shader
  37. 6
      ScriptableRenderPipeline/HDRenderPipeline/HDRP/Material/Lit/LitData.hlsl
  38. 2
      ScriptableRenderPipeline/HDRenderPipeline/HDRP/Material/Lit/LitDataDisplacement.hlsl
  39. 4
      ScriptableRenderPipeline/HDRenderPipeline/HDRP/Material/Lit/LitReference.hlsl
  40. 2
      ScriptableRenderPipeline/HDRenderPipeline/HDRP/Material/Lit/LitTessellation.shader
  41. 3
      ScriptableRenderPipeline/HDRenderPipeline/HDRP/Material/SubsurfaceScattering/SubsurfaceScattering.compute
  42. 35
      ScriptableRenderPipeline/HDRenderPipeline/HDRP/Material/SubsurfaceScattering/SubsurfaceScattering.hlsl
  43. 3
      ScriptableRenderPipeline/HDRenderPipeline/HDRP/Material/SubsurfaceScattering/SubsurfaceScattering.shader
  44. 2
      ScriptableRenderPipeline/HDRenderPipeline/HDRP/ShaderPass/ShaderPassForward.hlsl
  45. 8
      ScriptableRenderPipeline/HDRenderPipeline/HDRP/ShaderVariables.hlsl
  46. 2
      ScriptableRenderPipeline/HDRenderPipeline/HDRP/Sky/AtmosphericScattering/AtmosphericScattering.hlsl
  47. 4
      ScriptableRenderPipeline/HDRenderPipeline/package.json
  48. 16
      ScriptableRenderPipeline/LightweightPipeline/LWRP/Data/LightweightPipelineAsset.cs
  49. 2
      ScriptableRenderPipeline/LightweightPipeline/LWRP/Data/LightweightPipelineResources.asset
  50. 1
      ScriptableRenderPipeline/LightweightPipeline/LWRP/Data/LightweightPipelineResources.cs
  51. 122
      ScriptableRenderPipeline/LightweightPipeline/LWRP/LightweightPipeline.cs
  52. 30
      ScriptableRenderPipeline/LightweightPipeline/LWRP/ShaderLibrary/Core.hlsl
  53. 9
      ScriptableRenderPipeline/LightweightPipeline/LWRP/ShaderLibrary/Lighting.hlsl
  54. 4
      ScriptableRenderPipeline/LightweightPipeline/LWRP/ShaderLibrary/LightweightPassLit.hlsl
  55. 6
      ScriptableRenderPipeline/LightweightPipeline/LWRP/ShaderLibrary/LightweightPassShadow.hlsl
  56. 151
      ScriptableRenderPipeline/LightweightPipeline/LWRP/ShaderLibrary/Shadows.hlsl
  57. 8
      ScriptableRenderPipeline/LightweightPipeline/LWRP/Shaders/LightweightStandard.shader
  58. 8
      ScriptableRenderPipeline/LightweightPipeline/LWRP/Shaders/LightweightStandardSimpleLighting.shader
  59. 8
      ScriptableRenderPipeline/LightweightPipeline/LWRP/Shaders/LightweightStandardTerrain.shader
  60. 4
      ScriptableRenderPipeline/LightweightPipeline/package.json
  61. 2
      ScriptableRenderPipeline/master-package.json
  62. 2
      TestbedPipelines/BasicRenderPipeline/BasicRenderPipeline.cs
  63. 5
      TestbedPipelines/OnTileDeferredPipeline/OnTileDeferredRenderPipeline.cs
  64. 629
      Tests/GraphicsTests/RenderPipeline/HDRenderPipeline/Scenes/1xxx_Materials/1202_Lit_DoubleSideNormalMode.unity
  65. 5
      Tests/GraphicsTests/RenderPipeline/HDRenderPipeline/Scenes/1xxx_Materials/1202_Lit_DoubleSideNormalMode/DoubleSideNormalTest.mat
  66. 36
      Tests/Scripts/GraphicTests/Framework/TestFrameworkTools.cs
  67. 8
      SampleScenes/HDTest/BakingSkyTest.meta
  68. 1001
      SampleScenes/HDTest/BakingSkyTest.unity
  69. 7
      SampleScenes/HDTest/BakingSkyTest.unity.meta
  70. 48
      ScriptableRenderPipeline/Core/CoreRP/GeometryUtils.cs.hlsl
  71. 9
      ScriptableRenderPipeline/Core/CoreRP/GeometryUtils.cs.hlsl.meta
  72. 59
      ScriptableRenderPipeline/HDRenderPipeline/HDRP/Lighting/Volumetrics/HomogeneousDensityVolume.cs
  73. 11
      ScriptableRenderPipeline/HDRenderPipeline/HDRP/Lighting/Volumetrics/HomogeneousDensityVolume.cs.meta
  74. 85
      ScriptableRenderPipeline/LightweightPipeline/LWRP/Shaders/LightweightScreenSpaceShadows.shader
  75. 9
      ScriptableRenderPipeline/LightweightPipeline/LWRP/Shaders/LightweightScreenSpaceShadows.shader.meta
  76. 30
      Tests/GraphicsTests/RenderPipeline/HDRenderPipeline/Scenes/AdditionalTestSceneInfos.asset
  77. 8
      Tests/GraphicsTests/RenderPipeline/HDRenderPipeline/Scenes/AdditionalTestSceneInfos.asset.meta
  78. 19
      Tests/Scripts/GraphicTests/Framework/AdditionalTestSceneInfos.cs
  79. 11
      Tests/Scripts/GraphicTests/Framework/AdditionalTestSceneInfos.cs.meta
  80. 76
      SampleScenes/HDTest/BakingSkyTest/BakingSKy Profile.asset
  81. 8
      SampleScenes/HDTest/BakingSkyTest/BakingSKy Profile.asset.meta
  82. 95
      SampleScenes/HDTest/BakingSkyTest/GlobalSky Profile.asset
  83. 8
      SampleScenes/HDTest/BakingSkyTest/GlobalSky Profile.asset.meta
  84. 7
      SampleScenes/HDTest/BakingSkyTest/LightingData.asset
  85. 8
      SampleScenes/HDTest/BakingSkyTest/LightingData.asset.meta
  86. 397
      SampleScenes/HDTest/BakingSkyTest/Lightmap-0_comp_dir.png
  87. 83
      SampleScenes/HDTest/BakingSkyTest/Lightmap-0_comp_dir.png.meta
  88. 129
      SampleScenes/HDTest/BakingSkyTest/Lightmap-0_comp_light.exr
  89. 83
      SampleScenes/HDTest/BakingSkyTest/Lightmap-0_comp_light.exr.meta
  90. 682
      SampleScenes/HDTest/BakingSkyTest/ReflectionProbe-0.exr
  91. 84
      SampleScenes/HDTest/BakingSkyTest/ReflectionProbe-0.exr.meta
  92. 212
      SampleScenes/HDTest/BakingSkyTest/RoughMaterial.mat
  93. 8
      SampleScenes/HDTest/BakingSkyTest/RoughMaterial.mat.meta
  94. 76
      SampleScenes/HDTest/BakingSkyTest/SkyBlue Profile.asset
  95. 8
      SampleScenes/HDTest/BakingSkyTest/SkyBlue Profile.asset.meta
  96. 76
      SampleScenes/HDTest/BakingSkyTest/SkyGreen Profile.asset
  97. 8
      SampleScenes/HDTest/BakingSkyTest/SkyGreen Profile.asset.meta
  98. 76
      SampleScenes/HDTest/BakingSkyTest/SkyRed Profile.asset
  99. 8
      SampleScenes/HDTest/BakingSkyTest/SkyRed Profile.asset.meta

987
ImageTemplates/HDRenderPipeline/Scenes/1xxx_Materials/1202_Lit_DoubleSideNormalMode.unity.png
文件差异内容过多而无法显示
查看文件

45
ImageTemplates/HDRenderPipeline/Scenes/1xxx_Materials/1202_Lit_DoubleSideNormalMode.unity.png.meta


serializedVersion: 5
mipmaps:
mipMapMode: 0
enableMipMap: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0

filterMode: -1
aniso: -1
mipBias: -1
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
wrapU: -1
wrapV: -1
wrapW: -1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0

spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaUsage: 0
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0

platformSettings:
- serializedVersion: 2
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: Windows Store Apps
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1

999
ImageTemplates/HDRenderPipeline/Scenes/2xxx_Lighting/2103_BakeMixed.unity.png
文件差异内容过多而无法显示
查看文件

148
ScriptableRenderPipeline/Core/CoreRP/GeometryUtils.cs


namespace UnityEngine.Experimental.Rendering
{
public struct Frustum
{
public Plane[] planes; // Left, right, top, bottom, near, far
public Vector3[] corners; // Positions of the 8 corners
// The frustum will be camera-relative if given a camera-relative VP matrix.
public static Frustum Create(Matrix4x4 viewProjMatrix, bool depth_0_1, bool reverseZ)
{
Frustum frustum = new Frustum();
frustum.planes = new Plane[6];
frustum.corners = new Vector3[8];
GeometryUtility.CalculateFrustumPlanes(viewProjMatrix, frustum.planes);
float nd = -1.0f;
if (depth_0_1)
{
nd = 0.0f;
// See "Fast Extraction of Viewing Frustum Planes" by Gribb and Hartmann.
Vector3 f = new Vector3(viewProjMatrix.m20, viewProjMatrix.m21, viewProjMatrix.m22);
float s = (float)(1.0 / Math.Sqrt(f.sqrMagnitude));
Plane np = new Plane(s * f, s * viewProjMatrix.m23);
frustum.planes[4] = np;
}
if (reverseZ)
{
Plane tmp = frustum.planes[4];
frustum.planes[4] = frustum.planes[5];
frustum.planes[5] = tmp;
}
Matrix4x4 invViewProjMatrix = viewProjMatrix.inverse;
// Unproject 8 frustum points.
frustum.corners[0] = invViewProjMatrix.MultiplyPoint(new Vector3(-1, -1, 1));
frustum.corners[1] = invViewProjMatrix.MultiplyPoint(new Vector3( 1, -1, 1));
frustum.corners[2] = invViewProjMatrix.MultiplyPoint(new Vector3(-1, 1, 1));
frustum.corners[3] = invViewProjMatrix.MultiplyPoint(new Vector3( 1, 1, 1));
frustum.corners[4] = invViewProjMatrix.MultiplyPoint(new Vector3(-1, -1, nd));
frustum.corners[5] = invViewProjMatrix.MultiplyPoint(new Vector3( 1, -1, nd));
frustum.corners[6] = invViewProjMatrix.MultiplyPoint(new Vector3(-1, 1, nd));
frustum.corners[7] = invViewProjMatrix.MultiplyPoint(new Vector3( 1, 1, nd));
return frustum;
}
} // struct Frustum
[GenerateHLSL]
public struct OrientedBBox
{
public Vector3 center;
public float extentX;
public Vector3 right;
public float extentY;
public Vector3 up;
public float extentZ;
public static OrientedBBox Create(Transform t)
{
OrientedBBox obb = new OrientedBBox();
obb.center = t.position;
obb.right = t.right;
obb.up = t.up;
obb.extentX = 0.5f * t.localScale.x;
obb.extentY = 0.5f * t.localScale.y;
obb.extentZ = 0.5f * t.localScale.z;
return obb;
}
} // struct OrientedBBox
// Returns 'true' if the OBB intersects (or is inside) the frustum, 'false' otherwise.
// 'cameraRelativeOffset' can be used to intersect a world-space OBB with a camera-relative frustum.
public static bool Overlap(OrientedBBox obb, Vector3 cameraRelativeOffset,
Frustum frustum, int numPlanes, int numCorners)
{
Vector3 center = obb.center + cameraRelativeOffset;
Vector3 forward = Vector3.Cross(obb.up, obb.right);
bool overlap = true;
// Test the OBB against frustum planes. Frustum planes have inward-facing.
// The OBB is outside if it's entirely behind one of the frustum planes.
// See "Real-Time Rendering", 3rd Edition, 16.10.2.
for (int i = 0; overlap && i < numPlanes; i++)
{
Vector3 n = frustum.planes[i].normal;
float d = frustum.planes[i].distance;
// Max projection of the half-diagonal onto the normal (always positive).
float maxHalfDiagProj = obb.extentX * Mathf.Abs(Vector3.Dot(n, obb.right))
+ obb.extentY * Mathf.Abs(Vector3.Dot(n, obb.up))
+ obb.extentZ * Mathf.Abs(Vector3.Dot(n, forward));
// Negative distance -> center behind the plane (outside).
float centerToPlaneDist = Vector3.Dot(n, center) + d;
// outside = maxHalfDiagProj < -centerToPlaneDist
// outside = maxHalfDiagProj + centerToPlaneDist < 0
// overlap = overlap && !outside
overlap = overlap && (maxHalfDiagProj + centerToPlaneDist >= 0);
}
if (numCorners == 0) return overlap;
// Test the frustum corners against OBB planes. The OBB planes are outward-facing.
// The frustum is outside if all of its corners are entirely in front of one of the OBB planes.
// See "Correct Frustum Culling" by Inigo Quilez.
// We can exploit the symmetry of the box by only testing against 3 planes rather than 6.
Plane[] planes = new Plane[3];
planes[0].normal = obb.right;
planes[0].distance = obb.extentX;
planes[1].normal = obb.up;
planes[1].distance = obb.extentY;
planes[2].normal = forward;
planes[2].distance = obb.extentZ;
for (int i = 0; overlap && i < 3; i++)
{
Plane plane = planes[i];
// We need a separate counter for the "box fully inside frustum" case.
bool outsidePos = true; // Positive normal
bool outsideNeg = true; // Reversed normal
// Merge 2 loops. Continue as long as all points are outside either plane.
for (int j = 0; j < numCorners; j++)
{
float proj = Vector3.Dot(plane.normal, frustum.corners[j] - center);
outsidePos = outsidePos && ( proj > plane.distance);
outsideNeg = outsideNeg && (-proj > plane.distance);
}
overlap = overlap && !(outsidePos || outsideNeg);
}
return overlap;
}
public static readonly Matrix4x4 FlipMatrixLHSRHS = Matrix4x4.Scale(new Vector3(1, 1, -1));
public static Vector4 Plane(Vector3 position, Vector3 normal)

else
return Matrix4x4.Perspective(camera.fieldOfView, camera.aspect, camera.nearClipPlane, camera.farClipPlane);
}
}
} // class GeometryUtils
}

14
ScriptableRenderPipeline/Core/CoreRP/ShaderLibrary/Common.hlsl


#endif // #ifndef real
// Target in compute shader are supported in 2018.2, for now define ours
// (Note only 45 and above support compute shader)
#ifdef SHADER_STAGE_COMPUTE
# ifndef SHADER_TARGET
# if defined(SHADER_API_METAL) || defined(SHADER_API_VULKAN)
# define SHADER_TARGET 45
# else
# define SHADER_TARGET 50
# endif
# endif
#endif
// Include language header
#if defined(SHADER_API_D3D11)
#include "API/D3D11.hlsl"

#if (SHADER_TARGET >= 45)
uint FastLog2(uint x)
{
return firstbithigh(x) - 1u;
return firstbithigh(x);
}
#endif

6
ScriptableRenderPipeline/Core/CoreRP/ShaderLibrary/CommonLighting.hlsl


// Helper functions
//-----------------------------------------------------------------------------
// Ref: "Crafting a Next-Gen Material Pipeline for The Order: 1886".
float ClampNdotV(float NdotV)
{
return max(NdotV, 0.0001);
}
// Inputs: normalized normal and view vectors.
// Outputs: front-facing normal, and the new non-negative value of the cosine of the view angle.
// Important: call Orthonormalize() on the tangent and recompute the bitangent afterwards.

6
ScriptableRenderPipeline/Core/CoreRP/ShaderLibrary/Debug.hlsl


}
return GetDebugMipColor(originalColor, tex, texelSize, uv);
}
// mipInfo :
// x = quality setings minStreamingMipLevel
// y = original mip count for texture

{
float3 outColor = float3(1.0, 0.0, 1.0); // Can't calculate without original mip count - return magenta
{
float3 outColor = float3(1.0, 0.0, 1.0); // Can't calculate without original mip count - return magenta
uint originalTextureMipCount = uint(mipInfo.y);
if (originalTextureMipCount != 0)

2
ScriptableRenderPipeline/Core/CoreRP/ShaderLibrary/ImageBasedLighting.hlsl


// Ref: Listing 18 in "Moving Frostbite to PBR" + https://knarkowicz.wordpress.com/2014/12/27/analytical-dfg-term-for-ibl/
real4 IntegrateGGXAndDisneyFGD(real3 V, real3 N, real roughness, uint sampleCount = 8192)
{
real NdotV = saturate(dot(N, V));
real NdotV = ClampNdotV(dot(N, V));
real4 acc = real4(0.0, 0.0, 0.0, 0.0);
// Add some jittering on Hammersley2d
real2 randNum = InitRandom(V.xy * 0.5 + 0.5);

2
ScriptableRenderPipeline/Core/package.json


{
"name": "com.unity.render-pipelines.core",
"description": "Core library for Unity render pipelines.",
"version": "0.1.28",
"version": "0.1.29",
"unity": "2018.1",
"dependencies": {
"com.unity.postprocessing": "0.1.8"

20
ScriptableRenderPipeline/HDRenderPipeline/HDRP/Camera/HDCamera.cs


public Matrix4x4 projMatrix;
public Matrix4x4 nonJitteredProjMatrix;
public Vector4 screenSize;
public Plane[] frustumPlanes;
public Frustum frustum;
public Vector4[] frustumPlaneEquations;
public Camera camera;
public uint taaFrameIndex;

public HDCamera(Camera cam)
{
camera = cam;
frustumPlanes = new Plane[6];
frustum = new Frustum();
frustumPlaneEquations = new Vector4[6];
viewMatrixStereo = new Matrix4x4[2];

prevViewProjMatrix *= cameraDisplacement; // Now prevViewProjMatrix correctly transforms this frame's camera-relative positionWS
}
// Warning: near and far planes appear to be broken (or rather far plane seems broken)
GeometryUtility.CalculateFrustumPlanes(viewProjMatrix, frustumPlanes);
frustum = Frustum.Create(viewProjMatrix, true, true);
for (int i = 0; i < 4; i++)
// Left, right, top, bottom, near, far.
for (int i = 0; i < 6; i++)
// Left, right, top, bottom.
frustumPlaneEquations[i] = new Vector4(frustumPlanes[i].normal.x, frustumPlanes[i].normal.y, frustumPlanes[i].normal.z, frustumPlanes[i].distance);
frustumPlaneEquations[i] = new Vector4(frustum.planes[i].normal.x, frustum.planes[i].normal.y, frustum.planes[i].normal.z, frustum.planes[i].distance);
// Near, far.
Vector4 forward = (camera.cameraType == CameraType.Reflection) ? camera.worldToCameraMatrix.GetRow(2) : new Vector4(camera.transform.forward.x, camera.transform.forward.y, camera.transform.forward.z, 0.0f);
// We need to switch forward direction based on handness (Reminder: Regular camera have a negative determinant in Unity and reflection probe follow DX convention and have a positive determinant)
forward = viewParam.x < 0.0f ? forward : -forward;
frustumPlaneEquations[4] = new Vector4( forward.x, forward.y, forward.z, -Vector3.Dot(forward, relPos) - camera.nearClipPlane);
frustumPlaneEquations[5] = new Vector4(-forward.x, -forward.y, -forward.z, Vector3.Dot(forward, relPos) + camera.farClipPlane);
m_LastFrameActive = Time.frameCount;

34
ScriptableRenderPipeline/HDRenderPipeline/HDRP/Debug/DebugDisplay.hlsl


// Draw a signed integer
// Can't display more than 16 digit
void DrawInteger(int intValue, float3 fontColor, uint2 currentUnormCoord, inout uint2 fixedUnormCoord, bool flipY, inout float3 color)
// The two following parameter are for float representation
// leading0 is used when drawing frac part of a float to draw the leading 0 (call is in charge of it)
// forceNegativeSign is used to force to display a negative sign as -0 is not recognize
void DrawInteger(int intValue, float3 fontColor, uint2 currentUnormCoord, inout uint2 fixedUnormCoord, bool flipY, inout float3 color, int leading0, bool forceNegativeSign)
{
const uint maxStringSize = 16;

int numEntries = min((intValue == 0 ? 0 : log10(absIntValue)) + (intValue < 0 ? 1 : 0), maxStringSize);
int numEntries = min((intValue == 0 ? 0 : log10(absIntValue)) + ((intValue < 0 || forceNegativeSign) ? 1 : 0) + leading0, maxStringSize);
for (uint i = 0; i < maxStringSize; ++i)
for (uint j = 0; j < maxStringSize; ++j)
{
// Numeric value incurrent font start on the second row at 0
DrawCharacter((absIntValue % 10) + '0', fontColor, currentUnormCoord, fixedUnormCoord, flipY, color, -1);

}
// 4. Display sign
if (intValue < 0)
// 4. Display leading 0
for (int i = 0; i < leading0; ++i)
{
DrawCharacter('0', fontColor, currentUnormCoord, fixedUnormCoord, flipY, color, -1);
}
// 5. Display sign
if (intValue < 0 || forceNegativeSign)
// 5. Reset cursor at end location
// 6. Reset cursor at end location
}
void DrawInteger(int intValue, float3 fontColor, uint2 currentUnormCoord, inout uint2 fixedUnormCoord, bool flipY, inout float3 color)
{
DrawInteger(intValue, fontColor, currentUnormCoord, fixedUnormCoord, flipY, color, 0, false);
}
void DrawFloat(float floatValue, float3 fontColor, uint2 currentUnormCoord, inout uint2 fixedUnormCoord, bool flipY, inout float3 color)

else
{
int intValue = int(floatValue);
DrawInteger(intValue, fontColor, currentUnormCoord, fixedUnormCoord, flipY, color);
bool forceNegativeSign = floatValue >= 0.0f ? false : true;
DrawInteger(intValue, fontColor, currentUnormCoord, fixedUnormCoord, flipY, color, 0, forceNegativeSign);
int fracValue = int(frac(floatValue) * 1e6); // 6 digit
DrawInteger(fracValue, fontColor, currentUnormCoord, fixedUnormCoord, flipY, color);
int fracValue = int(frac(abs(floatValue)) * 1e6); // 6 digit
int leading0 = 6 - (int(log10(fracValue)) + 1); // Counting leading0 to add in front of the float
DrawInteger(fracValue, fontColor, currentUnormCoord, fixedUnormCoord, flipY, color, leading0, false);
}
}

46
ScriptableRenderPipeline/HDRenderPipeline/HDRP/Debug/MaterialDebug.cs


var localIndex = 0;
foreach (var field in fields)
{
// Note: One field can have multiple name. This is to allow to have different debug view mode for the same field
// like for example display normal in world space or in view space. Same field but two different modes.
List<String> displayNames = new List<string>();
{
// Note: One field can have multiple name. This is to allow to have different debug view mode for the same field
// like for example display normal in world space or in view space. Same field but two different modes.
List<String> displayNames = new List<string>();
displayNames.Add(field.Name);
// Check if the display name have been override by the users

if (propertyAttr[0].displayNames.Length > 0 && propertyAttr[0].displayNames[0] != "")
{
displayNames.Clear();
{
displayNames.Clear();
foreach (string fieldName in displayNames)
{
debugViewMaterialStringsList.Add(new GUIContent(className + fieldName));

materialItems.Add(item);
}
// Init list
List<GUIContent> debugViewMaterialStringsList = new List<GUIContent>();
// Init list
List<GUIContent> debugViewMaterialStringsList = new List<GUIContent>();
List<int> debugViewMaterialValuesList = new List<int>();
List<GUIContent> debugViewEngineStringsList = new List<GUIContent>();
List<int> debugViewEngineValuesList = new List<int>();

// First element is a reserved location and should not be used (allow to track error)
// Special case for None since it cannot be inferred from SurfaceData/BuiltinData
debugViewMaterialStringsList.Add(new GUIContent("None"));
debugViewMaterialStringsList.Add(new GUIContent("None"));
debugViewMaterialValuesList.Add(0);
foreach (MaterialItem item in materialItems)

// Engine properties debug
// First element is a reserved location and should not be used (allow to track error)
// Special case for None since it cannot be inferred from SurfaceData/BuiltinData
debugViewEngineStringsList.Add(new GUIContent("None"));
debugViewEngineValuesList.Add(0);
debugViewEngineStringsList.Add(new GUIContent("None"));
debugViewEngineValuesList.Add(0);
// For the following, no need to reserve the 0 case as it is handled in the Enum
// For the following, no need to reserve the 0 case as it is handled in the Enum
// Attributes debug
FillWithPropertiesEnum(typeof(Attributes.DebugViewVarying), ref debugViewMaterialVaryingStringsList, ref debugViewMaterialVaryingValuesList, "");

FillWithProperties(typeof(Lit.BSDFData), ref debugViewMaterialGBufferStringsList, ref debugViewMaterialGBufferValuesList, "");
// Convert to array for UI
debugViewMaterialStrings = debugViewMaterialStringsList.ToArray();
debugViewMaterialValues = debugViewMaterialValuesList.ToArray();
debugViewEngineStrings = debugViewEngineStringsList.ToArray();
debugViewMaterialStrings = debugViewMaterialStringsList.ToArray();
debugViewMaterialValues = debugViewMaterialValuesList.ToArray();
debugViewEngineStrings = debugViewEngineStringsList.ToArray();
debugViewMaterialVaryingStrings = debugViewMaterialVaryingStringsList.ToArray();
debugViewMaterialVaryingStrings = debugViewMaterialVaryingStringsList.ToArray();
debugViewMaterialPropertiesStrings = debugViewMaterialPropertiesStringsList.ToArray();
debugViewMaterialPropertiesStrings = debugViewMaterialPropertiesStringsList.ToArray();
debugViewMaterialTextureStrings = debugViewMaterialTextureStringsList.ToArray();
debugViewMaterialTextureStrings = debugViewMaterialTextureStringsList.ToArray();
debugViewMaterialGBufferStrings = debugViewMaterialGBufferStringsList.ToArray();
debugViewMaterialGBufferValues = debugViewMaterialGBufferValuesList.ToArray();
debugViewMaterialGBufferStrings = debugViewMaterialGBufferStringsList.ToArray();
debugViewMaterialGBufferValues = debugViewMaterialGBufferValuesList.ToArray();
isDebugViewMaterialInit = true;
}

2
ScriptableRenderPipeline/HDRenderPipeline/HDRP/Editor/Decal/DecalMenuItems.cs


{
public class DecalMenuItems
{
[MenuItem("GameObject/Graphics/DecalProjector", priority = CoreUtils.gameObjectMenuPriority)]
[MenuItem("GameObject/Rendering/DecalProjector", priority = CoreUtils.gameObjectMenuPriority)]
static void CreateDecal(MenuCommand menuCommand)
{
// Create a custom game object

94
ScriptableRenderPipeline/HDRenderPipeline/HDRP/Editor/EditorRenderPipelineResources/ReflectionProbesPreview.shader


// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
Shader "Debug/ReflectionProbePreview"
Shader "Debug/ReflectionProbePreview"
{
Properties
{

SubShader
{
Tags{ "RenderType" = "Opaque" "Queue" = "Transparent" }
LOD 100
LOD 100
{
Name "ForwardUnlit"
Tags{ "LightMode" = "Forward" }
{
Name "ForwardUnlit"
Tags{ "LightMode" = "Forward" }
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
HLSLPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
#include "CoreRP/ShaderLibrary/common.hlsl"
#include "HDRP/ShaderVariables.hlsl"
struct appdata
{
float4 positionOS : POSITION;
float3 normalOS : NORMAL;
};
struct appdata
{
float4 vertex : POSITION;
float3 normal : NORMAL;
};
struct v2f
{
float4 positionCS : SV_POSITION;
float3 normalWS : NORMAL;
float3 positionWS : TEXCOORD0;
};
struct v2f
{
float4 vertex : SV_POSITION;
float3 normal : NORMAL;
float3 worldpos : TEXCOORD0;
};
TEXTURECUBE(_Cubemap);
SAMPLER(sampler_Cubemap);
samplerCUBE _Cubemap;
float3 _CameraWorldPosition;
float _MipLevel;
float _Exposure;
float3 _CameraWorldPosition;
float _MipLevel;
float _Exposure;
v2f vert(appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.worldpos = mul(unity_ObjectToWorld, v.vertex);
o.normal = mul(unity_ObjectToWorld, float4(v.normal, 0)).xyz;
return o;
}
v2f vert(appdata v)
{
v2f o;
// Transform local to world before custom vertex code
o.positionWS = TransformObjectToWorld(v.positionOS.xyz);
o.positionWS = GetCameraRelativePositionWS(o.positionWS);
o.positionCS = TransformWorldToHClip(o.positionWS);
o.normalWS = TransformObjectToWorldNormal(v.normalOS);
return o;
}
float4 frag(v2f i) : SV_Target
{
//float3 view = normalize(i.worldpos - _CameraWorldPosition);
float3 V = normalize(i.positionWS - GetPrimaryCameraPosition());
float3 R = reflect(V, i.normalWS);
float4 color = SAMPLE_TEXTURECUBE_LOD(_Cubemap, sampler_Cubemap, R, _MipLevel).rgba;
color = color * exp2(_Exposure);
float4 frag(v2f i) : SV_Target
{
//float3 view = normalize(i.worldpos - _CameraWorldPosition);
float3 view = normalize(i.worldpos - _WorldSpaceCameraPos);
float3 reflected = reflect(view, i.normal);
float4 col = texCUBElod(_Cubemap,float4(reflected,_MipLevel));
col = col*exp2(_Exposure);
return col;
}
ENDCG
}
return float4(color);
}
ENDHLSL
}
}
}

4
ScriptableRenderPipeline/HDRenderPipeline/HDRP/Editor/HDAssetFactory.cs


}
}
[MenuItem("Assets/Create/Graphics/High Definition Render Pipeline Asset", priority = CoreUtils.assetCreateMenuPriority1)]
[MenuItem("Assets/Create/Rendering/High Definition Render Pipeline Asset", priority = CoreUtils.assetCreateMenuPriority1)]
static void CreateHDRenderPipeline()
{
var icon = EditorGUIUtility.FindTexture("ScriptableObject Icon");

}
}
[MenuItem("Assets/Create/Graphics/High Definition Render Pipeline Resources", priority = CoreUtils.assetCreateMenuPriority1)]
[MenuItem("Assets/Create/Rendering/High Definition Render Pipeline Resources", priority = CoreUtils.assetCreateMenuPriority1)]
static void CreateRenderPipelineResources()
{
var icon = EditorGUIUtility.FindTexture("ScriptableObject Icon");

4
ScriptableRenderPipeline/HDRenderPipeline/HDRP/Editor/HDRenderPipelineMenuItems.cs


}
}
[MenuItem("GameObject/Graphics/Scene Settings", priority = CoreUtils.gameObjectMenuPriority)]
[MenuItem("GameObject/Rendering/Scene Settings", priority = CoreUtils.gameObjectMenuPriority)]
static void CreateCustomGameObject(MenuCommand menuCommand)
{
var sceneSettings = new GameObject("Scene Settings");

class DoCreateNewAssetDiffusionProfileSettings : DoCreateNewAsset<DiffusionProfileSettings> {}
[MenuItem("Assets/Create/Graphics/Diffusion profile Settings", priority = CoreUtils.assetCreateMenuPriority2)]
[MenuItem("Assets/Create/Rendering/Diffusion profile Settings", priority = CoreUtils.assetCreateMenuPriority2)]
static void MenuCreateDiffusionProfile()
{
var icon = EditorGUIUtility.FindTexture("ScriptableObject Icon");

7
ScriptableRenderPipeline/HDRenderPipeline/HDRP/Editor/Material/Lit/BaseLitUI.cs


public enum DoubleSidedNormalMode
{
Flip,
Mirror
Mirror,
None
}
public enum TessellationMode

case DoubleSidedNormalMode.Flip: // Flip mode (in tangent space)
material.SetVector("_DoubleSidedConstants", new Vector4(-1.0f, -1.0f, -1.0f, 0.0f));
break;
case DoubleSidedNormalMode.None: // None mode (in tangent space)
material.SetVector("_DoubleSidedConstants", new Vector4(1.0f, 1.0f, 1.0f, 0.0f));
break;
}
}

5
ScriptableRenderPipeline/HDRenderPipeline/HDRP/HDRenderPipeline.cs


rendererSupportsReflectionProbes = true
};
//Lightmapping.SetDelegate(GlobalIlluminationUtils.hdLightsDelegate);
Lightmapping.SetDelegate(GlobalIlluminationUtils.hdLightsDelegate);
#if UNITY_EDITOR
SceneViewDrawMode.SetupDrawMode();

m_LightLoop.BuildGPULightLists(hdCamera, cmd, m_CameraDepthStencilBuffer, m_CameraStencilBufferCopy, m_SkyManager.IsSkyValid());
}
}
// The pass only requires the volume properties, and can run async.
m_VolumetricLightingModule.VoxelizeDensityVolumes(hdCamera, cmd);
// Render the volumetric lighting.
// The pass requires the volume properties, the light list and the shadows, and can run async.

8
ScriptableRenderPipeline/HDRenderPipeline/HDRP/HDStringConstants.cs


public static readonly int _Result1 = Shader.PropertyToID("_Result1");
public static readonly int _AmbientProbeCoeffs = Shader.PropertyToID("_AmbientProbeCoeffs");
public static readonly int _GlobalFog_Extinction = Shader.PropertyToID("_GlobalFog_Extinction");
public static readonly int _GlobalFog_Scattering = Shader.PropertyToID("_GlobalFog_Scattering");
public static readonly int _GlobalFog_Asymmetry = Shader.PropertyToID("_GlobalFog_Asymmetry");
public static readonly int _GlobalExtinction = Shader.PropertyToID("_GlobalExtinction");
public static readonly int _GlobalScattering = Shader.PropertyToID("_GlobalScattering");
public static readonly int _GlobalAsymmetry = Shader.PropertyToID("_GlobalAsymmetry");
public static readonly int _VBufferScaleAndSliceCount = Shader.PropertyToID("_VBufferScaleAndSliceCount");
public static readonly int _VBufferSliceCount = Shader.PropertyToID("_VBufferSliceCount");
public static readonly int _VBufferDepthEncodingParams = Shader.PropertyToID("_VBufferDepthEncodingParams");
public static readonly int _VBufferDepthDecodingParams = Shader.PropertyToID("_VBufferDepthDecodingParams");
public static readonly int _VBufferCoordToViewDirWS = Shader.PropertyToID("_VBufferCoordToViewDirWS");

2
ScriptableRenderPipeline/HDRenderPipeline/HDRP/Lighting/Deferred.shader


Outputs outputs;
#ifdef OUTPUT_SPLIT_LIGHTING
if (_EnableSubsurfaceScattering != 0 && PixelHasSubsurfaceScattering(bsdfData))
if (_EnableSubsurfaceScattering != 0 && ShouldOutputSplitLighting(bsdfData))
{
outputs.specularLighting = float4(specularLighting, 1.0);
outputs.diffuseLighting = TagLightingForSSS(diffuseLighting);

13
ScriptableRenderPipeline/HDRenderPipeline/HDRP/Lighting/GlobalIlluminationUtils.cs


ld.instanceID = l.GetInstanceID();
ld.color = add.affectDiffuse ? LinearColor.Convert(l.color, l.intensity) : LinearColor.Black();
ld.indirectColor = add.affectDiffuse ? LightmapperUtils.ExtractIndirect(l) : LinearColor.Black();
// For HDRP we need to divide the analytic light color by PI (HDRP do explicit PI division for Lambert, but built in Unity and the GI don't)
// We apply it on both direct and indirect are they are separated, seems that direct is no used if we used mixed mode with indirect or shadowmask bake.
ld.color.red /= Mathf.PI;
ld.color.green /= Mathf.PI;
ld.color.blue /= Mathf.PI;
ld.indirectColor.red /= Mathf.PI;
ld.indirectColor.green /= Mathf.PI;
ld.indirectColor.blue /= Mathf.PI;
// Note that the HDRI is correctly integrated in the GlobalIllumination system, we don't need to do anything regarding it.
#if UNITY_EDITOR
ld.mode = LightmapperUtils.Extract(l.lightmapBakeType);
#else

2
ScriptableRenderPipeline/HDRenderPipeline/HDRP/Lighting/LightEvaluation.hlsl


#if (SHADEROPTIONS_VOLUMETRIC_LIGHTING_PRESET != 0)
float distVol = (lightData.lightType == GPULIGHTTYPE_PROJECTOR_BOX) ? distances.w : distances.x;
attenuation *= TransmittanceHomogeneousMedium(_GlobalFog_Extinction, distVol);
attenuation *= TransmittanceHomogeneousMedium(_GlobalExtinction, distVol);
#endif
// Projector lights always have cookies, so we can perform clipping inside the if().

2
ScriptableRenderPipeline/HDRenderPipeline/HDRP/Lighting/LightLoop/Deferred.compute


float3 specularLighting;
LightLoop(V, posInput, preLightData, bsdfData, bakeLightingData, featureFlags, diffuseLighting, specularLighting);
if (_EnableSubsurfaceScattering != 0 && PixelHasSubsurfaceScattering(bsdfData))
if (_EnableSubsurfaceScattering != 0 && ShouldOutputSplitLighting(bsdfData))
{
specularLightingUAV[pixelCoord] = float4(specularLighting, 1.0);
diffuseLightingUAV[pixelCoord] = TagLightingForSSS(diffuseLighting);

2
ScriptableRenderPipeline/HDRenderPipeline/HDRP/Lighting/LightLoop/LightLoop.cs


public const int k_MaxCascadeCount = 4; //Should be not less than m_Settings.directionalLightCascadeCount;
static readonly Vector3 k_BoxCullingExtentThreshold = Vector3.one * 0.01f;
// Static keyword is required here else we get a "DestroyBuffer can only be call in main thread"
// Static keyword is required here else we get a "DestroyBuffer can only be called from the main thread"
static ComputeBuffer s_DirectionalLightDatas = null;
static ComputeBuffer s_LightDatas = null;
static ComputeBuffer s_EnvLightDatas = null;

18
ScriptableRenderPipeline/HDRenderPipeline/HDRP/Lighting/LightLoop/LightLoop.hlsl


if (featureFlags & LIGHTFEATUREFLAGS_SSREFRACTION)
{
IndirectLighting lighting = EvaluateBSDF_SSRefraction(context, V, posInput, preLightData, bsdfData, refractionHierarchyWeight);
IndirectLighting lighting = EvaluateBSDF_SSLighting(
context,
V,
posInput,
preLightData,
bsdfData,
GPUIMAGEBASEDLIGHTINGTYPE_REFRACTION,
refractionHierarchyWeight);
IndirectLighting lighting = EvaluateBSDF_SSReflection(context, V, posInput, preLightData, bsdfData, reflectionHierarchyWeight);
IndirectLighting lighting = EvaluateBSDF_SSLighting(
context,
V,
posInput,
preLightData,
bsdfData,
GPUIMAGEBASEDLIGHTINGTYPE_REFLECTION,
reflectionHierarchyWeight);
AccumulateIndirectLighting(lighting, aggregateLighting);
}

2
ScriptableRenderPipeline/HDRenderPipeline/HDRP/Lighting/LightLoop/lightlistbuild-clustered.compute


{
uint2 uPixCrd = min( uint2(viTilLL.x+(idx&(TILE_SIZE_CLUSTERED-1)), viTilLL.y+(idx>>log2TileSize)), uint2(g_screenSize.x-1, g_screenSize.y-1) );
#ifdef MSAA_ENABLED
for(uint i=0; i<g_iNumSamplesMSAA; i++)
for(int i=0; i<g_iNumSamplesMSAA; i++)
{
const float fDpth = FetchDepthMSAA(g_depth_tex, uPixCrd, i);
#else

10
ScriptableRenderPipeline/HDRenderPipeline/HDRP/Lighting/Volumetrics/Resources/VolumetricLighting.compute


CBUFFER_START(UnityVolumetricLighting)
float4 _VBufferSampleOffset; // {x, y, z}, w = rendered frame count
float4x4 _VBufferCoordToViewDirWS; // Actually just 3x3, but Unity can only set 4x4
float _CornetteShanksConstant; // CornetteShanksPhasePartConstant(_GlobalFog_Asymmetry)
float _CornetteShanksConstant; // CornetteShanksPhasePartConstant(_GlobalAsymmetry)
CBUFFER_END
//--------------------------------------------------------------------------------------------------

// Sample the participating medium at 'tc' (or 'centerWS').
// We consider it to be constant along the interval [t0, t1] (within the voxel).
// TODO: piecewise linear.
float3 scattering = _GlobalFog_Scattering;
float extinction = max(_GlobalFog_Extinction, FLT_MIN); // Avoid NaNs
float asymmetry = _GlobalFog_Asymmetry;
float3 scattering = _GlobalScattering;
float extinction = max(_GlobalExtinction, FLT_MIN); // Avoid NaNs
float asymmetry = _GlobalAsymmetry;
// TODO: define a function ComputeGlobalFogCoefficients(float3 centerWS),
// which allows procedural definition of extinction and scattering.

float reprojZ = mul(_PrevViewProjMatrix, float4(centerWS, 1)).w;
float4 reprojValue = SampleVBuffer(TEXTURE3D_PARAM(_VBufferLightingHistory, s_trilinear_clamp_sampler),
false, reprojPosNDC, reprojZ,
_VBufferScaleAndSliceCount,
_VBufferSliceCount.xy,
_VBufferDepthEncodingParams,
_VBufferDepthDecodingParams);

31
ScriptableRenderPipeline/HDRenderPipeline/HDRP/Lighting/Volumetrics/VBuffer.hlsl


// Therefore, given 'logEncodedDepth', we compute a new depth value
// which allows us to perform HW interpolation which is linear in the view space.
float ComputeLerpPositionForLogEncoding(float linearDepth, float logEncodedDepth,
float4 VBufferScaleAndSliceCount,
float2 VBufferSliceCount,
float numSlices = VBufferScaleAndSliceCount.z;
float rcpNumSlices = VBufferScaleAndSliceCount.w;
float numSlices = VBufferSliceCount.x;
float rcpNumSlices = VBufferSliceCount.y;
float s0 = floor(d * numSlices - 0.5);
float s1 = ceil(d * numSlices - 0.5);

// If (clampToEdge == false), out-of-bounds loads return 0.
float4 SampleVBuffer(TEXTURE3D_ARGS(VBufferLighting, trilinearSampler), bool clampToEdge,
float2 positionNDC, float linearDepth,
float4 VBufferScaleAndSliceCount,
float2 VBufferSliceCount,
float numSlices = VBufferScaleAndSliceCount.z;
float rcpNumSlices = VBufferScaleAndSliceCount.w;
float numSlices = VBufferSliceCount.x;
float rcpNumSlices = VBufferSliceCount.y;
// Account for the visible area of the V-Buffer.
float2 uv = positionNDC * VBufferScaleAndSliceCount.xy;
float2 uv = positionNDC;
// The distance between slices is log-encoded.
float z = linearDepth;

float w = d;
#else
// Adjust the texture coordinate for HW trilinear sampling.
float w = ComputeLerpPositionForLogEncoding(z, d, VBufferScaleAndSliceCount, VBufferDepthDecodingParams);
float w = ComputeLerpPositionForLogEncoding(z, d, VBufferSliceCount, VBufferDepthDecodingParams);
#endif
return SAMPLE_TEXTURE3D_LOD(VBufferLighting, trilinearSampler, float3(uv, w), 0);

float4 SampleInScatteredRadianceAndTransmittance(TEXTURE3D_ARGS(VBufferLighting, trilinearSampler),
float2 positionNDC, float linearDepth,
float4 VBufferResolution,
float4 VBufferScaleAndSliceCount,
float2 VBufferSliceCount,
float4 VBufferDepthEncodingParams,
float4 VBufferDepthDecodingParams)
{

VBufferScaleAndSliceCount,
VBufferSliceCount,
#else
// Perform biquadratic reconstruction in XY, linear in Z, using 4x trilinear taps.
// Account for the visible area of the V-Buffer.
float2 xy = positionNDC * (VBufferResolution.xy * VBufferScaleAndSliceCount.xy);
#else // Perform biquadratic reconstruction in XY, linear in Z, using 4x trilinear taps.
float2 uv = positionNDC;
float2 xy = uv * VBufferResolution.xy;
float2 ic = floor(xy);
float2 fc = frac(xy);

float w = d;
#else
// Adjust the texture coordinate for HW trilinear sampling.
float w = ComputeLerpPositionForLogEncoding(z, d, VBufferScaleAndSliceCount, VBufferDepthDecodingParams);
float w = ComputeLerpPositionForLogEncoding(z, d, VBufferSliceCount, VBufferDepthDecodingParams);
#endif
float2 weights[2], offsets[2];

125
ScriptableRenderPipeline/HDRenderPipeline/HDRP/Lighting/Volumetrics/VolumetricLighting.cs


[Serializable]
public class VolumeParameters
{
public Bounds bounds; // Position and dimensions in meters
public bool isLocal; // Enables voxelization
public Color albedo; // Single scattering albedo [0, 1]
public float meanFreePath; // In meters [1, inf]. Should be chromatic - this is an optimization!
public float asymmetry; // Single global parameter for all volumes. TODO: UX

bounds = new Bounds(Vector3.zero, Vector3.positiveInfinity);
isLocal = true;
public bool IsVolumeUnbounded()
public bool IsLocalVolume()
return bounds.size.x == float.PositiveInfinity &&
bounds.size.y == float.PositiveInfinity &&
bounds.size.z == float.PositiveInfinity;
return isLocal;
}
public Vector3 GetAbsorptionCoefficient()

public void Constrain()
{
bounds.size = Vector3.Max(bounds.size, Vector3.zero);
albedo.r = Mathf.Clamp01(albedo.r);
albedo.g = Mathf.Clamp01(albedo.g);
albedo.b = Mathf.Clamp01(albedo.b);

public long viewID = -1; // -1 is invalid; positive for Game Views, 0 otherwise
public RenderTexture[] lightingRTEX = null;
public RenderTargetIdentifier[] lightingRTID = null;
public RenderTexture densityRTEX = null;
public RenderTargetIdentifier densityRTID = -1; // RenderTargetIdentifier cannot be NULL
public RenderTargetIdentifier GetLightingIntegralBuffer() // Of the current frame
{

return lightingRTID[1 + ((Time.renderedFrameCount + 1) & 1)];
}
public RenderTargetIdentifier GetDensityBuffer()
{
Debug.Assert(viewID >= 0);
return densityRTID;
}
public void Create(long viewID, int w, int h, int d)
{
Debug.Assert(viewID >= 0);

ComputeShader m_VolumetricLightingCS = null;
List<VBuffer> m_VBuffers = null;
float m_VBufferNearPlane = 0.5f; // Distance in meters; dynamic modifications not handled by reprojection
float m_VBufferFarPlane = 64.0f; // Distance in meters; dynamic modifications not handled by reprojection
const float k_LogScale = 0.5f;
List<VBuffer> m_VBuffers = null;
List<OrientedBBox> m_VisibleVolumes = null;
List<VolumeProperties> m_VisibleVolumeProperties = null;
public const int k_MaxVisibleVolumeCount = 512;
// Static keyword is required here else we get a "DestroyBuffer can only be called from the main thread"
static ComputeBuffer s_VisibleVolumesBuffer = null;
static ComputeBuffer s_VisibleVolumePropertiesBuffer = null;
float m_VBufferNearPlane = 0.5f; // Distance in meters; dynamic modifications not handled by reprojection
float m_VBufferFarPlane = 64.0f; // Distance in meters; dynamic modifications not handled by reprojection
const float k_LogScale = 0.5f;
m_VolumetricLightingCS = asset.renderPipelineResources.volumetricLightingCS;
m_VBuffers = new List<VBuffer>(0);
m_VolumetricLightingCS = asset.renderPipelineResources.volumetricLightingCS;
m_VBuffers = new List<VBuffer>();
m_VisibleVolumes = new List<OrientedBBox>();
m_VisibleVolumeProperties = new List<VolumeProperties>();
s_VisibleVolumesBuffer = new ComputeBuffer(k_MaxVisibleVolumeCount, System.Runtime.InteropServices.Marshal.SizeOf(typeof(OrientedBBox)));
s_VisibleVolumePropertiesBuffer = new ComputeBuffer(k_MaxVisibleVolumeCount, System.Runtime.InteropServices.Marshal.SizeOf(typeof(VolumeProperties)));
}
public void Cleanup()

m_VBuffers[i].Destroy();
}
m_VBuffers = null;
m_VBuffers = null;
m_VisibleVolumes = null;
m_VisibleVolumeProperties = null;
CoreUtils.SafeRelease(s_VisibleVolumesBuffer);
CoreUtils.SafeRelease(s_VisibleVolumePropertiesBuffer);
}
public void ResizeVBuffer(HDCamera camera, int screenWidth, int screenHeight)

// Since a single voxel corresponds to a tile (e.g. 8x8) of pixels,
// the VBuffer can potentially extend past the boundaries of the viewport.
// The function returns the fraction of the {width, height} of the VBuffer visible on screen.
// Note: for performance reasons, scale is unused (implicitly 1). The error is typically under 1%.
static Vector2 ComputeVBufferResolutionAndScale(VolumetricLightingPreset preset,
int screenWidth, int screenHeight,
ref int w, ref int h, ref int d)

{
if (preset == VolumetricLightingPreset.Off) return;
HomogeneousFog globalFogComponent = HomogeneousFog.GetGlobalFogComponent();
HomogeneousDensityVolume globalVolume = HomogeneousDensityVolume.GetGlobalHomogeneousDensityVolume();
VolumeProperties globalFogProperties = (globalFogComponent != null) ? globalFogComponent.volumeParameters.GetProperties()
VolumeProperties globalVolumeProperties = (globalVolume != null) ? globalVolume.volumeParameters.GetProperties()
float asymmetry = globalFogComponent != null ? globalFogComponent.volumeParameters.asymmetry : 0;
cmd.SetGlobalVector(HDShaderIDs._GlobalFog_Scattering, globalFogProperties.scattering);
cmd.SetGlobalFloat( HDShaderIDs._GlobalFog_Extinction, globalFogProperties.extinction);
cmd.SetGlobalFloat( HDShaderIDs._GlobalFog_Asymmetry, asymmetry);
float asymmetry = globalVolume != null ? globalVolume.volumeParameters.asymmetry : 0;
cmd.SetGlobalVector(HDShaderIDs._GlobalScattering, globalVolumeProperties.scattering);
cmd.SetGlobalFloat( HDShaderIDs._GlobalExtinction, globalVolumeProperties.extinction);
cmd.SetGlobalFloat( HDShaderIDs._GlobalAsymmetry, asymmetry);
Vector2 scale = ComputeVBufferResolutionAndScale(preset, (int)camera.screenSize.x, (int)camera.screenSize.y, ref w, ref h, ref d);
ComputeVBufferResolutionAndScale(preset, (int)camera.screenSize.x, (int)camera.screenSize.y, ref w, ref h, ref d);
VBuffer vBuffer = FindVBuffer(camera.GetViewID());
Debug.Assert(vBuffer != null);

cmd.SetGlobalVector( HDShaderIDs._VBufferScaleAndSliceCount, new Vector4(scale.x, scale.y, d, 1.0f / d));
cmd.SetGlobalVector( HDShaderIDs._VBufferSliceCount, new Vector4(d, 1.0f / d));
public void VoxelizeDensityVolumes(HDCamera camera, CommandBuffer cmd)
{
if (preset == VolumetricLightingPreset.Off) return;
Vector3 camPosition = camera.camera.transform.position;
Vector3 camOffset = Vector3.zero; // World-origin-relative
if (ShaderConfig.s_CameraRelativeRendering != 0)
{
camOffset = -camPosition; // Camera-relative
}
m_VisibleVolumes.Clear();
m_VisibleVolumeProperties.Clear();
// Collect all the visible volume data, and upload it to the GPU.
HomogeneousDensityVolume[] volumes = Object.FindObjectsOfType(typeof(HomogeneousDensityVolume)) as HomogeneousDensityVolume[];
foreach (HomogeneousDensityVolume volume in volumes)
{
// Only test active finite volumes.
if (volume.enabled && volume.volumeParameters.IsLocalVolume())
{
// TODO: cache these?
var obb = OrientedBBox.Create(volume.transform);
// Frustum cull on the CPU for now. TODO: do it on the GPU.
if (GeometryUtils.Overlap(obb, camOffset, camera.frustum, 6, 8))
{
// TODO: cache these?
var properties = volume.volumeParameters.GetProperties();
m_VisibleVolumes.Add(obb);
m_VisibleVolumeProperties.Add(properties);
}
}
}
s_VisibleVolumesBuffer.SetData(m_VisibleVolumes);
s_VisibleVolumePropertiesBuffer.SetData(m_VisibleVolumeProperties);
}
// Ref: https://en.wikipedia.org/wiki/Close-packing_of_equal_spheres
// The returned {x, y} coordinates (and all spheres) are all within the (-0.5, 0.5)^2 range.
// The pattern has been rotated by 15 degrees to maximize the resolution along X and Y:

VBuffer vBuffer = FindVBuffer(camera.GetViewID());
Debug.Assert(vBuffer != null);
HomogeneousFog globalFogComponent = HomogeneousFog.GetGlobalFogComponent();
float asymmetry = globalFogComponent != null ? globalFogComponent.volumeParameters.asymmetry : 0;
HomogeneousDensityVolume globalVolume = HomogeneousDensityVolume.GetGlobalHomogeneousDensityVolume();
float asymmetry = globalVolume != null ? globalVolume.volumeParameters.asymmetry : 0;
if (globalFogComponent == null)
if (globalVolume == null)
{
// Clear the render target instead of running the shader.
// CoreUtils.SetRenderTarget(cmd, GetVBufferLightingIntegral(viewOffset), ClearFlag.Color, CoreUtils.clearColorAllBlack);

}
int w = 0, h = 0, d = 0;
Vector2 scale = ComputeVBufferResolutionAndScale(preset, (int)camera.screenSize.x, (int)camera.screenSize.y, ref w, ref h, ref d);
float vFoV = camera.camera.fieldOfView * Mathf.Deg2Rad;
ComputeVBufferResolutionAndScale(preset, (int)camera.screenSize.x, (int)camera.screenSize.y, ref w, ref h, ref d);
// Compute it using the scaled resolution to account for the visible area of the VBuffer.
Vector4 scaledRes = new Vector4(w * scale.x, h * scale.y, 1.0f / (w * scale.x), 1.0f / (h * scale.y));
Matrix4x4 transform = HDUtils.ComputePixelCoordToWorldSpaceViewDirectionMatrix(vFoV, scaledRes, camera.viewMatrix, false);
float vFoV = camera.camera.fieldOfView * Mathf.Deg2Rad;
Vector4 resolution = new Vector4(w, h, 1.0f / w, 1.0f / h);
Matrix4x4 transform = HDUtils.ComputePixelCoordToWorldSpaceViewDirectionMatrix(vFoV, resolution, camera.viewMatrix, false);
camera.SetupComputeShader(m_VolumetricLightingCS, cmd);

4
ScriptableRenderPipeline/HDRenderPipeline/HDRP/Material/Decal/DecalUtilities.hlsl


#include "Decal.hlsl"
DECLARE_DBUFFER_TEXTURE(_DBufferTexture);
DECLARE_DBUFFER_TEXTURE(_DBufferTexture);
void AddDecalContribution(uint2 unPositionSS, inout SurfaceData surfaceData)
{

FETCH_DBUFFER(DBuffer, _DBufferTexture, unPositionSS);
DecalSurfaceData decalSurfaceData;
DECODE_FROM_DBUFFER(DBuffer, decalSurfaceData);
uint mask = UnpackByte(LOAD_TEXTURE2D(_DecalHTileTexture, unPositionSS / 8));
uint mask = UnpackByte(LOAD_TEXTURE2D(_DecalHTileTexture, unPositionSS / 8).x);
// using alpha compositing https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch23.html
if(mask & DBUFFERHTILEBIT_DIFFUSE)

18
ScriptableRenderPipeline/HDRenderPipeline/HDRP/Material/DiffusionProfile/DiffusionProfileSettings.cs


[GenerateHLSL]
public class DiffusionProfileConstants
{
public const int DIFFUSION_PROFILE_COUNT = 16; // Max. number of profiles, including the slot taken by the neutral profile
public const int DIFFUSION_PROFILE_NEUTRAL_ID = 0; // Does not result in blurring
public const int SSS_N_SAMPLES_NEAR_FIELD = 55; // Used for extreme close ups; must be a Fibonacci number
public const int SSS_N_SAMPLES_FAR_FIELD = 21; // Used at a regular distance; must be a Fibonacci number
public const int SSS_LOD_THRESHOLD = 4; // The LoD threshold of the near-field kernel (in pixels)
public const int DIFFUSION_PROFILE_COUNT = 16; // Max. number of profiles, including the slot taken by the neutral profile
public const int DIFFUSION_PROFILE_NEUTRAL_ID = 0; // Does not result in blurring
public const int SSS_N_SAMPLES_NEAR_FIELD = 55; // Used for extreme close ups; must be a Fibonacci number
public const int SSS_N_SAMPLES_FAR_FIELD = 21; // Used at a regular distance; must be a Fibonacci number
public const int SSS_LOD_THRESHOLD = 4; // The LoD threshold of the near-field kernel (in pixels)
public const int SSS_BASIC_N_SAMPLES = 11; // Must be an odd number
public const int SSS_BASIC_DISTANCE_SCALE = 3; // SSS distance units per centimeter
public const int SSS_BASIC_N_SAMPLES = 11; // Must be an odd number
public const int SSS_BASIC_DISTANCE_SCALE = 3; // SSS distance units per centimeter
// <<< Old SSS Model
}

{
public DiffusionProfile[] profiles;
[NonSerialized] public uint texturingModeFlags; // 1 bit/profile; 0 = PreAndPostScatter, 1 = PostScatter
[NonSerialized] public uint transmissionFlags; // 2 bit/profile; 0 = inf. thick, 1 = thin, 2 = regular
[NonSerialized] public uint texturingModeFlags; // 1 bit/profile: 0 = PreAndPostScatter, 1 = PostScatter
[NonSerialized] public uint transmissionFlags; // 1 bit/profile: 0 = regular, 1 = thin
[NonSerialized] public Vector4[] thicknessRemaps; // Remap: 0 = start, 1 = end - start
[NonSerialized] public Vector4[] worldScales; // X = meters per world unit; Y = world units per meter
[NonSerialized] public Vector4[] shapeParams; // RGB = S = 1 / D, A = filter radius

2
ScriptableRenderPipeline/HDRenderPipeline/HDRP/Material/LayeredLit/LayeredLit.shader


[ToggleUI] _EnableBlendModePreserveSpecularLighting("Enable Blend Mode Preserve Specular Lighting", Float) = 1.0
[ToggleUI] _DoubleSidedEnable("Double sided enable", Float) = 0.0
[Enum(Flip, 0, Mirror, 1)] _DoubleSidedNormalMode("Double sided normal mode", Float) = 1
[Enum(Flip, 0, Mirror, 1, None, 2)] _DoubleSidedNormalMode("Double sided normal mode", Float) = 1
[HideInInspector] _DoubleSidedConstants("_DoubleSidedConstants", Vector) = (1, 1, -1, 0)
// For layering, due to combinatorial explosion, we only support SSS/Transmission and Standard. We let other case for the shader graph

2
ScriptableRenderPipeline/HDRenderPipeline/HDRP/Material/LayeredLit/LayeredLitDataDisplacement.hlsl


// Since the result is used as a 'depthOffsetVS', it needs to be positive, so we flip the sign. { height = -height + 1 }.
float verticalDisplacement = maxHeight - height * maxHeight;
return verticalDisplacement / max(NdotV, 0.001);
return verticalDisplacement / ClampNdotV(NdotV);
#else
return 0.0;
#endif

2
ScriptableRenderPipeline/HDRenderPipeline/HDRP/Material/LayeredLit/LayeredLitTessellation.shader


[ToggleUI] _EnableBlendModePreserveSpecularLighting("Enable Blend Mode Preserve Specular Lighting", Float) = 1.0
[ToggleUI] _DoubleSidedEnable("Double sided enable", Float) = 0.0
[Enum(Flip, 0, Mirror, 1)] _DoubleSidedNormalMode("Double sided normal mode", Float) = 1
[Enum(Flip, 0, Mirror, 1, None, 2)] _DoubleSidedNormalMode("Double sided normal mode", Float) = 1
[HideInInspector] _DoubleSidedConstants("_DoubleSidedConstants", Vector) = (1, 1, -1, 0)
// For layering, due to combinatorial explosion, we only support SSS/Transmission and Standard. We let other case for the shader graph

211
ScriptableRenderPipeline/HDRenderPipeline/HDRP/Material/Lit/Lit.hlsl


/* 26 */ LIGHT_FEATURE_MASK_FLAGS_OPAQUE | MATERIAL_FEATURE_MASK_FLAGS, // Catch all case with MATERIAL_FEATURE_MASK_FLAGS is needed in case we disable material classification
};
// Additional bits set in 'bsdfData.materialFeatures' to save registers and simplify feature tracking.
#define MATERIAL_FEATURE_FLAGS_SSS_OUTPUT_SPLIT_LIGHTING ((MATERIAL_FEATURE_MASK_FLAGS + 1) << 0)
#define MATERIAL_FEATURE_FLAGS_SSS_TEXTURING_MODE_OFFSET FastLog2((MATERIAL_FEATURE_MASK_FLAGS + 1) << 1) // 2 bits
#define MATERIAL_FEATURE_FLAGS_TRANSMISSION_MODE_THIN ((MATERIAL_FEATURE_MASK_FLAGS + 1) << 3)
uint FeatureFlagsToTileVariant(uint featureFlags)
{
for (int i = 0; i < NUM_FEATURE_VARIANTS; i++)

bsdfData.diffusionProfile = diffusionProfile;
bsdfData.fresnel0 = _TransmissionTintsAndFresnel0[diffusionProfile].a;
bsdfData.subsurfaceMask = subsurfaceMask;
// Note: ApplySubsurfaceScatteringTexturingMode also test the diffusionProfile for updating diffuseColor based on SSS
bsdfData.materialFeatures |= MATERIAL_FEATURE_FLAGS_SSS_OUTPUT_SPLIT_LIGHTING;
bsdfData.materialFeatures |= GetSubsurfaceScatteringTexturingMode(bsdfData.diffusionProfile) << MATERIAL_FEATURE_FLAGS_SSS_TEXTURING_MODE_OFFSET;
}
// Assume that bsdfData.diffusionProfile is init

bsdfData.thickness);
#endif
bsdfData.useThickObjectMode = !IsBitSet(asuint(_TransmissionFlags), diffusionProfile);
bool useThinObjectMode = IsBitSet(asuint(_TransmissionFlags), diffusionProfile);
bsdfData.materialFeatures |= useThinObjectMode ? MATERIAL_FEATURE_FLAGS_TRANSMISSION_MODE_THIN : 0;
if (bsdfData.useThickObjectMode)
if (useThinObjectMode)
{
// Apply no displacement.
bsdfData.thickness = 0;
}
else
{
// Compute the thickness in world units along the normal.
float thicknessInMeters = bsdfData.thickness * METERS_PER_MILLIMETER;

}
else
{
// Apply no displacement.
bsdfData.thickness = 0;
}
}

// Precomputed lighting data to send to the various lighting functions
struct PreLightData
{
// General
float clampNdotV; // clamped NdotV
float NdotV; // Could be negative due to normal mapping, use ClampNdotV()
// GGX
float partLambdaV;

float3 iblR; // Dominant specular direction, used for IBL in EvaluateBSDF_Env()
float iblPerceptualRoughness;
float3 specularFGD; // Store preconvoled BRDF for both specular and diffuse
float diffuseFGD;
float3 specularFGD; // Store preconvoled BRDF for both specular and diffuse
float diffuseFGD;
float3x3 orthoBasisViewNormal; // Right-handed view-dependent orthogonal basis around the normal (6x VGPRs)
float3x3 ltcTransformDiffuse; // Inverse transformation for Lambertian or Disney Diffuse (4x VGPRs)
float3x3 ltcTransformSpecular; // Inverse transformation for GGX (4x VGPRs)
float3x3 orthoBasisViewNormal; // Right-handed view-dependent orthogonal basis around the normal (6x VGPRs)
float3x3 ltcTransformDiffuse; // Inverse transformation for Lambertian or Disney Diffuse (4x VGPRs)
float3x3 ltcTransformSpecular; // Inverse transformation for GGX (4x VGPRs)
float ltcMagnitudeDiffuse;
float3 ltcMagnitudeFresnel;

float coatIblF; // Fresnel term for view vector
float3x3 ltcTransformCoat; // Inverse transformation for GGX (4x VGPRs)
float coatIblF; // Fresnel term for view vector
float3x3 ltcTransformCoat; // Inverse transformation for GGX (4x VGPRs)
float3 transparentRefractV; // refracted view vector after exiting the shape
float3 transparentPositionWS; // start of the refracted ray after exiting the shape
float3 transparentTransmittance; // transmittance due to absorption
float transparentSSMipLevel; // mip level of the screen space gaussian pyramid for rough refraction
float3 transparentRefractV; // refracted view vector after exiting the shape
float3 transparentPositionWS; // start of the refracted ray after exiting the shape
float3 transparentTransmittance; // transmittance due to absorption
float transparentSSMipLevel; // mip level of the screen space gaussian pyramid for rough refraction
};
PreLightData GetPreLightData(float3 V, PositionInputs posInput, BSDFData bsdfData)

float3 N = bsdfData.normalWS;
float NdotV = saturate(dot(N, V));
preLightData.clampNdotV = NdotV; // Caution: The handling of edge cases where N is directed away from the screen is handled during Gbuffer/forward pass, so here do nothing
preLightData.NdotV = dot(N, V);
float NdotV = ClampNdotV(preLightData.NdotV);
if (HasFeatureFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_LIT_CLEAR_COAT))
{

preLightData.ltcTransformSpecular._m00_m02_m11_m20 = SAMPLE_TEXTURE2D_ARRAY_LOD(_LtcData, s_linear_clamp_sampler, uv, LTC_GGX_MATRIX_INDEX, 0);
// Construct a right-handed view-dependent orthogonal basis around the normal
preLightData.orthoBasisViewNormal[0] = normalize(V - N * NdotV);
preLightData.orthoBasisViewNormal[0] = normalize(V - N * preLightData.NdotV); // Do not clamp NdotV here
preLightData.orthoBasisViewNormal[2] = N;
preLightData.orthoBasisViewNormal[1] = cross(preLightData.orthoBasisViewNormal[2], preLightData.orthoBasisViewNormal[0]);

{
if (HasFeatureFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_LIT_SUBSURFACE_SCATTERING))
{
bsdfData.diffuseColor = ApplySubsurfaceScatteringTexturingMode(bsdfData.diffuseColor, bsdfData.diffusionProfile);
uint texturingMode = (bsdfData.materialFeatures >> MATERIAL_FEATURE_FLAGS_SSS_TEXTURING_MODE_OFFSET) & 3;
bsdfData.diffuseColor = ApplySubsurfaceScatteringTexturingMode(texturingMode, bsdfData.diffuseColor);
}
#ifdef DEBUG_DISPLAY

// Subsurface Scattering functions
//-----------------------------------------------------------------------------
bool PixelHasSubsurfaceScattering(BSDFData bsdfData)
bool ShouldOutputSplitLighting(BSDFData bsdfData)
// bsdfData.subsurfaceMask != 0 allow if sss is enabled for this pixels (i.e like per pixels feature) as in deferred case MATERIALFEATUREFLAGS_LIT_SUBSURFACE_SCATTERING alone is not sufficient
// but keep testing MATERIALFEATUREFLAGS_LIT_SUBSURFACE_SCATTERING for forward case
return bsdfData.diffusionProfile != DIFFUSION_PROFILE_NEUTRAL_ID && bsdfData.subsurfaceMask != 0 && HasFeatureFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_LIT_SUBSURFACE_SCATTERING);
return HasFeatureFlag(bsdfData.materialFeatures, MATERIAL_FEATURE_FLAGS_SSS_OUTPUT_SPLIT_LIGHTING);
}
//-----------------------------------------------------------------------------

{
float3 N = bsdfData.normalWS;
float NdotV = preLightData.clampNdotV;
float LdotV = dot(L, V);
float invLenLV = rsqrt(max(2.0 * LdotV + 2.0, FLT_EPS)); // invLenLV = rcp(length(L + V)) - caution about the case where V and L are opposite, it can happen, use max to avoid this
float NdotH = saturate((NdotL + NdotV) * invLenLV);
float LdotH = saturate(invLenLV * LdotV + invLenLV);
float LdotV = dot(L, V);
float invLenLV = rsqrt(max(2.0 * LdotV + 2.0, FLT_EPS)); // invLenLV = rcp(length(L + V)), clamp to avoid rsqrt(0) = NaN
float NdotH = saturate((NdotL + preLightData.NdotV) * invLenLV); // Do not clamp NdotV here
float LdotH = saturate(invLenLV * LdotV + invLenLV);
float NdotV = ClampNdotV(preLightData.NdotV);
float3 F = F_Schlick(bsdfData.fresnel0, LdotH);
float DV;

float3 H = (L + V) * invLenLV;
// For anisotropy we must not saturate these values
float TdotH = dot(bsdfData.tangentWS, H);
float TdotL = dot(bsdfData.tangentWS, L);

float negatedNdotL = -NdotL;
// Apply wrapped lighting to better handle thin objects (cards) at grazing angles.
float backNdotL = bsdfData.useThickObjectMode ? negatedNdotL : wrappedNdotL;
bool useThinObjectMode = HasFeatureFlag(bsdfData.materialFeatures, MATERIAL_FEATURE_FLAGS_TRANSMISSION_MODE_THIN);
float backNdotL = useThinObjectMode ? wrappedNdotL : negatedNdotL;
// Apply BSDF-specific diffuse transmission to attenuation. See also: [SSS-NOTE-TRSM]
// We don't multiply by 'bsdfData.diffuseColor' here. It's done only once in PostEvaluateBSDF().

[branch] if (HasFeatureFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_LIT_TRANSMISSION))
{
// We use diffuse lighting for accumulation since it is going to be blurred during the SSS pass.
lighting.diffuse += EvaluateTransmission(bsdfData, NdotL, preLightData.clampNdotV, attenuation * lightData.diffuseScale);
lighting.diffuse += EvaluateTransmission(bsdfData, NdotL, ClampNdotV(preLightData.NdotV), attenuation * lightData.diffuseScale);
}
// Save ALU by applying light and cookie colors only once.

[branch] if (HasFeatureFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_LIT_TRANSMISSION))
{
// We use diffuse lighting for accumulation since it is going to be blurred during the SSS pass.
lighting.diffuse += EvaluateTransmission(bsdfData, NdotL, preLightData.clampNdotV, attenuation * lightData.diffuseScale);
lighting.diffuse += EvaluateTransmission(bsdfData, NdotL, ClampNdotV(preLightData.NdotV), attenuation * lightData.diffuseScale);
}
// Save ALU by applying light and cookie colors only once.

return lighting;
}
DirectLighting EvaluateBSDF_Area(LightLoopContext lightLoopContext,
float3 V, PositionInputs posInput,
PreLightData preLightData, LightData lightData,
BSDFData bsdfData, BakeLightingData bakeLightingData)
{
if (lightData.lightType == GPULIGHTTYPE_LINE)
{
return EvaluateBSDF_Line(lightLoopContext, V, posInput, preLightData, lightData, bsdfData, bakeLightingData);
}
else
{
return EvaluateBSDF_Rect(lightLoopContext, V, posInput, preLightData, lightData, bsdfData, bakeLightingData);
}
}
IndirectLighting EvaluateBSDF_SSReflection(LightLoopContext lightLoopContext,
IndirectLighting EvaluateBSDF_SSLighting(LightLoopContext lightLoopContext,
int GPUImageBasedLightingType,
// TODO
return lighting;
}
IndirectLighting EvaluateBSDF_SSRefraction(LightLoopContext lightLoopContext,
float3 V, PositionInputs posInput,
PreLightData preLightData, BSDFData bsdfData,
inout float hierarchyWeight)
{
IndirectLighting lighting;
ZERO_INITIALIZE(IndirectLighting, lighting);
switch (GPUImageBasedLightingType)
{
case GPUIMAGEBASEDLIGHTINGTYPE_REFRACTION:
{
// Refraction process:
// 1. Depending on the shape model, we calculate the refracted point in world space and the optical depth
// 2. We calculate the screen space position of the refracted point
// 3. If this point is available (ie: in color buffer and point is not in front of the object)
// a. Get the corresponding color depending on the roughness from the gaussian pyramid of the color buffer
// b. Multiply by the transmittance for absorption (depends on the optical depth)
// Refraction process:
// 1. Depending on the shape model, we calculate the refracted point in world space and the optical depth
// 2. We calculate the screen space position of the refracted point
// 3. If this point is available (ie: in color buffer and point is not in front of the object)
// a. Get the corresponding color depending on the roughness from the gaussian pyramid of the color buffer
// b. Multiply by the transmittance for absorption (depends on the optical depth)
float3 refractedBackPointWS = EstimateRaycast(V, posInput, preLightData.transparentPositionWS, preLightData.transparentRefractV);
float3 refractedBackPointWS = EstimateRaycast(V, posInput, preLightData.transparentPositionWS, preLightData.transparentRefractV);
// Calculate screen space coordinates of refracted point in back plane
float2 refractedBackPointNDC = ComputeNormalizedDeviceCoordinates(refractedBackPointWS, UNITY_MATRIX_VP);
uint2 depthSize = uint2(_PyramidDepthMipSize.xy);
float refractedBackPointDepth = LinearEyeDepth(LOAD_TEXTURE2D_LOD(_PyramidDepthTexture, refractedBackPointNDC * depthSize, 0).r, _ZBufferParams);
// Calculate screen space coordinates of refracted point in back plane
float2 refractedBackPointNDC = ComputeNormalizedDeviceCoordinates(refractedBackPointWS, UNITY_MATRIX_VP);
uint2 depthSize = uint2(_PyramidDepthMipSize.xy);
float refractedBackPointDepth = LinearEyeDepth(LOAD_TEXTURE2D_LOD(_PyramidDepthTexture, refractedBackPointNDC * depthSize, 0).r, _ZBufferParams);
// Exit if texel is out of color buffer
// Or if the texel is from an object in front of the object
if (refractedBackPointDepth < posInput.linearDepth
|| any(refractedBackPointNDC < 0.0)
|| any(refractedBackPointNDC > 1.0))
{
// Do nothing and don't update the hierarchy weight so we can fall back on refraction probe
return lighting;
}
// Exit if texel is out of color buffer
// Or if the texel is from an object in front of the object
if (refractedBackPointDepth < posInput.linearDepth
|| any(refractedBackPointNDC < 0.0)
|| any(refractedBackPointNDC > 1.0))
{
// Do nothing and don't update the hierarchy weight so we can fall back on refraction probe
return lighting;
}
// Map the roughness to the correct mip map level of the color pyramid
lighting.specularTransmitted = SAMPLE_TEXTURE2D_LOD(_GaussianPyramidColorTexture, s_trilinear_clamp_sampler, refractedBackPointNDC * _GaussianPyramidColorMipSize.xy, preLightData.transparentSSMipLevel).rgb;
// Map the roughness to the correct mip map level of the color pyramid
lighting.specularTransmitted = SAMPLE_TEXTURE2D_LOD(_GaussianPyramidColorTexture, s_trilinear_clamp_sampler, refractedBackPointNDC * _GaussianPyramidColorMipSize.xy, preLightData.transparentSSMipLevel).rgb;
// Beer-Lamber law for absorption
lighting.specularTransmitted *= preLightData.transparentTransmittance;
// Beer-Lamber law for absorption
lighting.specularTransmitted *= preLightData.transparentTransmittance;
float weight = 1.0;
UpdateLightingHierarchyWeights(hierarchyWeight, weight); // Shouldn't be needed, but safer in case we decide to change hierarchy priority
// We use specularFGD as an approximation of the fresnel effect (that also handle smoothness), so take the remaining for transmission
lighting.specularTransmitted *= (1.0 - preLightData.specularFGD) * weight;
float weight = 1.0;
UpdateLightingHierarchyWeights(hierarchyWeight, weight); // Shouldn't be needed, but safer in case we decide to change hierarchy priority
// We use specularFGD as an approximation of the fresnel effect (that also handle smoothness), so take the remaining for transmission
lighting.specularTransmitted *= (1.0 - preLightData.specularFGD) * weight;
// No refraction, no need to go further
hierarchyWeight = 1.0;
// No refraction, no need to go further
hierarchyWeight = 1.0;
break;
}
case GPUIMAGEBASEDLIGHTINGTYPE_REFLECTION:
{
break;
}
}
}
DirectLighting EvaluateBSDF_Area(LightLoopContext lightLoopContext,
float3 V, PositionInputs posInput,
PreLightData preLightData, LightData lightData,
BSDFData bsdfData, BakeLightingData bakeLightingData)
{
if (lightData.lightType == GPULIGHTTYPE_LINE)
{
return EvaluateBSDF_Line(lightLoopContext, V, posInput, preLightData, lightData, bsdfData, bakeLightingData);
}
else
{
return EvaluateBSDF_Rect(lightLoopContext, V, posInput, preLightData, lightData, bsdfData, bakeLightingData);
}
}
//-----------------------------------------------------------------------------

#endif
float roughness = PerceptualRoughnessToRoughness(bsdfData.perceptualRoughness);
float specularOcclusion = GetSpecularOcclusionFromAmbientOcclusion(preLightData.clampNdotV, indirectAmbientOcclusion, roughness);
float specularOcclusion = GetSpecularOcclusionFromAmbientOcclusion(ClampNdotV(preLightData.NdotV), indirectAmbientOcclusion, roughness);
// Try to mimic multibounce with specular color. Not the point of the original formula but ok result.
// Take the min of screenspace specular occlusion and visibility cone specular occlusion
#if GTAO_MULTIBOUNCE_APPROX

lerp(_AmbientOcclusionParam.rgb, float3(1.0, 1.0, 1.0), directAmbientOcclusion);
#endif
float3 modifiedDiffuseColor;
// bsdfData.subsurfaceMask != 0 allow if sss is enabled for this pixels (i.e like per pixels feature) as in deferred case MATERIALFEATUREFLAGS_LIT_SUBSURFACE_SCATTERING alone is not sufficient
// but keep testing MATERIALFEATUREFLAGS_LIT_SUBSURFACE_SCATTERING for forward case
if (HasFeatureFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_LIT_SUBSURFACE_SCATTERING) && bsdfData.subsurfaceMask != 0)
modifiedDiffuseColor = ApplySubsurfaceScatteringTexturingMode(bsdfData.diffuseColor, bsdfData.diffusionProfile);
else
modifiedDiffuseColor = bsdfData.diffuseColor;
uint texturingMode = (bsdfData.materialFeatures >> MATERIAL_FEATURE_FLAGS_SSS_TEXTURING_MODE_OFFSET) & 3;
float3 modifiedDiffuseColor = ApplySubsurfaceScatteringTexturingMode(texturingMode, bsdfData.diffuseColor);
// Apply the albedo to the direct diffuse lighting (only once). The indirect (baked)
// diffuse lighting has already had the albedo applied in GetBakedDiffuseLigthing().

2
ScriptableRenderPipeline/HDRenderPipeline/HDRP/Material/Lit/Lit.shader


[ToggleUI] _EnableBlendModePreserveSpecularLighting("Enable Blend Mode Preserve Specular Lighting", Float) = 1.0
[ToggleUI] _DoubleSidedEnable("Double sided enable", Float) = 0.0
[Enum(Flip, 0, Mirror, 1)] _DoubleSidedNormalMode("Double sided normal mode", Float) = 1
[Enum(Flip, 0, Mirror, 1, None, 2)] _DoubleSidedNormalMode("Double sided normal mode", Float) = 1
[HideInInspector] _DoubleSidedConstants("_DoubleSidedConstants", Vector) = (1, 1, -1, 0)
[Enum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Planar, 4, Triplanar, 5)] _UVBase("UV Set for base", Float) = 0

6
ScriptableRenderPipeline/HDRenderPipeline/HDRP/Material/Lit/LitData.hlsl


float alpha = GetSurfaceData(input, layerTexCoord, surfaceData, normalTS, bentNormalTS);
GetNormalWS(input, V, normalTS, surfaceData.normalWS);
// Ensure that the normal is front-facing.
float NdotV;
surfaceData.normalWS = GetViewReflectedNormal(surfaceData.normalWS, V, NdotV);
// Use bent normal to sample GI if available
#ifdef _BENTNORMALMAP
GetNormalWS(input, V, bentNormalTS, bentNormalWS);

// If we have bent normal and ambient occlusion, process a specular occlusion
surfaceData.specularOcclusion = GetSpecularOcclusionFromBentAO(V, bentNormalWS, surfaceData);
#elif defined(_MASKMAP)
surfaceData.specularOcclusion = GetSpecularOcclusionFromAmbientOcclusion(NdotV, surfaceData.ambientOcclusion, PerceptualSmoothnessToRoughness(surfaceData.perceptualSmoothness));
surfaceData.specularOcclusion = GetSpecularOcclusionFromAmbientOcclusion(ClampNdotV(dot(surfaceData.normalWS, V)), surfaceData.ambientOcclusion, PerceptualSmoothnessToRoughness(surfaceData.perceptualSmoothness));
#else
surfaceData.specularOcclusion = 1.0;
#endif

2
ScriptableRenderPipeline/HDRenderPipeline/HDRP/Material/Lit/LitDataDisplacement.hlsl


// Since POM "pushes" geometry inwards (rather than extrude it), { height = height - 1 }.
// Since the result is used as a 'depthOffsetVS', it needs to be positive, so we flip the sign.
float verticalDisplacement = maxHeight - height * maxHeight;
return verticalDisplacement / max(NdotV, 0.001);
return verticalDisplacement / ClampNdotV(NdotV);
#else
return 0.0;
#endif

4
ScriptableRenderPipeline/HDRenderPipeline/HDRP/Material/Lit/LitReference.hlsl


uint sampleCount = 4096)
{
float3x3 localToWorld = float3x3(bsdfData.tangentWS, bsdfData.bitangentWS, bsdfData.normalWS);
float NdotV = preLightData.clampNdotV;
float NdotV = ClampNdotV(dot(bsdfData.normalWS, V));
float3 acc = float3(0.0, 0.0, 0.0);
// Add some jittering on Hammersley2d

localToWorld = GetLocalFrame(bsdfData.normalWS);
}
float NdotV = preLightData.clampNdotV;
float NdotV = ClampNdotV(dot(bsdfData.normalWS, V));
float3 acc = float3(0.0, 0.0, 0.0);
// Add some jittering on Hammersley2d

2
ScriptableRenderPipeline/HDRenderPipeline/HDRP/Material/Lit/LitTessellation.shader


[ToggleUI] _EnableBlendModePreserveSpecularLighting("Enable Blend Mode Preserve Specular Lighting", Float) = 1.0
[ToggleUI] _DoubleSidedEnable("Double sided enable", Float) = 0.0
[Enum(Flip, 0, Mirror, 1)] _DoubleSidedNormalMode("Double sided normal mode", Float) = 1
[Enum(Flip, 0, Mirror, 1, None, 2)] _DoubleSidedNormalMode("Double sided normal mode", Float) = 1
[HideInInspector] _DoubleSidedConstants("_DoubleSidedConstants", Vector) = (1, 1, -1, 0)
[Enum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Planar, 4, Triplanar, 5)] _UVBase("UV Set for base", Float) = 0

3
ScriptableRenderPipeline/HDRenderPipeline/HDRP/Material/SubsurfaceScattering/SubsurfaceScattering.compute


// divergence of execution across the warp.
float maxDistInPixels = maxDistance * max(pixelsPerMm.x, pixelsPerMm.y);
float3 albedo = ApplySubsurfaceScatteringTexturingMode(sssData.diffuseColor, profileID);
uint texturingMode = GetSubsurfaceScatteringTexturingMode(profileID);
float3 albedo = ApplySubsurfaceScatteringTexturingMode(texturingMode, sssData.diffuseColor);
[branch] if (distScale == 0 || maxDistInPixels < 1)
{

35
ScriptableRenderPipeline/HDRenderPipeline/HDRP/Material/SubsurfaceScattering/SubsurfaceScattering.hlsl


// helper functions
// ----------------------------------------------------------------------------
// Returns the modified albedo (diffuse color) for materials with subsurface scattering.
// Ref: Advanced Techniques for Realistic Real-Time Skin Rendering.
float3 ApplySubsurfaceScatteringTexturingMode(float3 color, int diffusionProfile)
// 0: [ albedo = albedo ]
// 1: [ albedo = 1 ]
// 2: [ albedo = sqrt(albedo) ]
uint GetSubsurfaceScatteringTexturingMode(int diffusionProfile)
uint texturingMode = 0;
#if defined(SHADERPASS) && (SHADERPASS == SHADERPASS_SUBSURFACE_SCATTERING)
// If the SSS pass is executed, we know we have SSS enabled.
bool enableSss = true;

// We can enter in this function even if SSS is not enabled in case of material classification per tile
// (If there is SSS inside the tile we need to enable the feature for the whole tile with neutral value)
// thus why we test != DIFFUSION_PROFILE_NEUTRAL_ID here, to be sure neutral profile don't affect the scene
if (enableSss && diffusionProfile != DIFFUSION_PROFILE_NEUTRAL_ID)
if (enableSss)
{
bool performPostScatterTexturing = IsBitSet(asuint(_TexturingModeFlags), diffusionProfile);

#if !defined(SHADERPASS) || (SHADERPASS != SHADERPASS_SUBSURFACE_SCATTERING)
color = float3(1, 1, 1);
#if defined(SHADERPASS) && (SHADERPASS != SHADERPASS_SUBSURFACE_SCATTERING)
texturingMode = 1;
color = sqrt(color);
texturingMode = 2;
}
return texturingMode;
}
// Returns the modified albedo (diffuse color) for materials with subsurface scattering.
// See GetSubsurfaceScatteringTexturingMode() above for more details.
// Ref: Advanced Techniques for Realistic Real-Time Skin Rendering.
float3 ApplySubsurfaceScatteringTexturingMode(uint texturingMode, float3 color)
{
switch (texturingMode)
{
case 2: color = sqrt(color); break;
case 1: color = 1; break;
default: color = color; break;
}
return color;

3
ScriptableRenderPipeline/HDRenderPipeline/HDRP/Material/SubsurfaceScattering/SubsurfaceScattering.shader


float halfRcpVariance = _HalfRcpWeightedVariances[profileID].a;
#endif
float3 albedo = ApplySubsurfaceScatteringTexturingMode(sssData.diffuseColor, profileID);
uint texturingMode = GetSubsurfaceScatteringTexturingMode(profileID);
float3 albedo = ApplySubsurfaceScatteringTexturingMode(texturingMode, sssData.diffuseColor);
#ifndef SSS_FILTER_HORIZONTAL_AND_COMBINE
albedo = float3(1, 1, 1);

2
ScriptableRenderPipeline/HDRenderPipeline/HDRP/ShaderPass/ShaderPassForward.hlsl


LightLoop(V, posInput, preLightData, bsdfData, bakeLightingData, featureFlags, diffuseLighting, specularLighting);
#ifdef OUTPUT_SPLIT_LIGHTING
if (_EnableSubsurfaceScattering != 0 && PixelHasSubsurfaceScattering(bsdfData))
if (_EnableSubsurfaceScattering != 0 && ShouldOutputSplitLighting(bsdfData))
{
outColor = float4(specularLighting, 1.0);
outDiffuseLighting = float4(TagLightingForSSS(diffuseLighting), 1.0);

8
ScriptableRenderPipeline/HDRenderPipeline/HDRP/ShaderVariables.hlsl


uint _TaaFrameIndex; // [0, 7]
// Volumetric lighting.
float4 _AmbientProbeCoeffs[7]; // 3 bands of SH, packed, rescaled and convolved with the phase function
float _GlobalFog_Asymmetry;
float3 _GlobalFog_Scattering;
float _GlobalFog_Extinction;
float _GlobalAsymmetry;
float3 _GlobalScattering;
float _GlobalExtinction;
float4 _VBufferScaleAndSliceCount; // { fracVisW, fracVisH, count, 1/count }
float4 _VBufferSliceCount; // { count, 1/count, 0, 0 }
float4 _VBufferDepthEncodingParams; // See the call site for description
float4 _VBufferDepthDecodingParams; // See the call site for description
CBUFFER_END

2
ScriptableRenderPipeline/HDRenderPipeline/HDRP/Sky/AtmosphericScattering/AtmosphericScattering.hlsl


float4 volFog = SampleInScatteredRadianceAndTransmittance(TEXTURE3D_PARAM(_VBufferLighting, s_trilinear_clamp_sampler),
posInput.positionNDC, posInput.linearDepth,
_VBufferResolution,
_VBufferScaleAndSliceCount,
_VBufferSliceCount.xy,
_VBufferDepthEncodingParams,
_VBufferDepthDecodingParams);
fogColor = volFog.rgb;

4
ScriptableRenderPipeline/HDRenderPipeline/package.json


{
"name": "com.unity.render-pipelines.high-definition",
"description": "HD Render Pipeline for Unity.",
"version": "0.1.28",
"version": "0.1.29",
"com.unity.render-pipelines.core": "0.1.28"
"com.unity.render-pipelines.core": "0.1.29"
}
}

16
ScriptableRenderPipeline/LightweightPipeline/LWRP/Data/LightweightPipelineAsset.cs


#if UNITY_EDITOR
[NonSerialized]
[MenuItem("Assets/Create/Graphics/Lightweight Pipeline Asset", priority = CoreUtils.assetCreateMenuPriority1)]
[MenuItem("Assets/Create/Rendering/Lightweight Pipeline Asset", priority = CoreUtils.assetCreateMenuPriority1)]
static void CreateLightweightPipeline()
{
ProjectWindowUtil.StartNameEditingIfProjectWindowExists(0, CreateInstance<CreateLightweightPipelineAsset>(),

//[MenuItem("Assets/Create/Graphics/Lightweight Pipeline Resources", priority = CoreUtils.assetCreateMenuPriority1)]
//[MenuItem("Assets/Create/Rendering/Lightweight Pipeline Resources", priority = CoreUtils.assetCreateMenuPriority1)]
static void CreateLightweightPipelineResources()
{
var instance = CreateInstance<LightweightPipelineResources>();

//[MenuItem("Assets/Create/Graphics/Lightweight Pipeline Editor Resources", priority = CoreUtils.assetCreateMenuPriority1)]
//[MenuItem("Assets/Create/Rendering/Lightweight Pipeline Editor Resources", priority = CoreUtils.assetCreateMenuPriority1)]
static void CreateLightweightPipelineEditorResources()
{
var instance = CreateInstance<LightweightPipelineEditorResources>();

protected override IRenderPipeline InternalCreatePipeline()
{
return new LightweightPipeline(this);
}
void OnValidate()
{
DestroyCreatedInstances();
}
private Material GetMaterial(DefaultMaterialType materialType)

public Shader CopyDepthShader
{
get { return resources != null ? resources.CopyDepthShader : null; }
}
public Shader ScreenSpaceShadowShader
{
get { return resources != null ? resources.ScreenSpaceShadowShader : null; }
}
}
}

2
ScriptableRenderPipeline/LightweightPipeline/LWRP/Data/LightweightPipelineResources.asset


m_EditorClassIdentifier:
BlitShader: {fileID: 4800000, guid: c17132b1f77d20942aa75f8429c0f8bc, type: 3}
CopyDepthShader: {fileID: 4800000, guid: d6dae50ee9e1bfa4db75f19f99355220, type: 3}
ScreenSpaceShadowShader: {fileID: 4800000, guid: 0f854b35a0cf61a429bd5dcfea30eddd,
type: 3}

1
ScriptableRenderPipeline/LightweightPipeline/LWRP/Data/LightweightPipelineResources.cs


{
public Shader BlitShader;
public Shader CopyDepthShader;
public Shader ScreenSpaceShadowShader;
}

122
ScriptableRenderPipeline/LightweightPipeline/LWRP/LightweightPipeline.cs


// we need use copyColor RT as a work RT.
public static int copyColor;
// Camera depth target. Only used when post processing or soft particles are enabled.
// Camera depth target. Only used when post processing, soft particles, or screen space shadows are enabled.
public static int depth;
// If soft particles are enabled and no depth prepass is performed we need to copy depth.

private static readonly int kMaxVertexLights = 4;
// We have no good approach exposed to skip shader variants, e.g, ideally we would like to skip _CASCADE for all punctual lights
// We combine light and shadow classification keywords to reduce the amount of shader variants.
// Lightweight shader library declares defines based on these keywords to avoid having to check them in the shaders
// Core.hlsl defines _MAIN_LIGHT_DIRECTIONAL and _MAIN_LIGHT_SPOT (point lights can't be main light)
// Shadow.hlsl defines _SHADOWS_ENABLED, _SHADOWS_SOFT, _SHADOWS_CASCADE, _SHADOWS_PERSPECTIVE
private static readonly string[] kMainLightKeywords =
{
"_MAIN_LIGHT_DIRECTIONAL_SHADOW",
"_MAIN_LIGHT_DIRECTIONAL_SHADOW_CASCADE",
"_MAIN_LIGHT_DIRECTIONAL_SHADOW_SOFT",
"_MAIN_LIGHT_DIRECTIONAL_SHADOW_CASCADE_SOFT",
"_MAIN_LIGHT_SPOT_SHADOW",
"_MAIN_LIGHT_SPOT_SHADOW_SOFT"
};
private StringBuilder m_MainLightKeywordString = new StringBuilder(43);
private bool m_IsOffscreenCamera;
private Vector4 kDefaultLightPosition = new Vector4(0.0f, 0.0f, 1.0f, 0.0f);

private const int kMaxCascades = 4;
private int m_ShadowCasterCascadesCount;
private int m_ShadowMapRTID;
private int m_ScreenSpaceShadowMapRTID;
private RenderTargetIdentifier m_ScreenSpaceShadowMapRT;
private RenderTargetIdentifier m_ColorRT;
private RenderTargetIdentifier m_CopyColorRT;
private RenderTargetIdentifier m_DepthRT;

private Material m_BlitMaterial;
private Material m_CopyDepthMaterial;
private Material m_ErrorMaterial;
private Material m_ScreenSpaceShadowsMaterial;
private int m_BlitTexID = Shader.PropertyToID("_BlitTex");
private CopyTextureSupport m_CopyTextureSupport;

ShadowConstantBuffer._ShadowmapSize = Shader.PropertyToID("_ShadowmapSize");
m_ShadowMapRTID = Shader.PropertyToID("_ShadowMap");
m_ScreenSpaceShadowMapRTID = Shader.PropertyToID("_ScreenSpaceShadowMap");
CameraRenderTargetID.color = Shader.PropertyToID("_CameraColorRT");
CameraRenderTargetID.copyColor = Shader.PropertyToID("_CameraCopyColorRT");

m_ShadowMapRT = new RenderTargetIdentifier(m_ShadowMapRTID);
m_ScreenSpaceShadowMapRT = new RenderTargetIdentifier(m_ScreenSpaceShadowMapRTID);
m_ColorRT = new RenderTargetIdentifier(CameraRenderTargetID.color);
m_CopyColorRT = new RenderTargetIdentifier(CameraRenderTargetID.copyColor);

m_BlitQuad = LightweightUtils.CreateQuadMesh(false);
m_BlitMaterial = CoreUtils.CreateEngineMaterial(m_Asset.BlitShader);
m_CopyDepthMaterial = CoreUtils.CreateEngineMaterial(m_Asset.CopyDepthShader);
m_ScreenSpaceShadowsMaterial = CoreUtils.CreateEngineMaterial(m_Asset.ScreenSpaceShadowShader);
m_ErrorMaterial = CoreUtils.CreateEngineMaterial("Hidden/InternalErrorShader");
}

LightData lightData;
InitializeLightData(visibleLights, out lightData);
ShadowPass(visibleLights, ref context, ref lightData);
bool shadows = ShadowPass(visibleLights, ref context, ref lightData);
SetupFrameRenderingConfiguration(out frameRenderingConfiguration, stereoEnabled);
SetupFrameRenderingConfiguration(out frameRenderingConfiguration, shadows, stereoEnabled);
SetupIntermediateResources(frameRenderingConfiguration, ref context);
// SetupCameraProperties does the following:

context.SetupCameraProperties(m_CurrCamera, stereoEnabled);
if (LightweightUtils.HasFlag(frameRenderingConfiguration, FrameRenderingConfiguration.DepthPrePass))
{
// Only screen space shadowmap mode is supported.
if (shadows)
ShadowCollectPass(visibleLights, ref context, ref lightData);
}
// Release temporary RT
cmd.ReleaseTemporaryRT(m_ScreenSpaceShadowMapRTID);
cmd.ReleaseTemporaryRT(CameraRenderTargetID.depthCopy);
cmd.ReleaseTemporaryRT(CameraRenderTargetID.depth);
cmd.ReleaseTemporaryRT(CameraRenderTargetID.color);

}
}
private void ShadowPass(List<VisibleLight> visibleLights, ref ScriptableRenderContext context, ref LightData lightData)
private bool ShadowPass(List<VisibleLight> visibleLights, ref ScriptableRenderContext context, ref LightData lightData)
{
if (m_Asset.AreShadowsEnabled() && lightData.mainLightIndex != -1)
{

if (!LightweightUtils.IsSupportedShadowType(mainLight.lightType))
{
Debug.LogWarning("Only directional and spot shadows are supported by LightweightPipeline.");
return;
return false;
}
// There's no way to map shadow light indices. We need to pass in the original unsorted index.

{
lightData.shadowMapSampleType = LightShadows.None;
}
return shadowsRendered;
return false;
}
private void ShadowCollectPass(List<VisibleLight> visibleLights, ref ScriptableRenderContext context, ref LightData lightData)
{
CommandBuffer cmd = CommandBufferPool.Get("Collect Shadows");
SetupShadowReceiverConstants(cmd, visibleLights[lightData.mainLightIndex]);
SetShadowCollectPassKeywords(cmd, visibleLights[lightData.mainLightIndex], ref lightData);
cmd.GetTemporaryRT(m_ScreenSpaceShadowMapRTID, m_CurrCamera.pixelWidth, m_CurrCamera.pixelHeight, 0, FilterMode.Bilinear, RenderTextureFormat.R8);
cmd.Blit(null, m_ScreenSpaceShadowMapRT, m_ScreenSpaceShadowsMaterial);
context.ExecuteCommandBuffer(cmd);
CommandBufferPool.Release(cmd);
}
private void DepthPass(ref ScriptableRenderContext context)

}
}
private void SetupFrameRenderingConfiguration(out FrameRenderingConfiguration configuration, bool stereoEnabled)
private void SetupFrameRenderingConfiguration(out FrameRenderingConfiguration configuration, bool shadows, bool stereoEnabled)
{
configuration = (stereoEnabled) ? FrameRenderingConfiguration.Stereo : FrameRenderingConfiguration.None;
if (stereoEnabled && XRSettings.eyeTextureDesc.dimension == TextureDimension.Tex2DArray)

}
}
if (shadows)
{
m_RequireDepthTexture = true;
if (!msaaEnabled)
intermediateTexture = true;
}
if (msaaEnabled)
{
configuration |= FrameRenderingConfiguration.Msaa;

{
// If msaa is enabled we don't use a depth renderbuffer as we might not have support to Texture2DMS to resolve depth.
// Instead we use a depth prepass and whenever depth is needed we use the 1 sample depth from prepass.
if (!msaaEnabled)
// Screen space shadows require depth before opaque shading.
if (!msaaEnabled && !shadows)
{
bool supportsDepthCopy = m_CopyTextureSupport != CopyTextureSupport.None && m_Asset.CopyDepthShader.isSupported;
m_DepthRenderBuffer = true;

// Main light has an optimized shader path for main light. This will benefit games that only care about a single light.
// Lightweight pipeline also supports only a single shadow light, if available it will be the main light.
SetupMainLightConstants(cmd, lights, lightData.mainLightIndex);
if (lightData.shadowMapSampleType != LightShadows.None)
SetupShadowReceiverConstants(cmd, lights[lightData.mainLightIndex]);
SetupAdditionalListConstants(cmd, lights, ref lightData);
}

cmd.SetGlobalVectorArray(ShadowConstantBuffer._DirShadowSplitSpheres, m_DirectionalShadowSplitDistances);
cmd.SetGlobalVector(ShadowConstantBuffer._DirShadowSplitSphereRadii, m_DirectionalShadowSplitRadii);
cmd.SetGlobalVector(ShadowConstantBuffer._ShadowOffset0, new Vector4(-invHalfShadowResolution, -invHalfShadowResolution, 0.0f, 0.0f));
cmd.SetGlobalVector(ShadowConstantBuffer._ShadowOffset1, new Vector4( invHalfShadowResolution, -invHalfShadowResolution, 0.0f, 0.0f));
cmd.SetGlobalVector(ShadowConstantBuffer._ShadowOffset2, new Vector4(-invHalfShadowResolution, invHalfShadowResolution, 0.0f, 0.0f));
cmd.SetGlobalVector(ShadowConstantBuffer._ShadowOffset3, new Vector4( invHalfShadowResolution, invHalfShadowResolution, 0.0f, 0.0f));
cmd.SetGlobalVector(ShadowConstantBuffer._ShadowOffset1, new Vector4(invHalfShadowResolution, -invHalfShadowResolution, 0.0f, 0.0f));
cmd.SetGlobalVector(ShadowConstantBuffer._ShadowOffset2, new Vector4(-invHalfShadowResolution, invHalfShadowResolution, 0.0f, 0.0f));
cmd.SetGlobalVector(ShadowConstantBuffer._ShadowOffset3, new Vector4(invHalfShadowResolution, invHalfShadowResolution, 0.0f, 0.0f));
cmd.SetGlobalVector(ShadowConstantBuffer._ShadowmapSize, new Vector4(invShadowResolution, invShadowResolution, m_Asset.ShadowAtlasResolution, m_Asset.ShadowAtlasResolution));
}

int mainLightIndex = lightData.mainLightIndex;
for (int i = 0; i < kMainLightKeywords.Length; ++i)
cmd.DisableShaderKeyword(kMainLightKeywords[i]);
if (mainLightIndex != -1 && (lightData.shadowMapSampleType != LightShadows.None))
{
m_MainLightKeywordString.Length = 0;
m_MainLightKeywordString.Append("_MAIN_LIGHT");
LightType mainLightType = visibleLights[mainLightIndex].lightType;
if (mainLightType == LightType.Directional)
{
m_MainLightKeywordString.Append("_DIRECTIONAL_SHADOW");
if (m_Asset.CascadeCount > 1)
m_MainLightKeywordString.Append("_CASCADE");
}
else
{
m_MainLightKeywordString.Append("_SPOT_SHADOW");
}
if (lightData.shadowMapSampleType == LightShadows.Soft)
m_MainLightKeywordString.Append("_SOFT");
string keyword = m_MainLightKeywordString.ToString();
cmd.EnableShaderKeyword(keyword);
}
int mainLightIndex = lightData.mainLightIndex;
CoreUtils.SetKeyword(cmd, "_MAIN_LIGHT_DIRECTIONAL", mainLightIndex == -1 || visibleLights[mainLightIndex].lightType == LightType.Directional);
CoreUtils.SetKeyword(cmd, "_MAIN_LIGHT_SPOT", mainLightIndex != -1 && visibleLights[mainLightIndex].lightType == LightType.Spot);
CoreUtils.SetKeyword(cmd, "_SHADOWS_ENABLED", lightData.shadowMapSampleType != LightShadows.None);
bool linearFogModeEnabled = false;
bool exponentialFogModeEnabled = false;
if (RenderSettings.fog)

CoreUtils.SetKeyword(cmd, "FOG_LINEAR", linearFogModeEnabled);
CoreUtils.SetKeyword(cmd, "FOG_EXP2", exponentialFogModeEnabled);
}
private void SetShadowCollectPassKeywords(CommandBuffer cmd, VisibleLight shadowLight, ref LightData lightData)
{
bool cascadeShadows = shadowLight.lightType == LightType.Directional && m_Asset.CascadeCount > 1;
CoreUtils.SetKeyword(cmd, "_SHADOWS_SOFT", lightData.shadowMapSampleType == LightShadows.Soft);
CoreUtils.SetKeyword(cmd, "_SHADOWS_CASCADE", cascadeShadows);
}
private bool RenderShadows(ref CullResults cullResults, ref VisibleLight shadowLight, int shadowLightIndex, ref ScriptableRenderContext context)

30
ScriptableRenderPipeline/LightweightPipeline/LWRP/ShaderLibrary/Core.hlsl


#include "Input.hlsl"
///////////////////////////////////////////////////////////////////////////////
// Light Classification defines //
// //
// In order to reduce shader variations main light keywords were combined //
// here we define main light type keywords. //
// Main light is either a shadow casting light or the brighest directional. //
// Lightweight pipeline doesn't support point light shadows so they can't be //
// classified as main light. //
///////////////////////////////////////////////////////////////////////////////
#if defined(_MAIN_LIGHT_DIRECTIONAL_SHADOW) || defined(_MAIN_LIGHT_DIRECTIONAL_SHADOW_CASCADE) || defined(_MAIN_LIGHT_DIRECTIONAL_SHADOW_SOFT) || defined(_MAIN_LIGHT_DIRECTIONAL_SHADOW_CASCADE_SOFT)
#define _MAIN_LIGHT_DIRECTIONAL
#endif
#if defined(_MAIN_LIGHT_SPOT_SHADOW) || defined(_MAIN_LIGHT_SPOT_SHADOW_SOFT)
#define _MAIN_LIGHT_SPOT
#endif
// In case no shadow casting light we classify main light as directional
#if !defined(_MAIN_LIGHT_DIRECTIONAL) && !defined(_MAIN_LIGHT_SPOT)
#define _MAIN_LIGHT_DIRECTIONAL
#endif
#ifdef _NORMALMAP
#define OUTPUT_NORMAL(IN, OUT) OutputTangentToWorld(IN.tangent, IN.normal, OUT.tangent, OUT.binormal, OUT.normal)
#else

{
half3x3 tangentToWorld = half3x3(tangent, binormal, normal);
return normalize(mul(normalTangent, tangentToWorld));
}
// TODO: A similar function should be already available in SRP lib on master. Use that instead
float4 ComputeScreenPos(float4 positionCS)
{
float4 o = positionCS * 0.5f;
o.xy = float2(o.x, o.y * _ProjectionParams.x) + o.w;
o.zw = positionCS.zw;
return o;
}
half ComputeFogFactor(float z)

9
ScriptableRenderPipeline/LightweightPipeline/LWRP/ShaderLibrary/Lighting.hlsl


InitializeBRDFData(albedo, metallic, specular, smoothness, alpha, brdfData);
Light mainLight = GetMainLight(inputData.positionWS);
mainLight.attenuation *= RealtimeShadowAttenuation(inputData.positionWS, inputData.shadowCoord);
#ifdef _SHADOWS_ENABLED
mainLight.attenuation *= RealtimeShadowAttenuation(inputData.shadowCoord);
#endif
MixRealtimeAndBakedGI(mainLight, inputData.normalWS, inputData.bakedGI, half4(0, 0, 0, 0));
half3 color = GlobalIllumination(brdfData, inputData.bakedGI, occlusion, inputData.normalWS, inputData.viewDirectionWS);

half4 LightweightFragmentBlinnPhong(InputData inputData, half3 diffuse, half4 specularGloss, half shininess, half3 emission, half alpha)
{
Light mainLight = GetMainLight(inputData.positionWS);
mainLight.attenuation *= RealtimeShadowAttenuation(inputData.positionWS, inputData.shadowCoord);
#ifdef _SHADOWS_ENABLED
mainLight.attenuation *= RealtimeShadowAttenuation(inputData.shadowCoord);
#endif
MixRealtimeAndBakedGI(mainLight, inputData.normalWS, inputData.bakedGI, half4(0, 0, 0, 0));
half3 attenuatedLightColor = mainLight.color * mainLight.attenuation;

4
ScriptableRenderPipeline/LightweightPipeline/LWRP/ShaderLibrary/LightweightPassLit.hlsl


half fogFactor = ComputeFogFactor(o.clipPos.z);
o.fogFactorAndVertexLight = half4(fogFactor, vertexLight);
#if defined(_SHADOWS_ENABLED) && !defined(_SHADOWS_CASCADE)
o.shadowCoord = ComputeShadowCoord(o.posWS.xyz);
#ifdef _SHADOWS_ENABLED
o.shadowCoord = ComputeScreenPos(o.clipPos);
#endif
return o;

6
ScriptableRenderPipeline/LightweightPipeline/LWRP/ShaderLibrary/LightweightPassShadow.hlsl


// _ShadowBias.x sign depens on if platform has reversed z buffer
clipPos.z += _ShadowBias.x;
#if defined(UNITY_REVERSED_Z)
clipPos.z = min(clipPos.z, 1.0);
#if UNITY_REVERSED_Z
clipPos.z = min(clipPos.z, clipPos.w * UNITY_NEAR_CLIP_VALUE);
clipPos.z = max(clipPos.z, 0.0);
clipPos.z = max(clipPos.z, clipPos.w * UNITY_NEAR_CLIP_VALUE);
#endif
return clipPos;
}

151
ScriptableRenderPipeline/LightweightPipeline/LWRP/ShaderLibrary/Shadows.hlsl


#define MAX_SHADOW_CASCADES 4
///////////////////////////////////////////////////////////////////////////////
// Light Classification shadow defines //
// //
// In order to reduce shader variations main light keywords were combined //
// here we define shadow keywords. //
///////////////////////////////////////////////////////////////////////////////
#if defined(_MAIN_LIGHT_DIRECTIONAL_SHADOW) || defined(_MAIN_LIGHT_DIRECTIONAL_SHADOW_CASCADE) || defined(_MAIN_LIGHT_DIRECTIONAL_SHADOW_SOFT) || defined(_MAIN_LIGHT_DIRECTIONAL_SHADOW_CASCADE_SOFT) || defined(_MAIN_LIGHT_SPOT_SHADOW) || defined(_MAIN_LIGHT_SPOT_SHADOW_SOFT)
#define _SHADOWS_ENABLED
#endif
#if defined(_MAIN_LIGHT_DIRECTIONAL_SHADOW_SOFT) || defined(_MAIN_LIGHT_DIRECTIONAL_SHADOW_CASCADE_SOFT) || defined(_MAIN_LIGHT_SPOT_SHADOW_SOFT)
#define _SHADOWS_SOFT
#endif
#if defined(_MAIN_LIGHT_DIRECTIONAL_SHADOW_CASCADE) || defined(_MAIN_LIGHT_DIRECTIONAL_SHADOW_CASCADE_SOFT)
#define _SHADOWS_CASCADE
#endif
#if defined(_MAIN_LIGHT_SPOT_SHADOW) || defined(_MAIN_LIGHT_SPOT_SHADOW_SOFT)
#define _SHADOWS_PERSPECTIVE
#endif
TEXTURE2D(_ScreenSpaceShadowMap);
SAMPLER(sampler_ScreenSpaceShadowMap);
TEXTURE2D_SHADOW(_ShadowMap);
SAMPLER_CMP(sampler_ShadowMap);

float4 _ShadowmapSize; // (xy: 1/width and 1/height, zw: width and height)
CBUFFER_END
inline half SampleShadowmap(float4 shadowCoord)
#if UNITY_REVERSED_Z
#define BEYOND_SHADOW_FAR(shadowCoord) shadowCoord.z <= UNITY_RAW_FAR_CLIP_VALUE
#else
#define BEYOND_SHADOW_FAR(shadowCoord) shadowCoord.z >= UNITY_RAW_FAR_CLIP_VALUE
#endif
#define OUTSIDE_SHADOW_BOUNDS(shadowCoord) shadowCoord.x <= 0 || shadowCoord.x >= 1 || shadowCoord.y <= 0 || shadowCoord.y >= 1 || BEYOND_SHADOW_FAR(shadowCoord)
half GetShadowStrength()
#if defined(_SHADOWS_PERSPECTIVE)
return _ShadowData.x;
}
inline half SampleScreenSpaceShadowMap(float4 shadowCoord)
{
shadowCoord.xy = shadowCoord.xy / shadowCoord.w;
half attenuation = SAMPLE_TEXTURE2D(_ScreenSpaceShadowMap, sampler_ScreenSpaceShadowMap, shadowCoord.xy).x;
// Apply shadow strength
return LerpWhiteTo(attenuation, GetShadowStrength());
}
inline real SampleShadowmap(float4 shadowCoord)
{
#endif
half attenuation;
real attenuation;
#ifdef SHADER_API_MOBILE
// 4-tap hardware comparison
half4 attenuation4;
attenuation4.x = SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, shadowCoord.xyz + _ShadowOffset0.xyz);
attenuation4.y = SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, shadowCoord.xyz + _ShadowOffset1.xyz);
attenuation4.z = SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, shadowCoord.xyz + _ShadowOffset2.xyz);
attenuation4.w = SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, shadowCoord.xyz + _ShadowOffset3.xyz);
attenuation = dot(attenuation4, 0.25);
#else
real fetchesWeights[9];
real2 fetchesUV[9];
SampleShadow_ComputeSamples_Tent_5x5(_ShadowmapSize, shadowCoord.xy, fetchesWeights, fetchesUV);
#ifdef SHADER_API_MOBILE
// 4-tap hardware comparison
real4 attenuation4;
attenuation4.x = SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, shadowCoord.xyz + _ShadowOffset0.xyz);
attenuation4.y = SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, shadowCoord.xyz + _ShadowOffset1.xyz);
attenuation4.z = SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, shadowCoord.xyz + _ShadowOffset2.xyz);
attenuation4.w = SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, shadowCoord.xyz + _ShadowOffset3.xyz);
attenuation = dot(attenuation4, 0.25);
#else
#ifdef _SHADOWS_CASCADE //Assume screen space shadows when cascades enabled
real fetchesWeights[16];
real2 fetchesUV[16];
SampleShadow_ComputeSamples_Tent_7x7(_ShadowmapSize, shadowCoord.xy, fetchesWeights, fetchesUV);
attenuation = fetchesWeights[0] * SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, real3(fetchesUV[0].xy, shadowCoord.z));
attenuation += fetchesWeights[1] * SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, real3(fetchesUV[1].xy, shadowCoord.z));
attenuation += fetchesWeights[2] * SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, real3(fetchesUV[2].xy, shadowCoord.z));
attenuation += fetchesWeights[3] * SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, real3(fetchesUV[3].xy, shadowCoord.z));
attenuation += fetchesWeights[4] * SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, real3(fetchesUV[4].xy, shadowCoord.z));
attenuation += fetchesWeights[5] * SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, real3(fetchesUV[5].xy, shadowCoord.z));
attenuation += fetchesWeights[6] * SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, real3(fetchesUV[6].xy, shadowCoord.z));
attenuation += fetchesWeights[7] * SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, real3(fetchesUV[7].xy, shadowCoord.z));
attenuation += fetchesWeights[8] * SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, real3(fetchesUV[8].xy, shadowCoord.z));
attenuation += fetchesWeights[9] * SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, real3(fetchesUV[9].xy, shadowCoord.z));
attenuation += fetchesWeights[10] * SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, real3(fetchesUV[10].xy, shadowCoord.z));
attenuation += fetchesWeights[11] * SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, real3(fetchesUV[11].xy, shadowCoord.z));
attenuation += fetchesWeights[12] * SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, real3(fetchesUV[12].xy, shadowCoord.z));
attenuation += fetchesWeights[13] * SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, real3(fetchesUV[13].xy, shadowCoord.z));
attenuation += fetchesWeights[14] * SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, real3(fetchesUV[14].xy, shadowCoord.z));
attenuation += fetchesWeights[15] * SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, real3(fetchesUV[15].xy, shadowCoord.z));
#else
real fetchesWeights[9];
real2 fetchesUV[9];
SampleShadow_ComputeSamples_Tent_5x5(_ShadowmapSize, shadowCoord.xy, fetchesWeights, fetchesUV);
attenuation = fetchesWeights[0] * SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, real3(fetchesUV[0].xy, shadowCoord.z));
attenuation += fetchesWeights[1] * SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, real3(fetchesUV[1].xy, shadowCoord.z));
attenuation += fetchesWeights[2] * SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, real3(fetchesUV[2].xy, shadowCoord.z));
attenuation += fetchesWeights[3] * SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, real3(fetchesUV[3].xy, shadowCoord.z));
attenuation += fetchesWeights[4] * SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, real3(fetchesUV[4].xy, shadowCoord.z));
attenuation += fetchesWeights[5] * SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, real3(fetchesUV[5].xy, shadowCoord.z));
attenuation += fetchesWeights[6] * SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, real3(fetchesUV[6].xy, shadowCoord.z));
attenuation += fetchesWeights[7] * SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, real3(fetchesUV[7].xy, shadowCoord.z));
attenuation += fetchesWeights[8] * SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, real3(fetchesUV[8].xy, shadowCoord.z));
#endif
attenuation = fetchesWeights[0] * SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, real3(fetchesUV[0].xy, shadowCoord.z));
attenuation += fetchesWeights[1] * SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, real3(fetchesUV[1].xy, shadowCoord.z));
attenuation += fetchesWeights[2] * SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, real3(fetchesUV[2].xy, shadowCoord.z));
attenuation += fetchesWeights[3] * SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, real3(fetchesUV[3].xy, shadowCoord.z));
attenuation += fetchesWeights[4] * SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, real3(fetchesUV[4].xy, shadowCoord.z));
attenuation += fetchesWeights[5] * SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, real3(fetchesUV[5].xy, shadowCoord.z));
attenuation += fetchesWeights[6] * SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, real3(fetchesUV[6].xy, shadowCoord.z));
attenuation += fetchesWeights[7] * SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, real3(fetchesUV[7].xy, shadowCoord.z));
attenuation += fetchesWeights[8] * SAMPLE_TEXTURE2D_SHADOW(_ShadowMap, sampler_ShadowMap, real3(fetchesUV[8].xy, shadowCoord.z));
#endif
#endif
// Apply shadow strength
attenuation = LerpWhiteTo(attenuation, _ShadowData.x);
// TODO: We can set shadowmap sampler to clamptoborder when we don't have a shadow atlas and avoid xy coord bounds check
return (shadowCoord.x <= 0 || shadowCoord.x >= 1 || shadowCoord.y <= 0 || shadowCoord.y >= 1 || shadowCoord.z >= 1) ? 1.0 : attenuation;
return (OUTSIDE_SHADOW_BOUNDS(shadowCoord)) ? 1.0 : attenuation;
}
inline half ComputeCascadeIndex(float3 positionWS)

return mul(_WorldToShadow[0], float4(positionWS, 1.0));
}
half GetShadowStrength()
half RealtimeShadowAttenuation(float4 shadowCoord)
return _ShadowData.x;
}
half RealtimeShadowAttenuation(float3 positionWS)
{
#if !defined(_SHADOWS_ENABLED)
return 1.0;
#endif
float4 shadowCoord = ComputeShadowCoord(positionWS);
return SampleShadowmap(shadowCoord);
}
half RealtimeShadowAttenuation(float3 positionWS, float4 shadowCoord)
{
#if !defined(_SHADOWS_ENABLED)
return 1.0;
#endif
#ifdef _SHADOWS_CASCADE
shadowCoord = ComputeShadowCoord(positionWS);
#endif
return SampleShadowmap(shadowCoord);
return SampleScreenSpaceShadowMap(shadowCoord);
}
#endif

8
ScriptableRenderPipeline/LightweightPipeline/LWRP/Shaders/LightweightStandard.shader


// -------------------------------------
// Lightweight Pipeline keywords
// We have no good approach exposed to skip shader variants, e.g, ideally we would like to skip _CASCADE for all puctual lights
// Lightweight combines light classification and shadows keywords to reduce shader variants.
// Lightweight shader library declares defines based on these keywords to avoid having to check them in the shaders
// Core.hlsl defines _MAIN_LIGHT_DIRECTIONAL and _MAIN_LIGHT_SPOT (point lights can't be main light)
// Shadow.hlsl defines _SHADOWS_ENABLED, _SHADOWS_SOFT, _SHADOWS_CASCADE, _SHADOWS_PERSPECTIVE
#pragma multi_compile _ _MAIN_LIGHT_DIRECTIONAL_SHADOW _MAIN_LIGHT_DIRECTIONAL_SHADOW_CASCADE _MAIN_LIGHT_DIRECTIONAL_SHADOW_SOFT _MAIN_LIGHT_DIRECTIONAL_SHADOW_CASCADE_SOFT _MAIN_LIGHT_SPOT_SHADOW _MAIN_LIGHT_SPOT_SHADOW_SOFT
#pragma multi_compile _MAIN_LIGHT_DIRECTIONAL _MAIN_LIGHT_SPOT
#pragma multi_compile _ _SHADOWS_ENABLED
#pragma multi_compile _ _MAIN_LIGHT_COOKIE
#pragma multi_compile _ _ADDITIONAL_LIGHTS
#pragma multi_compile _ _VERTEX_LIGHTS

8
ScriptableRenderPipeline/LightweightPipeline/LWRP/Shaders/LightweightStandardSimpleLighting.shader


// -------------------------------------
// Lightweight Pipeline keywords
// We have no good approach exposed to skip shader variants, e.g, ideally we would like to skip _CASCADE for all puctual lights
// Lightweight combines light classification and shadows keywords to reduce shader variants.
// Lightweight shader library declares defines based on these keywords to avoid having to check them in the shaders
// Core.hlsl defines _MAIN_LIGHT_DIRECTIONAL and _MAIN_LIGHT_SPOT (point lights can't be main light)
// Shadow.hlsl defines _SHADOWS_ENABLED, _SHADOWS_SOFT, _SHADOWS_CASCADE, _SHADOWS_PERSPECTIVE
#pragma multi_compile _ _MAIN_LIGHT_DIRECTIONAL_SHADOW _MAIN_LIGHT_DIRECTIONAL_SHADOW_CASCADE _MAIN_LIGHT_DIRECTIONAL_SHADOW_SOFT _MAIN_LIGHT_DIRECTIONAL_SHADOW_CASCADE_SOFT _MAIN_LIGHT_SPOT_SHADOW _MAIN_LIGHT_SPOT_SHADOW_SOFT
#pragma multi_compile _MAIN_LIGHT_DIRECTIONAL _MAIN_LIGHT_SPOT
#pragma multi_compile _ _SHADOWS_ENABLED
#pragma multi_compile _ _MAIN_LIGHT_COOKIE
#pragma multi_compile _ _ADDITIONAL_LIGHTS
#pragma multi_compile _ _VERTEX_LIGHTS

8
ScriptableRenderPipeline/LightweightPipeline/LWRP/Shaders/LightweightStandardTerrain.shader


// -------------------------------------
// Lightweight Pipeline keywords
// We have no good approach exposed to skip shader variants, e.g, ideally we would like to skip _CASCADE for all puctual lights
// Lightweight combines light classification and shadows keywords to reduce shader variants.
// Lightweight shader library declares defines based on these keywords to avoid having to check them in the shaders
// Core.hlsl defines _MAIN_LIGHT_DIRECTIONAL and _MAIN_LIGHT_SPOT (point lights can't be main light)
// Shadow.hlsl defines _SHADOWS_ENABLED, _SHADOWS_SOFT, _SHADOWS_CASCADE, _SHADOWS_PERSPECTIVE
#pragma multi_compile _ _MAIN_LIGHT_DIRECTIONAL_SHADOW _MAIN_LIGHT_DIRECTIONAL_SHADOW_CASCADE _MAIN_LIGHT_DIRECTIONAL_SHADOW_SOFT _MAIN_LIGHT_DIRECTIONAL_SHADOW_CASCADE_SOFT _MAIN_LIGHT_SPOT_SHADOW _MAIN_LIGHT_SPOT_SHADOW_SOFT
#pragma multi_compile _MAIN_LIGHT_DIRECTIONAL _MAIN_LIGHT_SPOT
#pragma multi_compile _ _SHADOWS_ENABLED
#pragma multi_compile _ _MAIN_LIGHT_COOKIE
#pragma multi_compile _ _ADDITIONAL_LIGHTS
#pragma multi_compile _ _VERTEX_LIGHTS

4
ScriptableRenderPipeline/LightweightPipeline/package.json


{
"name": "com.unity.render-pipelines.lightweight",
"description": "Lightweight Render Pipeline for Unity.",
"version": "0.1.28",
"version": "0.1.29",
"com.unity.render-pipelines.core": "0.1.28"
"com.unity.render-pipelines.core": "0.1.29"
}
}

2
ScriptableRenderPipeline/master-package.json


{
"version": "0.1.28",
"version": "0.1.29",
"unity": "2018.1",
"dependencies": {
"com.unity.postprocessing": "0.1.8"

2
TestbedPipelines/BasicRenderPipeline/BasicRenderPipeline.cs


public bool UseIntermediateRenderTargetBlit;
#if UNITY_EDITOR
[UnityEditor.MenuItem("Assets/Create/Graphics/Basic Render Pipeline", priority = CoreUtils.assetCreateMenuPriority1)]
[UnityEditor.MenuItem("Assets/Create/Rendering/Basic Render Pipeline", priority = CoreUtils.assetCreateMenuPriority1)]
static void CreateBasicRenderPipeline()
{
var instance = ScriptableObject.CreateInstance<BasicRenderPipeline>();

5
TestbedPipelines/OnTileDeferredPipeline/OnTileDeferredRenderPipeline.cs


private Material m_BlitMaterial;
private void OnValidate()
protected override void OnValidate()
Build();
base.OnValidate();
Build();
}
public void Cleanup()

629
Tests/GraphicsTests/RenderPipeline/HDRenderPipeline/Scenes/1xxx_Materials/1202_Lit_DoubleSideNormalMode.unity


m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0.36615336, g: 0.3847445, b: 0.4253475, a: 1}
m_IndirectSpecularColor: {r: 0.3661522, g: 0.3847425, b: 0.4253456, a: 1}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:

m_Children:
- {fileID: 1463840387}
- {fileID: 1350281944}
- {fileID: 938480603}
m_Father: {fileID: 0}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}

v_Value: {x: 0, y: 0, z: 0, w: 0}
c_Value: {r: 0, g: 0, b: 0, a: 0}
i_Value_Max: 0
f_Value_Max: 1
f_Value_Max: 2
count: 2
count: 3
offset: 1.5
rotation: {x: 0, y: 0, z: 0}
scale: 1

m_LocalPosition: {x: -1, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 1492725334}
- {fileID: 321102322}
- {fileID: 387317036}
- {fileID: 1167281863}
- {fileID: 1980092100}
m_Father: {fileID: 0}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}

shadowResolution: 512
shadowDimmer: 1
shadowFadeDistance: 10000
enableContactShadows: 0
contactShadowLength: 0
contactShadowDistanceScaleFactor: 0.5
contactShadowMaxDistance: 50
contactShadowFadeDistance: 5
contactShadowSampleCount: 8
shadowCascadeCount: 4
shadowCascadeRatios:
- 0.05

m_Father: {fileID: 0}
m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: -45, z: 0}
--- !u!1 &321102321
--- !u!1 &387317035
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}

- component: {fileID: 321102322}
- component: {fileID: 321102324}
- component: {fileID: 321102323}
- component: {fileID: 387317036}
- component: {fileID: 387317038}
- component: {fileID: 387317037}
m_Name: DoubleSidePlane__DoubleSidedNormalMode_1.00
m_Name: DoubleSidePlane__DoubleSidedNormalMode_0.00
--- !u!4 &321102322
--- !u!4 &387317036
m_GameObject: {fileID: 321102321}
m_GameObject: {fileID: 387317035}
m_LocalPosition: {x: 1.5, y: 0, z: 0}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_RootOrder: 1
m_RootOrder: 0
--- !u!23 &321102323
--- !u!23 &387317037
m_GameObject: {fileID: 321102321}
m_GameObject: {fileID: 387317035}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1

m_ReflectionProbeUsage: 1
m_RenderingLayerMask: 4294967295
m_Materials:
- {fileID: 1222758656}
- {fileID: 1579018352}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0

m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!33 &321102324
--- !u!33 &387317038
m_GameObject: {fileID: 321102321}
m_GameObject: {fileID: 387317035}
m_Mesh: {fileID: 4300000, guid: 0661b78617a8d1f48adef7e6b4af05bd, type: 3}
--- !u!1001 &749245062
Prefab:

m_Modifications:
- target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 2}
propertyPath: m_LocalPosition.x
value: 0
value: 0.502
objectReference: {fileID: 0}
- target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 2}
propertyPath: m_LocalPosition.y

m_RemovedComponents: []
m_ParentPrefab: {fileID: 100100000, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 2}
m_IsPrefabParent: 0
--- !u!1 &938480602
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 938480603}
- component: {fileID: 938480605}
- component: {fileID: 938480604}
m_Layer: 0
m_Name: New Text (11)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &938480603
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 938480602}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 1.996, y: 1, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 103750789}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!102 &938480604
TextMesh:
serializedVersion: 3
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 938480602}
m_Text: None
m_OffsetZ: 0
m_CharacterSize: 0.1
m_LineSpacing: 1
m_Anchor: 4
m_Alignment: 1
m_TabSize: 4
m_FontSize: 16
m_FontStyle: 0
m_RichText: 1
m_Font: {fileID: 12800000, guid: 306d620c715872046bf76568b7f382d4, type: 3}
m_Color:
serializedVersion: 2
rgba: 4294967295
--- !u!23 &938480605
MeshRenderer:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 938480602}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RenderingLayerMask: 4294967295
m_Materials:
- {fileID: 2100000, guid: 306d620c715872046bf76568b7f382d4, type: 3}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 0
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!1001 &1037782906
Prefab:
m_ObjectHideFlags: 0

m_RemovedComponents: []
m_ParentPrefab: {fileID: 100100000, guid: e0446b620fbf66540b1b93f937834a01, type: 2}
m_IsPrefabParent: 0
--- !u!21 &1222758656
--- !u!1 &1167281862
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 1167281863}
- component: {fileID: 1167281865}
- component: {fileID: 1167281864}
m_Layer: 0
m_Name: DoubleSidePlane__DoubleSidedNormalMode_1.00
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1167281863
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1167281862}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 1.5, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 195823282}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!23 &1167281864
MeshRenderer:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1167281862}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RenderingLayerMask: 4294967295
m_Materials:
- {fileID: 1337868745}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 0
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!33 &1167281865
MeshFilter:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1167281862}
m_Mesh: {fileID: 4300000, guid: 0661b78617a8d1f48adef7e6b4af05bd, type: 3}
--- !u!21 &1337868745
Material:
serializedVersion: 6
m_ObjectHideFlags: 0

m_Shader: {fileID: 4800000, guid: 6e4ae4064600d784cac1e41a9e6f2e59, type: 3}
m_ShaderKeywords: _BLENDMODE_PRESERVE_SPECULAR_LIGHTING _DOUBLESIDED_ON _NORMALMAP
_NORMALMAP_TANGENT_SPACE
m_ShaderKeywords: _DOUBLESIDED_ON _NORMALMAP _NORMALMAP_TANGENT_SPACE
m_CustomRenderQueue: -1
m_CustomRenderQueue: 2000
- TransparentBackfaceDebugDisplay
- TransparentBackfaceDebugDisplay
- MOTIONVECTORS
m_SavedProperties:
serializedVersion: 3

m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _CoatMaskMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}

- _BlendMode: 0
- _CoatCoverage: 1
- _CoatIOR: 0.5
- _CoatMask: 1
- _CoatMask: 0
- _CullMode: 0
- _CullModeForward: 0
- _Cutoff: 0.5

- _EnableMotionVectorForVertexAnimation: 0
- _EnableSpecularOcclusion: 0
- _EnableWind: 0
- _EnergyConservingSpecularColor: 1
- _HeightMapParametrization: 1
- _HeightOffset: 0
- _HeightPoMAmplitude: 2
- _HeightTessAmplitude: 2
- _HeightTessCenter: 0.5
- _IOR: 1
- _InitialBend: 1
- _InvTilingScale: 1

- _PPDPrimitiveWidth: 1
- _PreRefractionPass: 0
- _RefractionMode: 0
- _SSSAndTransmissionType: 0
- _ShiverDirectionality: 0.5
- _ShiverDrag: 0.2
- _Smoothness: 0.5

- _SubsurfaceMask: 1
- _SubsurfaceProfile: 0
- _SubsurfaceRadius: 1
- _SupportDBuffer: 1
- _TexWorldScaleEmissive: 1
- _TransmissionEnable: 1
- _TransparentSortPriority: 0
- _UVEmissive: 0
- _ZTestMode: 8
- _ZWrite: 1
m_Colors:

- _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1}
- _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0}
- _UVMappingMask: {r: 1, g: 0, b: 0, a: 0}
- _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0}
--- !u!1 &1350281943
GameObject:
m_ObjectHideFlags: 0

m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!1 &1492725333
GameObject:
--- !u!21 &1555213935
Material:
serializedVersion: 6
serializedVersion: 5
m_Component:
- component: {fileID: 1492725334}
- component: {fileID: 1492725336}
- component: {fileID: 1492725335}
m_Layer: 0
m_Name: DoubleSidePlane__DoubleSidedNormalMode_0.00
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1492725334
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1492725333}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 195823282}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!23 &1492725335
MeshRenderer:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1492725333}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RenderingLayerMask: 4294967295
m_Materials:
- {fileID: 1590950923}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 0
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!33 &1492725336
MeshFilter:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1492725333}
m_Mesh: {fileID: 4300000, guid: 0661b78617a8d1f48adef7e6b4af05bd, type: 3}
--- !u!21 &1590950923
m_Name: DoubleSideNormalTest(Clone)(Clone)
m_Shader: {fileID: 4800000, guid: 6e4ae4064600d784cac1e41a9e6f2e59, type: 3}
m_ShaderKeywords: _DOUBLESIDED_ON _NORMALMAP _NORMALMAP_TANGENT_SPACE
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 1
m_CustomRenderQueue: 2000
stringTagMap: {}
disabledShaderPasses:
- DistortionVectors
- TransparentBackfaceDebugDisplay
- TransparentDepthPrepass
- TransparentDepthPostpass
- TransparentBackface
- MOTIONVECTORS
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _AnisotropyMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BaseColorMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BentNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BentNormalMapOS:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _CoatMaskMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DistortionVectorMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissiveColorMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _HeightMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MaskMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _NormalMap:
m_Texture: {fileID: 2800000, guid: 6c9639b085103f447815e2965a30810a, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _NormalMapOS:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SpecularColorMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SubsurfaceMaskMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SubsurfaceRadiusMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _TangentMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _TangentMapOS:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ThicknessMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _TransmittanceColorMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _AORemapMax: 1
- _AORemapMin: 0
- _ATDistance: 1
- _AlbedoAffectEmissive: 0
- _AlphaCutoff: 0.5
- _AlphaCutoffEnable: 0
- _AlphaCutoffPostpass: 0.5
- _AlphaCutoffPrepass: 0.5
- _Anisotropy: 0
- _BlendMode: 0
- _CoatCoverage: 1
- _CoatIOR: 0.5
- _CoatMask: 0
- _CullMode: 0
- _CullModeForward: 0
- _Cutoff: 0.5
- _DepthOffsetEnable: 0
- _DetailAlbedoScale: 1
- _DetailNormalScale: 1
- _DetailSmoothnessScale: 1
- _DiffusionProfile: 0
- _DisplacementLockObjectScale: 1
- _DisplacementLockTilingScale: 1
- _DisplacementMode: 0
- _DistortionBlendMode: 0
- _DistortionBlurBlendMode: 0
- _DistortionBlurDstBlend: 1
- _DistortionBlurRemapMax: 1
- _DistortionBlurRemapMin: 0
- _DistortionBlurScale: 1
- _DistortionBlurSrcBlend: 1
- _DistortionDepthTest: 0
- _DistortionDstBlend: 1
- _DistortionEnable: 0
- _DistortionScale: 1
- _DistortionSrcBlend: 1
- _DistortionVectorBias: -1
- _DistortionVectorScale: 2
- _DoubleSidedEnable: 1
- _DoubleSidedNormalMode: 2
- _Drag: 1
- _DstBlend: 0
- _EmissiveColorMode: 1
- _EmissiveIntensity: 0
- _EnableBlendModePreserveSpecularLighting: 1
- _EnableFogOnTransparent: 1
- _EnableMotionVectorForVertexAnimation: 0
- _EnableSpecularOcclusion: 0
- _EnableWind: 0
- _EnergyConservingSpecularColor: 1
- _HeightAmplitude: 0.02
- _HeightCenter: 0.5
- _HeightMapParametrization: 1
- _HeightMax: 1
- _HeightMin: -1
- _HeightOffset: 0
- _HeightPoMAmplitude: 2
- _HeightTessAmplitude: 2
- _HeightTessCenter: 0.5
- _IOR: 1
- _InitialBend: 1
- _InvTilingScale: 1
- _LinkDetailsWithBase: 1
- _MaterialID: 1
- _Metallic: 0
- _NormalMapSpace: 0
- _NormalScale: 1
- _PPDLodThreshold: 5
- _PPDMaxSamples: 15
- _PPDMinSamples: 5
- _PPDPrimitiveLength: 1
- _PPDPrimitiveWidth: 1
- _PreRefractionPass: 0
- _RefractionMode: 0
- _SSSAndTransmissionType: 0
- _ShiverDirectionality: 0.5
- _ShiverDrag: 0.2
- _Smoothness: 0.5
- _SmoothnessRemapMax: 1
- _SmoothnessRemapMin: 0
- _SrcBlend: 1
- _StencilRef: 2
- _StencilRefMV: 128
- _StencilWriteMask: 7
- _StencilWriteMaskMV: 128
- _Stiffness: 1
- _SubsurfaceMask: 1
- _SubsurfaceProfile: 0
- _SubsurfaceRadius: 1
- _SupportDBuffer: 1
- _SurfaceType: 0
- _TexWorldScale: 1
- _TexWorldScaleEmissive: 1
- _Thickness: 1
- _ThicknessMultiplier: 1
- _TransmissionEnable: 1
- _TransparentBackfaceEnable: 0
- _TransparentDepthPostpassEnable: 0
- _TransparentDepthPrepassEnable: 0
- _TransparentSortPriority: 0
- _UVBase: 0
- _UVDetail: 0
- _UVEmissive: 0
- _ZTestMode: 8
- _ZWrite: 1
m_Colors:
- _BaseColor: {r: 1, g: 1, b: 1, a: 1}
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _DoubleSidedConstants: {r: 1, g: 1, b: 1, a: 0}
- _EmissionColor: {r: 1, g: 1, b: 1, a: 1}
- _EmissiveColor: {r: 0, g: 0, b: 0, a: 1}
- _InvPrimScale: {r: 1, g: 1, b: 0, a: 0}
- _SpecularColor: {r: 1, g: 1, b: 1, a: 1}
- _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0}
- _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1}
- _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0}
- _UVMappingMask: {r: 1, g: 0, b: 0, a: 0}
- _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0}
--- !u!21 &1579018352
Material:
serializedVersion: 6
m_ObjectHideFlags: 0

m_Shader: {fileID: 4800000, guid: 6e4ae4064600d784cac1e41a9e6f2e59, type: 3}
m_ShaderKeywords: _BLENDMODE_PRESERVE_SPECULAR_LIGHTING _DOUBLESIDED_ON _NORMALMAP
_NORMALMAP_TANGENT_SPACE
m_ShaderKeywords: _DOUBLESIDED_ON _NORMALMAP _NORMALMAP_TANGENT_SPACE
m_CustomRenderQueue: -1
m_CustomRenderQueue: 2000
- TransparentBackfaceDebugDisplay
- TransparentBackfaceDebugDisplay
- MOTIONVECTORS
m_SavedProperties:
serializedVersion: 3

m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _CoatMaskMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}

- _BlendMode: 0
- _CoatCoverage: 1
- _CoatIOR: 0.5
- _CoatMask: 1
- _CoatMask: 0
- _CullMode: 0
- _CullModeForward: 0
- _Cutoff: 0.5

- _EnableMotionVectorForVertexAnimation: 0
- _EnableSpecularOcclusion: 0
- _EnableWind: 0
- _EnergyConservingSpecularColor: 1
- _HeightMapParametrization: 1
- _HeightOffset: 0
- _HeightPoMAmplitude: 2
- _HeightTessAmplitude: 2
- _HeightTessCenter: 0.5
- _IOR: 1
- _InitialBend: 1
- _InvTilingScale: 1

- _PPDPrimitiveWidth: 1
- _PreRefractionPass: 0
- _RefractionMode: 0
- _SSSAndTransmissionType: 0
- _ShiverDirectionality: 0.5
- _ShiverDrag: 0.2
- _Smoothness: 0.5

- _SubsurfaceMask: 1
- _SubsurfaceProfile: 0
- _SubsurfaceRadius: 1
- _SupportDBuffer: 1
- _TexWorldScaleEmissive: 1
- _TransmissionEnable: 1
- _TransparentSortPriority: 0
- _UVEmissive: 0
- _ZTestMode: 8
- _ZWrite: 1
m_Colors:

- _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1}
- _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0}
- _UVMappingMask: {r: 1, g: 0, b: 0, a: 0}
- _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0}
--- !u!1 &1823592852
GameObject:
m_ObjectHideFlags: 0

shadowResolution: 512
shadowDimmer: 1
shadowFadeDistance: 10000
enableContactShadows: 0
contactShadowLength: 0
contactShadowDistanceScaleFactor: 0.5
contactShadowMaxDistance: 50
contactShadowFadeDistance: 5
contactShadowSampleCount: 8
shadowCascadeCount: 4
shadowCascadeRatios:
- 0.05

m_Father: {fileID: 0}
m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 45, y: 0, z: 0}
--- !u!1 &1980092099
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 1980092100}
- component: {fileID: 1980092102}
- component: {fileID: 1980092101}
m_Layer: 0
m_Name: DoubleSidePlane__DoubleSidedNormalMode_2.00
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1980092100
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1980092099}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 3, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 195823282}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!23 &1980092101
MeshRenderer:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1980092099}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RenderingLayerMask: 4294967295
m_Materials:
- {fileID: 1555213935}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 0
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!33 &1980092102
MeshFilter:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1980092099}
m_Mesh: {fileID: 4300000, guid: 0661b78617a8d1f48adef7e6b4af05bd, type: 3}

5
Tests/GraphicsTests/RenderPipeline/HDRenderPipeline/Scenes/1xxx_Materials/1202_Lit_DoubleSideNormalMode/DoubleSideNormalTest.mat


stringTagMap: {}
disabledShaderPasses:
- DistortionVectors
- TransparentBackfaceDebugDisplay
- TransparentBackfaceDebugDisplay
- MOTIONVECTORS
m_SavedProperties:
serializedVersion: 3

- _TexWorldScaleEmissive: 1
- _Thickness: 1
- _ThicknessMultiplier: 1
- _TransmissionEnable: 1
- _TransparentBackfaceEnable: 0
- _TransparentDepthPostpassEnable: 0
- _TransparentDepthPrepassEnable: 0

m_Colors:
- _BaseColor: {r: 1, g: 1, b: 1, a: 1}
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _DoubleSidedConstants: {r: -1, g: -1, b: -1, a: 0}
- _DoubleSidedConstants: {r: 1, g: 1, b: 1, a: 0}
- _EmissionColor: {r: 1, g: 1, b: 1, a: 1}
- _EmissiveColor: {r: 0, g: 0, b: 0, a: 1}
- _InvPrimScale: {r: 1, g: 1, b: 0, a: 0}

36
Tests/Scripts/GraphicTests/Framework/TestFrameworkTools.cs


public struct TestInfo
{
public string name;
public string comment;
public float threshold;
public string relativePath;
public string templatePath;

public override string ToString()
{
return name;
if (string.IsNullOrEmpty(comment))
return name;
else
return string.Format("{0}: {1}", name, comment);
// Get additionalSceneInfo
public static Dictionary<string, AdditionalTestSceneInfos.AdditionalTestSceneInfo> GetAdditionalInfos ( string path)
{
Dictionary<string, AdditionalTestSceneInfos.AdditionalTestSceneInfo> o = new Dictionary<string, AdditionalTestSceneInfos.AdditionalTestSceneInfo>();
AdditionalTestSceneInfos additionalTestSceneInfos = AssetDatabase.LoadAssetAtPath<AdditionalTestSceneInfos>(path);
if (additionalTestSceneInfos != null)
{
for (int i=0 ; i<additionalTestSceneInfos.additionalInfos.Length ; ++i)
{
o[additionalTestSceneInfos.additionalInfos[i].name] = additionalTestSceneInfos.additionalInfos[i];
}
}
return o;
}
// collect the scenes that we can use
public static class CollectScenes
{

{
playModeScenes.Add(ti.templatePath);
}
// Get the additional infos
var additionalInfos = GetAdditionalInfos( "Assets"+Path.Combine(filesPath.Replace(Application.dataPath, ""), "AdditionalTestSceneInfos.asset") );
// construct all the needed test infos
for (int i = 0; i < allPaths_List.Count; ++i)

if (playModeScenes.Contains(splitPaths.Last()))
continue;
string sceneNum = p.Name.Split("_"[0])[0];
comment = additionalInfos.ContainsKey(sceneNum)? additionalInfos[sceneNum].comment:null,
relativePath = splitPaths.Last(),
templatePath = splitPaths.Last(),
threshold = 0.02f,

}
else
{
// Get the additional infos
var additionalInfos = GetAdditionalInfos( Path.Combine(filesPath, "AdditionalTestSceneInfos.asset") );
for ( int i=0 ; i<listFile.scenesPath.Length ; ++i)
{
string path = listFile.scenesPath[i];

split = string.Format("{0}{1}", split, Path.DirectorySeparatorChar);
var splitPaths = p.FullName.Split(new[] { split }, StringSplitOptions.RemoveEmptyEntries);
string sceneNum = p.Name.Split("_"[0])[0];
comment = additionalInfos.ContainsKey(sceneNum)? additionalInfos[sceneNum].comment:null,
relativePath = p.ToString(),
templatePath = splitPaths.Last(),
threshold = 0.02f,

8
SampleScenes/HDTest/BakingSkyTest.meta


fileFormatVersion: 2
guid: a9790c44e9473bd4c8810927d3b0658e
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

1001
SampleScenes/HDTest/BakingSkyTest.unity
文件差异内容过多而无法显示
查看文件

7
SampleScenes/HDTest/BakingSkyTest.unity.meta


fileFormatVersion: 2
guid: c3be815be46948b45bbdc32a09e594b2
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

48
ScriptableRenderPipeline/Core/CoreRP/GeometryUtils.cs.hlsl


//
// This file was automatically generated. Please don't edit by hand.
//
#ifndef GEOMETRYUTILS_CS_HLSL
#define GEOMETRYUTILS_CS_HLSL
// Generated from UnityEngine.Experimental.Rendering.OrientedBBox
// PackingRules = Exact
struct OrientedBBox
{
float3 center;
float extentX;
float3 right;
float extentY;
float3 up;
float extentZ;
};
//
// Accessors for UnityEngine.Experimental.Rendering.OrientedBBox
//
float3 GetCenter(OrientedBBox value)
{
return value.center;
}
float GetExtentX(OrientedBBox value)
{
return value.extentX;
}
float3 GetRight(OrientedBBox value)
{
return value.right;
}
float GetExtentY(OrientedBBox value)
{
return value.extentY;
}
float3 GetUp(OrientedBBox value)
{
return value.up;
}
float GetExtentZ(OrientedBBox value)
{
return value.extentZ;
}
#endif

9
ScriptableRenderPipeline/Core/CoreRP/GeometryUtils.cs.hlsl.meta


fileFormatVersion: 2
guid: c168c5bb5d2fae84499b8ee8f2a3cdbc
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:

59
ScriptableRenderPipeline/HDRenderPipeline/HDRP/Lighting/Volumetrics/HomogeneousDensityVolume.cs


namespace UnityEngine.Experimental.Rendering.HDPipeline
{
[ExecuteInEditMode]
[AddComponentMenu("Rendering/Homogeneous Density Volume", 1100)]
public class HomogeneousDensityVolume : MonoBehaviour
{
public VolumeParameters volumeParameters = new VolumeParameters();
private void Awake()
{
}
private void OnEnable()
{
}
private void OnDisable()
{
}
private void Update()
{
}
private void OnValidate()
{
volumeParameters.Constrain();
}
void OnDrawGizmos()
{
if (volumeParameters.IsLocalVolume())
{
Gizmos.color = volumeParameters.albedo;
Gizmos.matrix = transform.localToWorldMatrix;
Gizmos.DrawWireCube(Vector3.zero, Vector3.one);
}
}
// Returns NULL if a global fog component does not exist, or is not enabled.
public static HomogeneousDensityVolume GetGlobalHomogeneousDensityVolume()
{
HomogeneousDensityVolume globalVolume = null;
HomogeneousDensityVolume[] volumes = FindObjectsOfType(typeof(HomogeneousDensityVolume)) as HomogeneousDensityVolume[];
foreach (HomogeneousDensityVolume volume in volumes)
{
if (volume.enabled && !volume.volumeParameters.IsLocalVolume())
{
globalVolume = volume;
break;
}
}
return globalVolume;
}
}
} // UnityEngine.Experimental.Rendering.HDPipeline

11
ScriptableRenderPipeline/HDRenderPipeline/HDRP/Lighting/Volumetrics/HomogeneousDensityVolume.cs.meta


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

85
ScriptableRenderPipeline/LightweightPipeline/LWRP/Shaders/LightweightScreenSpaceShadows.shader


Shader "Hidden/LightweightPipeline/ScreenSpaceShadows"
{
SubShader
{
Tags{ "RenderPipeline" = "LightweightPipeline" }
HLSLINCLUDE
//Keep compiler quiet about Shadows.hlsl.
#include "CoreRP/ShaderLibrary/Common.hlsl"
#include "CoreRP/ShaderLibrary/EntityLighting.hlsl"
#include "CoreRP/ShaderLibrary/ImageBasedLighting.hlsl"
#include "LWRP/ShaderLibrary/Core.hlsl"
#include "LWRP/ShaderLibrary/Shadows.hlsl"
TEXTURE2D(_CameraDepthTexture);
SAMPLER(sampler_CameraDepthTexture);
struct VertexInput
{
float4 vertex : POSITION;
float2 texcoord : TEXCOORD0;
UNITY_VERTEX_INPUT_INSTANCE_ID
};
struct Interpolators
{
half4 pos : SV_POSITION;
half4 texcoord : TEXCOORD0;
UNITY_VERTEX_INPUT_INSTANCE_ID
};
Interpolators Vertex(VertexInput i)
{
Interpolators o;
UNITY_SETUP_INSTANCE_ID(i);
UNITY_TRANSFER_INSTANCE_ID(i, o);
o.pos = TransformObjectToHClip(i.vertex.xyz);
float4 projPos = o.pos * 0.5;
projPos.xy = projPos.xy + projPos.w;
o.texcoord.xy = i.texcoord;
o.texcoord.zw = projPos.xy;
return o;
}
half Fragment(Interpolators i) : SV_Target
{
UNITY_SETUP_INSTANCE_ID(i);
float deviceDepth = SAMPLE_DEPTH_TEXTURE(_CameraDepthTexture, sampler_CameraDepthTexture, i.texcoord.xy);
#if UNITY_REVERSED_Z
deviceDepth = 1 - deviceDepth;
#endif
deviceDepth = 2 * deviceDepth - 1; //NOTE: Currently must massage depth before computing CS position.
float3 vpos = ComputeViewSpacePosition(i.texcoord.zw, deviceDepth, unity_CameraInvProjection);
float3 wpos = mul(unity_CameraToWorld, float4(vpos, 1)).xyz;
//Fetch shadow coordinates for cascade.
float4 coords = ComputeShadowCoord(wpos);
return SampleShadowmap(coords);
}
ENDHLSL
Pass
{
ZTest Always ZWrite Off
HLSLPROGRAM
#pragma multi_compile _ _SHADOWS_SOFT
#pragma multi_compile _ _SHADOWS_CASCADE
#pragma vertex Vertex
#pragma fragment Fragment
ENDHLSL
}
}
}

9
ScriptableRenderPipeline/LightweightPipeline/LWRP/Shaders/LightweightScreenSpaceShadows.shader.meta


fileFormatVersion: 2
guid: 0f854b35a0cf61a429bd5dcfea30eddd
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:

30
Tests/GraphicsTests/RenderPipeline/HDRenderPipeline/Scenes/AdditionalTestSceneInfos.asset


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 6918f3da28fdc4e47b6f4f6e669f1831, type: 3}
m_Name: AdditionalTestSceneInfos
m_EditorClassIdentifier:
additionalInfos:
- name: 1102
comment: Waiting for negative values in BC6H.
- name: 1103
comment: Waiting for negative values in BC6H.
- name: 1206
comment: Waiting for negative values in BC6H.
- name: 1302
comment: Open the scene and apply the correct pipeline.
- name: 1303
comment: Open the scene and apply the correct pipeline.
- name: 2203
comment: Scene not finished for the moment.
- name: 2301
comment: Shadow must be fixed.
- name: 2004
comment: No animated cookie on point light.

8
Tests/GraphicsTests/RenderPipeline/HDRenderPipeline/Scenes/AdditionalTestSceneInfos.asset.meta


fileFormatVersion: 2
guid: be06383040e673b4887e323b8addbd15
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

19
Tests/Scripts/GraphicTests/Framework/AdditionalTestSceneInfos.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace UnityEngine.Experimental.Rendering
{
[CreateAssetMenu(fileName = "AdditionalTestSceneInfos", menuName = "Render Pipeline/Tests/AdditionalTestSceneInfos", order = 20)]
public class AdditionalTestSceneInfos : ScriptableObject
{
public AdditionalTestSceneInfo[] additionalInfos;
[System.Serializable]
public struct AdditionalTestSceneInfo
{
public string name;
public string comment;
}
}
}

11
Tests/Scripts/GraphicTests/Framework/AdditionalTestSceneInfos.cs.meta


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

76
SampleScenes/HDTest/BakingSkyTest/BakingSKy Profile.asset


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d7fd9488000d3734a9e00ee676215985, type: 3}
m_Name: BakingSKy Profile
m_EditorClassIdentifier:
components:
- {fileID: 114389694901652452}
--- !u!114 &114389694901652452
MonoBehaviour:
m_ObjectHideFlags: 3
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3df29e7cc05fbec4aa43e06ea875565d, type: 3}
m_Name: ProceduralSky
m_EditorClassIdentifier:
active: 1
rotation:
m_OverrideState: 1
m_Value: 0
min: 0
max: 360
exposure:
m_OverrideState: 1
m_Value: 0
multiplier:
m_OverrideState: 1
m_Value: 2
min: 0
updateMode:
m_OverrideState: 1
m_Value: 0
updatePeriod:
m_OverrideState: 1
m_Value: 0
min: 0
sunSize:
m_OverrideState: 1
m_Value: 0.04
min: 0
max: 1
sunSizeConvergence:
m_OverrideState: 1
m_Value: 5
min: 1
max: 10
atmosphereThickness:
m_OverrideState: 1
m_Value: 1
min: 0
max: 5
skyTint:
m_OverrideState: 1
m_Value: {r: 0.8207547, g: 0.8178204, b: 0, a: 1}
hdr: 0
showAlpha: 1
showEyeDropper: 1
groundColor:
m_OverrideState: 1
m_Value: {r: 0.8641819, g: 0.9811321, b: 0, a: 1}
hdr: 0
showAlpha: 1
showEyeDropper: 1
enableSunDisk:
m_OverrideState: 1
m_Value: 0

8
SampleScenes/HDTest/BakingSkyTest/BakingSKy Profile.asset.meta


fileFormatVersion: 2
guid: ed65e360bc6f5044d8f9af4f23991c00
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

95
SampleScenes/HDTest/BakingSkyTest/GlobalSky Profile.asset


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d7fd9488000d3734a9e00ee676215985, type: 3}
m_Name: GlobalSky Profile
m_EditorClassIdentifier:
components:
- {fileID: 114517358334719460}
- {fileID: 114262273854700064}
--- !u!114 &114262273854700064
MonoBehaviour:
m_ObjectHideFlags: 3
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3df29e7cc05fbec4aa43e06ea875565d, type: 3}
m_Name: ProceduralSky
m_EditorClassIdentifier:
active: 1
rotation:
m_OverrideState: 1
m_Value: 0
min: 0
max: 360
exposure:
m_OverrideState: 1
m_Value: 0
multiplier:
m_OverrideState: 1
m_Value: 1
min: 0
updateMode:
m_OverrideState: 1
m_Value: 0
updatePeriod:
m_OverrideState: 1
m_Value: 0
min: 0
sunSize:
m_OverrideState: 1
m_Value: 0.04
min: 0
max: 1
sunSizeConvergence:
m_OverrideState: 1
m_Value: 5
min: 1
max: 10
atmosphereThickness:
m_OverrideState: 1
m_Value: 1
min: 0
max: 5
skyTint:
m_OverrideState: 1
m_Value: {r: 0.5, g: 0.5, b: 0.5, a: 1}
hdr: 0
showAlpha: 1
showEyeDropper: 1
groundColor:
m_OverrideState: 1
m_Value: {r: 0.369, g: 0.349, b: 0.341, a: 1}
hdr: 0
showAlpha: 1
showEyeDropper: 1
enableSunDisk:
m_OverrideState: 1
m_Value: 1
--- !u!114 &114517358334719460
MonoBehaviour:
m_ObjectHideFlags: 3
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0d7593b3a9277ac4696b20006c21dde2, type: 3}
m_Name: VisualEnvironment
m_EditorClassIdentifier:
active: 1
skyType:
m_OverrideState: 1
m_Value: 2
fogType:
m_OverrideState: 1
m_Value: 0

8
SampleScenes/HDTest/BakingSkyTest/GlobalSky Profile.asset.meta


fileFormatVersion: 2
guid: 903446f3b0b92344ba24706ec45f6bf9
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

7
SampleScenes/HDTest/BakingSkyTest/LightingData.asset
文件差异内容过多而无法显示
查看文件

8
SampleScenes/HDTest/BakingSkyTest/LightingData.asset.meta


fileFormatVersion: 2
guid: bfadf1449b5b7fc468810eeffb430ed0
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 25800000
userData:
assetBundleName:
assetBundleVariant:

397
SampleScenes/HDTest/BakingSkyTest/Lightmap-0_comp_dir.png

之前 之后
宽度: 1024  |  高度: 1024  |  大小: 114 KiB

83
SampleScenes/HDTest/BakingSkyTest/Lightmap-0_comp_dir.png.meta


fileFormatVersion: 2
guid: f9b2cc403000ed34ca8a93f2ae10637e
TextureImporter:
fileIDToRecycleName: {}
externalObjects: {}
serializedVersion: 5
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 0
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 3
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 2
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
vertices: []
indices:
edges: []
weights: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

129
SampleScenes/HDTest/BakingSkyTest/Lightmap-0_comp_light.exr
文件差异内容过多而无法显示
查看文件

83
SampleScenes/HDTest/BakingSkyTest/Lightmap-0_comp_light.exr.meta


fileFormatVersion: 2
guid: c8c82f22adff56545adfc53ca3788e5a
TextureImporter:
fileIDToRecycleName: {}
externalObjects: {}
serializedVersion: 5
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 3
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaUsage: 0
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 6
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 2
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
vertices: []
indices:
edges: []
weights: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

682
SampleScenes/HDTest/BakingSkyTest/ReflectionProbe-0.exr


v/1channelschlist7BGRcompressioncompressiondataWindowbox2i�displayWindowbox2i�lineOrderlineOrderpixelAspectRatiofloat�?screenWindowCenterv2fscreenWindowWidthfloat�?YS�%�����{ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������_������������������������������}�Tף�I!V(i�ԁ��T�F��a�F"'��1K(��$�x`Pǐ�@A�@(��D��%�A"@   @��@ $�$��0!���@���A�HpA(DAB@���������������������������������������������������������������������������������������������������������������������������������������������������������������������������@D � 4��@ �P@C  "�b  �!�@� � 0 �`� @�@�@��@@�   H���A�a�a�� �I$��(��(��,��,��0��0� 0�L4� 4�O4�M8�N4�N8�L8ӎ4ӎ0ӎ<��4����<��@�8��<�8�A�@<<��@�@��@�@��=�@��A@�A�<�@�;@;@�=����=@C�;A�A�C�<@��;=�A��<>C�C�APC�d>A<A�����@� �P�P�� <AP�P�������PA����e��������P�C��=C�$?C�T?8C��?C�������uP��P�q�������������� �P����}��P���O�9�P��P����������AP���P� ��P�Iː������)Ɛ�uӐ�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������C�$?C��?C�t�!��?C�d?C��?C�?'C�?C��@?3C�D�a�C�4?C�$>C�? C�>@C�DC������<C�<C�?C�?C����A�C�@C�A;@=<��A@@���;@@;A�=����@�@�=�C�A��@��@��@�=@��@�<���=���<�@��8��8�8�N��8ӎ@��<��8��4��8��4��4�M4�M4�M4� 0� 0� 0� 4� ,� 0� 0��0� ,��,��(��(��(��$�I$�I$� � ��q�q�a�QEa����_y��q�=7E.��.��3�L�l��K�n&��fv���e��U�Wh��ݒ��X�D�h� ��V������3!� ��Ȧ��-�Ӆi��Ɯ#q�^m�Y���m��A�
�D
��D
��}Pz�}PED
��C���}Px�yP
�FT* ����&�Œ &�%$M+ P�� ���9C������ݻ��S����<6��4�] �t���8ӄsj`�E�N���p��Lf�Ȧ��91!�/
���MD$�ӤNA�0��\��ېtːp��:e�:� �u8ۄi�,\i��I� G޴.�[���o�Ϲo>��\�z�gu�Y��֗�u��_������������f��}��o������:�������Wv���ݿw`3�U*��U* �
2�����<\���=�8��Grt}��;��~�)�u�>���q枛�7d��b�ӱtːp{��UƜfӅj`�q���3 ��Ȧ̀-��J��gIQ�QԕC4}(rZ���&�^���U8 �!�@���@� ��"�D��((�;AT”��L]0�!d�-"iiD���PH�����=��r�ݧ-�wswwwv��ާ�w�wwi������sr�S����q�wwwwwwww7m������{��|�9��s��T�)����v�������������ߧ����zߧ��{{z�޷��wz���ݧ9ӗ>|�\�q�Å¡›��]k[Z���mkV���������ֵi*GF��tt-GF��i CF�Ф) ��;�������� CB��4)�����ꮯ������ꮿ������������꿺������������������۶��\.8p�ǕF�����S�ϝ����Nn����[���������Nӻ���������N�nS�����77*|��T����srݧ-����{{{wwr��)�ssssssr��)�wv�����������ϟ*�>|���ϝO�>{?m^�o��{zӱsr.s���\�*�c�0���7���9���a�e�i�Yvr�N3���>p�6�ͩ�j|ڞ�Nn2�8Ӗ�.n2��+k4��ڶ�Պ��UՒ��Ե&��54�OM���KI�t\GFhRC>GgD���P��V���������4���i��S�����L@�� wtB�� r���!�1 �e�C."�E���v�Y�ŝ�U�qWwUwqW7suG7p��:�:q�m���ߴ��/�n�U��_�U�~��뾿�����������������;��������������������ѴJ�h�GD���4 ��l�<�Ϝ��s'g2wMU�����q~ߋ��{z/oE�ػ�wb���"�99�>mϛS���lϛ5�5�U�U�uu
�5Ԏ��~|��"� � ��� ���4�hRBЊ�PЊ�PЂ����'��ZL���Z,���: ������ϝ9������N�������������nnӛ��:�>|������ݧ7www777.t���s�9��ϟ>u:���ϝ��nn[���������n��۶�������Oo�ooooS��;����Nns�ϟ.\x��T8m�{t��5��J�kjڶ�����������������������:4�����HZ��~~}��]?����gY�����H���hR�]]_��]_]U�]_U}U��������]u��������wU���U}�Uw��UUU5��������on���q�ƥr�˟>|�.{����������nӻ��������n�[���������>|���ϟ>|��ܧ)�srܷi��������ssr��ܷ77777m�r�ݷ)��wwwz��˗>U;�ϟ+�ϟ;�K��"��߲����8�w��� 8��l�ԗ�D�M@�*�,�V��6�4Q��"d��N`��^N͉���1"�bgM��͙�6fRmO�NM�7p��ܷ �
��T@�ED
ڢK* U�C��T>��Tڡ�m@���2��0� �%iI��#��, �zg�9����Y�dV��n�<����=Ov.n6��4�o6ftؘ>zN۱t�7p M��٘@��/ �q���_Q'6�w`���;�C�A��82�n�SJk�I����.�u�K�1��v���~������w]~w_�w�Y���w_�����~w��w��wy��}�w���w�w�vwwwv"I�Y��}P �6��
OL��L���>�D���9�>���~�����.��v��q���a�;n��.��rq�)ƦUƧSje&���2)�>lH�����"�����������Ϝ��OH���,��������AT4@�
�h*��TB�Uh*���%PQ$��b��bɐ$M-"h���4�� ���.|��[�������sr�ܷ-�wwv��ݷ7i���˟>u.u*q�����wv��i����u>t��n\�����Υr�\���\�������r�����ݧ���{z�޷�w��������wwwr���ܩ����ʣ£Ç
okkkj�ئ5uik[Z�����mmmml�-�Kkd�mmD���дtti F��i C>������r��޷ﳴ- CB�Ѵtm
B������몺���꺾�����������뮺����������������ꪪ��i��kkkj�����Sw<8��˗.\�\����S�ӛ������������Nnnnns�7.|�|�T�����s���r����T�{�����幹����s�.|��r�NnnnS�����N�ۻ�����\n\�r���s�S�r�r���o�_�i��ݷ[v�m�r� r�n�7m���Mm2�� �,3L.�1\�.P����U6�Sj|ٝM��3=�\�a��\�squ�XZ�a[U��VV�[ZՂ֬�b��TՊ��ON)�rOJH�2F��9�?>Q�:���~پͿO�z�2�<]�t���nS�'S"�2T�����;n]�.sO��|�2�"�! j"��rY�ŝ�Y��]�r�U���r���/6�F�J�x��$=㔫��־��_�Z����������������������������뮿��������������m$�$tH��HѴK#�Y <��`�<��Ǝ�4u���5{?�wm]>���O�����ۭ;N���ӛ�9����\�f|ٟ6%͙�ؕI��b����*隣�:�j��;9���?=�4B�e
A�4CA�4CA�4 ��4"��PЊ ����6���i.���+��� ���.\�|��[������幹�n[���9nS��>|���Σq����v�ܷ7777*|���ϟ*�>\�����ˍ˕Υs��r��nnnnnn�ۻ����;����nۻ���������S�S�r�ƣǏ6���靚gb�إ�ZZֵ��mmmml�������V�J���ֵNGJ������Ѥtt-CC>������Q�����S��4���#�H���]]_��]_�]_U�U}U���]}�]u�]u��]W���wU���U}�UW}��UK��ű�������mm[|*|*7�<�<�s���s��ss�;r�ܷ.|�9��79������ϝK�.\�u:�K�˝J�S�ϝ�rܹ��ܧ79������-�rܷ-�r�����ܧ)��wwwr�Q�q�\�r�R�Q�r�R�������~O��r��6�uƜ)6d$����� @J�f�6��4Q��"d4`����l�y1!��!$���ؒ2bDba���ٙ�fe&�����p�p������5�+B����*�B�\T@�?T@��P���@���2�8Pe1Rb��dɥH�DB��h(�3�9#�9:�w�[���?�xޓ�������\i�A���f���y�y��:òu� �� �n529�;� ��*F�7QN&�+��8�pu�8,�0�\nA��A�\jd3b@_D�`�`Hd�p����H�9T �@48�;����[��������뾺���뮴?����C3C���� ������ ������>�߻������4B���$I"$IXEdDH,��Q� � ��x���=c���G�U[�������>��?�x5zN�v.ӱpÐp(�ۅf�Л3"�3 �fD2bgɉ�͉
>��γ���>�S�9C�9Ð9c�87=#ŏM�Q�@6AD�*����@H���YPU*�(AT�*� �((�MAd� ���B�iD%"I
����'�|xܹ\���\��s�s�ܧ79��*|��ʟ>|���r�Q�}�r�ݧi�s��ܧ*{�>|�����w.U.\�r�Ǐ.\�����ϝ��nnnn۶���廻���Nӛ����n[���|�\�q����6齽�kkkgf��إ�z7j�Z֭+kkkkkkkkkd�l�J�Y-l�J����ҤttttttttiC?:��9��@T��uת���Ѵ-GGGGB�����ꮯ�����ꯪ�������뮺뮿��������������ꪪ����y�__^׶666vm�j٦���j���Ç ���ƣQ�r�˗*�>u>|�w>|�u>u.U;�˕K�*�ˍǏ*�.\�r�Υ˗.\�����s�ϟ>|�|����ܹ��7-����r��m�v����q�ǍG�G���ʥF�7wkݾ���=n���NTٟ6eŨ�j�6�[L�L��� S��jr��BU6�Rn\��M��f\ٟ6'͉�a�qy�.���)�kkZ�6�� k0��+j���Һ��j���jjAM8'�����hh6�{Gg�wLUk�f�����^�,��U�t��p�u2 ���R�LrGH>�� wt@��!spC;pE;��w!���E"(��� �0%=ŝ�Y�Ŝ�U��\��#�sh.T��lDat�`��ZF2�����J��}�t�������_��]����_���_���_��W��_u}��}��_wW�_u}���8���V��:$�$(��F�"B�(��X�<�����0wFj��y��w���������=�û�;�Û��N.�3s���3S�nU#S�jU#uѳ�^������\��N��?9���?=��CA�)P�eP�YF�i��B�m !�4 ��H ����%�i-H��C@��P��q�Ǐ�.u*�O�ϟ>w:�=ʟ>|���r�˗<�v��-���v�9S���ϟ>\���R�ƥ˗.<*7<�Ԯ\�r�s�sܩ�s�Nnnnnnnnnnn[��*u>|�|�\�<x���n����m��cc^�ףy��k[V��u���mmml��J�d�Y+%d�Y-l��T���������Z4��#HY�gI��#I�9pܹ��p��}GGGGGGGGGGG뮺ꮯ�����������������뮺����������ꪪ����f�Y��o^���)}�������f�������p���Q�q���r�R�r�r�˕J�˗5.<�q�ǍG�F�R�T�ܪ\�7.\�ܹT�T�s�S�r�r���|����ܹ�\�˝9�����Nۻ���*nx������Qኺ���~��^zo[�t��ܹ�2)/&�E0��6@�T�C���s$,0B�2^E���F�G%�t����%�A&%Sfc�fu6�;6��Ӄn6�8ۂ��+>��ańKZ�%�������k(��[T<��*j �U1d���F�$tTD���y��=GQ�X��>�|J�� �����ہ��8��p&M�!%� R^G��A��{vN��b��A���S��� ٗ%�dn<MD ��.&b�f�fb'sr\���n ��ϑ���K� *�E��lu@�8�Ь6$HBz������|Co^�ϝ�����w_��Y���_�����������������w}ݝw}���Wvu��v I $�B�����D� �I�VD(��.��!�
�����S�9�:�w����y���~�qᷦ��F܃��n �ۜژ�lΦ��sbU6&*��1!�>�>��B��8t���8|�O��<����L�CAD�U AT�UEdH�U�(��Z*�YP�U*���QPQ!Rd��$��%��UDT��g�{u.<x��Tyr�˗.u;�>u.U.u.\�q�������ܩۜ�������W.\�r�q�Ը��ˏ7
��G�G�.\�s�s���Χ�r��Sܩ����s���r���ơ�on��٦vvi��}|�o7F�Tg3F)]]kZ����R�Ե-���Z�,����mk%�ֲTKM�
8��]P�.��~�8�e}��-*GF�������몺��몺������������뮺뮺����������ﺪ��������9�ՙ�9��k7���������űl�[V���շ��p�Ç��<x��Ǐ��<8\8p�Ç*�J�q�q�Ǐ+�+�+�+�.\�r���˗;�>\����r�繹nnnnnn��n�:8p�Ç8p�ט�3{�_�ͽowuw-��ɉqb<X���]�h�Tɦm�Ll]�7*�r�7*�2�3.L˓�1:���n|�ϙ��4�3Nnsp�ֱ��c+k[X�*X��˭��Գ j���ʚ����zL%I2��� !���ƪ���l�-t�g��ݧH�� r��LvgLnu!�rD�
#Q=o���!spB��E>b)�K��W �7�<DP�0�"�@��ug7Vwqg7s��9�uH�'���6*�P D@� D�� ZD����+�g�ֽ��߯�����뾿���������������������������������%�)KLT��4���Z#��#�莡h���>��B~y�����tW�-�{����x���^�2�:e�p˔����3�b|�J�^\�ˑir5]��ѣ���h��Gg?<��y��͡����h.��� #��4�(貎�(�-#��: ��-!���a�0�$]D�:�.~{{|8T8Tn<j<j<n\�ܹ\�s�r�˗<x\j*o9nӛ�����Υs�Υˍˏ<�5�<x�ۦ�8q��n<x��˗.\�|�U>|�\�|�Թr�ˍK�F�p᷷��Ml�;;4��n�Ѽ�k5Fs9�1��������kkkkd������T��KZ�d�Z�K%��Q-TҤttm ��@��H��2���F�����ѴttiGG�����������������������뮺�������������������L�K�,Ř�f(͙���͚���vo7K����ų�l��mSv�ݷ����M�w
�8p�Ç � ��M������n��ۦ�\.<j<j<x��Ǐ<�r��n<n5+�K��.\�s�ϟ>|�9�n[�幹����R=���›���)��_Gh~v��>@��4�]vq�������hlJ�f�h�A�$L��$ l�fM�vF�"��$����Ix��/!�� .�ć�ă�"�5f���ja��p����! �HD���D�D�,"X �!X�� U�a��P��pP<�8Pa:LY �"iB+"AD�=#�9
:���J����>*~n�v.���ۄN30�&&=&$ �7!���3D�EQ3'�y����t˱pۍL�٘s6fC&$!#q�������L�@�03f����e�58ۅ\m���3����d5�0Z�%| �p���0S ��L]����Z߹�ϲ�����>��C���������뮺�3S��������ﻻN��������~���~��?SH.LY 3�.�Z��CIH$MND�!R$�Š�UH=C�H�9��B
;B����~�����e��ñtq�8a���Ɯ#�3 ��Ȥđ� �
2^C�^@[���q3�93�9Ӑ9S�8Br'=#��zG��� �2��8����Y��ȈQYC��"$VDQY+"�*�!Ed!P��^ �(&�`�g�"�!�$�AT�@a�oj�����P���Q�Ǐ<x��ƣ��ǍLJu���r��ϟ>|�\�r�ʥR���q�����P��ooon�m�8p�p�����q�q�q�r�r�\�q�q���Dž›᷷�Ml��Sƾ��j�Ѭ��c1�����mj[[V�ֵ��Z�J���kY,�K%��d�Y,�K%��k��h�:ZZ::�!Y�0s���)�9S���*KKKKGF�Ҵ���������몿�����������뮺������������������������[-���_1e���b��sTg5��Q�z7k��Z��űlS;;;[;[[[Vշ��m���{[[{vݷ��m�Vյmmm[[\j5�<8p�£��q�P�����ƣǏ\yr�˗+�K�+�>|�-�rܷ9�nnnnp������oooo#���庲���{x˶��m�S���#Q�f٦��5L�gd��v6��nU&cɘ�fU#�x�7*��r5>f������L���sp˛�V�E�k%�X��\��ekX��Ɩ�4���uM)�iKL�t����#H�C@���Ϊ/U��#�|����ty���pju1\�
e�O#�%����I
������i� ��-���3�ːS.!Lx�1�B�ÀSL8 Ar�$�����i� *�,� ćXA��0A�BT����VI��~���䟧�뾿�������������������������������������i������&KHN���+HR����C@m �������㮈*芯"�"�����|����ۥ]�ܧܷ�S#�L��E'̤��"��;8���k8���N�2~q���'g�?<��y��HhGD�&��6����,#h����:,#h���(�4��� !�����E���F�*�yc�ٶ�i���n�۶�8p�ǍǍF�����Å7M��nns�ϝʧ��R�r�ʣʣǏ<xq�q�p��n��۶���[|.n.5�<x��q���ÅC� ��������cc_^��Ѽ�f��h�b����j-�������kkZ�����+[%��d�Y,�K%��d�����,�K%��iRZZV��#�iZ�����Q0J����+�����IZZV��#H�5�]u�Uuu�]_U��W�_Uu�]�W]u�U���}u]�wU���UW}�UW��}�G��r:+���h�����|��Y�͙�Y�՚���o7k��l[4ͱL������V�͵����l�V��ͳ��l�S;;<8p�Ç8p�Ç
� �F�P����x����r�Q�ʥ˗.|���ϟ=˟=�w;�����kkkon���ڏ���9�~߱#����tL����LJ�j���f��d�HX0>����I/F�Cq����������W��^CR^\���LN�ą3f{�8(�Nn6�t����,#$��AI!)!ְ�a:�%�a
…�
ڡ�E* ��2��1d��"(ET)���}��o�b����� OA��m��6f|ؐ0�ܐ����MD���# f(@���>��x�'mغ\���SSfw&$�n7#Qq5&`�f @ ����r]�m��lˑ���h;��p@/�t\'�0)�` ŀȒG��o�So?O������y󺮪���������������������;��;��������:�����������OL]0ZL];LY0\H]7�H�&��D$�Ȫ�EADAC��􏳐8&}?GPP���
/�����M����m�8����0�lϓ2 &��1 �lJ���]p�������Ȝ'9��<PzG���*AD-P���� "�6�ȍ�ID�#ȒE�I"@�Ⱦ�ȑ"�:
�D��h&y ��y�'=�A4�?=3ض-����kkn���ڶ�{v��B�Ç
� o�7M�w;��ϟ>U*�K�+�ƥq�LJ � �B�Ç8l�[[V������7m����|6���8p�p�Pۦ�������gf���ףy����s�������V��yGE2�Ej��������ֶK%d�Y,�K'd�Y<�K'D���y,�K%�z6������jY'��`��\p<L�+�� ��Rt������iZV��i__�WWW�uWW�U�_�___�}��_��u����_�w�U]��UUU_�S)��e2�L�#���V����[-���,Ř�f,�g5f�Y�7�����}}}}{_^����٦66m�cggf��66-������
�C�
n��o� ��P�¡�p�ÍÇ��<x���n\�s�ϗ>w*�>|���ϟ3�9�gfڦ����kȿ"��7��޷J�n�̴��@�8oh�6�fi��R��Rf\Y�"tW�q�j5Q�j\Lʤf\�O��r1;�y�0�8]�„�b"VH�,�BY"��b���e��-�Ymb�ҥ�� )�Y="�R%P�J��P��"��~���ǟ���9ѧ)�K�LQ>Bi �U�5�<�Thp a�>�� {xB�������'9�3�"��)��*��*��<�p
��*����'nn�L^6�R���'P~*�8`M��\D����_���I��O��|������}����_�u�_�������W�}���}��W����WW�W�_a�za�za�v�l����%�%iIiҴC�m2:t3�'�⣬�Y��U��������?�>��>��>������s�1���!�r�!�r �ȽU���^�.vqc��g�;<��yt)�hC@�&�L��eH��GD�:&��]E�tXGE�4CA�)O�d��O�2r�q�G篱Lllll�;V�ͳMm[vݷ��M�{{{{v�5���rz|�T�U*�˕ƥ��DžG�C�8p�����M�6��흚gggggf�٦�����kkokokoon�۶���kkgggf��إ���n�f�9�1���z/E��[#���L�Ȳ*!�r]]]mmmmml�K%d��K%��d���y,��tO'D�VJ�d�QKKKKNԵ�]н�8�X��.��$��Z����--+KKKJҴ������������������������B���꾿���������������!�2�!��!Ȭ�)dTS)��yV��r�l�Z���c3f39���f�Y�7��ټ��y�_7k���������������6����on�P��������on�����p�[|8p�ÍG�<x��Q�T�r�˗*�.|�W>|���p=��g�RtuC���Y����=7����-M�D��� [,�/�D�l� X,��M�&��F�j(��Eq5i���D�Q����܁�K�zK��1" 10a�3)6�sm��6�+,$I$�$��AI V$��B%�$"X ,!X��ʈ�T �&�œ
�$�(*����㐣��n�6��X�7��F]jd3f`%s^Cr7����&`� &l��x �/"u����zn��]��pÍMٳ2)� #伇�n/��F�jH@�P3
��
bl�v�4��l�zK��3bRㅀF��jTH�}W�N����!��'�|��~O���gu�guG����]g����u����������������v���{�v}ݿw}ݿw`R�.�^��o�.�^��`:SL/L](�.�\��@S�M �H��ȈPU�(x��������Y�w+~�}���}ǚvN��]4����+6�͙�2lL�lI�/2 / `���8�<����r*r'g"y#�<�H�s�B�Q�
� H����uH�(��FD�!RD�q"h�H�D&"I�H��ȈU��� ���zg����z',r9���_^��ض6)��cf����٦v�i�kkkkkggggnR�ܪU*�.\x��£p�P�Ç �
�7���M�t��ݱL���������3�L�;T�ͳ�l�S;[;;;�1ll[�n����k5Fs��Z�Ql�V���S)�d6C�Yd�Ac���Զ��-��kY-j%���d�y*%D��O%d�VN���y<�O'K����j>����S���5z�V����ZSON�����iKJҴk��뮺���ꮯ���������������������������ꪪ������������ �2 �!Ȭ�"Ȳ�S)��y����l�_/��e�Ř��l�g3fh��f�Y��n�ټ՛�Ѽ�o7������
ooon��ڦ���kookn�����������
��ÅÍG�Ǐ<nU+��K�K�J�r�˕J�˗+�Çt<u��x��>����.��9̊|��Q"�&����"g`�Mɉq^<Mlj��5&�q3&#��j%�ļ��"��^v�i�.�2�n���$�D$�D�� ,� +$B��"%�B��D����
��
zD(菡�<~x��UcWة��C�:'v��:b9�%Q ��5�@3��
0��M�鰞�6������.��]�N[�L��3�K�U.!\n!Tx�Q�q�B�C�Vݶ"�M���17�BM�������%�2xVrT3Ջ?O��w�I��O���ߪꫪ��������뾻���������뮿��뮺����������� �����zv�ON�
��)��)�I��iiiZ!�/���!��$>�UЖ��/x����◷�/n�����+spW>cS�5>CR�5>cs�J�^�-]���g:�*vqS�����B�*��Y @���,��dtK�iJ�0����L��iIh�F�6��m
@�z�h.~z�Y��g0vsQƳVo7�k����/�k���ͳ�lS;;;�3���9r�˗�<x��P��P�p��\6����������\)�['������lllll�6����űLR�������f�Q��b����j+��S)E,�!�h��h� ����hv�hv��յmj[[[[[%��Y,�J�d�Y*'��y<�-D�y<[Ųt-d�kN���5lY���S����� ��9jR���;J��Ѥ��KJѯ������������������뮿�������������ꪻ�������w��w�q���{��{��� �,��r,��YL�G��l���l�[-���j/����Ř�f,�g3��9��g3f��k5��f�u��7M�{[[[[[T���������7m�[[[V�7����p��8q�\.<xܸ��\j<n\�s�r�R�r��  vq���� �����.��u���.&�@�{EZ �"e� �9%����j&�Q5���D�3�f"h��D�C����ɉrbbI�;�S�ۖ��$�yA�A@�RK$� 䂒Y ��P$"Z����T'�2�&0�MLY:IdBJ �q���:�����|���.;Pq���ؒ^@����0 @���Y��-/�.�͖l>���� 8��I����p!���l��ĸ��&D�n&�8��32@�. 6�7P/t�y(� 1!�30"]q�m�w�[~���|��|*�_��|*}���_���������������������������������������뾻��/�OLa0/TN�L ��L $��}1t����O$M A"I�$�!�U�QV=#�9�j������z�}�^}�� N��ظ �A˛Sy�7�̂,ٛ�b`�&$��������GGUQ��y�Ȝ����� ������YD�"D�#h�H;H�V�4��J�&��"h��$F�$��Ȏ"�6�����zG����r'���F�9���Q�7�����}}}�_b���5��b��5��K�.W�<x��p�›�ۦ������ojڶ��������T�[H���K���뜾�������o_7F��o7����Y��g1��_/���\�G��L�d9Q��?C��;�P�c����殮���+���kd�Y,�O%��VJ��;'����y<['��l['B�-�bڨ'�jY,[���j&rڴ�'�i�v�������Ii_���������W�U�W�__W��]u�]u��U��wU�WU�U�������9Cx�7���7�P� ��9�c����;C���X����A�d9EdVE��Y���;+��娶[-e��k/E��b�Y��b�f34g1fs9�ooookn���������kkj��v��i��kkkkkn��������p�P���LJ�<x��r�R�r�˗+�
ϣ��������xu���jc��=#��khy�`�m�ܹ�#Q�j<MB�b< B�Z7Ѩ��Ҩ��"��V\�N�Y���nv�a�*���Hx�Hx�Hx�Huk$:J�[TqZTmZPm=1���h��(�I��z�ubG����t9r� �N�����O�@&B� m턦����6�����|@����� ����p)��*� �|��\��q #�+��,�m �Y��8����N�~w0�o:�s�S�X}��|�|�����'{䟧�?O�]w��W�u�U����]]����W�]u}��w�uu��W_���W�_u}�Zza=0���GOL����a!KL$&�a!+L%�i��� ���OE�B����g�t��o�ݾ������G��#��ۛ�W7ӹ��sO��\�3��es/�[��tV��Σ��Dvq����HB�"B�(��DtH��#J�,��Y-"�iKH�Z&�2���tM#�m @������ϣ�?9s��:�3�����j�Y��n�f��o7�f�y�_7�f�޽��rU<x��LJ8T)�ooooon�۶��n��齽�ooooo�.\�"�����y��o7����y�7��f�Tk5fsTb��3|��e��W#�QJ"�h� � ~���v�lw��n��j���Ʊ�kҺ����+j����ֶJ�d�VK%d�y<�-�Q<Z��['�bض-�bض-B��
j��J���zԮ�)�I�RzZZZZZZ4��%��]u�WW����UW��__W�f)u_�W��_U���U_��}��5�P��]
�^+�x��^+���V5���7��������=�c�?���A�d9EDYK"�e,�#��<���r�l�[-E��_/f3�ř�pۦ������vv�����������ggjڦv��kkkoj�������۸T8\8p�Ǐ�G�Ǘ�+�.\� S����c��şu�=7��L�ۀ3fd2^A*&�*����f�mh"hP���O�yIy�/����5���3@�P3
8�� 01D @
���" q3T �i1t�ȸV,H�Z, ���XаXL����I�d��H*$H)X!,!X�ꇔ`�ʀ�1��A"iIH%=3��"rgC]o��ku��q� ���`�b�S ��K�j&� �34 @S�����s}���u��u��y��x]�:��xP�]4��p��8͙�MyRD���h �"R�eq��d�� �h��)�`��L�*����:�
�9L]��
h���(p0��LÀ��Lǀ��Lů��(���������� %��T%S鋦�!d�ԉ�tI"���xx��G�q#�8Z:�����~�f>��}NJ�7�v.�W`�g�m6fE&&'%�;#q�5\L��L@M��˶�Y�
Z;C�&��M�LIxh�&�0ј��
$FI� �; � � z h ��L+$
K* &91d���� H���P�
2���s�<\���=�9�� r�!B�}!GRu�6��5mmm�|-��8p�ÍC�LJ|*{{u;s��O�*�K�K�7*�<x��p�Ç�8S|�ll[;;[O��m���p�\y\�\�r�r�Χ��S���ΧS�r�q��x���oookf�ئ)�{_7F�Y�3����ӵ)M:OOSSSR��4�MKSSSON��Ԥ�5-M===+KGF�:���{'@y*!�D�����;�4�o:��օ�ii�jjj�W���Vf�x ��W���9��k7����z_cb��ڶ���oo�Ç �77<�\�ܪ\�\�T��y\x��p�P�p��ۦ��i�f����r}�w~�9��Y�w����<��q�sە:�O�.7.W.\�r�˟>u+�Υ˟;�ʥϝN�r�ʧr吝�E]��o������.���-��^U�^ ��Y����+�RfU6eň�^U��xTMG��p5 ��p1!��8���ZM��Q4��E�b��,F-bŅ�e���ə'�imcKZ�յR�aM6��KE�i�\��gtk�7�w���N�sp�u1�T�dt��Q (����:�/���|e�ᇭᇷ����v�v�spa�c�/*��j�9��@���""��*@�B�. 9@� C@��\�V��� �Q���:�g���������3�����2 ��3��*���-AZ��i��i���@���#�Q D��<�����1WFk�Wf��O��~�4���wM9�i��3���3��"��Z
 R�{d-��9�5W�o>��L?(�Ź���, ���:$* ����`�fI��Z�6��m-#ih����: !h0�z�h0~{��vr�g0wLWK�K�o��cb٦v����kjۦ���p�m�t�7m���{t��5��)ʟ>U;�.\�r�����ơÇ8p᷷���M��ܩ}�f��v����oo�C��G�7�K�.\�r�˗.5.<x��P�m��S[;;���/F�Y�3������+�I����t����Iڔ������jjiښv���ji�t����GyΞ�H9P$� i���j�iTKM�~�BҴ�=MMMMZ���B�2
뮺뮰2
��>���_1��fs6k7f�z���1��l��[[[T���.<*<x\j<n<j5<8p�Æ�7��M[[[[;;;{w7+r���δ-G�����T"�4�g(rQ����>\�r���q�Q�˕˕˕K�+�.\�s���˗.\�5.8bzG�r�U��6���� ����̹/�&�P.؍���FEl���1"/#�nC�5�����x��"t @O�: %l�8���P1�&!��)�&�c �p�^���p�X-tX d��o�
ID�$"$4��W�*6�ʖ��c�J�$��
!G�x��:���n�t����^ ݃�8Ӂ.lI�E���0�,�-�l������>��?7��{zow��������:;)Ʀ͙T��,�x"�9�Ap��M'@l�M��lX1
����K��5�X 0 �� rаN ��r���EC������`&aՀ��W�����W��w�����&a�w�ED
��}PhP<�� � j &�b��䉤�$� �YQP����x�N�?Gb߻�K�?��—���]9)ƜM��bBI��5�&bt @4�fρfƒe[9�� N@�(�"��v�o:��t���o���
E� ����\��VM"B%���J &4��zD�H�:*�8��Z
8����x��g"p����9G�U�������)������kkn�ڶ���n���齪j����g��T�\�����Q�Ǐ�C�
oooooookkkkkkkj����ʗ��66i�����kj۶�8�j5<x��q�ǕǏ5*�������ƾn����f��2�|�ʜ-b��/�X�1B�9ZN��4�;R�Դ�:SON����ӥ5)===--����#���(�"Łl%����l�ŷx�Ѵ�==ZSSWS3��^��L�+��L�/3���W-�����3��f�y�ݯ��ll[4�յmm[[v��ݷ��p۶�\8p�p������ڦ�����ggf����ץ��ko���rݻ�|�ѵl���l��)�:��r�Υq���q�Ǐ<y\�<�q�R�Ǘ+�˗*�Ǘ5<xㇾx��U�yo�?�Q�Ҏۄs�V\JǁXSe��5L���Ĺ1.KƢj5q�j< ǁ�T ÁxSe���t�XSdp��C�*P�eKL�zd)�0</�� ع� �eI�2��E�Y# k[TҺ���4���tM!hC8���������!z� v�;>Cr���tE�&�͉�Ö頷� ��/�|/{x-x�B�Ope��z�z�wta�ta�pe���*c�/+��)�M�&Q*��!@h���-���{�L)�ɂ,DL�XD�hl!��.� �������=������f-_�`&dW�����������a�ڢE�Q*��umAB���Lm;Hm+DyD} D��<��8���:~�w���^�g���owt�����Z|�ϑj%#ĊaPn�ohy�hq�����g]��}������,���8>�$,��&�9� ,�:$mc�4����3)�KD�:&�� !�i Hg�?<�����4vq��5]�5�k�Y��n������������5mmS[V��3�����u.\j5��DžÇ���ݷ��M�[[[4����3�p�p���y�_b��٦v�����oo��Ç8\8��q�pۨp�m��[[4���ƾn�Q�5Fh�c1��eh�W#�bص�X�/�X� �� c3�Ӵ�M:RԵ-MM;SOON�ԥ4�==- ��>�LNH# ���=��a��y�:+��є��J�ե5u5)]N������1Z��2���L�.������dtG��r�l���f3���Y�7�k����3����m[[[[T�շM��{V���5����L��4�1��k��Ѽ՚�l����w<nv��wu������HUU�����Q���T.8q�P�p�p���Ǐ<x��Ǐ�8�n7
��
0z'.r�x ����zOI�n��EM��Ix�5T 6 m�hi�Q�3�����ME(���&b"f"x�p/, �.�v�f�l�a�e�+e���i���1[Pe@r�ʁRc ��pl.!p�\ ��p�B�h�'�b`�&��AI(��* J�
&�B�H��/ ���D��>��%��_q�����`�fc�^b���&`< �F�f–�� Y"d _����~O��OM�݋�݃��۠ozv.�v.�r���p��L��!���� Y6
% +�`�gP�U����(D,]�
�����!��t�
�x�
��~q��u����_��fX �u�����W}�_���,"X!,!T��A�����y@v�ʆ�L/LY /R$�T�Ȳ���H�C�������W��O���M�݋���nq��2�� MDW0R %l��l�b6ʶ�Dm�h�H�s�8��)j>����n�)�Ad��a�AAa H$��B%���E�P�0�2&,�V�4_D�"$VD"���A�@\����zǠvr'G�2�uUHf39��k7����}}{cccf��vi�ggcb�٥�.ϗ.\����x��Ç
ooookj��i�f��ئ)�c^�إ��p�Å��Q�7��׵��gf�ٶ������n��۶麅7�›ڦ���vv)�cb����Y���Qz/���\�)���CD/bؾ-b��/�P�1�c�1��3��Ӥ�M=;SSSSR�ԥ4���#��*�OiB�|��}�4|6lT���2�Π�������J���`&a�x ��`&fwU��������YJ)��<���e��|�c3fs9��o7����ئ66)��cgggggf�ڦvvvv-�����{_^��y��k5��Tg1��ll�[[w<�7m뿺��Ϊ���v��q���p�P��ۦ�6�8p�ơÇ7j8p��᷷b�4G�p�� ����={��n��n9̆W"��6>�щ�kˑ�TMK���MF�f��Z B�#n�(��t�{d09�����y���p,��uP–��� ��c��.</b���"'d��Dd�b5�R���SL�ZE��J�G��q��"�������שѷi�T�b�T�Ѩ�"t��l7h��6�d1f�  ~��� ߧ����m�����æM)�9N�;N�;n ��1;��� K��6ɰq���<lJ ���5�h�1@ a %�p.B1��D ��(�=04������������V������L�+3:��3���� IZ��ְh����*��E-A*v��;HP��*E�F��B�;8t����� ����^�!wp��� ��'�~\��Q��m���ƛ���)kdN���y�Du�FuѪ~���t�?O����g)5OY�G�imc*ҥ�� '�Y-2�iGD�:%��.��t,���>�0u�\��T^��W����|�c3fl�k5��Ѽ�o^�إ����}}�}}~/ˍʣƣ��q�ÅB�������i�f��)��cc^�ص�������{|8p��8�k5����}�ccbضvi��kkkjڦ�魭�kggf��5�-}z7��f�c/��er�R�e(� �1�{ű|_����(_��c�1�c�=KR��ӵ4�-:SN����Ӥtj���HpX"��D�f�M�,M�P��L��s�)kY*%����j������x ��_X ���`&b5_������Y�d9 �YL�G���[-���|�c3��Y�ݛ���޾���ƽ1�k���/�k��R���7��y�ݚ�f�9�1���|����6�͵p����n�����OoT�|��۸m����S{{{t����7�M���T8m�t�7�›��ooooon��Pu�c�9�?�n�τ����lڟ%�bj ����3�:F�)���P@�N���]��v�f�@��66Y�l�aA�͞�f�[e�=�̈́��@���F�y[P<��A�Pe0j
�(`/ B�p���h�b,�aY АRI��+ʇ��L6H�Z+  ��r5Y��K}��zoW`�50�%䔌��/�,�!�#i&���$,����_wvky��^4��[�t .A�Ʀ �fj�y���N6�7vn50o6eQ5�ZA��1(��p�q����Pd� `@�;�F� ���`�� ���`! �I�D��@A��E3��Vv��������`&h�w�����w���� �����@b,��%�UQ�*P�(�b��D��yH�2+"�
G�{�!A&���oݾ��5黻Bk��ͩ��1#�n �0: `Y��,�2�F� h�(� ��PP�PP������&9�r'���=3͢�G&.���TT>��P��(PF�ʔ��b4œ���#H�6�$D�����T>�L�)蝜������#�����vW-e��_/��6c1fs9�5��Y�7����y��ñ�Ǐ<xp�›��齽�kj٦v)���}�c^�����vj�Q�ՙ٦�����
4��3��Vk5f��n�ئ66666m��b��ٶ6-�c^ץ�vo7���s4`��^��\�G�Ȩ�!�1�~DZ�s�l[�k��|^��_��b�1�f�1�b�h� �v��������i��i�R4}<�)��By����� ����i�8 �n/���ؽ�d앒���mkWR����3���1�������{���!��Ȭ�S)dvW+���[/��f,�j�Q��k5�����o7F�y��j����o7f�Tj��s�1F(��岴W#��l�o7��66����˝����S�q�M�{Tݵ�������mm�V��ݷm���{V��5M���[V�7������a�/�#B����t(�S{�����wF��7;��x6��Mٚ�32�fU��Z< C�XT�M�7�B�6@���{c͜��{c�퍵�4�ة�lS�(�*F��e-B�Z��,HP1c���a�k&:O&<K$>������d i#�>�x��p�V9Պߧ�.Ӣ�pK3�#��aP `{a�t�Pj� ��)��랸6��v��\��^��`���n[���`�W m�3:pe���� ϐĪ��"�� �*`2��/�0� 0.�m�d��q�� �-p6h�e�k<��Y�!RԘ�
8A]�.����������3B���0����j'd�A<�K%d�rϬֵ�%_T4Q�u-@�7�����m2�� <Ru�)��_���j�Ɵ�wpi�cS�+�!Tx��QB���&ohJ�4$f�����HZ�4ϴ�|��8��<��y��Att�KL҇*]ZT��(F��E4ȓ�"OH�ZE�(��P�
��T�����N����G]בUe>ȯ��L����k-���|����36g3���sY�5m�
�C�� �n��ۦ��kkgf�ٶ)�z___7�����Y�3���s����յmmm�m��/��f(�f�ٻ7f�y�޽/���LZ�����7�����k3��Qz/��Y\��J"�r
��{�����t*űl^��^��{������1�c�1����H)���Jjiښ���)I�g՜�c�"r���)���6*t�2:���H,8Dp|����-jZ�֥u����>�3G��L�����X��x�7�����X�?C��� �Y��dyW-er�|��ٌ͘�ь�g3��Vj��h�f��sb�f3z/��el�W#�:#�e2�b�ٌ՚�Y�޾ų��m��nxT.6���i�j�٦i���f���ٶv��f������٦i����j�ڶvvv-�f�@Y�* ����Š:����z/E�73Sj#Qje�m��l̊L�'Iy ��@Hbj"���0@��.�>l�b6�6
��h:h�`5�*�r�@��a�dm����Z*�-�U�e[T>�>T>�U*(�P�"��`0 �p�b�h�'� �ܐTHV�%Cꃕ����� 5H�<�+ܷ�S�xðp&���f��8"f!� �#h4h��x� ��5q�a��&�
*���~ܷ_i�i�:@�]2�n�q��I�27���&�ۃN50d����&Ƌ�NBE;Bp�X@Ef��j(|�!B�A��x
�!@�� �O�#�����H9Uad��B��q�_���1��Lǫ�������������������7�B���XL$²A�TH� �`���PRT@�$(P�A���b��I���j������y�RU�]�Ϻ��8��E�q��͙�2^Cr503+e�6ʶ�F���d6d��cd��킌�Ed(*�?AT(�, ����<PU
�"I��������TA����1d�ԉ� �H*H�-"��@ ���x��r� p��RTu U�wo[�A��Y�YL���<�V�e��_/���_/E��a�n��p�S{{{v���5���LSƾ���y���Y��g3��{1E��[-�������L�[{��e��b�f36g3fsVk5��٫5F�Y���Y��g1E�[-��<�)��h� �����n��k�V*�M
1= bض-�bؾ/���1�X�1���1�c1�c1�ҧ����������I�t�O�me�4��34����h�������G�^��g�RԵ+J��W����f9W]u�]u�U����f!U��lO�1E
�U��WcX�7���������A��9 �dYL����[+�����l����|�^����_-e��l�[+Er<�#���EDTE��9 e��^��36g3��Y�__f�ڶ������v)�f���ئ)���cccccccfٶ6v-�ggb��vvi�ccf���׶)|7=$)� <7>�j�:߱#��v��%s���\(��,��i��O�ir+*�8B�E
l��ly�ly��橡�����5M
Z�� SBv��+{A�Tؑ�lykT}]RmR%uԵ�UA �0%�q(���Ŭ������j
���I�B�iI�p���7�g��#�:8t�iԃI�
l'6sA-�������:�. f�6��B��m�[was��\��\�����Ns '�0��ǀW�3>c��ǀ�6�M��hN�MH1�x"�p[�!!)�`�.>��4' ���E�h& �@�0�C�T!��?����x ������_W�����������d�X������rvL#x�G$��!kX%���9W�
��QJ� �Cd-��88;�^#�?o��;�$spI>B9T�q�C�p�67M�SA�;!�4�b�0�8 �C�m2:�-Z�����@��
:D)i�'J(r��j)J)�<���zC�ZC�h���>��@���琟G��@wC�T?^=�=�=wf���g�d��VE��e,�+���\�y�n���ڦ��������j�٦65��}}|�o7F�Tk3��c1���|�[-E��Gdy�ݛ��666m�j��ʞGer�[-���_/f3�͘�f3�1��Y|��eh��<�EDY��=c�;���5�b�b�OB|MBZ�\[űl^��{�|_�,_�1|c�1���c��b��5555555-ZSV��մKt"�h� 09@񐆰`�Tp��(Z��<�-�j��&b������f1u����f�ZǓ�%�5��>'�)�X�Ƭk��s������(� �����"��J)����h�V��yGDyG����YE�QC�d�?C���#��r�l�^��3g5���������ƽ/�f�to7��vo7�kٽ|ݯ����K����������������k���z7�" ��� � q� p#�?����~o��LyǛzN�.���m��lϛ �n'��C8���/��9�̈́���{DmKDm��F�����F�����FAq���@��F�h�����W���*���C%C�ҁ��@�0��Z0�p�]�`�XɅd�$"XU+�2�DL�G ��z'�GP#w��x.��\f`��'�
��EђT`yp,W 6��6AQ�1-�:�����y�3>����C�v܃�iq��f@j���32��b햀9���5t�Vl��pI! �vBp����`!@�`X ����@#� �%�Z�#��'�`�`)TQN�o�����`&a�����fM_}�f'w�����xT��&.�+�*LBL
�aY9�
�jH)YՄ*�v��WLMԉ�UA��<� s�u�������=n��Vq�9� E��j&bhl�ʶ&��A�&@�� /�F�#[3�^@��$_D� ��$^EdA��q��VEԉ$�J�L%�0�(2�HTeMA��A�)1t�Jb�>��A)"h�$� �����!5�<&����<��� ]u݄���~�f��o^���c-E��{3k�;T��յl�[[4��ͳ�l�;������Y��g3��f2�|�[+���\�)��dYk5F�y�ݛ���ض6s*e2�G��y��k-E��j-��Yl����G��e(��r ��w����^)�F(�5 hKBLO"'H�� bص�bض-��ؾ/����/c�1�c�3c� �8�M5555m[R֥l���!t4�Pp�8 p+�Y
d�� @����!Y��h_'D��mmkZ���Lë3��3$���R�0��)����<�v��û�+�[b�Qb�Sb��V5cV9���;�c�=c�A�d9 �9d4C�dYCd9AD9 Q����=C��;���A3Vn�dyEe2:)dy\�[/��f,�g5��Y�՚�f�Y�����6j�f��n�f���y��o7����|�o7�����n�٪5f�Tk3����ϳ������s�����|��x���'m�'7�̊|�eĂ<��z��t��G64�Щ�hR�Н��3T�v�2#f�Y���f�d5j� ��KZµ�F��G�G��G��G�9@�E���.�>,��a�+X:[TF���+D9B�8�޼6�� ާCwtΘK����4�M3'� LS����F\d&E���� U�6���Z���{��^��^��a;�a>@�\A�x�x\�g�!m�q7mW�Q������|`
���f�)�-�0 Ql�ct rІ �x�|I0��
h�Cg> z�������B���2���N�������T�0�=0��i�2k, ��L���D&� c%k*֨ER��-0kN� (��KA��q�xO���^/|1|1{t(��1� �.!�*=����6� L�!)�`(�
d��R�#��h��i��H�"Dm2V��+HR���=1Rz��5JZ��5*Zb�-1Rzb�􆒴�iZ#H��#�4�����gQ�Gg U��t+�W�*��M���Y��j�f�y��n��׶6-����b��6666666-}{^����y�5F�9����|�[-���\�#���EDYC��Y@��͘�Y�͚�Vn������D�C�QE�Ȳ�S)��dvS)dYL�"�h� �
��w�1�k�V)�4'�ؚ��I���d)�Ȳ,� �ض-b�-b�/b�/���ŋ�����1�c1�c3���3���Jj�ں�+'b� t/�'��?� .�� 8Qr�G K��l)�G��j'���ֵu��Lë3��3,��R������h��l���,�@��0�ìG�1%�x�bzX���b�WcX�7�����c��;�X�=�c��?c��=�c�;c��9�c��5CX�+�L͙��3 ��Ae2�L�Ȭ����W-E��|�_/����c/��f3c1f3�͘�9��g3��Y��f��h՚�Y�3��9��g1����V��Q ����"pt}#���������A��۱tÍ�
�fD^ID܅p1-�]���͓h�a�DmT�A�%d��͒@w�B�d� "��22B�VHY Z"i�J4(h��+�k�aa
� a
�[* T�T���ڃ*�� ��`��X+& ���r* T*0��D@����=
�����m���LvF�"�x �#h �C�
.��Z�f 7�fh�헀����&q��W/�߰<���yǜvN�r8��M��%�9QZ��U���&X�P,�l���j# G��@��#A�@ ���@+#�<��`wMhx�TX�\, �&��>��ۯ���W���U�����_��_����]�����Pe@t��b� &L�b��錪�&I ~,V��������4B�U@� ,r!_V��>��;n8ۅ&̮F�9l�B���4�fF�2��^C�^D7!���I$H�6�$DIH�$�
�&��H-H�@>�L/L]GL(2�J ��)j �P
�� �Iԉ��I =��"UA�<`���蜡�uG�`U�wzV���_/e��|����l��Vk7��Y�{^��������^����7��to5��Y�3���/���Z+DtG���L�E��9A�d�=D�;eh�Z����ř�6g5��y��e���~�� � � � �2
����{�����WB�b�bjb\;ĔPs�&=",�"� ��DZ�'���ض-�bؾ/���� н���1c�1�c8�1c63��8ͪz�����X������y�&P"l�7�L�p����������3B�:%�����\̒�3J��F�3DZ���� �2�!�)�'�Xsa�#�&$���[b{أ��Ub�U��^+�t5�cX� cX�5�b�Wb�W��Ub�U�qN9"|��eh~�q��,� � �_"�#���"�dyG���r�Z�er�[+���l�Z����|�b����c1e轘���c1��_/��Qk-��eh� �C�@L��'?8RwB���5�6��㻣n��1�r�\*���-�
�5L�l�ȍ����d8f� ��CF)�Ƀ� X� X�Bs4�Ngd&���BBV����'Z��j���Ej��ږ��D� ��L&�Y0�N�խP����� �Q�0��Uv o����8 :@�� 0��y���N\[�a"-D2�� �P
��kt�Jl�º�+��ϰm}����k��s��s��^�0�|� ��� �p �@子�uZB�
Y|�^ZD g�-���h8"BN.i��H)
�Ht ��� ��% ��8I��:�Yψ�=O}���f!]�&gu���U����a-[P&+�T����b����HR$�#�EPWY�@�Y�Am[PT}0_N��Zƅ� ��5^ v ����:\��� ��<*��4 �S@� �5�r�����#Q�Q ���NOD'�i)ZA�v�f���i��Za�v�n��p����)jJjJj����$OHH�$%J���%G@J�x� �1��S���tׇ�/���O����W����j/���͙���՚�Tj�f�Y��k5��Y��b�Q��b����Z+Er<��dYC��AD?���������7����2<�+er�[-E�^�f,�g3��f@o��s�1�s�1�r���k��WB�SB�OBZ�w�(:�惌7��c�!�r ���~�q���j��tO'�Y<��bؽ�b�� ؾ/���/C�1��͌�3���3����*��+'��y���uP\ ,�`0�������� D�`�� �1B�O%�Kkj������&bU���^f#U�����7cx�9c��;�c���X����t�d\7���{l9���;a݇o�v%ĸ�bz��أb�Q�1=��>'���Л�s*�l����\����#���1�x��8s|� ��z�!�N!�r!Ȳ+)�Ȳ�K)��e2�G��r:+��\�W-��Y\��Q\��er�\�W+��G��(��Y"H����
��  s�}[�v ����M�hv.Ӎ��̪K�"j'@�$ 6{eZsE=�&A]�&Od��C�@� 0��\}�0W `���m���016�RaY' D�H*$��J����g�, ��y@����ʂ� &c*���`��� �H�' ��|8�F߰=='Rq������-��h�S�����������L���[,�-�le[A�6�0�*������>�}׀����b� �q��05M�\MD p3 �f��h�(�<�Bd��d��; €�`: ��j b�ST@
`� ���0!X
��VLu $�}:�J�|���='�1z��4���������2T>�����P��(2�錦�� �t��j�,�iHe!ez&,�*�(:��>�Ȁ�ET=#�|Q��v��_}��S���Ԁ�x� ��W���0EM�3%� 27�j@����0��<���TE$�L�N�H:b龘�`b$0�� (UT}A��yG�(�T}1�Y1��1t�a1d�"i1H誀- �� G�}���GUu������*ݳ�u��!��S)��y[+���l�^����^�f,�b�Y���_/���l�[+����R�dTE��9AC��=���9Cx� c���4��5�L��2!�,��dvV��[+��e轗�Y��c1�&*�8�b�Sb�UB�S�1F(�>&ĸ���$��8q��a��R!����{�1�n��k��S�hSD�VO'���ض-�ؾ-b��/�P�1�X�1�c3�X�3�����Qk%d����.�w)�7������|)PB�vY JH���8f���N�jҺԮ�fCX ���&c��Sb�U��]��W�X� �������=�c�� �� �� 0��k �7Ì8��l:��ë؏�<Gb:�JЏ�Gbw�#�<�#�:)�e,�"�h�!�h�g4��� 6x�8��cT9cϏ���<���������AdA�dCd9��6Cd9E�e2�L�S)��e2:)��e2+)�QdYd9C��A+D2E�CTm��<8>�N�׈����į��WwD�n g�K.A�x�P���sA�[!�4�f��d���\&�r�-�� +�!���R����KnqNS��y0ț��2Y0ؕ� �k+Z��֨�]Q2���KL;M�jD�t�L���-b>��v �s�����ΐ+Ƣ Qz �8L%I���dx��5�M�f�l9�ed恅��
��+������ n� _� �� �� ܷ�� '�ˈ7�p��9kd�k��.��!��2 �M��&<*z>&2 Փj0��x �Abi��S<.����������S����_���w���U�fw��� *���� �ڠЭ����KP#�i���L&%i��H#"� ����G"�iD#�
��x"κn�X��Yz��n`�q�~n8 N6�e7&Ϙo*�i*�i�e�Q�D1�@l�<Vu%<��D<& z!!- ��Ʉ��0����r��NR� �ځ=KT(+����i�I�a�zA�ZA�:!�6�h��j}���gUA����Q�|(]>�Ǭz�� ��h�Ȳ,�)��vG����嬶W+��Q\�W+DyR�YJ"Ȳ � �����q�����Պ�cX��o��ؘ|�x����{��
�,�!�+)e2�K#���\�V�e��ly1�[�.�� 1&#�Xs�4�oA���6����=�P�ct5��UB���O��- p���J���y<���lZűk��^��^�1��1�c�1�b�p�3A�?�,<�,���/�� ��$�� 9�^I�oH�A�!q�I� =C-D薶��+��_���`&b���^f!���L;���[b|O�1M�qN*�t+Ʊ����1���@Lxr�hxc�2�� �� �4�L4�\5�� �8xJ�Ӥ/�d6CD9 �9A�c�?C�?����;kѽs�ٓ�ٌ�\�Ʊ�xk�t7c�� ����t9�c�9C��=c��=�������A�dd4CD6CdA�d?������=�c��G�5Z���~�~o����oI�b�� �v�S)6f��!��G����f p14 � ��lH�V�s�F�p�F��A�$L�M�B�Q`��A0@�b�U�@�h� ��v�&ӀJ�������A���^*T(Pu
&���azb��!d�ą�d��`z��P4(P�.�bD���Z �q{��D�����mq�f��/!\�� (li������l�Wwww;z�������zo�vO.�]|v.r jdSf`������,L6$l��
��A�9p(�DV���|'�A� q��B
���8�>x��B !���0�� �t� S�8�@Q`&c�Q`&c�Q��x �u������&a� ��D+LYPPX>�7X@�
u��S:c � $��$B�U@ �����p(��'U�ݿo>������v.q���fA5��j"��� �N�f�{FZ!q��6fA6d�ć�Ā'n���}�d�f*��C��6l�-���ā�| F�A)D�� �p`��PA����P �G��*� �L t��"I����Q�<\��
�D�ND���4q�u_��ǍF�˝K���ϟ>|�|��ܹ��Χ˕N�˕K�+�.8m��{{{Vյ����m��[{t���۸p�q���R���R�ϝ���ݷm��7� �7<i���kkj���ئ){7���s4c/E���q�f�֥�]]mZ[[[[[%kkR��ֵ��Y+[[%KkkkjҺ���'H�Vs����4�"��C�e� �Lne]a�<���g�:::6�g�5L Z��r�lŘ�6f���Z��7lllll��;6����7�m������6��m��Sv�5�l��;4�˗.\�TyTx�n��w~u��o�b��  v��:</@*<eG�q�G<s�*�G�u8p�Ç �7�5<x�n8�8m�8[td��Utn��v�ݲ�����[���˛��Sf|��&%Q^<W�@�*��̷M�j�,�4Y����%Y�#g`����l��Q�`���-�lϙe�S
�ƕ�M+j�SUu5R�eMFS�N�m-&�A��-�eMC)�f�0��t3���^��Y������85:��GDQ��ؕ��?9L�|�� �@����|B����xB�������'73�"�1�BTD��9����#�8�!�a��lt���`p��+�`a�����0�����H��,����ī�̾���������L͈R���E �4�j�U�D�Z��Li7�J�E�G�� B�";8���U���_�*��ww 9S+:��Dq��@�)����9��L��F����Feɭ�����>��=1y9�l�n�'�P!�
�ʇ� � � 
OP��j&\��uiB�R���0��]�F�0��`�����.u�z��V[�p�Ï<�\�r�����T�\�|�w:�˗.\�q���q�p��ooon�۶������gggj��ڦ��gϝ���p�p�q�q�R�˗>|��\���s��7¡�n��P��m��[t�����1��F�Y��c/E��l�V�q��ccV�֥uik[Z�յ����V��J��kR��KZ�kkkRڶ��'I��gL��\���S ���`��Ӏ��,H���}��δmGFѤm,�ʮ��������L�����8��y��e��c/f36k5f�޽���l[���3�l��6��5��������L����˲�ƥʣƣƣP���޷����>�}[|e��U�laa�#�Ǔ=S��Ϻz�S�����|)�{|-�ݷpۨp�¡���n��›������!OQ�5���v�Ϗ<�Ͻ7����p�Ƨ͙��yT��r&�Q3T �M�lL�V�l�BF�2s%"g`��Ղ)�F�`5`��Y,�����fa���XB��Q�* TiP��*P}A�Pe2����#LY*H�B���Ea�ڃ*i��$H�4��G�q�T����Ǥ�.6�E�3>K�"b'��a ʼn�0�6%�y߷��[���� �������'B�wq��N�̂��Q�.��0�6d�`��a��(a�!P+�� �U��x"�\�YU��# �P'�'A(�=�^%
B�|�R���D0Ac�z`&c���X ��W���X �b�4�"h�d�".�����ʶ�}@bPeI�0�4�,���D%����D�z��������~ޓ���v�na�ٗ%���j `Y�7\ڛ�fb��:���y%�W���v���7A��p�MHSm®��(��Q 0�\,
���ZX,aH�����!x���Y1��P��E�HJ��T�$D����� �Q A#�Ǣ}��Z>����|8T*8�x��ƣQ�T�r�˗.\�r�˕Ǐ57� �����kkkkj��٦66666v666��ϗ-����n۶�<xԮ5.W:�O�>t������n��������kkjڦvv5��^����f��(�_-�8������llS����j�jҴ��������J�kd�mmj%���������mJR��N8�ς �a!�"A`0x 2@?� 6@�!�Dbn=o�h�::6����x �e}`&dX �b��4�H���V�Yl����c1fsO����޾���3������l����3l��1��lk����#Q���LJ6������wy����}R�>.�͇�?���'J�����>s�:� ����kn�����j���ڶ��������������ooj�����g��W����i��O��z�6���w �����HԹ�P�a����e���5�U�d�;L���B���l/l1�U�Mys7>e����Ymb���V�4���mSjj.��ʖ�)鲞��RD�֩��zdiR%�!>�!��.�u�xq�tT�8(�!,N��$\��ܙ�C������_b ��o���/o^���!v�9n��!�1���B��}�`<l�$ʢAcJ�B��P����� @T����70F� #`! Y�txY1�ֱ4�!
n�������}`&eU�WX � �V��ZC�Z#蠐v�I� Z�5mA"v��7�%�*GDi�?8v��� |��x����7��~\G��v��g��33���"���H�y/WL�p��_y��u՝q� �t-}� �9�4$�#ɜD)HBl>p�q����Dd�b5u
�I���U-"��%�� !hC<��yS����V�+U��"��on���P�����Ǐ���ˏ5.U<x�����M�8m�[t�����3�L�4���ƾ��/���9r����l�mmm��v�Ç�W7.\�s�ϝN�ٶ�v����ggccb�أy���њ1���l�Gdyg�m���^����]]]][V���mmmmmmmj[Zֵ�V���J��Z����ԭ)��G� "m�$â`� �/���z�c W�����M8��>�����b�O'��Lɪ��L�.�3%7f��/k����e,��YGer�^��{/���l�j�ٻ____b�إ��������to7����o����Ç
n��ڦ���S�7w�뻫>Ѵ�[Y�VJ��*V��(��v�ơP�������kjٶm�������n��ڶ��j������kf��vvp\9�9
��� �v��s}�����b�� �8�Ȧ́�K�r&��L�O�lH�V�h��ݒ���&C6HYQ�F�
��{놫�� ,��ؙI12 �0WXD�$�"Z V+UeD
��D
�P���A�j�)��S�b酩H��D)D��b�
I�$�I"2�g�r^���o��g`�i�0,��H���.M��w6$=&$|��WQ/��-�q��)�_��=oM�]��E�L�-ƦRl��^C�5�Y���6)0 $aDx �@#P`�
���4��8H�4���Al���.�Pp'�@�30 4��дt
��B��S$���Vf_��f�}�]��`&b�\&,�^��V�4��D���$B�I$L]Pl�ʀ?L,HY("I
���9
o:���>���}Ƿ����bD25)D�7\�NM��6fA6$ r^C�^JH�F�j!�IQ��w`���}�� o��]P$����C�ł�2�| a�p0 ���L+$
�Vʇ��S鋦*d�
�$�謈}s�@\��8�NP�I�}H�m[[[tݷ��m�8p���p�����Å��Q�p۸S{{T�յ��M[;;;��|�/f�vj�涧<j<x��6����ݷM[{|8p�Q�q���˗;�J��s�ƽ��LQ�7��f�4g3��Qj,qj+dtGF]gb�ץ�z7��4f��������Z�ֶ����J��Z��,�J��ֲZ�����ں�z'{ǰ��G b0��+�A��h�5�&���dFU�ΞBѴ�=G�[���3!��34��̄�j�ѻ7f���v��n�$C�e,����V��l����b�f,͙�ٛ5��f�Y�5��Y�5��fs4gm�p��᷷�M�mml�[<..\�-�������mOOJ��NB��z��Ti�kf�٦m���cbضvvvvv�����gfڦi��������ccc!:�";8�]��~Z�.�����.ۦ\�2�3�b\KƢ^ Cl�t�V��&��&i�i�i��6X��_\i}q��r���K��s1>c䬑 +$Qk$F����euK�j�R�2���4ͩi����Z&�=��P}:Hy-�(����T�<(x�D���s�1�(rN���ө��� ����QF��?݈.�C{���/����O[�m� ��.b)�ʢ"� {bip��,L��Ʉ��aD&��`�p]��� ����iJ�(H�ւ�_b�{$ ��X-N��u�����fuwWX ���;LT��6��8��8��<��� �A0�G� Ӵä�DF��%A���YŠ�wb��?�*wtT��W:��5Lx�Nsp��2��Zu29T�K�x�F�`��S��{{�����B��ߥ��M�=C�qT�뇏,2p�AlX��H�mbmB4�S�"J�"J�!G@�-#�Ȏ�!;8���?���cf�ڦ���������T8p�T8p��¡p����ڦ����gggf����ףy��j�Q��j�Y�����p�P�ᯯ���L�[4͵�m�����x������ʥˁ��y��o7��f�4g1F(�^�eh�)�QgX����Ѽ�j�fh�b�f5uuuu�]]Z[[[[[[[%kkZ���+Z���j[Z֥���]JN�8��=� $)���x 1�P ,��5l:h7
D�p�<��JjR� c�-�P�f=W�fyuX ��{1��9��k5����v��e�(��l�)��;+er�k/e��_/f2�c1��f36c1������᷷���mmmS;;;6ͱ��n�Q�r幹n����gY����uWut�ӨS{4�1�����LZ��������3�ll�;;���ƽ�LZ���� OH�ND���)�;z�Ė���� ]���pM6�͉�r7#�j"8�@�a�eZ9�6�&��9�&Bs$,�!���`y�i\ys�\�]�L�M&$����kϒ� ���O
�k$�XD�nHD��!TH��W��(P<�� �+L]7�HV�4i� QQdUL#�����q�v �����`�&��p#�ےq����3���4�� �0��O�����{oݾ����_��x���x ;w �Aq��faKlj�h�H&D��! cDA��@'@,����4qb�  49�v��6�Q�7@x,��Kl�� ��0�� �,���J�zJ�q��f7X �5����
�)���`Θ�N�,�GLY'�&�FD�*"��Ad�D�`��$�EdAiOt��}O�-��}ǁ�ػ�Ӏ�6d�Y�c&�a�����l�8�:k�4���#r bj'��D� s�!C�}N��Y�n���H�� z$�m1e�  �����VL�aI ���]P��=A���� SKH�AE��T@1=43�<(��r�ꮨ&w�oٻ_^����ڶvv�����kn��ۦ��ooookkkkkj������ض5��z7��Q��g3��6b�f]�7�ooooj��ѽz7l[ͳ���m[[{{{t��ÅÅC���Q㴁���c1�����j#�<���/lk���7F�tk3��e��_-��m]][WZ��im][Z��������R��K%�kR�J�ֵ��m]M<���f����Bp�"���TDB@C����t�$�,�-�A�g�z��l�r�4J�L� el�^��,�c3��Y�՚�z�n��@x��d9 �dYL�R�Y\�W+e��[-��Yl�Z�Yg�q�n�۶i��������cc_^�����۸p���Μ������������
n��i�z__^ץ��tn��������ů�k����/��Kѽ{7����Վ!g��>wD5tE��K�(��U�Ү�sp��EeQ#���D��t�T��4��;#�SLSLl
W�� ��u�qA��)'$Z\�ʤVU"���ɍ��CĬ��+X��䈖�"Z�*��Y]B�i�R�.��a-#�B�#=��@�9ǜ%�Ės�7���>���]u�G��'S�!T�"��D��p�P�����;�� ~�?o^���"wpB���������E"&��,��4T`|�R!���D4 p�(�>@G�������lTA���E@�
� �p.y�+ h>����3� ��Ӫ�1z�3H���`:SPF���i���� >��+LV��6�荡�&A4D@2B� �� O|������9�����ۢ7*bI��۲t���G)Žs"�2)r �H�U!���Dr<γ��\����LS��?ʮ���|�A�Iĩ6�E2��.@.p���%D��WPqKLu;Lu=!ԭ�i�i�-���N�;���n������5��z�n���ͱ�����M[[[6������5�L����__7��Y��g3����_/�����������5L�l�k7F�y��_ccggfٶ�����ooo�Æ��7P۶�[��V��Z)DvZ�>��lk���y�5��4g/E��l��<�#��������ե�m[V����Y*[Z�kd����-D��k[[[V֥4��wa!PxA�s0� �!��G�u8�g����Pz�q�b��l�n�4��L�JdyW+���l���f39�͙�Y��o5E� < � �!�r"Ȳ�S)��e2�Gdou�kgggggb��������׳to7��l��[v�
� �˖幻�oo�oS۴���3LS�o7��Y�5��٬��y�ݛ���y��o7�����o7F���fsTg3��ADOH�vr',r#�;������H��6���Ȧ̖���D����Y�(�#h6h��A2D�Q`��n���9q��
���1q��p6"\�nC�7!W����#�܇d��CɅ��4�VL �aQ01�
�d��A ��`$�*�P���@��pPa0�1d�H�AR$�h(���r%GS߽o�B}��zo ���m������3H܅q5M�� �b��x�,� ������ٷ_���e����x
��� ��ƦRl�rbCq5gl�A�$͙P�5�<C0>�( 0G�P�@�`�����O�: `@�F���z!<X� `x�*�N ������b$R9
�L�k3U���������P���@��tPe@t��b����&ԉ��M��"��������랉��D�H�`5����}��z8���<iغ'vq���M��M���/!��[#Q��A�b(��hzG���yȜH�Nc���
�@�G"x��x}R(�H+HY0)���аX,�aQ0�H)X��A���@Ԡʀ�1��1d�ĉ��Y
�T��=#�� rgp~����n��g3��Y�5����������ͳ�l��;�ͱ�Llk�����o5��fl�b�ٌ�^����j+��m����gggggcc1flř���Y�7�����ض-������kn��ۦ����kn�ٶ�i����zb�9|�n�Ѭ�f�f(�Z�eh���:"�,��)JR��i]]]kWZ�֥�mmmml�-���VJ��Z�ֵ�d���J��)#�.���F��N��&�D�H�>P <f�-T!8=A���_�LŪ�4���L�Hr�)e2�V��r�l�[1����f��l�o7���8������!���|���4������ƽ/�k��Ѽ�o7��Y���њccb�����o��=˟;rݷ9��T�Q����sb��h�g3���s9��f�٬��6j�f�Vg3���sg1��Q|P��*>����Gt9^;�;����@�:@�2 � �!�p�6<���T��T���)�C�u�õ��vo6#7�4�JF�R5(�!�D�U�r b‚vLRNɊ�Y1�vHp��%�<��B��D����v�D��%�Q���GUUQ��Տ�O��4�8+p�� �R�|C��C�ThT6�l(���~�?wb������ ���D.n���g�E.ALx���Lf“9P�~���bD)PA��D @!�0�&T�� �$A�� ���p1��`�l�^�) �OD0?����L�k3R��L��_T3WT5V� ��}0�;L;J���&J��h
P�!g��*8�WB��*����|}����G��wpy�c���ʤ7*��j"�� )�DO
���y�yϞFs�:�0s�9��>�e ���F�6��d�HTH�b�tHPO$(%J��)�(SLP���-R6��J���QŠ�Ub~�Oub[9��_/e��f��l͚�f��n�������ץ�)}}z^����o7��Y���c1�����j+����fl�4��1L������W-��_1��9�͚�f��}}{_cccb٦vvvvvvvvvm�cc^����t��f�Tg1��^�Q\���<�dYAD�?JjR������ֵ���kR����ֵ��KkkY,���Y-k'D�y+'��Z�%���G��Rp_`O����I.� ��5��DG���"��f�(Z��1J��N�3�� �2�Ȳ,�S)el����l��b�f34g3Fh͚�Y�7f�z��o_7�����n���y�5��Y��f�Y��g3F(�����ݱll�;V�5�Å£Ǘ+�.U<x�l�2��/��嬾_/E��{1���{1��f,�c1��Y������z-e��k�VE�@OH�O@��q���"߷���[�y�b�Lq��fA*F�Q3����l"�Q��"`� aǗ�Ǘ=q��lp���Me���&�dj'D�B|M�蛈K���r�`l,��6!`�����a�TM�AQ �H)Y��+�D*��y@�A��L]0�!dtI"PP�=ǝUXK�з_���E�dq�q��>K���+��Q�� �ͤ�V���I4Q�sU�����߰}o?o��?yǷ��$=w`�@q�.l� ɉ\MD`Y�� \ ��<@� �� ���"�bL��p��@3�6�*�8,����H�N� `�0]��O
��2�&�g8�K~�1:�Lծ�3 Q�* T*��uP���P<�� &
��&�b���D�}H�DA�@OL��@�f8���7����[��o��5�'i�:�m��\��#企�F�tMD�f@�A�턳�=��<(��������'=#�=3ƐQ ETEH�E���M �Bʃ0�$ $�ya
֨}P_PeM1���1d���YQ�&�z'C�:��}y��-��s��G��Yl�����͙���Y��k7��f��o7��f�Y�3��Q�1E���Ql�[+��tGE2*(�ͱ��LZ����������Y�����j/��fh�g5f�Y�7�׵�}}}}�^�ض)}|�/��Ѽ�k5��9��b����j+��J"�,��h~��z�����n�ԥ)MKV���ե�m[V��������֥���K%��d�Y+'�b�Ň�(t.�7��:�@]�0T����F�V�`)���AU�ӂ��'(f�lb��|�J�3W��L�F����Ǭ{�� !�,�"Ȳ�L���W-e��z/��f3f�Q��g3��fsY�ՙ�Y��g3��њ1���z/���l�Z��l��f�y�޾�������շ¡Ç
oon�ڦ+���r�\�W+���[-���l�[-��e��Z-��Q[+���h��y��"4m!�x��8LuТ��b����+wti�cS�5��-�b��� 쉙�ئk������� �Q��ӌ�Fq���������Ƣ�X�p/b�е� ������b�o������V�R�R�KHu�3�O���o��:�O������n1�2>A�N�i
�b�̈́��l&5M�����23WA���X~���������� ��m���NsK�S.!L6��mp������@�7�F ��{X� ?�`�-'���������@Q�Q ��Y%A�'�Q�[t�f#X ���f +Z�ֳ���X&+j��_P(+jL3OL6J� ��Q}4,�)�p���5] ��ئ��/o
^�;n��'r�'�LM.Bh�C��F�B�`sa�{b�-Y�x��������'��>�#?@��T-���KH�ZE9B$� k+j�+Z�ʴ�r��#N���#GDF��� ��ptu�qU�a����O�dYL�R���W-���|�c1��ь�g3���s9�Ř�Q������[-����#�QL�!���ɍ}|����Y���ќ�b�Q ��Y��<�+eh�[/���3��g3��Y��j����n�Ѻ5��Tf�ќ�b�e��l������S"�r�����q�r��k��Қ���������j�j�j�Z����J�Z��ֶK%���<�-Bؾ3b·AԂ��yP��1�!�?���&�`��Q��6���B
��઄'�g��_��>�3[��L��V*�X�Ʊ�o�lwDZ�� ��l�"Ȭ�S#���V�Y\�[-���_/�����_/�����_/��e��Z+Er�GDyJ)��,�1��Y�3f�Vj�����űl��V���������3mQ����R�QL�S)��K)����,�#�QL��dvS)��e2*"Ȳ,��rRD�Ȭ��@>zg��9������|
��y�b��72�b@?dj"�m&�64Q�l���>������ ��66h266h��FD�3 Q3DL��f���f"����3TL�0�^.�p�\ȸ\,qp�X
�`l, ���fɅd�,�RHkU��
�@���A����4��I#H&�3�8
�:�����o����gpC6&93q���bb[e�#l���l�42B�O`��!h�C�߿�+~�n���<��x���N���m³f`w�����4D��e�!Q���X0Z� �������X@/X B��%� \�3���@�` � �� � �`:���A
�w�~���͖������j�� k�,��`���PD
�B��K�2�;Pe0�� H�D�
�Y(x���9J:�K���v�~/8�/I�N�ÜjdSf`SM�H�V����f 9�bXl�e��U�,PQ�
� �=D�A4Ǩ{(�yB
�!EdmH�ID ĉ��M n�$B�I&2� eCʌ(P-Pe@i���M+H�"@R �L�N@�B����{~�}��}LJ�� �l�Ȳ,�GdyV�Y\���e��Z�Y{/���|����l���Z#���L�"�* � ���8��F�y���Q�3��f2�|�_-����YC��YEe2<�+��e��k/��Yz1��Q�ř�f3�������[-���y�*"�r
��{�ln���j�T)�N(8O��6������J�������R��ֶ����J�ֵ�j%��Y<Zűk���� ]�Px %�C��� �����
��l`�
A<�=DS��s���Uh=A��(Z��6��L���'�=��F(�8��t+Ƭk�,s��zDZ� �l��r!��R�e2<��YG��l���r�Z+��G��tS#��E�dTC��6A����_/�����3��fl՛���ץ鍍���{ccccccc6� �CD6CdC��E��9�YC��9C�� ��d����ԭ ���#hg������]?�]؍��#ۂG9�'�I��؍����d8b� ئE�p�� MQ��k`;��Dn�TQ��!pÀ�,*Hq ��O|`1�p�^ŃQk Ųa�<����-k �D�j ����ZBd�D�Rc󃳫}��|9x��wwCI�0�u ��aP P9����f�d�9�cd�#0�\f�WC?�����|>�� {xB��������w1�AL��0�¶��o�Dn�N�f�4@�E@,�1x��@2�1�� �:�����0J�8
��PT�@M���_gX6{�����L�*����y+$ ��`b%d��kXV��*��ԭ� j>�IM��Zv�MKH'��!��d}���g߆��o{�����ۡ������y� ��4��<C8p [��鰜�4[���ZT-*�� B���A���GQ�KHy-!䴇��J�F���!�h*� T� S�
)itB�E
<1?81;��^� �V.� ����9���=���A�d9e,�S)���<����W#���G��<�S)�Y�9A����c�����k3fs4f�f3_-e����Z+Dx�9c��=c�?��C��VE�YK)��G��Yk-���Z�e��[-���tGEh�)��,�!�(���v�(r�(kЯP�bzP�Гb<9�555555-KWWV���ummmmmmmmjZ��d�Y:%��v-c2��������6��� � ��=
@ A�``�� D��0QX!� �  �� �/��Հ��Vf����؎�x�Ęw�t%�؟��S��Ub�����n�1�Ǭz���2 �!�!��!�!�,�Ȳ!�h�!�r��2 �����hw�,s�<���r�[/e����f��l՚�Vk5��y��o7����z�n��Ѽ�#���;C�=�c�?���=C��=�c�=���;C��;C��9��x)�'4��h������x�(�o��*��ϽAY���āP�^�h��Z"d F�Aq���lp�&����`f �~ �/�b�> ���1W��0_�� ���A���gE��`C���&�bAJְ�`YT>�� � I %�� �����
�Y��w�y���mĦĀ�QJ& � 6�dmZ�J2B�vQ���J�]3c���:��U�݃ۻ�y�|��[�x���\�`����ٛ�7L���l� j\t���d ,���H��gi�/ ��E@�  .�A��:��h R���� &: -W`�n���{����3d�����aa9�
ɀ��
�8H)$쐉i�!XJ�UqP��&*��� �LY'R$�QY�P�?��r�:���o?����vNېpiʛ2 3q>&�
�3�^A Y��*�6��A�6�]�}Pr+ �
� *��*�2��/"���I" (�I�I��&��4�:DҴI" h�D�+ TVL�D�DɦzD�H�*���y� p�GW�wݝo> �=��)�U���j�����{Ǭ~��� �r�"�r�!�+"��!�� ���z����1�o����s4f�e�_/��e��W+DyȲ*"�6*�V+��n�,s�����,� � !�,�"Ȳ,��e2�R��,�!�� �
���z�(r��j��]
�N(����� 1a�Po��mA��)�����jZ����+�jںֶ������Kd�Y,���x�/��� |*|0p HX7���f@T0��O*�`�p! ��Ij`��7<-8*8CA�c4/�P� `&nU_������a��qa�b<GBLIa�%�ؚ��(�)�X��V5�cXՎct9�X�;���;���P�=���;C��=C��P�9�cx�7�P�5B�U���YE�QL��<����V�e���1��Y�1f3g3���s9���Tf�fh�Y�F���������oƨoƱ�WB�j�x��X��X�UL} ���GE�BJxL>� �xN߰�{����b��c>A�x�m�������M^� kѰ�l�Aհ��0�'�@M �,)�{a�|�΀n�6���l2��A��A�e���1cc �.�� �ϋ�l�bN���5mP�M0�- �� �����U� � �S�-�t%L��\�A5g���G4 ��.�{�`��as�U��" �lf���U �A��������}�������t@����� �1��q
����h/a�@���A<��X ��V@� `�q�OXd,
��`�@n�X�X�Izr:���x<s����f�Agɂ��I7ɂ,��rO��V�-�}`\Y�Ay[T")jo$ ��@Ѝ�����<#�� g^;��{�%�x%=�]�K��L��TB<j!@[��+{a�h��FNd2E�C4m�� �� ѴC�m� DF��%F�#�&J���'KHP���-!J:B�tE(��Q9�� ���5"z Ԏ�4�� '��c���]EV �3?� �S���Ήq-��Qb�Qb�U���k�(r�1�w��DZ�{DZ�{�q�s��oƱ^+�V7#c1���l�V��l��Q��YCD4AD6A���=�q- �;��X�>*��Ƭo�1�w��Ǭ������� ��{�q�v�1�oЮ�X�b�Л�w��G�XsA���iA�XeA�('�z�����jҖ��������KZ������J�ֵ��K%�űk��>>��XŐ$̀�)�S�����@Gr���AD��!���d��_�lZ����3s ��� l(�Q�,2�<4�� ���|8|9Û�G�,I�x�ĸ���'�(�M
qN*�X��v+�x��v5�cX�Ʊ��v+�v*�X��T)�E
1F'�>&�ؚĸ�?�����9�dYL�GdyGeh�W+e��Z�e��|�_/����/f3��f�f,����G
qN*�N)�8�b�S�1F(�>&�>'�-�hK� ���P^�U�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������M��X%A�a�a�q� �I$�I$��$��(��,��(��0��0��,��,� 0� ,�L0� 0�4� 4� 4� 8�M<�M4�M4� 4�L0�N4�N4ӎ8��4Ӎ4��<� 4��8��4��8��@�8�@��<��A�9�<��<��@�@=A�?�=AAA���A����=AC��A��A�����8���@?���C��=@;@?C�C�?C�d?�C�t?NC��Đ�9�O� ����5����Đ�U���IÐ�A�����$C��<C�D?(;�4?C�?C��?C�?dC�4?C��=C��?gC��?�����?�C��?*C��C�d??�?C�t?C�D?'C��?C��?C��?������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������$?C�4?C��?C�?C��?
C��?C�?C��?C�t?C�?@C�4;C��%�P��@;@<@�����1���?�4<C�$?C�;A�������P�P�;A������C�C�? ?�DC�?C�D�?A�A�������P��;C�;?�@�A?=C���@�<@;C���<@��=�@�A?��C�AC������C�A;<�@;<��C�A�<�@���@��@�@�@��=9@�@��@�8�88��<�8��<��8��8��8�<��<��4�4��8��4�M<�8Ӎ8��4�M8��8��4��4�N4��4��8Í4�M4�M4�M4Ӎ4�M4�M0�M0Ӎ4�M8��4� 4� 4�M0� 0� 0� 0� 0� 0��0� ,��0��0� 0� 0��,��,��(��,��,��,��,��(��(��,��(��,��(��(��(��(��(��(�I$��(��(�I$�I(��$�I$��$�I$�I$�I$�I$�I$�I$�I � ��a�a�Q�Y�����Z���8�$��"���N�"@C�����ұ�RXQa �E��!�n�
��'͏�>#�B|��H�7��T��E����Jb.D�#�OFq��У�@,�d��FC I�����tb�B:0zHGHё��?#"��?p68|�9���i+$V\aB����� _�3���H#�W�%0���@n� �g�_4>{x�x������'�o@x��LJ���r�)�5R�+��!�H$C��ͱ�����"S �H ��Bq��7��!>S}�c�/�>��������5����
,gHߐ��Qg� �$ߜs:�I�8�U���rM
rN�0�ku�ַ[�uֿ]~W��[��o���������-�����w�ֻ���������w%����!�q� �l��Vȭ�l�چ�-�l/���[i��m;d��6(���[IY�Q�Ha��.|�K�Y���������r�9�8��UrA ��F���bz$���J�=D�#�J�=D� �����zZ�T�2� 8� #]��"�it˸�5�"0� ��FH��d3���SI��i3BcI� �&hLi3@I���S)vR2Ii# �:�� K�…�\붺U�\LY��Y���B�B�- B����
д*C��=��C�:C��=�`��ߧ� �z޷��z���v����WJ�^�Wj�^�������޷�� D�4M��=CЩBд:BдA�t
@� @�������y��<Q���v��3���g,�G8g �F��f�7f�ݛ�vm�nn��n�S�����ݤz=���M&�I��im.�K����6��im6�M��i��}F�Fû�;Gh���ͽ��oookkkkkkf�٪�������몿����������Y����������������d$���snm�fl͙�͔l�e(�F�6f�6f�ٛsnn�vn��o�p��q��r��r�tsΖtδt��v���;g|�G|��,�G��g�=g��g���h��o��������^�WJ�Z�V�S��T���uV����N�U��j�v�Wj�{֯{WO[��=o������po�5����P���ŭcZ�F������6ϔ�-�o��� �{������P… B�
/� ?���������������*��xO0�'�x�q\hq�Gȃ'"+�+[(L���Œ��3zM��ڏt��:lv�5��jmf� l��� ���E��]f ����!rJ����� 
��ʯ��7���x���I�YI\� ��34p�wdI�"N�"��G��#�q�㸉1\D��I0�$�x pp�����&?�L|���9�|��p��re�O��Q-MD�4���Z�Y�K:�I��N����_U_�___�_��]�_���}����u}����}���W�]_}�ٝv/.��Vd~ef���Ƿ7��������l}n�����)3l�,�%F&�Y}r���]��/v[�e����ܤ<�!'!�>3s���f����+��Y����y���k+��Ա�ms���f5��[fi��;'f���[Gv���m�<��zkh�մ{j�=�l�����������뢯K"���mdA�tA�
�tA�Bд- BЩ CЩ D�
�~��ާ���z��ާ�v����^�W���Z�]�ޥv����o�����5�iC�*C�� B�iЩA�m@� �G���������3�x��ڎ��:Q�:QʎYʎ9�8g
7Y�7f�ۛlۛ3fl͔k��g��t wwv��ݴt�G���M���M&���t�ZKIt�m6�M���zM��i��}>�gڅ���;�nnnS{{{{{t���ݵ���M}u�]u��_�_W�UW����]u�]u��U��wU���U��UW�}��~�H: � �70j�9��9�4ѧ4��ӚsVj�Y��vk�vk�fl͹�7f�ߛ��3��圳�s�ttΙ�;Y���w�����<������g��4A�����{{W�ޥz�WJiV��jmU)���N�Uj�:�N�U��j�Z�UJ�^�W���޷������. ������xxjY���X~����}�2X�����T7#询ª3\Jb�*a5@�@��(� �3�/e}��#�Pp"Bd��,*b��Di����d~I$�C�.�L�ɩ�l�eETg��FFF@#"��H��]":��� �m�Ҵ92�,0�b�,�x��ٜr��A#1��V�&aC�E@���> �=��ǧ�3�*�y ��Q F�c�oF�oF��[�a�rNr�(�$2\��q��Wf�LW
,!�Hg$�����'��_ o�����n��_B|5���"��zW%�Rt��ic��,s��2\��Ӓd��>rN�����������������������n������n�������������������]��\ia�Ӯ��9v�JӬ�ƒ6�i V�7M�l.Nԭ&h=4�����ˬHË���ZE�XGR��Ww$�1�q�)c�f�)e�Ĵ��pF:F�q��eߎHߌ�w��g�[�1�UR�C���.����^�m��1���Q������[IZ!�L��v�m'j�Nٝ��[I�4������c(ٕ�X7��Ë��my���U�Z�edB�-A�t A�tAЭ A�iЭB�-�_����߷���������WoR��W�ޥz�^����������~�����Ḹj}d=BЩ A��i=���t{��z�Ty�9�;��;gZ:�\��(�G,�G
8f�ߛ�nn�fl͙�5��ך�՛,��tAЩ�����ۺ:G���-�I��i4�KKi��ZMi��m5��֛O��֟O����E(����]��r���������������������������������������VE.�����������������B�t@�4 �h{�yكr�z3fz3њ�ٞ�ٛ3٢�h���9�5f��f��f�6��7پ����r�����sΙҎ��;Y�;���g����ށ�h: �Po���S���W��ҭV�U��ڝN�Ju:�M)��u:�M*�V��j�T������{z޷������.�����xj.,ص,l[�ey���uf��5��k������ �GQ �P�C��8o��߷�O��/������*�7 �$�4�Ф���d�T��)f�Ege �d�˭�Q�3b:Fjwt�����̭�f6��L��r��Eβ���IjB̜eh��� BR�� �������x|WO���o�g�H�Q����6Gq�}����H��#K�F��$Gq�#�$�q���P�$�8�8�7ɏ���ɏ����ɯ������.:\-D}Ҩ��4��婦�4���ϚY�I:�]��uU�]w_]]�����}_���]w�W]]u}��]_�_u}��}�ݚ��5,�ƅ�s:���}s�.Z]����dxivGF��չ�:�m��[C�6��ͲQf���妱���WEN����3����-�9K�\�4�!�I�c���$�4G9 rN4[��A��=�Q��<�,w[X쾹�}����՝��4�ժh�նvj�;5m���<7�yol�������[H �(,��3l�3l"1������ԯ��md*BдB�+B�
�tA�A�tB�r?��O�[������oooS�ڽ^�ޥz��Wj��^���������8888x�+�㸸��xxnKHZ���4�G�=���G���(��3����h�gJ9�<�G8Q�8Q��ٺ�������y��Y�5f�4���Q�h:�h:�h:�nnnn��ۺ=�G��RM&�I���t�]-&�i��zMi�='�Z}>�O�����j3�Q��isoojڶ齭��kkkkkkk�뮺���������������������������������������t
A� ������z�Y�=Q�� X50d̙�2f[2f\˙l�Flϙ�Fh�E��՚�e3nmͶo���9�9��:g[;Y���w���9�=Y��4⨸j �{{W����]��j�N���u:�N�S���uV��j�V�U�����z���޷��8888n��������UY��������,��s�XdU$�1?�Hu���Q+�{�T'HQ!^8 �!@O�
c�/�� ���_�B|������0"�u�LOD�4���ѢI ��C+�E)�wNÌ'a�0�#.�|�GT:Jp�������6Di+DV]d�6Ë��j�����sC� ����, ����O���g��
`=F�fȞ�7� ��7�<F�h�� @]��s�r�c�"��E2A$2? oF��Dw�LQB��(�l(p C�H�7>��%`B|�� �����(680"B
�N�)�bz3����X��9%Y�+Ӓk�I�9&�Z�w�]u�]U�_Ku����`+!�w���w��}����Ww}�]������>��Yu�]��˲�k2�J.���iq1��J�k��v�L�l �6ʆ]d �Q�|ӭ2�6O�q�V����mu+2��/@�����wܳ Y�,��)�X��X��E$2E)�X��H�1N[�rڋ��ݏu��&��b�XK,���� 0�
u���l��H��LИ�f�ӴNm;p���5�폭�h��f�i3BcIZ-4��K)}�l�Xq�;.|�k��K�]���=��=
�� BЭ B�tBЭW��������O���������ڽ^�{{W�OS�������� ���qqq�|�%�Rq�TUEp��T "0�����������h��3�v��uζt�tr�YŽ�7Q�6Ѳ��k�^k�Vi�h�Nm�������� @�-�tB�-�r�ݷwwm�wGh�zM��i)-���m6�Mi��m6�Mi�5�����{Oi�>�OI�F�Q��Zjqv���okn�ڶ�������:������������������������������dE A�t
@�,�G���������s�y��h�g����8�j`Ʊ�1f<�f;2f[2�k3���f���U��fm�vn�~p�9�9Y�δu���<Y��Y��4
����8�.:����7��{{z���Z�V�U��Z�U)�j�:�U��ڽ]*���z��{z�����88.+���������NNK9�G�8u���}՛�S6��p��;��2q�Gq��ă
5  �������=��{}�.8��P��E��Lw��G䜰Kr�-�6ca[¦a��&`��.�Y�K�ٕ��15L�� �R嵩b��6���ԥ9*2*�~�� ��/��� ��Q��8�4G�i����:���l��6�r(�?���ݑ'r�e�H�T�y.2D|d���1\D�xIp�"d<�8 �o� �&��N~�'?�N~�`��*t<$�j!2%�"D�i��SKʚZ�i���4��U�WU]Uu_��u����]��]w��_�_uu���]uu���uu�}��W�_u}���ֲ�V�4-K���2/�c^�1/�b_\��������.A.�����<2����Ͳ:�k�+���a�k��^T��n[!.s.Ns!�,�R�̳���nSl���-�9�8n���5wV�kh}hU�U��<��y^�;��wgd���ݭ��V�έ�v�彳Ӗ���m��&����Dj�EgeK;3l<���Z��k½���ҝE�tMD��KC��=Lߜ����o��������[����������O��o� CP��w��rrr���|�y9998��.�yt5�i@�(�����h�����s�t�Y�8��8Q�7f�6Q�6Q��Tj�Usd�i3�{�4 @�4 @��t- B��77-��wwvݴzKG��RM&�K����6�M���m6�OI��}=�������R}F���}E(��}=�����m[tյ��Mmmm`+"u�}_�W�W���__������U�_U���U_���T������{��{�Y�=g�<��<Y�<g{;��;��<Q�����c��Ō��&e�-��>h�9�5ٳ6ٻ7� 8Y�gK:������y�Y��-��M��Χ�R�TwE��P��=O��ڻW��T�U��V�Wj�^�W���j���~���.���⨸�*����99jZ����zٯ!�[�!�ws�fi�8����$��3|oGĪ#|Ja�Q!6‡��_�A|�� ����П��9���E�����\Hq=��$C$r�*��8�,�]��a��i�ms���� �C��F\l{mN4����Ym�����uX��ۜr�rAQ���T3�TB%p�����ލToFO��%����ގq�JH$�H$,I �I����_��s�a�X圑J$�Ic~0���%Q�*a�(��Q!� ��A��n�
�'���(7�� �!���n�%1��D�J� =�A(�,SZX�K�9������]�WU�_���_�����_��ww��_�w��������w��w}ݕꩪZ��YfV]a�fafWaviq�vXYv��iu�mq�v�ev��mv�iq�K0�+��^�aa�%/B�/P�P����wp]̩;��s0N���u8�����l�I�\틼��1���]e�asJ�.�0ga4�F��%j�Lٝ��͵ ��P��P��� ʹ��[N܍&h��f��VQH̬�a�b�q��myWmxi�{{{W��Z�� ��������x.������888887�
�����������⸸����9n^u>○����������ԕEþ�"�Z��Q��Y�<Q�:�֎ts�Tq����F�6Q�5ٯ5g �h��h����h:�HZ��薋h���۷)���v���:Gh�zM���[Kit���RkM���jMi���O��R�QJ4��Q����O���}>��RjOi���t��5������_��u�W��_�W�W�W��)u_�W�}WU��W�}��}�ߩ�iC��-@�3�����y��<g��g|����w���<Q��x��<��=Y�<�vX�G�n�m����l��3�����,���B�+D�ګWo�6���U_�N���Rrq�T\U ���po�S���������O���� C��qqq�w%��������ϻ������W֧�U}���N��w*�yUKȦN51����S B��X-�W��_�R�����?�� ��.!�a���9�9.:�r�,�j[���i/���ץ��/"�/�/�����k���v60�v\Ⱥ��t]��S^d�)Z:��^)c/I �x���Hi����;��Fm��6�r$��9.S����/*�������'s"ϔ�/)Z��%�I����J��!�D�x �p � ����&��N��:t$�jt<$Ȫ"d\D���1���,�T��Rϟ��_���_��`+!�����W��w���w�����*v���ì�KQ�n�4��e�c"��5�c
�������� ��W�0�k�ؚ�E�s2��E�c*�FZ�ʷFj���5��wyϞx��9u7=�v�J��W��jU�S���}ǭqu�KR��e+R諬�#(l졵���6������ۊ\�Էm�r�}��ڶ�jڍ��ٛ3ggcgb��cb|�|���jZ�������*J��������>:���������+��������;����s����ֵ/k�ll��v����k�uU�WϝKRq���4�t:B�A��y��x��vΔt�tr�4p���SĨ6��hT�H:���T�����Z�����mM��j�z�oon��ݷwwtt�����zJI���].��Rm6�M���}5��R{Oi��O��i���O�����}5&��m6�J�t��5�Mm�WWWW�����_���_�����u��W����WU��+"�j�Z�E�JD��= B�d ����y��y��<g���3�x��<��<������{� AЭ
��D�]N�������p�W��r\��v�9M�mST�1��Ku�WWs�R�TuEQ�qp�\5 �Qqq\||w%Grrr�������○��������Nw��>+��.Y���<N9��9@��d�3oFy�\\*a:B� ^8!@ �П7>��U�'����u}�(�!S �Q��hq��Hd~X�.K$䜳��u}�V��2� :��4� �fivefef0,�.�˼��Z�@����l�9&���g���!�H$B��!���c~3LoH���c~DX���$+�Jr�,�*�d�9e��]w�s�nY�'$���2�",�F�7�A�\F��Dw�L'hQ`9‰ ��!}
s�O� C�� @��H(Q!9‹�*����x��y���4j�=���ya�
q�n�j�b�����[�~��[��[���VC�����﻾���󻵻���w�������ws����q\����������e�Yu��� 4� $]�Ѯ���v�J�l �����`9���˴�e]��,����.�fVE�Y*�,�b����zIKP�KRJ[u����H�,2���TYb�g��I�ܷx]UR���,��0Na��F�ce+D��� ��6&�|�>8|�]p�ó�������P� ӴLi3A����Hə�l��u��ˌXq��n��몯������ϟ>|��>|�j|���_�u�-��ll�;Tշ�n���z].�Mi�=����L�ƾ�-��WS�r��|K<��CЩ�(���ݠ�ju4���-�R&��h��R&��Z&�H��S��j�^����p\7 Ƿ�M�mۛ�����h�z:G���KI���]5&��{M����O���}E'���>�OI��������O����5'��m6�K�]�j������������������dN�������������������*���ߧ�z�N�D�iC�iA� �G�����{��z�Y�=Y��y�@� �tC�=D�u:�V�{~������^^}��Zֶ���}6�K���=�vۦ�靝��}z[Z����������ﺾ����n�mk_bض666v�����oor���ZK�˫ful�My�םMi�Ԝ�'%G�QqT<5 A�P\ ?���}��ڂp9��
XxS�8����NBL���,�'Ns�v��<�K,~�R��d�,��K4�K��Բ�:�������g��;�Y�|��<KR����T�X��q�c�;Gq���<Ir���2\�Rܨ��Ur���8�v��E]�wg�̉;�Y�F���'!"K��*."TW� � �I�\�8 �[��.t��7��p��'CP�a���p�"�&E�&E�&GQ�Z2,lF�U��]��]U�w��_�]����W_��]w�w�������}��}��q�k~uj���kh�y����Ҫ� R��Ycb�楩sR���-sJ��-sc�탃\潮u^k�����k�e+Mg���-�*ֵ�-/S���J�� 2- ^�i��M���%JJ��$N�E�����U,�jY��1��4�-SL���{l��Ӗ�n[��N8���n$n�J��N���V��V��d�ͲFb�#������.�sj���ٶ)�����b��׵�}}}}{_^���٦-�gfڦ���sv�ݴv���[M��Z��>��"���F�>H�&�it�KI���ܦ�����}z[����Ե%IQ�p�ppS���ڽ^������Wj���z�����j.>;���n}�[{v�ݹ���NS�:wwGh��I���m.�MI�6�M���}>�Oi�}E'��zO����O���}5��i�5&��m-&�R]5:�_���]u���U�UW����WU���_�_U�]�W�_������W�_-K�Q�qT��=J�V�SH�.������z�����&��Z.�SjmU��v��pp�r\�-��������{f��-$��'$d����6E�.D�&�j)E(��zK��i4t����9�M��S{t�7���m��ӛ����廣�wi��ZM%����K��֛M�=�6g,�qͩ�(l�]�E ��_�N����ѽD�!6%P�XB��N8pNH4�G,�0�
���J��7���I�Jd�S�`����޹:����j�y���Z�ޖ�:�B����o�w��wyn�6����V%�SĐH��Hv��*7�;F����Q�$��E2C$�E,��,r�+��qܳ"\�;�&R�u�w���/�YܲLP�)g$2��I8ތ�WĪ �
�g
,�H.8lp[�P�Р����� ���‹l�LKB� �����"WF�a�7�n7���������������������������������������������?�sjqͩ�6�[�嶻�����ª���β�0�+�iz]��,6���fbV`�ìFìXu�Xqxqx�mvmxmr:�,��,k:���` �u�L8�GH��F��#�1$XdfX���+3�����
Z�Y��r�0�.�YF�ͥh�N�������7O� .��7O� n9n6�Pݶ��zi+V�VC�I�Q�̺�l$`���&d�%��%䬓�r:��&]&����&�II4�KI��i-.���i.�����}F}g�dL�D\����d���rVK��2fMɹ;'bn&�v'P���.E���?����i�ԗK���Ӕ�9��L�lR�UU_�|��������yj^^|�>�����ֵ���j���ܛ��������mۛ��廻h�z=�I���].�Ki�6���{Oi��}>�Oi���='�Z�O������OI�>���m6�M���t�_�dJ����������������������������Y�wwn�۶i���mn�����y8�>>.����888*��������9��w}�KZ����H�D�i�2M��Lɘ����Bv'bv&��'d�&��&d�2^K�VJ�9#$Q#�z"�\��,��2%�(�?����?����?Ȗ�2&dL��r.E�.D�-r.F�.E��ȴ��ִ��:�p���jPy�iTl�cj �1 �q���b|W�^�� ��!� �1A8'd��!�!�)�"�a�;�6�9|�(=�r� �`�s��<� ����wXm��et+��]��ӭ����ՆK^a�k̝+��bT�/+���%H̕#r1%Hĕ#�3�ܓ��'*InT�ܧ��ȓ�����wbe�ɗzj�Oޣ������|Ȳ����#��I��%G�K���� �&A�M��&��M��&�p��'A�M��� 6l<$ȸ��q#����"\\d���Q��+"�W_�}w���w���U���W]]��]_x
ȩ6U�%�I���̉:���i-kr���n�����ҭ�"����1lJűl�; 16Ybl�Ͱ�����`�y�Ebl ���aj�CR4ٛ ����m����H�0���1� @��r���J������l7��ie�Z��ic`٦�٪h[���Ͱ���fsp3;�ܷ;��gsl3���� �SA��h3�L�fi��Ŵ���F�qGqChP� P� P� P� 1P]`L\����d|�d|��쑒rNI�4K�]��LɖLɶM�v&�v'b~p�az���0a� 6��A� x����8d�F�&0�a��ڃF��;Pg�6�e��B�: Xa��.�u���hL�TG\�d�#�w)�r�������۷7-���G��i--��֟Qj3�����?�-,��m�ST�ݹNnnS���=�GH�&�I��R]6��Rm5'��������O��j)E���}>�O�����m=���m6��Zm6�K��VE�������������������������R.D�%�(���ڊQ��ԛK����G��NnS{[4�3��L[�1L�[[T�7�nn��KI���[OI�2d�va �`� �+ v(b�(ᖃ%�K �d�ɆL2b�(УB�(⅊c��A���Æ 0a����/av��p������'bv&�u���Bn&؛d�l���vN�vMɹ:ɹ7&�ܛDܛD�&�0Jr�%�s��8�$��9@��H$�;���bW HT�y��ϡBs�
���o�'"C��
 p��n�L<*�8D� +���� I �4��je�rN[���$]�~�UN��?c�+��C�����K���I�,r�e�DI�<j�<D� �
,'8�b�%2�S!.Erdz@��$25$2���^K�e�r\�������������K�T��݇�䜓�Y%~X�6HdD��ލ��q+��*��
�`����߸�7��%`C��
(���E�1)�����TG��F���y�\mƮ3�oG]ku]U-U�]u�U_�]u_]uX
����w����wu�ww}�﫻���>^���*�b�������8g,��[���(n��*��]`P,�ɗix�mr30;�Ke'�Q�Ne# ��dNe3&�S�'�|� ���\>p�چ�m�l�I�#���F�2|ˬ�Ӓ����Ij��@�!��"��)b�s�9nw{]S4���2�u�a�d��F�ZL�5��,��������}�D����g̀�l�����H��'2~����Q�R����6�7Xn�v�x�� �o�~��`���X=��@�a�Å���[ ��`X/�� a� �,1��� P�F�%�\�t�5�k ���;Xh��a��� p�a� 8i�U�5Xi�Ն�4�� ���~��@|��0�@������x�vh6a� 4V|4P;`��|3�f�+}�1�FH�#$d���rNI�4I�VK�^K��L�fLə2��NɶN��'bn&؛�Mmm�v���9�nۛ������4�;I������m-���m=�����kO�����}>�O�����zO��i�ԛM��鴺].������������������dN�����������������q7hM��h���urnL�e2f&be�^J�Y'$䜓d���(�D{#�#�|���>H�#$��$䜓��U���X�D�M��5a��]�6Xl�m��6ẃnpӆ�5Xj�^(5�� �m��a� �m�fp�a� �l�f�׆�5Pj�U�4�i�w�ц�l�u�� �g�5l0t�-\2�e�Ɋ8�B�(b��<1�f�7F�:8@�@�@���
띀���>`���r[� ��@� ("� (�� Q�o�D�[���V��I����/�!� EEqdS�N0����s��rZ[��y�bw0LN� ���v �-�%����
�������7Vu`NΦ��`��i@��i����K� ��L���,@ 8�϶��b ��k���� .P}�������`�|���� {��?���-t��O�}wg�s"O��,�#K�F��$�q�b�%E�K��� �L���@L���6l�x �p�`�&��M��"�%�Q��%�Q���Q�}�u�]uU���_�`+$�������w����}��]��q��8�R����w(q��g� g� n� -k������� k���z`���)�zgd���vA�Ȝv�tգ=�]Ӳ: �-�N9m�q�l�mu��N�L�q�`�r^K� ).P%$���r�j^P%��A7;�''V ��M� ��KR��_` V)�$���K4{[@�mf�&�6 �l��`�mf�ܨ�9��A�R}#��G0n�����nS`���@��, �������p��|!��8D��"�6� `��B�!�DX"��F`�dm;A�<0p݃ņ�7�<����Vv�>Pp����,8`������
p����=�����EM�N8EXD��M�UM�M�N8D�a�FDP�?`~�z{l!���\!p��\!�!l!p��p`6��
+
��6(��
(У�8��8d�GlQ�Q�P�ClP�m�������ͽ����v�����I���[Kit�[M��i�Ԟ����}>�O����ԟMI��kMi��}6�M���ZMit�J�������VF���dR���VKE,Q�%LQ�ɆZ �e�ˆ\2�� �9��: �e�.pɆZ �d�qF�Q�Q�CqG1B� 1�g�7Dф,� �6��p>�}�#(��!0����:,8����|Å���������@a� �8�Ƃ +, ������ *,8��64?����������t68o�x�m�"H�.D���R���C,Z&%��X"�@PEa@�����ս}�N��r�
�e�T��FHcS'B��U�����7�^By�h*�U�+L��X ��o&}
Q!G,@2�S8�Fq7�ܰL�p�ˊ�
�;r�� ym�x �_�����z����~�}��`W�Iy� �C'#��Ή踕B:XjHf��p!�*8�� xQ!M
$@p��,j���;,�rqL^q͹�`.�Ko�$��N��gU?�뻝�0�9gr�(�,RNHc ����:Į.%1�Qa�a p"Ap!�`C����� �E�5‹
�CLJaZ%Q�J��Wg�\u���������������������VG/�������������﻾��K����X䜲L�圳�`W;�݀
�/X z���k6��8� y��4���>t��#�hȈ�Q������]?vn�8-��2�f�d4���F��.��.2Z�L6�LƖ)b�9@
e�X%�P�e��0I�8�vowr�����Y���iiupk�bF01��ͥ �t���\Bt�� H�@i%#$}! R2";t���8ۉ�Dm+IZF��N���|","p���`��@�F�v�� `��`���6`��G�$lV ;��Z�1`HXv��-`��N�K� �f�����'�PX((�q�$���\, ��\!WL!0����� ,8�� �?`�@|��;L�[-�� ��@��`���*�`��F`��F��f�FP#�G���!@��#`��H��n��Ga�uv ,X$�������:�7� 5`D�e�� h�4�zj��&ͳ���mm�{v������;�ݤz;II)&���M.�MIt��M���jM��i��}>�Oi�>�O���zM���m-&�֚��t�^�Yb�dd8��
���`�A��U��5�� �p݆�0x�~�߆��lpy���le)�<� !d�'%�� Z:�'�I`����H`��GP#pE�"�N|�
�%
���#h"�@,�"���#|f��� 8Aaa `}���{��F8Ea��� "�"����^xE�E� 0?�AAA��`��1b0M�̀N����X ����M� �N���K�%h���}6�@���!V% B�,��X�H�u���&��'�Keq����\�Hd��!��
E$@0���$|y��������o�>��1b�ـ @1 0���������Z��`q�1� &�f@J�ԡ+R�QiAy� ��Xz�PKN�AR��(�v%�`��@ZK9@Z�rI8����
�n��UPp��T �**`�[´ -���"Z )"f013'�j@%�b@K�Ԁ���A+F����K^����.��|ϧr�e�H������2L\D��"\7 .22���L���6d 22���DK��%EQ��%G�J��뮺뮺믯��������Y)������������C�I�2s�$g,�';�%nv {�J�����o�^�X ��X��0Ɉ��������r���sp=���Ŝ��� qv��mv��if��iv��ivA<� �m��A��9vrˬu�XRܠ��r�d�0��� [����p%�[�.�x�*��ZU��^U��^F@[5@U��/[��.@������ Gw@b��s�:6�.��q�_8�`.[i��4�3.0�Ly��� � e�Z^^|�����w�kͩ�h��j&E�6H�U�&N��.�/a�� �+ v(X��K �d�&1B�
xb���^��rjĵ�+��DL�?ȔD���?���>϶)�cccc^�������ض��Gi-%���3�>Ϭ�"dL��r&D���>��zM����4�-�N�৩M"ht�h�����&�H�&�H�;;T�3mm�[[{v������n��i��RM&�K���t�]5���m>�M���}6���m>�M���m6�M���]-%��t�[�VD�������e-D�MC����=��A�I��ӆ㜷�kbڷ4v�Iim>�Q���F�MI���v�ڦ��^��Z�����x�n.:������ϳ�>��>Y5%�t���m�Ii��șd���e �f�y��5Pk�^(5᪃U� ;Pf�҃%
4�/О���1bR�u��RjGH�ww6��okkj���ZL�5����(�#����]��,��ŗ�?l�g ��{��cz!�%P��C�~� �K�:�<�0�<*���T�ړ�)�sE��$R�)����^E9"�h�DC2!�P}V� �HG�Q 8B��bZ`֘�� IiA�)%(�I):2B0E##� �Ȯ�4:Dp/�|�Nؘ�VAٗX?a�Ȭ4�K/@ _q\�6� hR� ��莱)��
$&��t}�3���w�J�
�JÚ�¢򣺡*�쨶���]fr���uݨ��S�TYb�L�H�#��D�#$*a:B���ǐ���ԝ�@Q(d�X�TwD-��PC��܀bC<+.�*��7�F�l�¥��{��rM\��q�Q%�@��������VG�k���������c������������цTdda����$�":�"8�8�P��j�L�?4��1���=�X"����v�H��KS�s�.I�����RA oF����*����(p0!�m�
��/��A|��"0���Da� �?a�#�Fi#��p���C�GIΑ��GB��GCs�G���;�|��چ�Ki�&���@���C(� �8�� .��+8���UU|Ww�3�䚩b��G 8g8�+9g+9�::��:�l흳�v��w�w�����G�;�|�v��s�t��󕜳�p��o�u�m3e3^j�9���3�'���s�x��x�ٿ8g8�,����s���(띳�v��w��x��3�x����;�sX޹��4h�M��n��S�tΔr��s�3}�usfk�Tj�M3>f�-(�F<�F&�Ii4��K���m6��i�ԟO��Z�Oj5�Q�Q��g���ȴF�#)-4�Yd�D�C�� h�j��`̸c`.�M\�DU��E&�RJI��t����_��W���V��x
�}W���sb�y����̶f�ٟ3ѣ4٦�6k�\�tm�fm��n�����8���l圳������s�yҎy�9�Ҏy�9�;9�:9g*8�8� ��3}��~o��<���������z�y�@���5Y�5ٮ͖k͙�6f�7f�ݛ�}��~p��8Y�8���l�G㜳�r�Y�9Y�8��8���,��3�o���7dv�M��Vf�,1lLMr{X�];���.��/K�_��� v
��>[{x�z���TA��%u4���H�
-"��>�R!A��5� �cTBB��  B@&��4�LVK�+�������I�-$і��˨��y���{e������5��,�
���e���Rܤ�e��2�5 
�,����ޥcʺV:�YX��e#z�ԍ�iHҊ��Jֱ!k�Uy.�%�12|��ܤ�9 �r��b�D�x�7�����ڰ��jC,���$פT()�QU������A,�pԻ��%��6��v���R���"�R��ɀ���x
��w���W�u���U��������)4cZ9�Q����ۣ��tvv�ܷ�&�A�h|jm�m��&6
��r���e��囻,�2��K2܅�8�1��"��p���*�P �
���'������ ����ɍ�`������!�e�� �>4�Em���t|v���Hf�I���p�n�*�m�Z�*��Vg`���Yz\���Yn��TU�*_d ����Ԧ�ך�ٛ,ۛ��f���3������g+9�<��3�tΙ�:Q��y�9�;9g,�G
8g
7��ݛsfl͔j�Ti�E�>e�.f�� �<Q��w��ڎ��ι��y�6f�6��ߛ�}�3�q�4r�y�:Y�Ι�:gL��h�G\�gJ:gL�G:9��8�ʎ9�8Q�7f�6��ך�Us=��F\ɘ�a� (������t���i4�[K����6��i���O��Z�Q���F}G���Y�d[#Y#�i���#�*Rl��� _�=brĵ� (��i�ԓI��{��������`+!Հ�������u�`+#W���_���2����E����|��hØ�c̖e�.e�6g�E�3Fi�6k�]��e3fm͹�7Y�7Y�7f�ߛ�~n�~o���7Q�7f��f�6��ٛ3fl�y�5٫;Y�;gl�gj;�|��3Şl�G��G�=Y�92idϙ��f�4f�4��4��ך�ך��f�ٛ3m�snmͶm�u��vm�nn�ٶ͹�6Q�͖l͙�5��5f�-\>n&ӶZL�l�dC0����1f��H\�,��X�.7��S��.��X��GU"�����NH������;���D9!��3�"���SV8�
�8��NNObb`����$�Ģ)-,� IDbBBI�щH�����7m%dZe; �$Vae��s���X$^5q�Ȕ��(���/����������£��ԝT�qI�KjNjBI���)�2���Y��5-W�h��g,�\��Ya�6���j� �*��E��C~o����Ȭ��!ԝ�aD8�� �M�zV %h/�E� !��s���#s�E�7'��ʼ����E��O�������������dZ�뾰��VC���$RF���T����$$ Ddtr##�����#�D����|�T����L�X2���u��a��]����T�X����18���A#�q��?Ī.XC�(�-r�뾂�Y����Xu���M�lJì �:��u���XY�YFì�`C�����l-]P�N�:N��+�WB��#������ ��v��IZ�R2�q�v��0������..Y�9% 9b��!�˙l͙�E�,Ӛ�Vk͔l͹�7Y�7Y����7ѿ8Q�����7Ѿ�ٺ���6f�5���F�љ�5�-(ǘ��F9M���v��uιҎ��9�<�G,�36f�=���f��f�5ٮ͙�͹��ٺ�پ���8f�8Q�8g �G 8f�ߛ�ݛh�F�ך�՚sM(ϙ�˙3b�9��|���~��\�yk!r � ,�=&�I��it�[K���m5��i��}=(�R�F�>��>�������d\�d���~�����6J�]���D�$���}����%$��=�9NS�������1X
��W������l��Y�� ��Z�v\��\�헬�e���|���0�,�f;1ٓ2�l͙�=��=�3M�sNi�9�4٧4ѫ4��4��Ӛh�F�њ3Fh�=�6e�5�s.r��s������,��l�g[:�k:��;g{;Q�<Y�<gV�l�1Y�̔d�%�s6f�ٟ3�|�f�њ3Fi�Fh�Ni�i�M�3M3=(њ(�F{3њ�ٖ���v���ѹ�;5mL�-��{X|���� '̥/!J>2�U >@?O��X���ґ�Jȃ�"ȃ�"ȃ��cr�Cr$jG��_.�+���|�>BAO�pT�7����uP8����{L;��a�5�(&ҏim ��F?;� �)7�Rn�)3�Rc\�[����ט�-JP��x�x�hV�r�|o}g�ǵcB�� ��R1�YH����mdQ]dQY�b"Ȅe�b:�Ċ�W����|�s��%�&Iq�c���\$�x�x������ ��XaU5"�,��� d ��g��@���<u(d�����^d��2D�R4��Y*C�*C�90�����VF���d����Z](�I*A�i�M ��� �&�I#�1��tI�7D������[�c[V��̬��l Mq�k�ή�_�k��r��ܣ���D;E�:�P��ppo�O�����z������%�m��$6���
ͲZb�-�l�Y�/3�_f�.2�%V]dwe���towtK�7G'-���lsoluj�Z���V5�U�aֺ+�;�r�c���yjQ�N2!��b�Y�2fK2�l͙�E���f�4��5f�՚�Vj�6j�U�E,њ3>f�ٗ2ђ�tb�9��z!��hͰ�h�GJ:Q�9��8��8Y�8f��f�7Q�3a�Vb�d̹�3f{3�{4f�4Y�4��5Y�5f��F�5f��F�4ѧ4f��f|͙��F<ǘhØ2!��^��[�����<���X��V��T� h���-�I����KIt�ZK��i�>���->��RzQ�Ϩ�>Ϭ�?ș#Y�6J�SJ3�"���F�6E�&}J)>�K��h�t��;������������+#�X
�%���K)Yd ���e[+el��2͐VAY�� �����ݗr�]��_�l��|��{0ق�9�1f,�f,�f+1�<ǘ�c�y�1Y��Y�0��F 0d=�C�>Cf�ݛ�vo�~o��8��8�+9g,圳��3�s��t��u��s{fHz!������6a�6a�9�1f,Ř��F<ǘ�ǘ��f,�F0�Øs`�����+���#��� �'h5����u�Y*��(~����"oD<(�� B�׏j�j�ꀀ�;)/���VD8����`f!��(Gu&�H�A�g�3�����3��� >h}���_4>��
"�8�4(�Zq58lPNN150mL&&BJKJRFGF(:Dv6Nm+@�e�0��{q�X$$Ʈ#�H���� �+���Ǖe�Gu@#���KH�4RB)���pDC7�����q!���gd0@.��Vahizg�s��S�W��PJIhQ�Q���
�A7
$П}��/���TxTbRvE@E:"�h�T+=Bh�4��!�X�t�MqL�,R�K��H$C� ����?��������VC�Y)���������������u&"� �I R%$% IIi@t�$�RRB���QFHF����ۤG�́p�v�֒�{e#�\�쬒��=us���7��Yd~D���%P�!E���6��� ���=��ǧ������6I,�e�Q�He@�e#$�R2�(�%2��Z���K)e����H�*YH�)���YF�!�l�m+d�Ҹ~�g��l �4~�6\e�0��_,������s�.���R�$)���K!l��,��,�e�/�6C��3s ���f<ǘ���FJ2fK1�*1ы0ч0f !���z��v��Z���Yʎ9�8Ѿ���7f�6��5��՚�Vj�M�Z�V[˶]��{/�~�|���0Y��Vb�tc̙�̙�2fLə3b�Y�0����E�/e�.��-� ��E�,�|�EJ)�D ���({���z��4z=#��;I���KK���m6�M����O��R�F�>��QG��YȶE��H�J�d�L����?Ϩ�>���M���JG�ݧwwm�������d:��J�VI/Y��������q�ǫ'� ��r��v>X�c��R���6S�vT��V��b�g ���!,��\����e�-�s.e̻�r�]˹w.�ܻ�,��(��2�\��[�Yk!r!r4��՚sVj�y�5��6f��f�6��ݛ�u���3�q��l㜨圬���sV �췗2ݗ,�Eܻ�r�^��]��]˹w.Qs.�s-�o-張E���\H#�������lakhdfl �Mq�k���j�cT�(�� @5Ao�/j�et�J�YdD�:C��J)�X��+�W��U�����I�x~~���/S���><>�ó��D�υ�>TL�_Q5y��a�4Ҍ�f�hI4�S�����5�m L� Lk�4�3��өFI8�(��^�h��xH����eB����TU�D
"ȁ� t0�C]-�C�K!���T�W�_#/k�ֵ���#�$�J��s�K���/!2:��6+�M�p��o����u�x/��a�T������3R�ZT�f6K��'!2U�%KR���H�r%��������VEkY������VD��������V��.�tl$
��L �(Z&�P�K4��$�Ē���Rvn�gm�����k3dG�l
���EkXY����/��/(�%H.Gq �p�p��PT��>,�O �bE�V++�c�6��Ͳ<3l�L�D���A����h|kd~f�ڛDV���)�mY�+3m�J���E���q���YY�u�d]f�����V�s�[���:�Y�i�� ���)�RʖV��c,e���!2�\��췗2�\˹w.��.�z��]˙s.Qo-嬵d-��TY�C>m�ߛ�msm�3^k�Y��9���3Q�2�\ə,�F<��l�e|�E��dA� d&B�-���[�ys.�w.�w.�w.�ܻ�2��跖��Ū!2�* ��Ez+e\����D�?P��yF��<��C��:,9��9F
a�t��������M&�K���jK��i�>�O��R}F�>���?���DL�Dl�D�$��%�2���O���jM���M#�۴����������_���x
ȥ`+%����`+"f �E��͔ZX,p�r�<s�\u����q�'̡e ��l}����)Q�6SʙS*�\�e[+el������X��W��W��[+ej+YR��V��R�t@�:1�;1̴َe�.e��f�ٟ3���f�4��Ӛ�U��U��fl�fm�nm�u�vo���7ѹc:�ˋk�챖2�X�c,ez+�^��Z��W��U��UʴT��HDI�"�������]6��ZL�0q��e`c�ܜ� �b��~0eB�@��1^<�YQ�H2QN��"�������`��_=�/�a����Y��^=+
w�/4����Vzy��J�]��˼{|�%�#�ڂQ���b�;�TF�MN ��ѥ%�2BBI�#: �O��L�l��˰�0��.I�|���j��(�:��n�<+F��� E'$T��@3Qhl!����!P�RxR
�'����> W�o!�{x1���]��"�T��o��`�rN���Hd��7D�+�LA�X.8��O��� Y�\J�*����'�@�TxV�Ƿ����D�@�#ҳ$29a�y �/�����|�G���
��x
ɍ�}����������m;i[N�-�h��v�Hڄiџ#Vt����T�d%"��� FDG23�h8Dr�I�������W�vVe/R}������q���j��0�(���>���ՠ<
�g�r+AT�H��J�M���YJ�P4������i+Si3AV�f�i+A^�V�i3Aj�f��f��IY�����R4�(� ]e�`)�mwWipr,�ͬ�r��:�����$�Y�rL��p�9G��e ��l|����)e+)�O*eL�������쯕�������r�T���9D �P�!6Q�4Ѫ�9�3�j3fZ2ѓ1�:1fØ3� ��^��]��i�U�\ �Wq������Ye<��,�eK*�\�����쭕��VʹW*QS)�: r��?��C�h�E
hx�|t�·*ho��� �5�s��$�.�ܹ���E��wwv����I���M.�K����M����Mi���Q�Ϩ�>ϳ�?�&E�-�=�rNJ�^K�y!�뤤��Ii-�;N�ۻ������
ȭ`+"U���^�NZ�yo-弻eܻ�r�D C�BY��ƌiƻ(l���o��K��c�9㝎�;X����cŏ8��VO�C(� ��r�x��h{���x�e��r�2}쟓�zǬy��]˶^��_��Cd6Cd>C�>`���9��Y�1Q�2Y�2�[2�\�fz3Y���h���9�4��՚�Vj�Tk�y��Y�5ٮ�y��Y��Y��Y�4��Ӛ1I�m�ˌ8N.�Y�7��l<�6��6�~^�K]
W�BKrH��5��< ���A�#�5[� �"�:? �������OR��Z���k+Uұ�]+�ұ�Z��Ez��]+լ�����ۣ���1��� ��C�VS������0M4�%�H�b��ؤ�Ђf�+k
���C̋F�-Y@��Z��¥RꂙdPr�.�Hl!�☔�50<�E|U~���x\yg����"�<~��E_X���k�?Y#�%N�J��K��$�ɱ��"������� �o����y����� j��2+��tWow��3��a�� 13NB,��I9��>��>���>?��dr��VL*�Y��۶ņ�Ŧ��m��q����؇m��Ѥ�#N:.��J����Ih�Y� �&�O9+@�j�
Ff�s^k�:�AU�n����in0���
ت���;AO�c����V�F�[��
q �[BI�hI5m -[CV��մ27M �M������hjj�ڛckV�����m v��ūhsfl����������<-��]�c��;_1�|�i򎲭)�� ��,���ls���K�w��1�ǫ'���e (YF�Q��2�O�~=QF2�%�L�f��e̹��y��Y�0т�z!��_��r�\��Z��K!2 ����X��1f<Ǚ3%�(�����C�;��<X��8�c�O��B��P�~O�=P��X�����;P��t9c�7��BZ��j��a����R�Li�u|� D&A�Y��(�E|��h��7-���v�������i4��K����6�M�����}F�Q�g��g�"Y#dl�d|��l�D���2>E]*��i�;���Nn[�v���W�����+%�X
��W�R��S*�W+Q[+�_+�c,e���,��,6>�:4641�0c�X�c%��ˉ[�f��li������,m�-��7Pݍ�7X�cv7��Cu ��Cv7cv7P��j�2�X�6X�͖r ���!,��!l��VZ�T[�t\���r�]��_�k!���|��|��hØs����Ř�c�y�1�<ǘ��F<ǘ��c�b�Y�1P�i�'4��ui+$�R2��X#0�$�a2��?K��q\��,R#z$ ���L'(Qa��
K�/��1+<�lVxV_VxV8�;�.�<+�TwTC*;�'�;*1+;�ETwTfTxVXVxVkVyVH���>:Dt18Dtn�8�>p5$"� ��рL�"$&�P���w��h �ivV^�.s~X���\G�Q_,<��ڭP��Y�Y�P���+��K>{x����{ǥd:��ťg�d:�ʲY�Y�Y�X�8�� �M]�����U�wW;�rJl�H�H#9��g��Dq�L'H -@������@x������ڳ;ǧ���4<���� ���` }
l���U!�H$hߑ7�/F�h��W���V��}�+!�����J���9���g� �6n8[P�:6��=� �G6��=����4Ni+)H�-����I$2� L8�����b���}�*9�,E �pF��)���z1�5q��W�%Q�U�I�"���1��L��͒ZN�_m;bci��m;d��6�(lMmCm���9� ��Ӷ'4��M%h��V�K)$�� 0���6�^]�Ѭ�YR��ZK�����$����8�U,R��j�Yo.e�.Yw.��/Q
�]rq�r���q�ǜ��l~�Ne� r�3`�� �迗轗h�e�-嬅�L��<�E�����E\��2�@�*)X�C�?��>��>e�-��.e̻���������\l�pwhmhjƫ�������j��q��z�JЕ�)������
K � �%!�'�U�����T� r��@P�C�>P�E��2~=c���������=�I���M-���kK���m6�O��Z�Q��}�g���2-r.F��#Q��G�6F�.E�2�����9�NnS��9X
����X���z�~P�P�8�C�>c�>�����@Y�� l�����q�rz���r�R�Ua&����B� x��x�b����2�h�m�r�x�{���������Z�Y �� ��B�-�>c폶>��?X���������������TʙW*�[+�|��r�Y��; �!2!,�����跖��[�yn�v\˖\��췖�������[�Ֆ���$[�b�vд����)�e��+Rµt+~$ns�,����1ƴCU�� �����<,��bA]*��P�R�����eK)�R�����4�<�ԅ¥������PwT�� �ы��i�t\v����-�mƛm��{i+AVˬ��,4�]�p���ݥ�m�� �y��qKr���OBp�}~7�'�x?����Z���Z���Zʂ�U*
�k*��V*�T�������ȫ��U���tF�$_d��%N�%��&Gq�#�&Ep�a��8���=�|/=o�����c{xP{xP|P~� O�^�w�07��g�rG�}����J�d��Y�����Û��S��nS������r�
�7��p,���ѹ��͠�ݴ��C�3d=2�n����.k��b�AcWAg� k�7-��e�A�,�*I$d�X�1F*��*�Q
��v����h,Z��ɻl,۶�ٻl-�� ����ݶ���n�؂rn77;v؉nm���b1�hF��#��f-� Ƹ�_XW[�#UB�t+ߊ��W�1#>bF|�B^R�R� r�TʶU��W��W�b�9g,��Y�tAQ�Y�Y�h��9b�b��[*�V��S��@X�C�>c�yF�>��yNJ(v�[q�(r�,q� p�yO*eK*YW*�l��쯖2�X��Y�9g,�Y����Ê�} � t5�f6ؗ��(�(�!N�Y��������Q����8���;c����48P����KP���(kƪssr����ݴz=�I��i4�]-%��m6�O����Qj3�>Ϭ�>���dL��2.Eȹȹ"�"�L������7776��n۷)��VD�YX�����Ƽjƻ����m��q�ؖ��o��K�^Ľ�48��9�玶:��c�����6=X��VP�9Fǻ��1��������
2 2� ��R�)e,��K)Q�z1�lp��q����r��(t���\u���k��,y��'����h��x������?c�������e+ r��9N����S�yO)�O)�N��S�yO)�<���5�>r7�;j��������6�a�&�+�f*Z�X\�s�P9%�N5Q�%0���|��oU������GU CԝT����2���Nj@���QtS�(���1)=�)I�Z���+�p Ħ S$#��*�����7ё]���X���6��R�����d �]*��=-N�``�I�8dG��jb8.'��|���^NVxV꣺�.՝�:����Q�S���@�RuRڣ���'�V���Oa�6`/���Y��
^��s���Y���K9a��~9cWl�TS��$��� �� ���y��y�}��}�}��}��A|5>���С�U�����oG�����m}�+!׀���u;�8����N(p���H���\�DrG�<p�Ȝ>p���l��f�5 I����J�6@�a�$]��T�iib�Uin/�!7s�r�t������I8ߌ�oE8���J��Sk��F` \i�]dKN��(��V�q+�@�J�'p ���΁���%p��1\?n'�%���m;`C�LԌ�d 6Q�+.
%�^U�X�/_X)���ٜ���06%�Z�Lt�\u���|xǛq��}��~P�P�4Q�9G(�{�9G(� ���ꇪhx�|v�\t�·:�pľ7Ж��l���h���|f�+����Le�n�z����!o-��;�Ŏ�<cŏ8��X��쟓�~P��C(e ��2}���d���4<��C�;����C�9,8�^��n�-Ce T5cM ������2c1PÌ��*�z��[ū�gi�sssswwwGN��=%$�i4�ZK���[M���m>�O��j5�}�g���K"Y"dJ"dL��3�"Q����G�F\�)�r���)�fXŌXŌY�fŜYū�Z�o�n��]���%�,_��,b�+v2X��)����i��4cE�XՍxٍ��Ķ7cu���C����8��8��X��X�c�x�C��x玙o-強��+�?�O\u`n`h\I�1��<I�%����[lJ�W���zlj��ƫ1���lKXߍ�%�/c��8�c��V9��:c�:X�c���;c�;c�;�������;c�;PM�n㛁<��V���oh)�C��s^�
u�
����¢|��N0�R´F�<�R��V���SJBUtPo���h�"슲 5�D�$Ճi\J�U\0�HUB�W��(�|1�+�Q�KH� Q$х=R#�B��p)��nm�F���Ͳ�R�J��Q��=XON� ��9D� ��h���e��˫ %k�r��%J�A��e �E]�WR諢�؊�(.QiXG���z7�3�|�����E�b-tF������3����%Iq���ɑqa�I�p�����������y���� �������_~� ���{������_f%񧎣OG�������]�+'u��� ��L4 ��h���-�Al�8 wf�wi�\�7�v����]�7|��sl���2��f�6BA��LMpj�kb��l������s����ܡ+%��܁�;�9E���A1�$W�Ă���]u�S � �]p�� �0�8�M��(� �e��K6-.�H�7BIٺ gm�l97���m�`�j�2��[�bl���L��MU�N~��O]�'��������N�K,dĦ%,e�\J�W���|g��,hƋq�hiƜiƌh���fĭ �%(d�Jt1P�C$�^�r���Z�c�HЭ��\�f�q�}���r�2�S�yN�t@�����Z���k�����g��1����|h���f�lJ�Wq)�Ldĝ T1P�B� *([XZ�b�� V�V�n"�T�:8��6!hAХ�X��A����񈨅��8���ܶ�������������4�M&�K����֛OI�5(��{Q�ϳ��>Ϩ�?���?��&������}�g���ug)�or���VD*����dޫY!� � , ,��;���A�����a�������>�}���b8��J��K�!�b&b*�;x��l�u���b�� �X�bś�o1w�zĖ$�~� `���a���b���V@����e+)d ����R�YK l��)�N��v��&�EVf#qb�#�[�b�,b͋X�b�.X�bJ����1��c���'�<I�Ɍ��BS�%,Jc.2�n�t��w�N��̀g����#e#.0� .qe��b工�@ ���
�V� ���e+=�5�=����gD<��T{TiT{Tq�
dPn@��8 p!�t�(Qa;‹ �XOQ)��C䄔���g��H�сb���;�\N�����i+.����V�Z�.�ڻ�Rt��y�T@���r� �o <jVzTh�I�I�L��SJ)�X��
ͪ��U��s� XQa;B� �XO���F���v�L�+-/MUp}��0B�I�,RA$!��a����Q`9@�&`B|��ツ����<�槐�A|�� ��}�S�/'}�K��#�`C��#ѝcz?�����Y��VN.�������� F]�`30���6�q�l�Ȣˬ�e�+YH�����J���T6��Ki\��[J�{I$����.0Ga�.Wec��Xׯ�����g9�',�,rݒ)%��1�Q�����.'.��.��6Ì8�9�LÌ�k��
u�S�#2��,YF�!�l�e#$�R0��6�ƒ�6�4&2�� ]d�Ì*a������,����:� ���9��9e�,����E��D�'6"���EX��x����b�
t*b��x��B+8���j������������Ń�ȄD"�"N��q⇌w���u��q҇\t�Lt�Lt���҅<S�LT�K1R�LT�;(T�R�<S�<S���DP��=z�!qb�)P������z�������b�w��õe]N��*! ��B*b'��Kcm �ۍ�ۍ��Ce���7�nSv����N[���v���&�Ii)&�K���kM����>��i�=�ϳ�Eg�}���g��g��}������OIYoooooY|���(kƼkƬjƫhiƜiƜiƜiƚ�X,�C�b�u`)� �z�-���-�5�<)�*p������tý��XZXZ�[aq�Ň�=X{��p�� @� �J�&!,Cb1��s��lq��q�qƇ p��1��1�lq�q�����Lt��lw�����, ���
���J�a�{��a�����6 �AX�b�-�lCX��b&�U��EX��x.�u�:Ze�9�]�W2� n��EX]�S.��Yu�IU@���5����@Q�q��;���UA+�o� t��`@�i���n��/O����N>�4�@�r��PT!-KC���!� l���d���;Yu�Z6�`�m��V�M��#,4
&Vd F\��P���k� �W�<lB4U���� ��xS�x|@�
�|
���� �!��E5��� Շ��� և�3;*�1k�/�|���^E��w2<�d�nRL�����qq��I���`�&�o�������9�|Nz�����������^��ש�s�ħ�y<Ux����������VD/������. 5�\K��H���^�k�3X�k �ev�e�@�e�@�e�Al���ɖYk-�
�`�2�l0� �����CW���^k����R�
�.S��Or� ��0V�IAc8� ��0^N ��԰8֥�½. ��p�_\�lq�`$ئM��n3L�q��n�l��6�8���ͲFf�K�l���� 4�7XY�m��{���]u�Iv �`hW@Ы���A%��;��a)rX��8���������\E�!X ����`��vX*�����RPQ�GaK0�aS0�(X�-��X�db�ccN3�όؕ�\e�)C&$�'C1P�C0X��/��/��/��/��/�/����C���c� ��� ���l�L�̀��t`)0�‹
� � � � �%� l%V��R`��&e,��@�Z�c�� ��B�-b� �BF��$1Z��+b�+X��}�V�lG��#�HS[[{v��7�Nnnnۻ�:Gh��;G��i-%��֛MI��{Oi���Q���F}gڊ>��EY���gڍF�Qi�='��}ś���VH�Y8�d�HP�B>�Z�#q��EЩ�x���Eb*�N"qB'8��N"qb�)��*b3�#�U�b?��^ŋ�-ػ�عB� ���+�ŋ6-L[�zc�v%&3��(�c}�����q~���Ib�.��.b� t-b�,��,P��,X�����B�,X��T-bՋv.X�b���/ؿc �+v2X���Į3c5�q���ce��%�������q�*�s��p,4†`� �~� �l� �Yu�F�YduT'W���t\s^qJ�G䜏F�5QC
, #0!��O������<D� �<��O�>��o�">M�"�T %p��^���z'�Ge�H���vZd��L�a��0���\�����TE��˧�&�8�rX%���j��,S�,�B�����
�B|,o�} �ϡ����L@�U� /B�/B�PDKe3e� �6��i`�� Z��a��݊3�s�9A�Hd�o����q*�5B�‰m� }
���}�z}�}�{}�����������������x��^y���������VC�Y:�d>�����]t�m`���-K������Ypk���2�� 0�2�.��.���Fi���e+;I�ɤ�B�f@=L�̥`���*a� ��]wY���� ���������ukZՀ󫤵k�լ�m`�R�Y`U�]��\=��e� e�Vi@Z4��ZL���� jյ �҆�G�N�M'h v�3)Y)a#0�p��Y��X�ͬ���t�)�0/�}V��t-P��8��4,b� +�F��
�+b�#������������B�"qB�Z�)P��B��>�����=Py����<Px���\�y��A�8z�Շ��|����/�$�{qw1o�g(Wč����#�FЌ�R�:4"hCP��%
X�����8\PZ�i�����»
��Va��h*�*��¯
�*��a��Va�õ�m�~�����oj۶��ossr�ݷtv���=$�ZKI��Zm-��i�6��Z}=��j5�F�Q��j4��OI�E������Ԟ��ooY�����UaQA҃��RaE�Z �'�'0������k �&l&�����o �'l'��P�QaI0���aOaUa�a[a_0���������������V �B؈���R�e��qZą���1j�����As���Z�gAe���卑��A�
�:�uîp��f�VaYA[a]a_�|,0�����am�Ň�V��a�b�+�!qb"�;v#,GX�1bB�|XŜ[�s�IX���Yu��fh)镂�����h;8I���װj]X4f���*��"F$$k� �����-.�Y�:ߧ�n�< g��[=� w��p�� �.;��x�, Ċ(��q�ZH����R�(SK ��ͬ�4�V����f('�� ]��3@צ0h�X2��$ٔ�� .�f0ZF�@���A] ���D �������)��F�>
7��I��� �d� ���H���C G��ĖA�,R�j�J��V-���(_X��?�����|ȳ�H�܄y.BD�*+��� �L����M�����N|�����>&�O���'?�M|��<M{x������(y���������������7& �0"�v`r�ɀ�[�
;n��٠3)���,��c.��A��b��d m�0���1�`A[��2[��3[��4܉�5ۉ�U7 `�j&�j�l���L� ��{00��6!`(�p�^%��h�
YZ�%�r`ڕ��Jܘ1mɄ}�`�٠X�
��Xk0�*WY�S0� m3M���M[`�nm���\c�8
�%p�$p��p#ۍ�`7@�n&�E���1� �ad&����b&�0 ¸�Z5�������nw>������)�SHt��h�G\�G:8� ߛ�}��vo�~p�39������v�4Y��$��+�K3�>������>ϳ��>�Z��cb����ץ�n��ZU�Y唬���c��E�4nX�F���c�C��.��-�k-e��e��e�/� f 1Y��l��S��y���h�&�H��h�&��h��l��[[[[{v��ݹ���n������-&�I���[K��i��m6�O���)>�O��}F�OJ->�O�������i��m*��+0�&��Z!�T�HZ�HT���c����K�1�C.]X��Ez*�R� (� (����eK+�f�I��^��s3��)�g)��=Mjg��p�\\\W'-ɟR�>ϳ�?��%�2%�2.D� #Y�Yij~��Ǻ<�v��r�o�vm�usvo�����g[;���z �MTว,��mMٻN��t�7���L�S������a����H� �u�"��L�)���Y�,R�~#�Ja(�������5g�F%GU ��4S!�tC<*4>��t}�C��g�2�{x����W�o /�2<{x,�=<ex������+Ƿ������~c��~ ��P'���jpE�&� ��Ġ iII:BB0�t��`p��xm+D�Q�K]��Yz\��nI���SԏF!�E��
���^<�dVwTZRuR%QNh�)�)��3r̆pB!��h`/�zf��UW�H��g,�NI�8�1�)T���ߍ5q h�Dv��o��=�����^C7� ��!�w8����4��c��̀Y�q9�0��F' ��q#M0��Z�~㙾qH�$a���a���a���a�������:b:`Ƙ��!�TĴ��JKJ���!! :##�aFEt28Dp \?p/6��I���[) �8�����LS?�s�s�V��D9����Щ��8 �!�V}�3Ƿ��g�fg�EGuFGe L�d��FAٔ���F�D4��S) l�d��F@YH�-����4Li3A�f�ƒ��J�-��32��K)F`�Ì+.�v�%����ep5�Y�������w�4�+��3d�.e�5��Fi�9��Vl�]�3nm͹�7��ߛ�ߛ�~o�}��vm�nm͔l�y�5g4
=������y�6w����vδuΔtΖs��r�Vq�p���U��e�ٟ3٢�9�5ٮ�vl�nn�vn�~o�}�3�p��8Ѿ�p���7��7f�ۛ3^k�Y���c=s&c�`��~��]X�E�-Q DAe�,Q_r����sssrܷ7m�wwwv��=�G��z=#�zM&�Ii�6�Q��d��% ��A���P6@H`�`m+`��;� ˉ��萱b&J4��MI��������_�����e�,Y�y ��B嬷���eܿd5���,�f1f+1�K2fK3Y�3Y�3�{4f�Ӛ,�f��f�՚�M�h�F�4���f�њ3=�>g�6e̔d̙��tp�q�6q��r�y�9��:g\띨�gk;�|����x�y��s�y�9��Y��Y��Y��Tz��{�y�=�{�,���c����lX�F�՚�^l��p�Vv��6�n�wm�ɹ�:5m���\����W����� $� "�H7���X��T>)�R�.�>��Qv/�_�2>��'��ڲ���y^�m�V[WJ�G�d��aZ����⚺x�뮏.�L8����g����G�PQOi��֘~K� M!I���I�h�k`���Ij���}�)FJ�z�h�xV�s���,�lV���U)��" H���ȋ��k!��K!
�2�ԩ}Et��>�>���?��|ȓ�"��F��"�q������"�I0��߷���H^E� P`=�� c���
{CR<m��dt`�FDt \J�;�����avי:u2d�HK�����Yj����H�UH�1�i�dҧJ�[M4��[J0$��;F2���;�pjrm���Cs3dpb����5���ۻ��;��;�q��q����������Ó�Â�����P�T���U))��Ugh�ʹXj� �� ��!Y�-5m���[E���f��v��-[F�� [F&i�[&Fi�#;F6 ���E�s"����U��l��v�˷̿;�9�^����Cт�9��y�2ٗ3f{3�|њhӚsU��Vj�Y��Tj�UsFi�=�5�$:�z�Ty��<Y�;Q�;Q�:�Z:g<�G*9Q�8Y�7��7Ѻ������;gl���0�,ǘ�&e̹���h�Fh�M�l՚�^j�^k�y�5ٮ�Tj�4i�M3E�6e�&d�Tb�`�l��h��2����
�*,e|��2�R�,�n۶�6�����v�ݷm��;n�;v���z=�I��i-.�M���"dy��d 2���@|��8?�l�;�p������&��(��R}>�M��W��^��U��k�KE抭����vTʳ+e|�e���VA�%��k-Yn˖]��/��!�0f Øs ���c����&c�(ɘ�c�a� s`�|���j/�/ѳ6f�6��7f�ߛ��g ��,㜳�r�s9�K:gL�GJ;Y���v��v���;Y�;�|����x��<��<���g��G��G���3�x��w�����v��ځ���#":7O��� ��IY��l:�-%-�ns�X�
� �q)�+�B}g�j��Q�T��"9Rx�@~�=�%=�³����ҵ�<�՞U����E�<+eY�X�VxV³°�����g�b��WS#"��R�€��}g�z���MO"rj`�L&%�)% X�#;7� &�5L��w]�ת®�mK �C�ډq@������UY�S�����E8��D8"� ��hGD e�Ԡ�=>��@y�m.��� �U�ۻ��a�rϜ��)b�rC c��7� �*��Ug� B|�=+V��� C��ڀބ\E<�E ��M�����U��-���+r�(;I���u��+.7]��O����6 �6FF~�dT�&#��1%-�%$BJH���-�]?pF�5I� 6R1 �%�ZZZ��w9�(LK ����j��Qa$p,���x����*���Ge@�RxS)�=4��JЀi3R4�� �f�i3B-��H�f��iZ��� M'nm�hI6��������M�� �$jl�dJ�����C1l6�λK�0��YzZ�?���嵧,��>X� �Bd.Z��\˹{/��!��f 0ه1Y�1َ̖c̙�2fLə3%�b�$��Oގ����uδu��(�����s�3�o��n��m͔k�tj�9��h���9Y�9��90dt����� f �F�f<ǘ��l�F[2Y�2Q�2Q�2f;1ю�Y��9��|���{/Qs-� ��A��,Q]b�T� h�C�>�� psE�ϙ��oooosn��ܷ7m�wwwwwv����=����&�I���m>���E�L�d��C�$�=����h3P��`�=bu��Dj"��}���}6�K���������3fz3�{4f�34[l�l{�����VR���6TʶU��^�g ����\��Ֆ��[��]��]˶]�헲�_��^��{/e�/eܻ�l��췖��D-� D-tAQ�4f�4f��f�՚�^k͙�͹�7Y�7ٿ8Y���8��8���4r�vs��t��s���3�tΔtΙ�:�\��s�uΖuΔt��tΙ�:g:9�ʎYΎX��6��l\n���&�����%X��B�CWx�;�l��m��`��Ƿ�'�x�
� �H�y�����
�<A��e�t���eeUk*)*�D�V>��EZ�z��*�Xꪕj�Q]�YGn�Nۣ��]�8�d?��*}j�q�<� �m ڏF%���� fi��zXl�ƛZc4�����Zy��U��VR‘�� �D] RBYRE�H�R�����^�ã�<8��ɖ��ֲ��������?�g��D���/!N24�;�� "���L~Չ��T()�5"ˆ(�)�r@�P���{۠ѳ�:�f���W��%HK������x
˅]ブ����:77&�lfmb�i[���>����-�if�C����9]�Jت����"�������л�$���;�_��Q� (x�7����m�V-+�b��T+��"�Ѽ4ªͽ�ջlvj����E���������ݶ@7�Rol���*7m�[���Ͳ�V�e�h�gh�gd�c`�c`�_\�_X�Z�!j����O�K� ��Y�2ļ�Ԧ�ݚ�0�B�W�AdA�-������,�eܽ���^��_��/e���9�u���l�GJ9�*8�Ǝ9Ǝp�}�vl͙��Tj�Nh�E�5�.d�&c�Ta� ��f��f�8g��18BY ���\˶]˹{/e�/�����~��/e��E컗2�ź!r�J �,�X��U��耢��|���4=�A@d�͙s-�3b�a�{{V����m�v�����������#��=�GH�v��R].�Mj&}2%���12���/�� Vh/�'�N�fJ�=�&}Gڍ>��R]5$�����+-�_�`�6a�9��Y��vd̴e��]h��=��'�B�9F��,~��耲�S��S���r�W��W��X�g,圂�9g,�(��h��2�W��[*�W*�L��#vm�9��Y�1ْ̖e�-���f{3�|њsFi�9��y�5ٳ6f�ۛsnn�ٻ7Q����8f��g8g �g 8�
8��G��(�G ��3��ߛ�}�u���4Ni+H�H�%�X��Y"��0���^�T��h�*� �Q=!�5q��S �He���ǧ�OU���𬾬�쨸��� eGeE�'UD�GUE�Ge ^�;)!��6���ʨ���� 22BD��ΆTdg@�t�����A)(�|IP�9)0cJIJ�!����& �h��N��`$s�T9�D����VxViTwR�)�ȆwD$RyRd}��Ƿ�O����Y�Y�\J�*���
��f)*�,�������w;��o�9Bqʉ$RԐH���7�<Ī("S �8�} �k�
�Ug�F�G�@j�Jͯ!���e�`S�KU8�S�h��(FI�2?xތ�����e����L�?p18Dq�� .�N���}��� �l.���m�hOuC��>F'#>F$�wD��+i"2� ;qtk1J뻹f�X�zG�U� ¦. D|��#ǥhj�p">��$'8Qa6‰ �HRP�)����v��Ӷ��v�ͧmSi�[P�-�lOmC�n(l.���Q8��=�)mCbsi�[I�&4��YH�%�X��|�k�����,
�^����廰Tܓ~rM�c�Xe4f�5Y�5ѯ6Y�6���k�� 貱_+�c,���^��f� �s�q�9�8g ���~n�vm͙��y�5f��F|�Fl�FL�F<Řsa��Ce��E캱s4Q�5Y�5f�6f�6ѷ6�����[+e|�e�,圂�9�Y�h��9b�b��Z��T�yJ�X���>���C�z�އ�HK�(�F0� ��l����eܹ����5m����[{�������nӻ�������=�����M%%�R{Qj,�dL�d�%ؙd�l���n&Q*�+���3��Q���m-���]%�X
˹n�v\���2�]��~�� ��CY����Y�ˍZ(49��c�:���<X��Y>�B�8��v>c�����?c�?X����C�?c�>����>e8�Q"4٦�9�4f��E̹�r�^��/�6CY��`�9��6b�tc̙�2Y�3Q�3Y����4f�ӚsNj�Y�5Ѫ�vk͙���k͖l�fk�^k�y��y��Y�5f�ӚsNh����۶ǖ����%`yae�e�Xu��J�w��>�(�,�$��qq��JPp���S���VPV���RʇUT�tSJG+)���kE�#B-)�VR2"�F$]H��e"��R:��A�$�H�Aяn���m���\P଍�b)%I-�����Њb� Umi�IW�?ƼA�� ��VJ�T�J�?�y�a�W�W�xjz��YX�W�UR�$�� j�T+�]Re����?�X�WD���S"ϙZ���)^R,��X�������#�p��� pM�s�x/=#‚��w�|4�8CTU;H���+�)W�/J�����'!.>2Lu&*�YݷE�f��쮋�[� �����$ܷW&��ݶ%e�q��M:�{e�Bѵ��S!Z�0�����^Ws I򅤗[�$a�)c����Q=�q��� B:�P�pp�nM�y�p_n�[�6��(ݶ%[�g-��ɶ59n �[�Y�lor�[�c��c�slvohwj��#�6�����ƹ=zXz[X�]_�]X�}��������$� 9��y�2Y�2�[3Q�3��њsU�Vk�tk�y��y�͙��tk�y�5٫4���f��F|͙h�F:1�:1Q��C� ���r�(�E��� ���,��h�F1f9�3-�l�Fl�f|њ3Ni�Y�2�B�?�>��?X�C�?c�?X�C�>���yG'�=a�(x�ևZ�r�|EX��h�D6_��r���� �tAQf�W��h��mm[���i��}>��ZzM��m�wwwwGh�#���z;I���]-��Y��̉d[#��$䬕���D�#�F�-3�E(��}6���t���`+0\�e\����Y��AdA�Bd-���Z�ݗ2��r�_��~�l��Yq���q�q.��c~%��hr�ʇ,s�<s�<t��(�)VBB3&d̙�1�<�F<Ř�a�4a��c,�g ���: ��;!,�����[��\��]��/��!�!��F Øsb�vc�c�%3&e�&d̴e̹�2�\˙s.d̴e�&d�c�tc�Y��4��� ��iڍ��(ٛ0�m{]z
�[����'$�JR?D� �� B�*=��ǧ��Y�[J�ʂYI�SjN�A��sEm���$WNH��E8���rE)�TS�(H��<����JKKRR@�HIIBB0�FGG"23�F��?pn(p��f�z�FO�H����5�X�[<�rX��z WB��S.�D�TO���x��2��^aY�X/U�#TvT u'U.):�����ԝ�b�\4.����*���\���� :I�����G��~1F7����q*�HQa P���o���/�� �}`E�1+��ߌ �~G$~@�#�7#�������*�h�E������t��4dd`s�Ev'H������"���G"p��a8~��>p-�i��4{IZi���чWe���vV]f(z�_�\\��rJ )b��!�$�~7�z0nĪ(bS8�E��D��"B�P��6�i@�i#����a���q;��qC��~�2�?r7O���G#p��5�?rWO� 7������چ�m3aɤ�M����.�l8�N.���,����v��a�rN��PqK ������,�e��E���k!�`�6b�Y��y�1�Lə3%�3&e�&c̔c�y�1fØ3�~��~��v�yj�Z!2 � ,ez+�Z*�E�y���X��D<F�Kys.��/Y!��{0f �fØ��f<Ǚ3%�(ɘX-0V`�`{XzXw��q�Nj(L~��!!zB���E̷���D%tAd2�V������YJ�
�}������7&���m6�OI���Q�ϳ��?ϵ �Y�����v���z=��it�kMj5}�2%�r5��6F��F�%3��QI��m6���t��I��V` �P�8��x�c��>��c�@e,���yS*e\���Ŗ2͖r ���L��!l����[��\��]˹v��]��^˴^��v��{/Yw.��.Ys.e�-�o-��י�!�!X*�?����������,�e[*�[+�_+�f�6AY�TBY �� �� e�-��.e̻�r헨����^��������^��^��~��{.�w.�ܹ�2�[ŗm�mɸ.�+cShcj��[+�̽�4��j����/ ��� @4AO��S�QZ��%K*R�uJȢ�-"�ȴ�#QiSD]C�,�!D����V,@��a��i,ҋ�m(�K4�YR i- �I��������Ɩ�����v`aau��^��ŋ��2ܢԒ�$��!%
� 0-��ψ��xSV���eB����+)JVE �U�B�dP(vE�RC2�Jc`L^�&-tM�o�>w(�-�d�&��DX���%HE����G����K�� ����� �<!�. �^�i��2t|d�֌�FJ��$GQ⨰���
�sF���+��0�Gh��х�;Fۡ��]����� ܷ3v؊j��"1�`Ub� �q]~������.��gr��r ����� �q �T"�+@,��,A�,?P ,���� �����l
�8��mv�&�l@�n�Nۢ�tD;7DS�tTv����Y�pH9�+�7���q�h\kh]f�Lk�%������V$��%�/]L]�(�/(�' �'S*�k+e|��l�� ��[!r���[��\˖]˹w.Qv��r��s-強��B�%�yDY� ��UʙO h������C�r����2�� �f��e̙�*�k+�b�c,�A�Bd-��k-Yk-弹�蹗2�\˙s.Qo-嬵��!2�+,��,ej*�\�DR��}X{��(��T<��C��:P�C�8P�����Ii).�M��i�>�QJ3�Qg���g��GˣY�G�h���z=&��it��Mi�>ϳ��"dL�������QJ)5��R].���M$���X
��ݍؗ�/�8c�9X��v:c�:㵎�;�ŏ8�d�'� �c�>X�C���?�����9����2�U��V��������W��������������r�r�2�d̙�2ٗ3Y�2ћ3f K�X'����,��x�c司���?������6@�<��2��r����W��b�X��X�c,e�,e���2�X��W��V��[*�Z�FFt0�Dt68~�]mCsm;D�R�Xu���\ue����f��Hp���)����oP�<�1*;*��ȧ$U�(��Cz ��sC!�Έ`hgd3*�ҡ�J �� �B��p`C�y910fL&&)Dġ�)-(=�$� � ����� wO��N�9���Xq�B0���ԃݽ8��� ѫ��
$&�_&>{|���X��쨆RuR&�椆E9"�ȧ$R��_E8������̈xDt�FH�8�b]��,�im��,��r� IhQ����N�"�F�Tg8ތ����*��0�aE��
$'8`�E��
,E��Dx�\`1��7�0��g�ތ"W�%q�U�%1`+/w��C������d�rB*0�HEHRу�B:0����5�3�y�+���#�s��$mCd擴̥d��6#�qs��\OY�r�����,ܖ9_�&$~D(�ă��)�p��p�B�� :��X&2�V]`F��l��Q�Ga L��%����i[%���d�T# .��Mp��
O�&6|�hm;D��������{ ��f���ܹܓ�j��W��URA",��<�Փ졔q��|����� �e,��9����2�TʴTʙS*e;)�@�*)P������>e(QB��ynjw�Z(sXr� x��~`�|��|��l��������졔l|����}���� ,��YD@�S��SʔT��S�vS�)e,����~��|���9>��<��;c���C�7ЖXl������J�- Jx�C0о�M&���m.�Mi���QI�F�Q�g����?�.������z=&��Z]-&�i���j,�Q�Z�Q��R}>��it�]%$����h��$�`� `���v$��1��\J�5���cE�65X׍�6ؖĵ������ lr��1��\v�lw��1�ǜz���z��O�~O��?'�?'���ꇬz�ꇜyǜ�e�/e�/e�/����� �������0��l�YY�1��,s��1ևk��,x��ǜz�}���P��P�9G(�G(��=�G�{��l�E(e �e ��V��T��aX��
�-��nm��Sh-ٛrŮV�}�����yC�u{��<AO���<��T*WR���TE���aF��R��HW��� �+���%��N ��
|`~��Zq��*�`��Ӆjy�馔,R�P�Ii�%� �{���p=7m�������yZ� �[ {Zai:�,$Z0��hB��o.�P�YXN�]PrR�(8QVD�"��z�.� DF�A t0f�Ҡ�S�m����;V�)�`�ƹ-}bbӢo�:�bl�Q:J�O�� �\!z�$��DX����dx���$�g .�� :6+�M���DM���.5�%E�J��$E�G��#�Q`+/�F�F���F���N��: �t)-(3Z0�Ih���h���h���n�������J7+`�j�L�!4Ͱ�Mp�[X(jt_�-�
Yܡ�N@� t��:E�!���8*�>�o��� �� ��"I�d_gd`gdbgdcgdI�l�6Vd]e���,� �q��e�C�l6�]��ot(ݷ�ɶ�����L�T��u^�
ʺ�Xu�����Uϔ*��B�N@���j����q-��7�}���8��v9��:����:��;c�;c�;c���鎘��X��8����-Cn5�V4�:�= ��/��.�r�tZ�TB� DA��TX��X��^���ce�����n���8X��8�c�9P玔:X鎖:㭎�:P鎔:c�9P��48�^��7�Z��l��(h�jq����0P�BJ���Z�aa#��#�U�j´#l$� rG��i4�].�M��R}>��j3�>ϳ�?��&D�%'a�G����v�K���m6�M����������jM���i.��RM&��i4��Y� h����,�L�- -
슋��"�b6�v*؏�� ��,X�b݋��b��+�`���'bO1)c.2ؕ�lf�|h��,i��liƜj��q���jƫhiƜj��r�W��W��W�X�c,圂��Ad�VA�d%��B�-��Z�Ֆ칐L� L�,�L \f�{��ƜiƬk������l��m��m��mĶ6�n6�n6�ٍ�ٍ�6`]%"$a!�0�g���:���M���e3a�,���`^\�9a�5qT*`��Ԭ�� �'�X�O(�@�
��=))I���緀�|��緀�y��=� W�o2���X���/�>
��_]��T�Q�#"$������d�(i�)VJGJ�)&������[i���FVa���Yzg���+�= �H������O:�����–�NȠ<������E<�ETyT�I����/��>�� �/����>��di+R2���Ë�v� +/RW���園� a�Y��U�E�B}+�P�H�c��Dq*�XT�!S ���"S�)�6D�%�Ui�\KĮ u�\U��,J�Z%Q
1)��S�V��wx(ZJ�6���IZN�V��i+G�&hѤ�L� S�F�w�q3m���S�N'p{����4�I��X��KƳ �Uq�����$�Jg$RI$���QĪ.`z�U
ꟁ�/���Y�F� �f�F�+�F��H�,ZHԬ�hl�jm%dm%j�J�,J�M%d,�e�R2�(�J�6@�a�0�@�q�Xmp0ezYu�T)o����00�$�K�Ae�X��A#��b���[�s�^Ė/����c1�Ōxnjx��'�t1�1��C0P�BKT.йB�,н���_+eZ*e<�����?���>��C�x�E��(�����VƖ����1w�{X�b�0c0�1c 60�1c 8�c �$�^��(\�f���#B>�U�j�.�JT"(BЄ�J������!(P��6<��;�����c�:�=��i4��Mi���M���}=��j3������g�Dȴ�wtz=�Gi-%���]-��i��m6�M��Z].�Ki)%$��KI����x
�鎘鎘뎸뎸�c�;c������B]���}� ȊhA2 �6l>X}����@؂�,A؅�6!���X���x��m���#�W���k�V�lV�j�Ć$hHbC?������?(Q>�P�G(��x��x���>��?c�?��@d���dSʙS*e\�el��������u�E����Ն�hh��Ƌq�ln�����i�S�@L�0�iA(ӭ�.4 �lͮ�0ZY�^��x�l�{X�t ��/���|`Žp� `c�� Gހ%�UU���~'����|yg���<��XZ+YXX+����V�S���x*^�
w������q��ݶ�
fӶ ��6(�t4m: �Yp�4`�v��t�/�@�c\���u�0\J����x���x^����w��zW�^�E`t*����K� ��������<�M��}g�����yg�q�|&_���m��$1lX�%-t&U�ۻ'N�N���� �\Az)������<J}��q��#�qa�$�nTW ."\\D���Qq��$��G��#��F��� DF����V^/�e���j� ���i���oh'� ֭��kl&Za�p4�@�iv��ˬ��Z�-� fZdFd&vAZ��,R��Z�*���nv 9�`���ԲH �$�1�2��@k����� �G�
f-����S3L�6v��6�tj�
vm��j�
������V�m{V�X�m�{Ahմ�M��Ͳ��!���؛���K��xZ� z� j���-����a��a�r�@�YD$�2�Q�9G��C�BY�*��Ȳ��`E0!W6 �Ab��X��X��X��,A�"$ҋ1�1���1�$(�B�B��ynjw�ڇZ1·,r�Ƈ
�7�݉lKPۍ�6c^5�]�XӍ8ӏx�c�>c�>����E�.ؕh\lF�!8�� q�
4 1��?a�`���Xx�� z Z : ����"!N!f!��A��m��l��hh���{���Z�%1��� <c�=�ݴz=&�Kim-���kM����Ҍ����?���?�&E�&��i�G���ZIi-%���m.�K���t�]&�I����z=�G�h�Y�����;���<c�<c�'�;,d��1)��ˉ\J�V�k�hƋq���1�q&��������B6�e
�)��)��#&*ح1bb���Ĝ�4�d���ģ�O��'����2}�4cF4cF4Xэ�cE�Ӎ4�N4�V5c^6X�cm��6��cu��߉|p�q��+���Lu�lw�|xnjy��ǫ�z���P�C(YB�9G�{��=��=����f��%h��VH�$d �l�a��6��������]�ӎ`�"�F�����B���_<�zx����,U�U�����U�k*<+6*<+DVyVqV��m��� �yy ��ȏ�l8��[j78Iq;`ͧl��V�դ��2��l8Ë��9���U�Uw�rL�,R�J������,7
���}�c�����5�zx��ʳcǕf��O^=+�x������ǐ;���D4��[I}�X?]��� 9KS������W��5Q��%0�+
$�?y�C�$X��*�h�Dv�L ��LGx��q*�������*����v�LA���*����u�L_U���]��:ӭ#h1����%hݤ�'i+A���4��
��4Ei;BcI�#���
6�4Ii3M2��K)�a#vaK.DY��m,����ۭ��ywl\�a����(D��,�Ha�!�6�i��m�S��.2�ˬ�e֏�F�v�4u�����m'l�چ�2�P�%� ��v�m�h�I�Lմ��S)�e����붹�̬�K�J[@�k��ݭ9fy�g9�(э8Ӎ8ՍT5cU�x׍�6cf6cf6cf6��cf6cf5�׍�5�ՍT4�F4PωZheĦ2X�C 8�C %��(\żY�b��W�^��$1!��+b?���\U�}��ٍ�5��Cf6cf6cf6cf6cf6cf5�] t5�^5cM 8�CF3�= �%he�LI�njX�C *h\�n��(WĆ#�U�B6�f#(TXS���Db"�>!��lBЅ� �]�wwG��ZJI���].�M�����}F�>�������"dL��J�;G���4�M%���4�]&�I��im&�I����z=�v���V`.!1�<R�,R�+�J� �J�+�AP��X�� b�-�[�!�C�#8��O1b6�u����lH⽋,��-����$�Ib��8ÌXlj<I��bR�[q+c5��ύ4b:�u�؍���FЌ�B2�^#1b3x����FP����ثb?�ZĆ$q_,Y�k�\���ؒ�1���I�O�%1)c-�\f���h�{,iƫ�jƬkƻ{V�4� ��A�d$Y���_\K��J����7�4'R�:U�\u2!��� ����<��T �T��K*����Jʁb��ƪ�Ī�ª������ ���$�q?5�������a$�6MmI�hL�!"��A�\���̥�=`Ƶ�sZP_H�a����+� 7�|G�x�.�j�VU]+2����Z��F�e@�W�U]+Q]+I�V���j�'��DF��+6���J��)k�_v&\�L��N��M�q��TAv������y�Ւf4\Dx���D��"L<D���1T$����TDx�"4W .4\$hj,<8
���(�ep"+��i�3Z���5M��4[T�mm�ݴc{`C���n�=�[E�&ܭ���Z]��
vedL��+��W�"��ZE��-:�K@���%��s�`NY�s�r�PeKr�:Y� e��^���v����]vf��������[ 0
�Wd �i�6��3{��opNM�U�n�ܮ�䭂Ź[�r� f�h��d�f�.ؚ��bU���� U��2+�fw�:� ���`ӟ1��*P��LT�^*X����B/t"�T�LT�S�SXS���DЈ�Ez�!hAХB 4 0�A�`�a�������Z�iAg��+��+�+�+�+���.b1
q ���x���i�#�U�W�#�B6�j�6�e�EЋ�]
��B*�U��F"(CЅ� �J�B�h=�y��AsAm����z
�;Pv��AWAR�TPt���6��Q�Q�E�TT8P�P�E�8ôNnۻ�=�G���4�].���m>���-=��Q�}����2%�2%�RE�����IH��M&�I��h�&�I��h�z:G��{���n��+0\�T�˅�=���M�5��8La/Aʃ�,9a-A-���,9a/����8MXM�;��[

+
K
[v�
���XXX�,𴰶����a�����?X��)X��,�5��"�)�/�އluXpXmXg\dX_\[\H�#X+5���r�Y.�:��
kxs���K
|*0�ªaW�[��WXW�Xae����������l=������@إb�&!q �{"�EX�b���F�:�v*�Z4�M��@! �ˌ�� 0� 0�vie���o��z�)�,x��L�� *��Dx '����Uy*@S�O��} �W��y �7��)
��+��'�;�`=b�3�p��pƃR���iZF����F�h3.2����e����Y��ɫ��{�`r�*Y��'�nPs���/!�ȭ ]+ATʩT/�>��#�_D|��W�E� 8�����gh��nH�;��u��ͤ�&R36`2.��YzJ�{��9e�X� ���*�aE�p��/�?o� ��J�@����%QH�E¦ ��x��(Ī*�LB�Ja�Sc�L5
�C(��(��`+/W���DZ�:ԱjX�jX���w���U�\��.|�,s0� �q����I�i#+4�� ��56R4��6ae#@ �iS(��ì)a��;WidU�X3H���[E����D�`?���twZ����jX�jX u�Y:ˬ0� �]��Cis�` �Hì}���l#hݤ�.�f�q4��i#@ $fVQ���6�e�@@q��mpe�YZ��u1OR��ھ�)���:xs����������‹
,(h(0r�?����xMPL�1�*T�<T � L� �� ���]`kP�� ��9���H�tB���.ؽ�ؽ��/b�$�~��_�
,`���,;,�U�U�U�E=L9�SPR�Q�C���~�z�v�j�f�^��A+��`p,� Ł�@٠lP5��T � �]&���cPT *�" h��`��&�
h�� ��@�)�#�V�[�*⭈�Gح� HX���ݷw-������M&�K���m6�����Qg��}g��,��,��a�H�z=�IH�z;I������G�h�m#�wwtt�;��� #�B6�f"�ST"hDP�� B�%LBb�
X��X�\=��{R�R.�%���I���z. ���1���X� $��0eL� )��`ט� ���R`��J�9XL�M�'l�

I�6,a��� Ib� ���x��8�B�$q!��+b�
��b�*���Gb;qV�Z�HX��Z�FD*����\,�
��p�\'X u�Ƹ7� 5�N`ݰo�S \%�&,&���V��S�TaWa�
�J�� ��\��Xe�X�5@���5vp4v0!�Ł
���Fd:�R:� Y$� ��� ����A+"W-�U/��dC ӊBNbQKL�8�z9c
)$�*d�P�,�����?�9���0=i"��]��z���g��P*)�5@D)�mX�f`@�nP�� �� �� .��0��� ��� 8�� ����*�nq���1DlP� 8����6%�PnK$�+,�����)'$ì⚆�Ϛ�?gd���jX������}�n��9�L��b����>���`~�
�br�Ց����q��#Ep���#Ep���#C�F��#CP�b�"E�D����Y�naCl�K�V �r��mX3m�&��������ˬ ��\��\U�`` �d,��)�Y�S2� �f�;4� ,�)X�]��R����\+ʸ�D�,�p"�F��B�/։`d-
�"ژ~�3 Y�a�٘R[V[6� :^��Yz��,K,�H�K�A��h1� ��E�d�S �ef���2�4�1��A�Ͳ fi�b1L �� �y/lyWb�X$V�`k-"��Z5����������ﺺ��]J�k�;�t��V5,l���YO����;gl�������y��{�C�3Uo�S�wk�V头�]%$�ii&��i4�K_bml���ƽ/K��Tk��"ǥΫ�W6,fXı}b�^�f)��5��4��3њ�ٟ3�|�f�4ٮf�7Y��vv�Ş�
�-U����z�]��{��ںosn��ݧww)�oooon���ݷm4��-E��j3��>����ȔDȔ��{��=�v���z=�v���:vݷwwwwwi���V_�Һ{W����V��j�T�Hk�<,u���5�h�2�L�F!��E�.�{/Qv��~�l�� ���f{5Y�f�9Y�gy����ګ~p�\|||�''-���ȲM&�II).�Mi��m5��k6��:���k)YB��y����v��uιڎ�w��x�՞����o\7%��klM�n�ڦ���ccccc_@�~�������������������������������������������������������������������������������������������������������������������������������������������������������������������_�}�w��端��/_u�W��*,A@������������������������������������������������������������������������w�����������������������������������w����ޝ{��9������������{�����}��<�su��su.W�������}���}���_����kkk������������������������������������������������������������������������������������0 a�� w|
��1Fa�a�� �$�I(�I$��(��0��,��,��0� (� 0��@�,��,��,� 0� ,��0ӌ4��4� 0�M8� 4ӎ��4ӎ8� 0� 4� 4�M4��8�N;�;C�L4�M4ӎ8��8�N0�M0�M4�P<�L4� 4��4�N;���<��O<��<�?�C�@���=�C�D=�8�� <��8��4ӍC��������l��?���@���@��<��8��8��8���<��8��O�q����?�?�3��8���;������� ���M�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������C�D?@?C�d<C��C�C��C�A=8?��8�N<��4��4�M4� 0��0��(�H �� q�r\��~d�� &ḢRrIq`-���I�I�A&$Q��if�|�U*��⢈�%&�:��QҠ�Tp�nTp� �G
��I�iHo��R�A�RJ( �������B�2Fd:��H��i'$�N,Y&���V[9�����Z�EGEh�D&�Q����IQ�Cb��p�2��Q�A�R�`2�CiH2�CyH�MJ ��4�[aO�QD�#�P��Qң%G
1A�КPht�ё�g �&����8&��h6T6F�f �`�a4la��l�l52a�0�a�0<� ��K&�p7 (4�LDq@��DFQ*�[im��Kl{m���ۺ{���D���ֵ�Z��"굔�UUTUT���T`.K��ˉL��$�ì��,��ZI�$�R,�R�KH�-��λ�-j���)U&�DBj%*:�4D6*8T„ʆ�I� Ґ�RyHo)IHm)u�%.R��B�2Jd:�I$���9$�rERjH$Ċ���,ۧ�����*8�Q&�TBj��2Tui*8T6*8Tң�Cb�ʃ<�7�`w��Ґe��������$: G��"���J��BA@U(B�$��R ����l���f���) G,$�CT� �A8�K4 �A��h\p|�#K6b^���CÁq0x:@�@( %pTGAP�� �+�1P%" h�P'(�N�9�h�m�(�#
�� �!
f���` � ����ç5%�����Sf�S�N�:|��z��T(Ph) # ��IH�)))$ĢJ%�2LID������J%�D�R)"��g$ٓ&)�_��������� X�T��tp.&�At����T("�C*
�@�T EAm@4P'(�N�9�HR�� �`���T0M���h?0Mf���N"jK���tHt>:�@
B�%�RT�� �*�"!$�ʁ)j��l���f�6�%�儒�0,L ��
L�B ����4�~���&,)��RX�� �4`F ���D1��b�1h�AeR����֬ �V뀓pU`nZ��jJ,�Qe@�U�QVPr�(ĢG@D(Y@� (�@���*(y@�(����F,1��,�` �L��0y�e��b%���0b԰E��5&�5���4���^��ڨ��Z ʲ�j*�@G*�� J��"�eC(����ZQ�
�G�PP��
PC�P.��"쓱'�*���EQ+D\�%F
�
JGQ�(�|rL''&�ca95& ��6 ���$�raA8�PNL('&dä���ᣤJT�Z'�������_������J�k�kZֵ�p,!d�PY3�6`��\a2�C1E-LIh�9jX � IT���� ����ר�lF�բ̫*��� ���J$��:B�.(y@���@A(<����JP��JP�e�'0�`
�&X��� 0l���b&�����Z%���KYj�R�%*�� �`n���nV�nF��e@ڋ*���$e@F(��i(��",�qA�B(<t �����LP����: P���H001A}�� , � �� j���@������<`�XX�`Q��� �'�'�.Aq@��
0)��
��;���]@����� �.���_D �� L J5"��A� Jfe IX����� _H� [P-$�� �
���v�:`0*���
0(@��q�� �'�r �\�A@��SP*(
�ʀw�e�,"��ځq@���D 0_`��b��� *���Tٳg3gN�9O����z��T(H) #"�ddT��RRRL�IID���JI�I1))&%d�I�1&IH2*A'���%�j�,O���% LX ���� �} ^HX [�i�f� ��Āv�9`U`T�M�I�F.@�����| ���T
*(
�U�@;�y����a@��/( �.����@�������d� %(1@̠���VF6&%�
����� l L ,
�<������
p)0(�(Aq���.AqAq@���I@���V€t�`���� ��[D ��� ��/�~5@ʠ� H���5,ycF�0�0d��;0y��`�8�,��Q0����f����Zl��v�+UE@TD�)D� p*:U�(�Re:6:�Q²�ʀ<(6PyA��%�n:4:�A�� �Xɣ�8���`��L���ËR�,1L8��4�I�M%�� )�|=uD5*�D�P���IQ€o(L�GI���Tp�(8P�A��� �8(4:@tht�����e�5(�ćR[E��x�UJ�U��Q*:Tʓ*�A������#�1�v8�"L6&�RjL4��h7 �`�6F�a4l��Q�0И ����R`�8$p6���p���t\��S�uշm�v��߷�������U��U��Z���U��Q]` Xɣ�ph�FL`��6`�O0�Գ�@��S,"�-�H[��Z�V���4JH��T�(�BeA��o*8U�&PL��A��EN Pht����ʀ7,ycF�0Ƀ�1��f0�-�r@Q0�,��S,��1 *$��[U������
��VT� p*:U�(�Bc����
G
����(���@!ѡ��C� �F�H(�'0ODE@zT� T�@1D$�Q�@��LP[�1�- I`H`G`F`�� $�Kx+�WPV����exIP��&  �T�#�-@�Z�1Am�5�%��Ae �� q`��
e�����OHT��'A=��AL��j ���Q�@��LP[�1�- HH-0#�"�e�f�b`�x+�Y�d�Z
� ����� *a%AaAfT@���J�)@���kRAi EHIH)� �����zA: �dɌɳ�:k:z�=������(P� �HHH�)))%#$Ĕ�JJI�)%RQ&EII(�%%%%%A�E��fK���W1_�����Ĵ�'A=��AQ �@/DBJ ED�R�5[�1�-�! ������,0X�� ,��h+AZ
�V���� *a%AaAfT@����H�.�`M`JH ���ŀ^�U,��Q =H��`��9�{��@tT���P �T@.*� ��,� E@��LD� � iKC;3��� �ux+AZ
�V����� 0����Ae@�:�ҁ!@�b��kRAi ���� � �XiD�� ;H'����h0�� Y`g1� FK#��d�2�� E��f��y%� Il��a�v�.�j���@���QD h� _*�P0�D�0*PJ���UJ����(��J(��g(�� *P �9�M��`�f��b1L FL)l��\�`,���Yi�KH�� Ͱ+��u�p�.�@��* Ȫ ZEQ�U*�T
�PJʃ IP�RP%�@b(��f(���Q�4�tyr�J��"Ւk%EIUD�TQDT���U*.RP`�t8;�(�trL>NL>MI����rq��mI��ll'���0���NM� �$�rq��4�$pTp��
$��wz�����b4�^�z�z���kUW�4����1��b1����� %��K, J@��� M� )i�lv �������������U/�R�a*�P`*T�0���T%��FP%Q�3�Dt�J�u#�h1@0���k0�Ia(Ɂ(�`�[,%, ,�0���y%� ii���� �`��w������E-���|�%@�U��T�Pa*� I@�RP%��E9DJ~QG@�:X� � ��E`��J`��"�"B!(Da!�!0F`�0�, 0��� ��3�p��8g�3��?���B
�4!B!�C�5��jx$A%A)A-��tA5(,`7HF�V l�$� ���L!�C�8C�$�(#0F�@�?P� ��3��>�p|���������A�
�!����"($" (�R�Z!B4#�&�q.d�5M��f͚Κ�O�>{>z����B��BAHH��)I�RRRQ%%%"ȩ))&EIII2L���dd �f�V�����W�����������b� ��#B+�%0IH$0��#p���%��B�&� ��� �~�8g ���j�|��3�p��
T�
� B!�DP�j������B4#� ��@p�8`��n���4� LX$A�Ca! �8C�(B�%, � A���?�����8g ������ B
�*��!B!�8DP��"A
(�R�Z!�7PM�R�,�q�L8��8�%����Z�X������VI�=�� -��`'���٭���UGU(��
��Du���Qh�*�ңEGJ�*8Pd��PEG
��(T�2��BeY,��q�,��q`�4� 4��5#�1 +�Ğ�d[9��4��fw�j�R���R����TGQ*��%&�D@X*P��QҤʎ*8P A‚2��"Pp���2�ag$�LH�LH�[�,Ǔ�E@T��*6Tp���2��PltGFGF�c��8���lLD�ReI��`x �Dl4�l&��6 ���hL �����jM� ����lLɆÀz&������:#[����t�^��p5Z��UuZ:�h��U�Z֍zѬ gD��IgD��`�K@�Ryf�=&$d���ZH2�jK`ZZ[��{�R���R����TG(����*:T���F���&T�Q���Y*8TFP�B�
��a��,��,�q` 4� 5'ac�b@WI�=%���R[{l�ٷ� �����*QQP�*���De��D� *4Tt��Q£%G
�T�ARe(8P7(L�=�$2�0CPC`����<`��8`�A�0Pp�7P�C ����6��m�B�_�mо��_ �`��Ca 僈`��A��;Py �8b���"���z�Cb� ��:��8`�A�0�� �`���x`���/P���0m�A�(6�e���7Pn�� �`��0�q 0Pq0sj ��4PBPBa��J("(=R�)lɓ&�Y�f�S��ӧϞ�����
$����dddddY E�d��Y)&JJJFI�R*EH�&FE�!A���]_��W����U��]W�U����z��L2a�%&F A��s���8��C ���� �|0�A�A�A�B� �/��n��A��o !� (8`჈9��:Py�T�����eH=��=`��&�C��@��;`僘8� Aʆ�C7�x^�|/����^���_н��/����� ��C7a��(8PsPu�@P"PC�*���z�9-)�Ґ�[, e�QiH ����$��$��a���a�p}�����P�UA����UB
������h�B�T�T�%R���%B1U*��J���%A8��M-)Ť�KK,��d��D�! -! 4�3����6�>�\p}�>���j��@Z! ����D�BF�D+*b�T�R��U����Q* �T�ŢX�Ա�T�t�Ցj��URJ��"�EQR��%EJJ �Qс��pr8'&'&&�a��&'&�Q��m���Ԙ|mI���a�ra�q���p<NL88����;�����[�����Z�}z�Uj�k�V�����'� ��!�X%���R[�Ya4�$����2ZBl 6�6�>�p}��ڃ�j��@Z!D�TAD!"��4T�$TA%�A0���T�&��P�D�KJ@pYiŲ�,����d��B�BU! 6ͤ � ,� ۃ��>��j��?UP~��AZ�24B4B4B"*TȩPJ*�A,���Q* ��P��@� at.�ж��W ,P�¨R˜S
aKDLD�*!�b� b b�1@�(��C(�"��J��L)�0�(W
�+P����B�[ ��� �s� X] �l,ad,P�B�
�\*�,)�0��D�LB��!��D* �� �A� (�!�b%(�"�1
T*�P��Jµ
�V�b�����A����.\��婓ٳf͝:t�:r�>{B� B�!!!!"�AHȲ,�$�d����� ��"��Phz��_W�W��W���گ���������A��X\����Y
�V�[
�S
�U
�LE
b(�"b&!�b��TB�� �"�!b Q C�J"QE
T)�JB�U
�+����Y aj�к@��к T����Y ![
�[
�W
�U
XS
X�DQB��D1� @� A�1@�(��C(�"��J��L)�0�B���X��B� aj��j�Յ� 4� 5 CI�0�
�0��b@��Il���-���x��i`����BUX(֪������UAM��D����D� BD�%Q(T�GQ*Tt�,*Qҡ%&����"$��I�T�Yi1 Ae��Z@*e��l�����������Tj���
J����R�EJ�(��Q!"Q���QҨ�(T$�*P��R%�Z%��D��I�Y%�[a���(TUJ��E��ƒe��������ば�$�R`��j6��h6��BjL4ca�90�l Ɇ���0ԛ&��a�90ؘ7&L6����۷[���^����ת�Uu]UUj�����V��U��UBIf�bM,e���ԁ�ZLHci-�T��ZX)4����m�?�u�P���AIQR�U
����T@��TU���R��Du!�*P��PXDt�B��A`�bLHbKI�LIi- AIi-��
�m-)&���
6��BUX(֪������U4J�U�J"U���%
�T� DDu�GQ (��*Tp��D(��'a<'���~��vP�:ì:ì8Ð�9F#v1��x�b0�#��aC��a�!�uC��a�C��=����0��
(� �P†B�O�����~a�uC����9C���F"�b.�"���^1Q��aF#�r0Ð�0�;�����~�����Q
" �)T�-K�2c2dٓf���:t�z�ϟ��|}>>�
����dT�#!"�ddddddY##"�H�,�"�) C�kZ��U}U��~����W�u]V�_����AD
B�N�va�~a�za�v�8��r�F#��b1�(�b0�#��b1�C���!�vP�<��yC��?�O �'P� �" �!C
P�B���C�?C��=0�8��a�r0��r0�#��aF"�x�a�F#�‡!�r�!��v���zP�(~�xPˆQ
(Q����H8KH`�B�����i���`��\� ����Y��p���P�j-B�U@�Z � ~�����tUn��D"�A�UD��A�ZA�i i H^���6 �H%X;����Z� *���X�,�YU *�b�-Z��Pj������T#D/F�7EQ
��H�T�D�&\��I��{��Z!�*�%�$T��TJ��R��Ab�:,9Q��5&&�ä�0�66dä�aѵdä�ä�ä�Ä���q���p8NO��������z������Z��z�j�Z�}kZֵ�j�H:JRH`�A�i �H6M��l��V�5v�-�X���c��B�BŨZ� V��Z �U@� ~�Ȫ!z4B�Un��R��PvV�;KH9KH8KH`��n�A�[ �`~��>m��V6��akp���,�g 8Z� V�r�.ET�� QT@�D/EQ Ѣ Ѣ"�����:+DR���(�b/����Z,�TV+QE��H���M�(�N'���q8�N'�15��R)�����b�eb�h�^/�1u�#
Q�1�E��x�Z-b�+�(��EX�Q���q6'���q&'�(�N'��"q5�E"�F+�ŔV-�1h������ŒC��M2Թr��jZ�2lٳT�ӧN�>z�>>>>=��B�
$$$ �H�EH�HHP�R2 ������������_^��W_��U�^��oU��U�UT9�1��^/b�h�Z+b�X�QE"�H�M��N'bq8�N'���q8�R'QH��E���b�YE��/����11�Fr1c
1�Ţ�h��1U��X�QH�R)����(�q8�N'����Q�15��R)�����b�e�E��x��F�aC�Ę��bH��rLaC-��҂R�i`%4�Y�,��������QU���5UJ�*8���(� ����%QD�#��Dh�Rh�DF�DI�QRbNI�"�I�-"[9%�����Kif4��Ym�F茶Uk�5�U U*���(�E*� �UGQ*��%QD� ȉDI�U���D� �Y�
yb"�I��dI���I�u���Q&�DF�*���b�e�tht&�@�q�e �� G�L5& �0�lQ0Ԙ1� � ����l5&(�jLɆ��d�Q�<���%� ����lM��]�wrۻ��O�����U�UuU��Q���UU(��׭�V�`&$����E%��[ �ZMIm�c-����Y�˥�����J�uF�j����UTT��P*���Di��"Q=�Qh�D7D�$�(��LI�1�I�9���%��i��i`%��Y��n*�m��-}UUEUBj��TTqQQ�QPQE�J�4�TG*��*��% �(�4J")�E"�N'Q6$�Q(���1&JEIIIIH�)FEH22222
E����ddT������bJ$�Q(�Q(�N'�(�R)�E"�F'��ؒ�D�RJJ$�IIIIIH�����ȩ  FFFFFEIH�)))%%%$�2LJ%���N)�E"���M4����R�ɓ&3�lٳfΝ:z�>z���*#�
(P���R��!!"�d$
BB�BBBA�d���u}U�����_�U�W��U�W����X�R)�18��D�Q)%%%%%%$��)FE����R2*FFE��ddddT���������))&I�D�LMD��N)�E"�H�R(��q8�J&ĢQ&$ę%%$�IIH�222222 ��� �dd��##$�ȩ)))))(��(�J%Q5���QE"�H�B�D ��(M� ����i�í������Î�8�Õ��TcQ��sP��:�-C�P��!���D(F��"h�Q�!M�aBU!Bl'ia�a��m�[aׇ]�.v0�c�\b�1�T8�.V�ըuUC��>�����!B�#DB��"EQ,�,���Z�it��OJ�����U"��H��"��e���tTu�
�(���� �Rb���ɩ1�jL`nL`���� ɇ ɇ �1�l��91�rc�������_��~�z��j�~���U��kZֵ�j"m"� m"�P����Vvm�]���Ï���c�*�qj\8�C�Pꪇ���UC��
T(Z"h��!F��6 M�� �'vvm�����]�[�1�8��8���j0�jZ�V���y��U��!B4B�Z"h�V�)))&EH�����) ����B����=����
��4#�z�T(P�B�
*BA�dIH�Q%%%%%$�H��) �$$$$
BB�B�СB=�AP�A���PhP�B�����BBBA�R*EH�)JE��+�j�4�KM2�̖�fL�2dٳT�9�:z�ϟ��z����hP�B� !A���СB��
A��* ֵ�־�ꯪ�_�W_���^�W�U�U�����I����R222,�"�)
BBBB�
(PT{B>�
#�G� �
(HHHHP����d%#"�))))(�%"��## ����d$$(P�B���B=�c������=G�(P�B� !!!! �2 ������������K m-) �m��?iim��/l-i{��|+��aekX[U�***���򢪨�^�U*����D� ���*�:Im��`�iiH^�ii`~������m�������[�+��YZ��Z��QP�QZ��|���TB�*��U�J��UH�EJ��1�,��J�jP,ī-���-�kF�D�(�P�NTp�% ��*:4:�� ���ؚ$�b`|L6&��R`~L5'&��Rra�0?&�d�R`~L6&Ɇ����l9&���m�owu߯^��^���V���V��UZꪵ��U��Uj��m,�2�e��%��`|��K �]��l,m��º����������\��QP?TUJ�^�TU���UR���J��Qt���`ᖒҔ��--,�[iasKm�֗�Yw���W����amV��\���*���*�z%U*�`�TQD� ���%!! �2 � РЏT� ||||�||��z�S�ϟ>|���ϟ>|�������������GСB�  �2� �2 �B�B=Pc�1����������|���ϟ>|���ϟ>|{=G�������������B�

AH) ��iTҩ��J�K�-�2dɪj�6l��r�:{>|��������
(P�A�T(P�B�A� РР����W����z������W��u_���U_�U! �2
(P�Ǩ��>=Oc����ϟ>|���ϟ>|�����|||||}AG�B�  ����� �4(P�B>�||||||��>{>|���ϟ>|���ϟ>|�>>|���Q�(*$��R
�!m�6�gb��Wb��Fأq7bm�-�;�+��.K�����-D��K�-D֢kQE����"�*����Y"��# �d�,�U�*�Q�(�v&�NؖĞK�nK�V%rZ���\J�&��j�&�Z�*��*��DUh��D]��Rd�Z�Yr�-Rbi1*�vsάz�z�h�*�H��$R:H�tHuGtT�&*NLTrLX��'&,MI�d��ɋ��'&,NLXqI��'&�z���[������n�z��U��Z��j���kZ���׋�v*�v*�UأlQ؞��bm�&��&丕bW%�*�%Ī�j�&��kQE����"�*�E��,���*�
�.�E�b��[b��Fأ�7bo�ؓ�'d�J��.J�J�$�Z�.$�Z�*���UQDUEQTE���4FTG���DZ��{=O�=�>|�t���N�:r�5�5�:t�Ӧ��T�ӧN�:r�:t�ӧϏS������APh1���|��S��gϟ>t��t�ӧN��N��N�6t���әӧN�ΞΜ�ϟ>s>|�|�=G�c���^����i��e˖�)�Ե2d�6b���Sf�ӧOS��Q��=G�Ǩ���(G�(P�A�T#�PhOT��Z���U��~����j���귪ޫ�����������|{>|���ϜΝ:t�ӧNS�NS�M�:t�t���ӧOgOgN�>|����g�c��|||}>>=���Ϗgϝ:t����t�t�ӧMgMgN�:t��t�:t�ӧN��N�>|������=��Q���R�if��Xd��ii�[pA�]�������<�j�UZ��j�*��d��EEQR�:�� Q*�EEJ"U�*� R�cK5���a�K1���[pAm�l˦��������UkѪ�TT������UEQQ�QP�TGUGQEJ"UN0y��0t��,Ԋ�bPI�u��ib/Ԛ��(�`Tt��Re
(GF�C!ёЖ8# Ƀ �nL ����lL�0ԘI���0ԘI��ԘjLɆ��2a�0<� I�a�0<� ���Kwm-�n���7�����֪�j���UU����j������UQUP��ƖkK1��M)1���m,ZYv̺^�����Tj�X ֍T���U �*��*���*U*�����*:�T@j��ZY�,Ɩ4�ZZYv��v�n������Z����kF�QQR���J�QQR�U�E@j�Q(���(���D�����O�:t��Y�g)�ٳf͛6lٳf��f͛6b�6lٳf͛5M��Nf͛:t��s:|�9�>|�����)ӧM��͛9N�9M�͛6lٳf��f͛6k6k6lٳf�����͚�N�:t��t�9�>��n�t��KM4�T˗.\�dɓf3�T�:t�=Ng)������||||||}
#����|�A���_�_�]_Uz�_�կ�֫�꺮�z�~����|����t�t�ӧN�͛:l�6lٳ�f��Tٳ�l٬٬ٳf͚��fΛ6l�ӧN�>t�������S��t�=�:tٳg)�Y�Y�f͛6j�͛͘6lٳٳY�f͛6j�5N�6l��t�ә������6�;$��VI�d[�y ���C��*��+B��A]� T�T���UR R*�IjEUI-I*�IUI6�;$쓲NȻ"� �!m�C�V?���A]� H*���U"�$�$�KD�5E�ɓ&2��Բ�R�J�ݘ������z�=*<��@���!�$;Q�!���91Brb�Ԙ�91Rrb���IɊ��&�� �b�Ԙ�95��z���׭���n�z��]^��U���j�Z�W^�Z�x�VI�'d��NȻ"܆�;!t:��+��q�t�t�T���Z�UR+RKRJ�$�$�I"�I�I�I�E�I��d[���==�}Эq���>����U ����UT�Ԋ*���%�$UN�Μ͝:lٳf͚��f���2c1��fMS&L�2lٓ&L�5�1LSɓY�k1M�1M�6l��fΚΝ:s:t٪tٳf͛2l�j��S&3���2dɓ�&)�&)�&)�&LS&�fM�1M�6lٳ����:k;_���ڥ���i�[.Z�1L�2dɓ&�f͝:t��������������z�����������V�Z�ֺ��������_���W�U�oU�UV��UUWΚ�Nf�ә�f͛6c5M�6j��fL�1�2c2dɓ&L�1L�1L�1LS&�ɳfM�6lٳ�鳔��t��T��gN�6lٓf�f��٪d�c1�2d�2dɪk2dɬɓ&)�b��Mf)��6k1M�6l�:k6t��t<���Í-���[��K�om��qO���N��O�UUj�,��������������EQTT<���im��[m���qf��-{lV����u⊫�UUj�,��F,�ꊋ�*���UECʊԪ32`�%�\��JMJ�Ě�J-,}��U*��%EҢ�I��(QёМpF8�����p6&��baI0ؚ#��0��jM� I�d�RjL5& IɆ�¢a�6L5&��_m��[����ף�_����j�WUEU]Uk���UUUZ����4�K4����[i�4�,Zݸ���)���V����UQeU�*,�ꊋ�*���UE򢪥Q4�K4���v�m���lY��*�q^��|S�b�uUZ��*��.���*.����qQTU**�Uf͛5�2dɓT�dɌɒٓ&)�b���%̗1L�2d�\�s%����dɓ&L�2b�5�2dٳf�Sf��f͙2dɓT�dɌɊ[2d�1LS�d�2\ɓ&L�.Z�̖�3��c2dɓ&L�̙2dɓ&͛9j���կWt�m4�M4��˗.dɓY�f�SgN�=�9Ogϟ>=�>{>|�>|{>z��k_V�������W_V��kZ�گ}�ޫ��꪿�ߜ͛6dɓ&L�5L�2dɓ&)�d�1Ke��\ɓ&L�.Z��R��c1��fKS�&L�2dɓ&MSf͛6s6lٳ&L��̙2dɓ&L�1LR�l�s%˙2d�r�K�-L��f3&L�2dɓ�dɓ&M�6lփmh;A��c��c�=���=���?�j~��z������U��֣֣֨-���mh;A�=��=���n?��y������ug�=jz�z��Z�Z�Z�Z��Aj��US&)��.\�[-�R�iv[�9���5'#D����J)(@uGH(�!�$8� �� �'&&MI�c�d�12rbd�1BjLL���ׯ��_�Z�^�z��u���z�j�֪�^��Uth;A��{��ǻs���uι��?S�:�=jz�z��UQ�Q��=j����Aj���j�v���ǻ��q�?������Y��}���O\�����Tz�z�z�-PZ���͙2dɓɒيd�l�.[.b��˗.\�\�r�˗.c.Z�.Z�.\�rԹ��1��KS&L�6j�6l�l٬ɓ&L�2[1L�-���e�S�r�˗.\�r�˗.\�r�˘�f3jZ�2\�s&L��L�2dɵ�}������wm�KM4�˗.b��L�1M�͜�͝9�:t�:|�r�=�>|��|������jի����U���W]Z����^�{�U�n�^��UUW6dɓ&L�̙2\�s%�e�S�1K�-�.\�\�r�˗.\�r��f3��-LfK�1�2d�dɓ&M�1M�6lٓ&L�̖�Rي\�[.\�r�r�˗.\�r�˗.\�j\�r��R�2��d�Z�2dɓ&M�6+���<Ξ]�p8�M�����z��UUTUU�Z�*�%UEUJ֍c��YJѬWM˺y��˺n���t�����uZѪ�����U���U���k+YJ��(i#CƐ400y��XB,Ԡ��m<����D6*8T7*6P!ѡИ:#��n8�a�0Q��la4l�h&��h�F��h1�h$ � ���hXd& �4�Ɓ�hp�4 � ���`2��� �a�d(M������#\�p4�q`��U��X���t�zyv�p8�ܻ����}uZѪ�������rUR����X�ek)YZ��tܻ���.��n�������U�������J�QUP9*�*�V�k��V�`#IS�"�J(��-P��T<���u �<'����v��y�Xq�1h��2-{5�ۀ��LS�|��Q5QeQ�C�P�?������?C�;F"�Y�D�&B�=�ҟ����6l�ӧN�>|�>>>>� !AHHHH�22JFE$T�ID�J%bJ$�lID�q8�N&ĢLN'%H�H�HPhH3�3\�e(���
BID�R,��1C�����~�O �;���<ð�b.Ř�M�d �kK���-MS�"�J'Qh‡:��C��BxO �<'������a�c Z*��L�A��e������E�
0��`�X$�`�ՄWa��Wa���XG�#�������\"���E\"�V�Z�R��p��P��P�R��E�0��`�X$�Ƭ"���"�˄^�GxF��~���mB/ʨEZ�Uj �P���j *�ըBT�@T�>T�M l�F)���$\�4�&�+ŕT]#�P�I@�E�:c��jL'&�a@�l@7��؄iF�CQ�Ҍ�XЀiFD#,d'����tm#b�l��68���;����/���@��F��KX&5�W`��-aa�^�GxG�#���6�P��E��U�P��A1jV���A%Z�:�J�
�ʕ �, �a ��"�J��XE�ExE��"��XG�#���oX ��G�GW��p��B*�P������$+�5J�J�j� �l,aj���0��P�˜�"��C1D��"��b(�"QB�1 B�(��b��bD A
A(�!��(R˜S
�J�J¸Y ab���B�X�� !\*aS
�T)�1E(� b �!CD@�1 C(�!�b�"���!�bD(Q@�(����"�,)�L*�J(V�d,���]2k6l�6l�ӧϞ��z���AGР�2,������d�J$�Q(�J%�$J%�15�D�J$�2H�RL�H${>s1� _��Z��B�V¦0�(S
TEDJ"Q1B�1A1 C�Q �1 CDLC�1�"�(� Q�D�LEB�S
�U
�*P�B�X�l.�ж0�B�W
�R¨S
aJ��(�!��1@���b�1 ED1 ED1 C� @���"� Q CDP��0�B�
�+�p���B�]&���~�[`�n�$[�$_p [|.�*w�S�੪�@�Z��HU��!QZ�����E@~��U%ER��������;v�"��"���~.�?�����j��U��HU]`��������E@~�ڢ����UQc��� ��a����Z)1"&[*��UJ�U?Dt�B�ʆ�Q#����À�L5&��h6A��6�@�4c@�4�@�4����L!��2�A�dBX�c!0d ���F�h؈�hL���so����� NU�����Rn�,���)��F۸H��"����O���$*ڬ$Uj�WX**5UPSUZ��?TU�*
J��U+h����m��un-�>�#�
��TU�SU���UP���BB��U5Uj���QT�*
J��UC�����=0�:ð�8ê�# a�Eػb�����Qx�]E��x�]�E��^.���x����b0�
a�u�;ð�=���?C�=0�?C�a�u�a�q�T9F���v.��
/�1x�����x�^-Qx�����uQuQ��aF9C�a�uC��=(~��=2d�dɳg3�N�9N����=G��hP�APR*EH���) JJJII)%bRJ%Q(��I2LII2,���d���>s��,��� HC�����C��:ð��a�r0��b.�ػb�x�Y�Ř�^/����h��Ŕ^/�������F#
�!�qC�;�zP�=������C��?���;(va�C�0��b.��‹���/Qx�]E��x�]�E��^.���x����b0�
a�u�;ê��?C��=B텻 [��»�\)�M��<C�5�8�� � �A�*��+Q
�%�R��J�*\+������Z� ��v��� [�w
�S›b'�x��kp���8��5
+.!��!\D�-B��T�
� UT-UP�p�j<���S�6b)�K�I4�J�6�N*�E�h�R�c������tqI�I�a�h� ��a8ڍ�Ll'��J4���P5 �cA8� ��xe##Q�a��&������p������ ��-n�
�\)�-��!�!�A‹�8��8���ڈW�"Z�*��B��WXZ��j�����P�ao [�����\)�KlB�C�� b �A�A���U�+�V��KP�UB��T�WXZ��j�����Q%%%%%$�dYA�dBB�! �PhPhPhP�B�
(P�B��AP��)B�����R
AH�ȩ&JEI)(�RRR,����dddA�d
���A�A�A�B�
(P�B�
� �� �PR
AH) �ddT��%%%$��˙2d�lٳ���N�9�>|z�B�
��!!!"�Ȳ,�����RRRRR2RLIIIH�1%%%!"�,�����D�1{U�I2RRRJFE���dA�d$(2
�AP�B�
(P�B�
(*$
��!AHHH) �����R2L����I�))&E��R22,��� �2
�!B�B�B�
(P�B�

�AH2�����R
FFFFFI��RRQ&���m���炙���������ֵ�X(-WTkUX*���UU���@ B�UP]�m��]��pP������u�
�U��
*��eUj��>P�UT+8H���&�5 @�tY剤ԓIl���QD�%*8T�������p7��ؘI����A����lc`�4 �4 (�4 �2A@h& ��d& �2��2 �! h& ��d%���H� ��A�peU����^륶�m��w���(]�����'�Uu�
�U��
*��eUj��>P�UT�}����Oo n��'���O��]u���uF�U��UQ�UZ���!����ϟ>|�s9�=N�9��NS�MgMg)�g)Ӧ͛6l�ӧ3gNf��T�ӧN�9N��g�S��>|{DZ�z�Q�|���3����:t�z�9N�5�5��M��N�6lٳgN�͝:j�5N��N�9N�=�9NS����Ϗc�r��j\�2d�k5NSg3�OS���>>z����P�A������D�������RRRL��d�Y)%$�dd�A�I��{������� M�`$#�z�>|�����|�=N�Ν:k:k:k:t��t�lٳf͚�NfΝ5N��MS�Og)ӧ��)�r�>|���{��z�S��g3����:s:t�ӧMgMg)�g)Ӧ�f͛5N�9�:s5N��N�:{9N�=�Ϝ�)��Ϗc��%�-��<�!r!�l���t.�t:}ht:��.Ar*�*�T�Ԋ����TIj%�M2<�#�\��r!�: ���t: ��UT9r
� �
�I+R:�Z�.iӍ9N<�4y��1�$�"����"���R��e�e�Tp`r8��dÄ�l<6���q��ڍƣA��4��c!��2Q���#C,d\i�
$o��_��� N�-�vG���!r��l�Y
��]�ht:
�tUA\���.B�B�GRJԏ"��K�l�r<��� ܍d6C���t8����}ht:��.Ar �����Ԋԏ$����ٳf3f�S&3f���&��&L�2b�-��L�2\�r�L�2\ɓ�%��&MfL�1Mf��5�6b�6j�͛1�6j�1�5L�̙5L�2dɓ&Kf)�&Ke˗.Z�2d�Z�2Z�2dɓ&L��Mf�SY�يlٳiii�.\�.dɓT�6l�5�:r���S��Ǩ��AP��!BBB�"�$d�������dd�����R2,�!!A�z��/�͛6c6j��3�d�dɓ&L�2[2d�b�2d�\�r婓&Le��%��&L�2dɊd�l�5�͛1M�6k6l�l٪c1����ɓ&��&KfL��L�2dɒ�r婓&L�2d�d�jdɓY�&)�Y��5�6b�6j�}�o���V��Ļ�_�w�u�U��Ubj�b��b��b����UZ�[��o���V��Ļ�_�%�K]bZ��MW���V�+]V*������h$|�G DҦ�`���D��I�E���EUD
U*P�VTp���@�tdt���pɆ��L5&���jL4@�5��p4 Q��2�`ʌ���p2�c!,d���FX�K Da0h��h�����\��U��������V�+}�n�'�K�%���_ĵ�%����z��Uk��U]TYUj�n�V�+oq[�����%�%׉W�KUU����ֵ��U����,��Vd�-��R���l�r��˥�.Z�K-K�M2�˗.\�r��L�r�T�l�r�˗.\�r�2Թ��jc2d�-��R���l�r��˥�.Z�K-K�L�.\�r�˗.\��r崩r�r�R�˘˗-K��R�2Ե1�M4�-�.\�.dɓf�f�S����r�Ϟ���Q���z�B����D���R
BBBEH2 �����R
E�T$$�����1X�~d�-��R���l�s�r�e˖���R��-K�.\�r�˗-�\�m*\�\�T�r�˗-K��R�2Ե1�2b�̘��f)r��e˗.\�rԺYj\�i�.\�r�˗.�e˖ҥ�e˗.\�r�˗1���e�jc2u��s�7����.eͬ�mf\�g3�̬�s9��UL���\��\뜵=\�U:�s�՛���y�2��g6�9��g3�͹�ۙY���j��j�\�N\�Yg��8çj�q�ǘ��M#�I
��EUH�*�QB����:,9�&�� ��q���ڍ�A���pj2��FTh83����d\G�F(2ƾ�������?����u��s�7����e̹��ͬ�g3���sng6�Vef�������;S�9VuϬ�uf�y��e̹��ͫ2�s9��ef���W2�ef�j��j�\��˜���˖�e�.�Zii��Z��Zi��i��i��i��i��i��M4�i��J��M*�t�iR�t�l�K.Z��L�ii����j�ii��i��i��i��i��i��i��i�SJ��M*�t˥Keҥ�m4�M2�iR��SɓT�l�t�t��|�����||z�T
���T�������������d =$ =`/��˖�e�.�Zii����i��i��i��i��i��i��i��i��iTҩ�S.�t�l�T�j�\�K-S.�Zii��Z��Zi���i��i��i��i��i�SM*�e�ҩ�SJ�]2�T�]*[{�����Ͽ����3���/U��uuZ�ֵ����h֪�G������>��g��������Z���EZ��U����Uְ��3�' g4>iA���
�yaQf��L`:ie�Z��R���Ң2�e�:4PGDc�q�=�À/� F��6F�h�h6(�4�I��Ƃ`��B`���X����2Q3����8�3����X�K���� P�V��z������/o3�����?���U���u�V���j�*�UF����n���3�����3���/U��uuZ�ֵ����hֵ��i����i��iT�J��U6�*�i�������in�4����M-4�M�mSM4ҩ��i��i��i��M��t�m�U4�wwwwwj�in�4�M6����Tڦ�i��i��]��M-4˗.d�dɪk1M�6t�ӧ��ϟ>>>>������$(2
� !! С�H1� ��������� G�}4�M4�M��M4�m���Smҩ�ۻ����T�Kv���i�M-4ڦ�4�M4�M4��M6�m4�M*�iT�J���SM7wwwwt�M-ڦ��4�����i�M�i��i���VefV_.�ܾ_/����|�_/���|��|�_-V]f+S�\�g3���Vee��]����|�]e��|�Z�k��Z��V��KU��V�+�s9���$��9N0�4�T�KfZ���{����EQ"���U(H�����
(��91Rrb�Ԙ��lTmF���аҌ���E�Th`f20#c"�6#�#��Q���������%����_����s+2�+/�r�ee��|�]e��|�Z�k��Z��Ժ�j�����s.g3���s+2��]���������|�_/���|��|�K��ˬ�jb���gM�t�6ҭ�n�mҩ��[wwM7wwwt�wwj�in��Kj�T�7M7M�t�J���U�J���m�ҩ������4�wj���-ڥ�n�-�n����mm���6�M2Ե.Z���Ɋc6l�l�t���>|�=O����1��{ЏE
#�z�A�T#�%+1UM*��鶕m�t�n�m�*ۻ�Sm���ݪin��-�4�j���T���n����鶛iV�7J�U�wt�wwwwM7wv�n饺in��Kj����gw��o|����?����6�f1u�.�Sz��U��V���;���;����g|��2�������֪oUYʽT�֪�=Ď0�G"iO5�� YŢ�R$��7���TF(U��C��Q��p7&� ���h6��ѵ �ah�4�F�`�\4��K FBX�d%��ѐ�#Q�g��0f��g������1/U�_����W�w��o|����?��3��̭k3���1u���Vr�U:���w��o|����;��3��ͯY��]y��Tު��z�խU�MҮ��U�*��wwwwwwwwwwwwwwKwt�t�t�j����m�n�wmҮ�Wt�����������������[�[�[�wKtݯ��WwJ�i�Z��.\���5L�͛6s5N�=O�ϟ=�>|�O����������||z���c�|{=�������`%������MҮ��U�*��wwwwwwwwwwwwwwwwKwKwKv��n��M�t��n�wJ��]�*���������������n�n�n��-�v�֛��n]i��z{�z{�kOOOOJ��=:�t����yj骦���\��t�-˭=7OOwOOwMi����Wj����OJ骧�t�SZUe�ϟ>t��٬�0�%�Z�bi5٭gUG�Dz2���)(D��"9$9$9&$6�bcq�1��
(Ш�dTf2*3��Fb1A��bc*#�����p����������t�-˭=7OOwOOwMi����Wj����OJ骧�t�SZUe���t�-˫OKt�����w����Ү�ON�]=+���Z�j��*��ݷJ�����w�w�����wwwwowwv���wwwwwt�j�ۥ]���ڻۻ�Ww{ڻ����������wm����-ں��ڵj�ҭ�M2Թr�)s��lٳ��9N�:s=OS��S�������|�>>=�����z���_���_��X�"� Iv�*������������������wwz��]�wwwwKv���U�������ݫ�������{���Ww����wwt�j���������������Z�������WB���Z����������������V�UG�U_U��k���(xRx���8'4����� `ᇖ&Y����{K�UB�(��QҤʓ*���ё�g �Gb`z&� F�A���h�Q��4q�h44@b �*2�@�2�@ ���F4F �)�8�3 �������%��^������C���������������V�UG�U_U��k�������?�������z�UUQ�U~��UZ��n�n��n���ڻ��]������������ݷw��]����n��n���ڻ��]������������ݺ�������Z֭j�ﻻ�M4�i��.\ɓ&)�d�6l٪l�ӧNS�)ӧϟ>|�|����g)�>s��č\�}VbH�����������w{��������ݾ���]۫�]�ޮ����n���]�w{ڻ����������۫�n�Wz������[�﻾��kw}��}��u�]��z��N�V�T��wOMn�﻾��kw}��}����z�ީ�t�=�ʟ=���z�9MSfLe��t�4���j����qTJ�VP��Q� :��$Ȏ"L�8�!��!�Аڍ FD�c"C,dLf#�Ąq��DbB6#������:�������������w}���������W�iW}��u�S���{U����t���O}5��������Ү�u�]o��ZmSڭ��w�{��w{ڻ�������}]߫���]��W{w�{w���w�������wwo�߫�Wz���tUZֵ�W�}���J���i�K�.dɌ�2j�1M�6k9N�9�:t�t�z�=Og�S���|��������_��������U�{w����{��ڻ������ݿw~��]��������ڻ�����]������ݾ����wz��ޮg[������������}t��?�U�ˮ�u����3���_���?�w��?��?�ִ�.��u�.�1U^�NJ���g�$r�H�M"j���`��,ԥ&%[6�U�TU��*8P�A����#����rjL6&& �6F��a4�l&��A0iFB`�P2�Td%�� �#Q3�q3�������/���z����������μ���/���7}?��?��=kO��k�]r��U�g[������{��������]=kO��mr��]~b��Z��w��w���������Ww������wn��W�������w����q���w����wn��4j�QkF�Uu^���^��ҩ��e�j\���lɓٳT�6l��l�Ӕ��t�ӧN�9�Ν�������k���Vb4������W}��{���wp�w�߫�W}ݺ�m^ڻ�������w{���������w�ﻷWm��w}���}��}��}���w�k���WU}�����������������w������^�������P�<�ӊ�4��Q2b&LRԺi�ou��LF��eM(�QӇt����rc���Q��D�D�h��d��d��$#c$DlFHF�d�q�������n�z��_���Z�����﻾�����������]�����uW����]��w}���}��}��}���w�}�Uz������}������������wv�wo������]�wڽ�]���j�����Wwo�w��}]�ݺ�2��F��E���5U�Z֯���*��i�-��˘�KR�ɓ&3�k6l��r�:l����s:b�7�����������m]��{W�w�ڻ������������Wow��{���j��]�j�����Wwo�w�v��{�W�}���}�}�����_U��kU�*����V��ִkZѭk�}���}�}�������Uk��QZ�������kZ5�h֍`(xTp���q#CƠ`(�ybE���K3PQD�#��*J(GFG@_ Ƀ!0�l�l&��4 @#!,d�0�#�2 � v ������q�ra��ɆÀ,�Àz �� ��8��y&�,&�2a�0�b8��x��� �ŁӾ�����>������U�����Ej���V��kZѭkF�k�}�����}�����_U��kU�*����V��ִkZѭk1J�5NS�)"��ID�qE���V+��b�X��18���"�1��3Yt���T��r�AH)$�J%�(�V+�(�Z,�b�X�Q�ĢL�"�4�t�cKo����{=O������$!! ����I�bQ%���R*��X�"�h�Y�1d���BBBBA�AHP�� �T(P�B�z�Ǫ���S�:=PR
EI(����R)��b�h�Y��b�H�N%d�A�ϝ5�K���K��)��
EI)(�N(��U��b�X�V+b�F'��dY>|�k.��������`��A�� Z��<1�b�dž<1�d�ˆ\2�� �����CU xb����%pA���+Pqj+U����B�1k n����������.�dž\2�1�1Ꭱ�����<2V���%j*�+��j��=N:h���f ��C�VxyU�P����uGDC���q��n6 F�ѕ c!`�F�Ǎ�(���p`rL\qG ����91rrb��1brb���I�� _��`��yX �U�-a�Xc��/ xc��O �c�p�Pưdž:�:�*���j�PBV���A��J�\V��`�X!U�-a� xcp�����7 � �e�.p���a�a���T1UPdž*��PBV��j�:V���?��<��<��Ì8Ñ�0Ê1�(����^-�E��h�Z-�E��h�Z-�Ţ�x�a����C�aF9(v��y���(~P���<��<��Ì8Ñ�0Ê1�(����^-�E��h�Z-�E��h�Z-�Ţ�v/����F#
0��qC�P�0�<��(~l����>|z���T FFEID�I�D�q8��(�QEb�V*�TYEQH���(P��P�B�
�A��1��1���<��=(yC�8Ì9c b1�(�^/Qx�^-�E��h�Z-�E��h�Z/��ؼ^.� b1�(‡!�(qC�<��P����}���a�yC��a�r0Ð��F#
.�^/�E�Z-�E��h�Z-�E��h�^-��� ]F�bc
0��qC���y���(~P{ׂ/����" ��|1��_:׆U�E^�z�z���"���{�P{ׂ/����" ��|1���!ּ2�UE^���U]UAUj�z�|><T�O<Bp��M"hZ`�
�r@�&2��ʪ��DA��B�� ��qa�0Ca4l��4�᠘2�!,FQK�2 � �d%�@p6�����À�p6� ����bra�0��lNL6& IɆ��1yU�޻_�����" ��|1���!ּ2�UE^���U]UAUj�z�z�������|���e����^��!ּ2�X"*�P{׃��UAWU��z�����|z��S��>=O�ϟ=O�=NgN�:t�ӧOS��gN�:t���O�Ο=�>|��|{=G������>�AGdz������|z�9�>z�:z�Ν>t�ӧN�:t�ӧN�:|�Ӕ�t���>r�>|{=G��{Bl�5N�>r�>>z����
 ����R,��ID�J%QEb�H��(���Q"��H���#�G�h1�>>����|||||������=�S��>|�����>t�9�:|�ӧN��3�NS�N�:t�ӧ)�����|�>=��Q����Q��
>=�����S��>=O�>|�>t�>t���N�:t���N�:t���N�=�>{>|�����z�c�����}K���y��C��+B�+B�r��t9A]�d�� Hr��F�KRZ��[�nG���d9B�.B�.�!Y�C��.�B�
�VA\��5 �����-HQ�OS�8H٢�)���M�5�UC�D<UJ�)@�uG��&!&��CQ��iFB���V#�±�#
De���i�''&*9�
���'&*NLT��p��r7"܍dk!�r�h\�h]B�.�C��.�B�
�VA\��5"�F�nF�F�KR\��܏#YC��+B�+B�r��]
�r
�t+ ��d�jC��U��5RZ���d�dɓ&L�2[.d�\�l�s%��˗2[.\�r�˗-L�.\�jd�r��r��s&KS&L�5�2d�1�2dɓ&L�̖˙-�2[.\�l�r�̗.\�r�˗.d�r��S%˖�K��Le���L�2dɊd�1�1NgMf����>>{=G���

EH��D��I�D�ID�N(��)b�H��d��1��>z�>|��d�dɓ&L�2[1L�˙-�.d�r��S%˗.\�r�˙.\�r��r婒婓jd��&L�2b�1LfL�5L�2d�d�s%��Ke˙-�.\���r�˗.\�jd�r��S%˖�K��K�2Z�2dɬɓ&(;������}����_�_��Z��s�V�����kU����7��0��������a����=Ukְw�U�W Nj G��6x���A�.a化jPIl�j�"2�(L��F�X�n82L6&���64 #@�B`�QK��#a&���F��DC��0;� ��0ؘ�a��jL$�b`5&�2a�90И ��{puU����9�������������U�]Vz�׭`ﮫZ��������������~j�k���UZꪰw�U�W.��t�˦�j�i���ii��m��i��i��i��i��T�M4�i��M4�m4˦�.�T�t�˥�]4�T�M-4�KM4�m4�M4�M4�M4�M4�M4�J��iT�L�i�M*]4�s&L�̛6j�:|�>=O���Q�� �H222JIII(���D�j&��R)���&X��Q��{��Q��ϟ>|z� _˥�]-2��]4�KM4��M4�M4�M4�M4�M4�M4�M4ҩ��U4�.�e�J�M*\�Ze��.��j��ii��i��i��i��i��i��i��T�M4�i��M4�m4˦�.�T��˙��s9w3�s+3���Vg3���\�Z�s.]T�]fr�1s9��L�\�g3�˹���Y��_2�9��g3R�k�̹uS9u�������U3�B<x��8�ӈ��2`�h�M�x���"�P�Y@�DGC����rL(' "4"��b0�F�1�#��#�LPqI�I���&Ɋ�&Ɋ�&��ɩ>�/ �̹��g3�s9w2�9|�g3���s5/���˗U3�Y������US9��g3�s9w3�s+3�r�����s9�/���˗U3�Y���\�eTΚm�SMҩ��T�wJ����U4�wwwwwM4����M-�4��M-�M�M-4�J���Smҩ���M7wt�i�������4����M-�4�ݪin�imSL�lɓ&��l٬�t��r�>>>�} FFFFJJID�Q(�ID�q6&�6'$��|�>=������>z�gϟ>|��i��M7J�ۥSM�*�n��T�m����ݪi�����[�i��T��4�ڦ�U4�4�*�n����M7wt�i�������i�����[�i���[���M3��w����������7��ͪ���U�uU��s��w|��u�uٿ��o������|��*�:���k;�bH �*<Tx�⇢y#���4��qh��7F� T�%
���J�����l8Tl4!��4��L �BX�FA�d`��F �0�F �1A�i
I�Ñ��p) I�a�10ԛ&�� IɆ�~�g����;�;���o������6���9V��W���;�gw��w^w]�����7����mW��r�󪯝��ַM�Ү�����������������������ڻ����n黺U�ݷwwwww�wwwwwwwwz������Wwt��7L�.\�\ɓٳT�:r�>|��>>�AP��$$$d�����I1)%�D�j$ĢEI*>|���ϟ=�>|�������wt���wwwww{wwwwwwwww�������wwKwt��wt���n�����n���������wwwwwv���nZyu�����w����}��}���==��OJ�OOJ��ܺ�����Z{���������������i��zyj��ژ�y���>x����M@لLRȦ�MX�TUUb�TX�����G�t������J4 ��P3���7
v#��'&$M�'&$M�'&$7&HmF�/�֞]i���=����w�}��}�Zz{����=<�t��K�====5�������������i�����t�����m�ݫ������������Wwww����]������ﻻ����������������������4�j�U*\�s&M�6r�:t�>|��>=��A��H) %%%%%$�Q(��)$H��9Og��)����ϜΜ�X�wwj�ﻻ������㻻���������������ڻ���������Wwww�ww���wz�]����
?����G��ת��W��Z?��
���������z��������pB@a>@Tx#<+<H��$p|� �`�MHL�n�*(��(T�I�
��8�!0Ԙ�a4lQ�i�2@�2�O�8��D`!�3�pe�h �O � I����L6&H�jLɆ��
Ɇ��g&��.��*�����Q����
>����¯�ִ�U®�������������������w������ww{����������ww�w}��ww�w�����www��ww����߫��t�L�j\�rٓ&��l٬�:z�����|z��PR22R2L��d����*AP8�:t�:r�:t�ӧN�1�{������ww����������������]�ww�w�����j�����ww����߫����������������z����꯵�o����������������z�����o��}(P,z�0|��S�:i������.X��#Y%UYQ2���#�ê8.MI��l87�F��1���#���|7����7�4Hr8H��!�2D���$7&Hn7�1t_}����}��}����o�����}�[���}����}��}����[���}��}��]����������� K����������߻�����ı]���������T��KM4�U,�j\ɓY�l�l����������P� �HH� �ddddT��Dy�N�Ν:t�Ӧ���\��W���w{�ww��b����������~������bX������Ww��O�������O��O��Mo���S[�?�_����O��=z����j������i���$*��*z'�<�G"iH�<¥�X�Lh���*QQ¨�
�Dc�Gb`|L4Q�i Ɓ�i��2��G�0�0 ��7a�2��Xn �2C`�L>L5'&�� IɆ���a�� �p%���z���ק����������֟����?�ק����?��?��5����ku��k�w�w��w{������Ww�w�w�w�ww��"����������m�wKM-2�r婓&�Y�f����|z��Ǵz�B�
BBBBA�R�T'��6s5Nf͛:k9Mf����������đ]��������������ww1$ww�w�w��o������u��������ޯ��}�w�u�������������������}�wԂ�B>�Ϟ��t� �i�Y�T���U ��T�"�:HuGD�pP��Q�a�Q�q��qp7�����t��A���G�rd ɐ&�ȓ� 6����������u������}��}���}�[﻾����u������}��}������}o���������������������w�������w���wwwwwwww�����w�j�W���V�M4˗-�1�5M�9MS�N�>|�z��СB�  �(PJٳf͛6lٳf̀�;�����������������������������]�����������������������?����?��U���~��T����_����������|�_���U�Q��܀���G���<�#ƒ�L� 0ya:MH�[�EA�#���&Phtht&��Gb`�6Fɍ�H� �A0d�BX� "0f��(n07@��pd����7� I��L5&� I�0Ԝl5&���nb��^_�������O����O��Z��]K�_����/��O����O����-Wﮥ���[�j����� Mݿ����������]���]���ݿ��kZ�z���wt�U2��rԹ�d�5Mf�S�N��Ϟ���|}>>=�DZ��٬ٓf͛6c6j��W1oU��ڻ�����&�����ݿ���W{����bh����]����������}��}����������o���������������z�����BP�U=G��|��f���e�Ii�r����VTyE":��G�"q�Cj4&4�B�*#Q����#�n*#b4�Ly6Mrh ɠN6�8߭� [�k��������}��}�������[�����}����}��}���������w���w���ڻ����������]��w������������������]��wm4kZ5�uZ��wt�M*\�.\ɓ&M�6l�Ӕ����|���8�Ɋk2j�2j�1��b��ڻ����������������W������{�����������������}�����pg������z��o��������?���{_[�ƈP@��G��(x��N$r�@�0y�,��&3ۢ��(�R��EJ �*:2808�*L4 ��h�#@�4  c*2�aP��u� n�����qp���L5&�� I�����a���1pU^������pg��o��k�o���}��ę����{^�_�����wp�w�������{�������������YYU+F�4hֵ���wj�*�T�r�KfL�1�5MS�N�=��ϟ>z'�螦3&L�2dɓ&�� Z���{�����������������w{��+����v��[�����bt������w[�����bt������q��$P�(><����8��Tْ��M�u���b2���<uGG�ɏ&��'"4�D�Td��F$#�Ąj��ܐn�d�r�cɩ1�Ԙ�rc��Ǔ���1iW�u������'Kz����wu������'Kz����w����{��+���������� Q���wʩYYYZ*VV�EQ�V�kZ��J���iR��R�ɓ&�f͛5MS�NgMg3�rMI�Ɍ�r�KfL_���������� Q���w�����(������`UM������������������������������������������������������������������������������&������������������������������������������������������������������o>sC��������������������������������������������������������������������aHKY�F1r �J,� ,� ,ӎ4ӏ8�8�<��@��C�=A�P�P�m���������e�P����O�$��;���4���3�D?3C��?�C��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������?C��?C��<C��><C����@A��==�8�N4�N4�O8�L0� ,��(��$�q�a� m*4 �����J)R@�ԵU-����vŷ&��M�m��)�-�òY �;%��` �E�JTpJR� �� ��Z��������bۓl[l�� �X�ئK�a�,[%��d2X����H`���PPr��Y�0"cA�
#E���,�Hb��X,X��P‚���N8H�Hp��! ���Ab@��DH��DH  ��"����N�$�Pn|�WI�]s�����nK��m��%nKl[rm�m��!�Kl�h��2H��%)f�%*P ��G�KU_� ��ݱmɶ-�Kp�,[lS%�d���-�;%��`#� 4T�%$T�%4��|�T�_����ݱmɸ����ػb�b�,;%����d��F�X�iQc2�e�Ye�hѢ�+4Y����9�ʍ�l���,��,��4�ƍYXѣJ�,f4���c2�,��4h�e��,�e��9�Yf�6TYf͖l���E�V2,h��4h��%;ӻ}�ڪj�s�9�g,��X�hѡ�f����� h4 �A�4��h3�f �/w����mmmm^������{{{u��{m��4hѥ�4ic2���Yf�,Ѣ��r�9�,�,��l��͛6l��Yc"�ƌ�,hѣJ�,f4ie�,fYe�Ye�Yee�+4VY���6YQ�͕Yf�,��,��cK+4��ƍT�`ꁓ@�Xn �n���� �p�7ᝆxga��; ��3�f�=�w`��݃�P:��&�� ��`�7 �p�7 �p� ��3��i�; ��3�f�;�v�;�wbƌ,d0��ĖVYY��s�R�L���#$ahX0�@1 �qLP@�����������c��b@h�$���c��1 4JD� X����}���u}���}����}�{{��ݶ�۴۷�|P>�҃�� �e�� �p� �p�7�\6�<7 �3���; �v ����;�w`����(2h`� �Z P�7 ƨn���� �3�; l�g`����4�݃�v�h��,���,�E��4YYYY�+4Vs�s��9g9Q��͛9Qe�6TY��,��YcF�YeE�Ye�,�Ѣ����h�Y��Vh�9�seG,�F͜�����e�YQeE�2,���[m�Q7ww���=mUN�L�4Yc"ƍ� @��A��h4 A�h�k���k�k�ھ���wwݾ�n�۪�n���hҢ��YYee�Y�������+9g+4s��9���r�f�TTTYfʋ,���,���4ie�3,��,�E��4h��F���+4r��9�9ʍ�l�ʋ,ٲ�͖Ye�VYe���%H�����j ��R��j��#�%��%�m�[v�%��`[n�`5��%��Kl���H�����j ��i*�}B?��`���*���ݒ��K�X m�`9��%� � H�1��AA���1�c*4�G�m�1d�@��b��bE��C @�)�
�
�8
9"Ab@&$$q �,H,H�AbP�DH � 8H����WR{�������~ۮ���m��M�n��m�۶�rIR�i -.��� ��IT#��#�E�ݶ�Ww6��-���[v�d�%��i$�m$� �PM%PMu�U�����\ݶ�-�l�m�-�����%��Kl�Ye�YYee��,���9���9�h�9�s��9͜��͛6l�ʍ�*6TYf�,��,����+,��eg4h�9�G9��s��9�s��*9�l�9͛6TTl���TYf�,�2d�dܖӻn���J��f�s����+3433 �C0��d� � A���e��M}�_mmo���N���߻{��M�m�{m��~Yf�,���Vh��ѣG9�h�9Y�s��9�s��G9͜�9�g*,�QeE�Ye�Ye�h����4VsF�4h�g4s��9�s��9�l�G6lٳf�TY��eE�l��,(2H2�ʆ�d�p�j����n7���q�3�x���q�� �3��`Ͱf�ga�2H2�ʆ�d�p�j����k���q��g�����v��C6�i�v�3l�@h� ��3(��,�$�%M�k����,���Z b$ D�aLP0�8@����� ����� ����ābb@�(pP����Ӻ������サoo��m��n�v��m�v݃$�����5�%��T7Cq��n7��x����ga���6�i�v�3l�@� d�փpʆ�q��e���q��n7�<g��n7��Ͱ��;m�6�;,���r�h���r�����9͜�H�9�s�3�9����s��6s�9��r�6h���r�h���r�����9�s�Ns��9����9�s�����Tl�Fʍ�rɒɓ&L�2n��r[�}��T���H�9QQ��eCFcF�ƌ�c1��444444�a�+��������jڽ�i������n���۪�o���,��+4VsEg4r���9�s�#���s��9��3��9ʎr���ʍ���rʋ4Yg,��h��4s��9Α͜��9�s��L��h�4s��9͜�F�Y�9eF�R�i�R��H��u�\�����?ۮ����6�m�p!rn���-�l��,[%��"�9ʔ�F�S����@}}��u���ɶKrm��l�Oqm��-��m�m���A�#1�$���(� `��Pd���fI$2 �BËX @"@� 9h��� �

8��G��c�8 �$H,H ��@$$"A# D���"E����u_U���\]}��O�����m�ol�ض�7�%��"����$��S����@}}��u���ɶKrm��l�Ol[l-�d�Y,[%�����@�#J�u�\��?���?ۮ����6�nM��ɻ�Kl-�d�Y,[%�9��9�s��:I�6�ͤl�s����Χ4���h��s��9ʍ���͕4sG4Vs��9ΒG9ͤsi#g:����i3�h�4s��i��9�s�9g,�- B�,�1l�2d�D�dݧw���mUR9�se�VYcK,hѣFc1���f��C!��M4���Mv�mo���=��ӷ�{{{u�[m�W���g,��s��9�I$�sg9�����UUT�4��4t�馚g9���9��9�Ef�h����s��9�l�G6sgS�%UT�u9��3G9�s��9�r�g6sa��I ��6�XܼnZ�r��^Z����x�2�f�m��gc;����� � � �2Hm ��2���r�k��������]����-��ev3lgc;�m��m� (40��
QCJAe �,�-P�ӻ��l�,�Kb� C aQC
�S <pa��☐qؐ�1!c�  ĂDĂG�j�����u}��}��}��o}��m��۷��6�e���!�ʆX�/���///-K��r켼f�m��+��c;�� � � l2P�!�2��ʆ�q�Z�q�5�������i�c4�lgc;���v6�xf�f��s��:G9�f͛6�G6���)�UUULꙥ4�����F�9Ι�s���sG9�s�s�6lٳi$siN�Β���g4�S�h��4hѣF�s��9��������ɒ����%�&M�n�����_ڪ���G9����,�hȬd24hѣ1��ь���i����k~�����w���}��۪��m�9�h�9�s�6sf͛H��:�M�UUUT���t�3�4hѣG9�s��9��9Α�sf͛:I�F�6��ꪪ�:�iM&h��hѣF�s�s��9��%��+JWPz�A��7\�oῃ^��ۃ�ݰv�����vL!����A����=N��\� � �7��� m���m��[a �l!��&��
(0@т ��� 1f1�EThU^�mزd�L�D��ŋ I�!�( PX�((p,p�ㄎ� 8H�<HH�$$ �� �#Ă#�]]-I���uԟ��}����d��۶ɷnKm7m�l��m�%��҄U�����7\��o�3�l�m���l�-��ڶ�i�d�����Ei z����������5���m�;�l!�m��v�CnɄ2^��s�#�6t�I#�6�R6���t�UNuT�3I���ѣG9�h�Ι�s��9Α�l�I$�lڤsiSi)�����4��SI�M3F��i���9�h�8����.....JɋDŢb�(�6�&Kwv���U4h�9��Y�,��EeeeecF�4m���5ݵ�]�m^�O���N��7M��m�m��UQ�sg9͛:I$�G6m$��mM��Ϊ��sJ��4���4h�i��g4h���9�s��G9�g9�lٵHڤm%:�Ϊ�s����MM&��4�9�G:g9�q�[���n^^^^^u:�Ks�����w6��-2���v3����Ͳ��v2��d��q�^^^^u:�Ks���r��m͹�������gei����čHч�8ч+(��Eb�b�D*!bՋv-�Y,�������CQQC
� ;xᇎ <pa1��bA�Ą �ă�B}��u}�w�������}���on�7m�v۶����6�J[���ʲ����u/:�>w.���ۛl������vV�Ͳ��ʋq�E�q�j^^[�N���y����w6��.���+��c;+��ej3��:G6l��,ٵI%SjmTڪ�����SJi54��4���i�4s�h�9Α͛6� �͛T�6��ک�UUUUSU4���j��4�M4�4h�L��B��.-�������šh\�-�dɒɒ�h�n���j�iN���VYe�,����� +4���Mwmvյ��{O������M�{t�m�m�UU�ͤs�6� æͪF�ڛUIUUUUU5SJiM&�iSM4�M3F����6��l�I$�F͛T��F�ک�UUUUSJ���j���I��i�hѣ�s��:CT� ��E��G��\�����nM��n�` \�ض�-�d��m�d� T� S�2H�E��G��\����ۓwl���k���%�Cl�� �l�`P�(0$`� IA�%(��F�,e@�����%��d$���b�� @ H�@�������Ab�8((p0p����� �GC�ą�����/$Ăĉ�ԽUUr�QUU���G������Kl�b۶�m�rd��-S��4�T�k����K����~ܛ��ݶ�-r[b�d��d�[d6ŲX�F��d���\�T�������rn�Kv�b��Ŷ�m�d�[d6ŲY��9�f�RU6mU#j����UUS�UUM*��ji5SF�*��F�&�f���͛6���ͪ�mRUUUUU:��UUUT�ji5SJ���jhѤ�4D[!�Bظ��- D1ql\\\�.J��d�dɹ)ݷ{�+�U6l��s���*,��+,��i��������}����wwv�ߦ��n��m��m��6�F͛T�I%Sj�T���UUSi*��������MTѥM4�ѣGM3F�I#f͛USfͪJmRUT�ڪ��4����UU54���J��hѣ��������ϗ�R���4��|�nZgϕ�����;eyj{+�����d������攷>iM)��������l�����ej{7f����f؀��a� �4a2�,�K1'1&Ф���\U��l�d�$\["D�����(��v8��x�ĆK &$LK�{��������������o��wj�ݷݷm��//>|�niKs��ҟ>|��y��l�����ey�ݕ�We�Ͳ������y�-��ϖ���ϟ>V�����;ey�vV�]��͵I%6lٳf�U%6�*�����ҭ������UUT�UM4iSM3J�I6lٳj���T�UUUUUUUUUUUUT�jiSU4hѣF�M4ȑ"D["D�hZ!���D"$1h\\\Z&L�L�2n�;�M^�ꪦͩ�s��Q�eEEEE��4�v�V�[�����N�����O��t���V�m��I$lٳf͛6���U6�����J�������i54���4hѣF�4��I$�͛6��$���mUUUUW�UUUUUUUU5U4hѣF�M5 IT5u J�����e�7|�r�ƺx�����W ۶�6��Ͷ�a�$���jT��t��c/Q������{q���oq���m�a�v�f�m���A�F�0@���e( Pb� `��m#N�|[lCK$Y#�([8�H,� A�QE�$p�@₅1‡$x�#�D��bAc�����&���M}�T�����O�d�����wv�'{m�m�۶�$�CWPդ���լe�6��r�ƽ���Ʒ����6��ͻl3m�XjI$��IV5Z�����n����5�ƾ���fڸfݶ�m�m�K6��:����Ҫҭ*�����ڪ������UT�M5U4mU�UURUUUZUUUU�UUUU�UUUUUT�M4�M5R$H�B�$H�"D�� \\\\\\�L�2m�%����~���Sg9�s��EF���i�ݮ�߽����wwwo��}��n�ީ�۪�U@bUUUUUUUUU_UUUU�UUUUUUM4�M4�ѵUI$�USj������J��������������T�M4�U4Z�>|��>z>|�|�����ͦ|�u>oM��i�>|�nZ�>|��>z>w;�U;�>|��\�tΧ��l�|��7f�C �3@ф (�� ��9�9�T%P��v)�H&H�h��d�D1r$EEE!Ht*9���(��;0�ᄡ��}��}��uu}��}���}����n�۷���o>|����Jz>w;��N�ϟ>uW7�3��y�v|��7enZ�>|�SG�OGϞ��ϟ>|�g��S��y��ϟ>o-�M�6�����������J���������������������6������������������*ڪ�������F�QHT� �*D�L��D�$H�D2$Eűqql\��K��mܔ����T���sI�3����i����ݫi����wwwo��}��n���۪��ٳfͪ������Ҫj��������������j���4iUUUUUUUS�UUUUZMUUUU+UUUUIUUUUUUM*�%$i*I,"�V�`�k����~������ۄ[w�ɸ&����[`����%P��Z����\�� ����{nۄ6ɽ�7����[` �F�  0F���������b�P��v)��,�Y$ X�b��,$�$ Ax��
P(,P8�b��‡8P�2($p8H�HpX� ��U�N�T목}|���}����m�m��[b�d��rm�RF����*���]u������~�.�۶�ɽ�M�6�m�d��)#IRJ�J�K�������{�`�m�o��m�pM�m�d��UUUUUUUV�V�uU���U�mmmUUUUUUUUUUUM�������Ү����^��*ڤ�������������C!��"DT�DTT� R"B"D�[".C�ɓɓ&�m�o[�]*����gM���i��j�ݫi����www�ߧݺm��n�����UUUUUUUN�U5�T�W�U}URU�IUU%UIUUUUUUUUUUUUUiiiV�V���V�mmmUUUUUUUUOF��Ϥ����S��T�|����\�gL�tΦ�l�|ݛ�vj�Q�>}%>wIUO��N��\��<�g�m[:f��>{7f�݇ �0q���8҇P��9�9�9�!P����v%���L�DŐ.,�l�dHC!��b�����HTt<s9��(��<w�_}��}��}���}����un�n�6���v�3��Tk>��;���;�w>��Ω��=�j��7����n�ٻ5F��>����s�s������ͪ��Χ���7�f���ݛ��UV�UiS�UMu��t�UUUR�R��ImU%UIUUUUUUUiU5UN�U5Mi5]UUUUW�J�%IR[ImUUUU4��E!HTTTTS�EHd2$""�$H����....J&L�m���m��}'����Zi����ڷݫi����wwo�~�~�}�m��n�m��I%UUUZT�ST�5�Z�UUUU{T�RT�V�[UU�UUMUUUUSUUU�Mii5]5UUUT�T�uIUm%UIUUUUF�$U��Ir�-O��{��]�z�]ۖ�����m��[�m�J��u���u\��_>����l�ܭ���6ƶۍ{lf��``H������F  h���+(cLc��"�4��KlY!D�&,Q"�8�ʼn�A�
$�☠����E�
a�Gc�0�#��D�WRk�?Rk�?Rk���_�w�?ro�7�%�nK{m�m���2KQ�*�������\�y}�_nV��n�c[m��6�mی��*�F��W��_����w���wn[��o�5�l�M��vꚪҪj��-*k�&����ڪ�j���ڪ��J������J���t������j�_���Z��J���Kj���������*************D���$H�"-�űql[%&L�2d�m;���u����M5wmv�[�����=����;{����6���[m������ҧJ����*�j�_���Z��J���Kj����J��������.��kZ��}����Z��ڪJ��������Ϯ�w;�w;�w]u�]s�y�Ι�:f�6����6�٪IN���N�u��u�]u�]=[O6�뭛Szٽlݛ†a��a��!�ƌ4�cJYB�0��9�s���\G��L�$�E �.,�"Ő�D�b���)�����
c��������ﺾ�������O'�������v��ݷ�m���.}s��u�;���뮺z��m5��ͩ�l�t�ٻ5I)������w;��;��뮹�<�gMl��T�[7�Slݦ����*t�����kZ�����j�������ڤ�j�����J�*t����֫_�����V��i*��J���:
���EEE!QHTTTTTTTS�DHd2$H�"D�.B&LZ&L�7%��n��ޞ�m4�v�V�[���O�����������M�m�m��*�Ҫt���.��kI������j���������j���ҪkJ�*t����֪����ڥkkki-����j������ c�������{���ooo�g�������?�����{�ooooo`A<A�A�p0�40X0��A��0(9@ 1�PJ|lQ$ (XIH 9h��@�8$�H" �
��< & ��*J�H� �`��@��@`P��w�����;3w�����w��m��?���� @ ǀ1�w����3��{v����������x��w���m��{{}tִִ�U��UU���UU��_�~�.�-WMkMkMW�Z�UU_��UU��_�R�R�R�\\\[%�B�2dɓ&ӻ�=����I)�r�l�����hѣF� �0�hhh�444f3-/������/�����Z�Z�U�V��UW��UU�W�T�T�T�]5�5�U�V��UV���UW��UK�K�KU�]]uu�W]}}]u�]W�]t�t���V���]uu��]]u��u�]u_�u�WOMV�����@����`⁘0��1��1J,�m����%�2$�(aQA�b� & LH8��������!l, . �B�P@t`�����P3������뮺�뮮����뮺��������ڪ���뮮�뮮����뮺��������ڪ���i�zצ��j�������������z�ڥ�i�zצ��j�����������ڥ��v�v-�šqrX�(\��2dɓ%%��������͜�E��Ye�4�hјѣF� Ɔ��F�dfx�d MkMk�Z�U�UUUUU��U/�R�_�K��Z�_Mk���MUUUU�UK�T���R�u�]uϾ��뮿�뻯���]v�w�w�]u�\����������~����m�w��B�;���p��A�hbC� 4��P��d)'��$�d�HŎ,�,Pq@���� ��Db� @C������@,
���0,�P��D( ( �������}�����]u�>���������߯�uu�u�W}u�]uϾ��뮿�뻯���]v�w�w��Z�W�UP2EU����R�_MZ�W�UP2V����j����!�".D\� \\\\\[ɒ�dɓ%;���Z��jt�h���͖Ye� 4iXѣF�������fp�����_U�ֿU��jfH��_�U�_MZ�W�UP2EU����R�_U�W_Uu��]u�]u��OMw]5]ot��]uu�W]��]u�]o�t��u�]��O  $4a�c4aEes!Q H�Km�&.D�"�Ts�0�$a1�CC .  ���¡`��F������f����w��}W�]}U�_�u�]mu���OMw]5]ot��]uu�W]�u�]u�U�]=5�t�u��ֽ5�5�Mk��UUUUUUU���/�K�K�V�5�5�Mk��UUU�UUT���/�K�K�H�"D�l�hZ�B������b�2dɴM��j�֕SS���s�,��,f4����fRM�����33o��o��k�_�_�ֿ�5UU��UUK��R�T�T��k�_�_�ֿ�UUUUUUU���/�K�K�O������������������wmϮ���������������}����w� 4��84 A�'��
@`H�@`q��A� (�) P��,�D�H�b��@@qC� �� AbH�<@�8��T,P�*P�0,A``T(
�H����p2���}��mϮ���������������}����������?�����;����w}W�����V�e W���U�R�_ֿֿ�Z��5_��/��ȑ�1R$H�"D["C! �����dɓ%&Ӵ�������s��4h����4h�k���������#~�������3(j���_��������_��@ ���k��������������뮺���鯮��j�ꮿ��������뮿����j�������`��840���� fQ%�I�t)P�)�A2H&,Y �Hd1QQQ�ġ1(Cb"
!�<8�p���a���B�B���S�������e�����۾���������뮺�������~������������뮺���꾺߭����������������������k��_�������������������������b�� �T��)ȑ"..D\\\\[&K&L�)�w��ZN�UM#g9�l�ٳ�������NfH��������~�����������������_����������骪��������������������������������������������k��������D ����" ��h0 `�X`80$f0A@���c e6��[a�L�B�$[ A�,PP�p��AbLH $�x������a��X@X ���@��(���_������fL��������������������}��޾�۫޿������������k��������~���_����"�_�k��_�K_�������fJ�/����/�GC�Gb����TTTTTR!��DHdH�"D[!����ɋ�m�d���o�[[UT����l������������������Z�5�ֿ�5��#T����T��N�M���MT̑U/����/�}__W_�u32[[�[U�����u��P3%����_�o0p�x8P<(  
0q�C�(r�t!P�%����,P�,� X�9#�9"X�%�BX��a�xs (\9C��
������������������}}]����mo�mW�U�W����]@ ̖����u_����5���T��_�����5���T��_�R���Hx�<Tx���v*)��EEEHb�"$H�!���űqrb�ɓl���w����UUSU_���jf:����f<����k�����34j��k���������34j��k���_�������������������_���������������������<A�����`
��#
����� P
����!�$rH�� I,@q@h��@PPH�Hp�
�"@XH  ��pp���C�!`T,a��X X�TC��8�������v���o����������������������_�������������������_�_�k��ꪵ�j���������_�_�k��꪿��������k�j% �<x��Ǐ<S*;�����d1R�l� �....J&L�2m97j��^��UW�����hɿ���ֿֿ����MUW��U��R���V�ֿ�����Uk��U��R���}]�������i����u���_�u�����_P1�]��o�t��a�����`�`�h0Hh`���!��E�$�Ža�A�b$A2D��\��b�
� Tr�,v$X�%��b!���v��xZ ��x�����p4���k���������d��������������믨�ӭ����릿�k������3$j������_��������@ �U��/�R�LLLt<Lv;�Ǐ<x���1��!QQQR�C"D����.....K&L�2n����ꪒ����3@_������������*���_�����������3$j������_������fl����z������������k�ﯿn�!���B �` ��4 �A�#1�#!�
��2Q�e@Q+��I$� � Y"ċ� SPqAC��D� � �����h\8 ��p�0-�C����f�����_��_�u�P3e��_�_~��u��]�36[�u��}�wֿ���Z��5���������֠f�R���\LLLLLx�;��c�1�X��Ǐ�
��d2�L�lZ!�����d�dɓ%ww�ۿ�������fp������k�_��Z��5K����}k�Z��jfh���_��������3:t��]5���u��}@ ������!�CA���<� �`D3 0,iBJ�$� : �p�$-�C�[ A� �x⇎@��D ,<9!��xv ��C�����fn����_������3BO�����������3:t��]5��������_��/��M�Z�������!����Bb��������<K�ı���Ǐ�EEEH�B� ��D[����ŢY2d��h���ӻ�����\��7�������_���_��/��M�Z��5��R�������_����_��{��~��_�������_�������_��* v � ���`�` P`,3
�`��D��$�B*���L�E��HX�b�� �� 
P�#�! � p�DH����< $8���Y`T,b�������fP���������������������������{����������������ݾ��o��_�������ڪ_���_�i�u����������������������BP���!��B�%�B"bbbbP�Lx�<x�����c�QR�$HDEšrX�1ql�2n���������NfP����7����u�����������i����_�������ڪ_���_�i~������������������������������� �x<`��3 ��h`@h��҂%eN`���&�-��d�.,8�,9B1B� x�DĎ&$P��BrÐXxX��Y""7������� �_j���o�����������dK�����������������.����������������*_�������������B�����눈���������b���""!���bX�&&&;�cǎ�b����"� �$E�"��и�J&L�2Q2S������������N��������������B������������kP2UK����������P3e����W����]�36[�u�����@"�> �p �` ��`Ph`��@08҃Y�s*dh��ŶŒ� \�B����$�����($x��� ��$ H�88��pxp4,p�T9!�����������������������������-ۮ�������뾠f�۫���f4���jfh���f8���u34k���_�"""�b"!Ј��B""""""""X���!�������bc��NJc�QQR�$H�".-�����B�1h�2[^���P1����ۀ�������k���@ �_����/�����*_�����������Ӫ����������ft������!x;��0 ���f ���c��+(m� F��[`�d��.,(�B���G<p��"Ĉ8� q���
@xr�����w3}��́]�������_P3�[��ӿ��}�_P3�U�����ӯ��@ ���_��5��M@ �/��K�:��à�C���1 DD;ı1111111�NJc�!Hx�*D��D�$E�r���L\�2W���f������_�������i�����������
� ǀVf<����w�W�����1���������������(
��($`��@ 0 ����`�X`" `����c4h�2I����
(4p����� �8l8 �, # �@A@2�@ `0 ��,H���� � ,$Z �B�{������x������}�X��
� ǀW�����
�����Vf<�1������+��̉T�y5UUUUUT�c��d
�cɪ������3U��"B!�"D\\\\\\�(�d�m��骩�G+9e��+4hhhhhhd � d �XȲ��m(�z���j������@ �U@ �@ �UUUUU@ ����_����_P1�]u_��]������u���i�OU�����
�����@�L H<ph0�haA�� �,ْ�~�LY�d Pñ�80��a 8@xp��X$*
a@XK �a 4%��ŒH0��a1 �P���T������������f4맪���������������.����������cJ�fP��cJ����cJ�3(j�cJ�␤*D�D�l\\�.K&.L�7ww��͛9���,���+44hhhhhiJYQe�YeG���lm�����ҭ@ ���ү����Ҫ��*��ү����������߮���k������f�k~�����`0P������x;���`,3 ,`q�(c��X��$�J9� PaAc��D� D D�d���`<,
��&A H&�@�,`��&$  Ă"ABA& f�������_�@ ͞��u���_��}�36{[���[�5����Z��5K���T�Z���5���T����!QШ��� TT�"�2$!qqqh[&L�-���ZU:G9��Ye�T4hј��g,�9f��p6��k��������_��ڤ������@ ������_�����-�� ��P4�����

AA`�  �C�����0�0�eVc�D'#bܒE�-�"(�Q㘘��1�-� ��BB�P@L$ ��� a�C bC �J���k��́u3J[[����iKkp2t֠i�R����3Lj�����1Ш�TTTR����"C"-������&L������i4�Y�+,�� ����r�o���k�fF���1�P2t֠i�R���3_������@ Ǔ�P1����_���y_��!P�AD�@L| �$����D�` �`P��0(1E� �;$�d�(XH�1A�QA#�  �� 0p*8XP \$ ��) A$��`��`@H,HD�"bA �D��f�����f<���������&���c����������nf4���*P1���qW��ؔ<x���⣱☨���**D�$1l�-��d�dɒɻ��kj�Ι�VVYQQff�h�9�_��@ ��@ �(��jf������e ���̥�����̡u�P2�O� �($�X$$ ��A���`��0Xу�Q1 �ܑD� \�b��$x�����v�l,`�0T(`�H�,0-�LID�%0����� �_�����e ����:�����.��p2�_��jfV����P2�K��jfV����fZ��LJ��Cǎ�Ǐ<R��b�����""�!qqrdɓm�n��J���s��js����@ �����֠ej����e���P2��UUR������������������������/�������n�����v�,�P�@D���H �@`�"��h1!���L`��� 1�E@%�H"I�9�A"��p�$�D� Hp4: �l,
‰ ��p�$ $���Abc�ă D� ����p5V�����/�������n�����v�f<��������������o�P24�@ �R���^���&�f@��̑���bX�������&<v<t<x�����R!��"$H�b����d�nJw��U�6i3J�������@ �����:����f@��̑����"j�d
�@ ��/P1�u�3*t���y�3W_P2�]53p< `�@�@x)�AK ��<�C�!�F�(��&�{�m�&H�r� qLQ�H@� ��; ���P�R
��L$�,% �11%ĔLO���f�����@ ���̩�M@ ǟP1�u�3*t���y� ȓZ��5Jf����*P2,DLDJ�! LDLLLLLx�����GB��TTT�C"D\\\[ɒɒɽ�m����I*J����W3LP3�P3EJf������P23^O�����3^O������,`,(���@( @  H�� p ���`
�����#���2a�e@N��A$ �B�4@��Ab�88H�HpX���8@p�hX�����@P( � ! A ! H8H� ��DH D����w��P5����}�P5����}� Ȗ�h @ ��h @ �C�C�DDDDDDDD�11,LLv;:���B���H�ȋ���ɓ&�n��zI%j�p1�3HP3U��P3�P4�f
�f�����+��Rگ����\ ��
�(�P@��x8����с�K0Z�J�v�!B�Ð�C x�bG�
Ð����Q!L*�a0\x����% ����u3Gn�e��f���fP��iKi��R��1�3+Z��5���<<<<;��1 D;��DDDDD�1J�Ǐ;��EE1H�$HB����ɓi�����f>�� �����1��bu3Li@ �W��Y�u�����Y�u��6�PP (
`��t8�8�a�<3`��4N�`�[$P�&,H�@�@p��Lp� ��DK� $8 0�&@P ���c�lj���BA?���f�ۀ�.���������������f4���*P1���aR�� Ah<:��0� DLLLv&&:<x�<TTS"D[!�ɓ&Jw}�o����(�zjf��@ ��P5�Jf6�lI������'���,  P
`�* �@�D
����< �C0�p̠ye�`z�C`��D�H,[ $�B��ǎ v$@��!�ćab��Ql(��,%���X�,LLLL̅� �ݨ�b��'���������́�����3`k��p�Z ����xv���.���t���b"""�% ���bP��NJb���� S"D[! b��1h�7����+W34M� �V�l ��Ө�_��P6���P6��L�P D
 �
@HH �@� @ ��H8�0 &
���cJ4^)��A  �Y(,P8H� ��"����`T,A@P,8P
�$ ��8H�08H����A?�����?�n���c�f����f����fؿ��fؿ�p�[ ���p�\. ���p�\.��xxxxxxt""""% bbbX�����LTTT�"ش...K%�����d�8�c�3-P6���P6��WP7%�]@ ܖ�P0 @�0�@`)@�& @�� ���Q�@�Y@�f������@�,%�H� !� $x�Bb�C�È �� ��
$@���<rGbI�� ��\̥��fH��nKi����鮝@ �����ե�B�[
�B�\.¡L)�\.��\: ap������DC�DD�1111����B��)��B�"� �I.���P2��́ۀ��P7F��f��@ �^�o�P$����( P� & �!<P8`�40a�A� ����c�>��$Y (Y"�98X�$K�b�����`hrB���XP
$p�ؐ�� ��������������gB�@ �]@ �@ �YB�P�T*
�B�P�T*��T*��h. ����\-�����;��ı��x���Ш�Sȓl�Kv��K��������������������d�* �L�@@�L0h0 F�J`b�*����$ %�Ų�"�Q��AbbBD���
-��
�@�
�@���;33}��}� ���3a�� �T*��R aP�
�BaP�T)�B�S
ap�[ a��xxx�"!�b"��1���NJ�b���K&L�2d�m@ ��o�

84
SampleScenes/HDTest/BakingSkyTest/ReflectionProbe-0.exr.meta


fileFormatVersion: 2
guid: bfa6a47546895b74b81ff58e3ea7af8f
TextureImporter:
fileIDToRecycleName:
8900000: generatedCubemap
externalObjects: {}
serializedVersion: 5
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 1
seamlessCubemap: 1
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 2
aniso: 0
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 2
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 2
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 100
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
vertices: []
indices:
edges: []
weights: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

212
SampleScenes/HDTest/BakingSkyTest/RoughMaterial.mat


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: RoughMaterial
m_Shader: {fileID: 4800000, guid: 6e4ae4064600d784cac1e41a9e6f2e59, type: 3}
m_ShaderKeywords: _ALBEDOAFFECTEMISSIVE_OFF _ALPHACUTOFFENABLE_OFF _BLENDMODE_PRESERVE_SPECULAR_LIGHTING
_DEPTHOFFSETENABLE_OFF _DISTORTIONENABLE_OFF _DOUBLESIDEDENABLE_OFF _ENABLESPECULAROCCLUSION_OFF
_ENABLEWIND_OFF _NORMALMAP_TANGENT_SPACE _PREREFRACTIONPASS_OFF _TRANSPARENTBACKFACEENABLE_OFF
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses:
- DistortionVectors
- TransparentBackface
- TransparentBackfaceDebugDisplay
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _AnisotropyMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BaseColorMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BentNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BentNormalMapOS:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DistortionVectorMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissiveColorMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _HeightMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MaskMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _NormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _NormalMapOS:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SpecularColorMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SubsurfaceMaskMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SubsurfaceRadiusMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _TangentMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _TangentMapOS:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ThicknessMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _TransmittanceColorMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _AORemapMax: 1
- _AORemapMin: 0
- _ATDistance: 1
- _AlbedoAffectEmissive: 0
- _AlphaCutoff: 0.5
- _AlphaCutoffEnable: 0
- _AlphaCutoffPostpass: 0.5
- _AlphaCutoffPrepass: 0.5
- _Anisotropy: 0
- _BlendMode: 0
- _CoatCoverage: 1
- _CoatIOR: 0.5
- _CoatMask: 1
- _CullMode: 2
- _CullModeForward: 2
- _Cutoff: 0.5
- _DepthOffsetEnable: 0
- _DetailAlbedoScale: 1
- _DetailNormalScale: 1
- _DetailSmoothnessScale: 1
- _DiffusionProfile: 0
- _DisplacementLockObjectScale: 1
- _DisplacementLockTilingScale: 1
- _DisplacementMode: 0
- _DistortionBlendMode: 0
- _DistortionBlurBlendMode: 0
- _DistortionBlurDstBlend: 1
- _DistortionBlurRemapMax: 1
- _DistortionBlurRemapMin: 0
- _DistortionBlurScale: 1
- _DistortionBlurSrcBlend: 1
- _DistortionDepthTest: 1
- _DistortionDstBlend: 1
- _DistortionEnable: 0
- _DistortionScale: 1
- _DistortionSrcBlend: 1
- _DistortionVectorBias: -1
- _DistortionVectorScale: 2
- _DoubleSidedEnable: 0
- _DoubleSidedNormalMode: 1
- _Drag: 1
- _DstBlend: 0
- _EmissiveColorMode: 1
- _EmissiveIntensity: 0
- _EnableBlendModePreserveSpecularLighting: 1
- _EnableFogOnTransparent: 1
- _EnableMotionVectorForVertexAnimation: 0
- _EnableSpecularOcclusion: 0
- _EnableWind: 0
- _HeightAmplitude: 0.02
- _HeightCenter: 0.5
- _HeightMapParametrization: 1
- _HeightMax: 1
- _HeightMin: -1
- _HeightOffset: 0
- _HeightPoMAmplitude: 2
- _HeightTessAmplitude: 2
- _HeightTessCenter: 0.5
- _IOR: 1
- _InitialBend: 1
- _InvTilingScale: 1
- _LinkDetailsWithBase: 1
- _MaterialID: 1
- _Metallic: 0
- _NormalMapSpace: 0
- _NormalScale: 1
- _PPDLodThreshold: 5
- _PPDMaxSamples: 15
- _PPDMinSamples: 5
- _PPDPrimitiveLength: 1
- _PPDPrimitiveWidth: 1
- _PreRefractionPass: 0
- _RefractionMode: 0
- _ShiverDirectionality: 0.5
- _ShiverDrag: 0.2
- _Smoothness: 0
- _SmoothnessRemapMax: 1
- _SmoothnessRemapMin: 0
- _SrcBlend: 1
- _StencilRef: 2
- _StencilRefMV: 128
- _StencilWriteMask: 7
- _StencilWriteMaskMV: 128
- _Stiffness: 1
- _SubsurfaceMask: 1
- _SubsurfaceProfile: 0
- _SubsurfaceRadius: 1
- _SurfaceType: 0
- _TexWorldScale: 1
- _Thickness: 1
- _ThicknessMultiplier: 1
- _TransparentBackfaceEnable: 0
- _TransparentDepthPostpassEnable: 0
- _TransparentDepthPrepassEnable: 0
- _UVBase: 0
- _UVDetail: 0
- _ZTestMode: 4
- _ZWrite: 1
m_Colors:
- _BaseColor: {r: 1, g: 1, b: 1, a: 1}
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0}
- _EmissionColor: {r: 1, g: 1, b: 1, a: 1}
- _EmissiveColor: {r: 1, g: 1, b: 1, a: 1}
- _InvPrimScale: {r: 1, g: 1, b: 0, a: 0}
- _SpecularColor: {r: 1, g: 1, b: 1, a: 1}
- _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0}
- _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1}
- _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0}
- _UVMappingMask: {r: 1, g: 0, b: 0, a: 0}

8
SampleScenes/HDTest/BakingSkyTest/RoughMaterial.mat.meta


fileFormatVersion: 2
guid: 7f1ba4f7ac501484d8c1bfde0904af71
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

76
SampleScenes/HDTest/BakingSkyTest/SkyBlue Profile.asset


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d7fd9488000d3734a9e00ee676215985, type: 3}
m_Name: SkyBlue Profile
m_EditorClassIdentifier:
components:
- {fileID: 114640304470647312}
--- !u!114 &114640304470647312
MonoBehaviour:
m_ObjectHideFlags: 3
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3df29e7cc05fbec4aa43e06ea875565d, type: 3}
m_Name: ProceduralSky
m_EditorClassIdentifier:
active: 1
rotation:
m_OverrideState: 0
m_Value: 0
min: 0
max: 360
exposure:
m_OverrideState: 0
m_Value: 0
multiplier:
m_OverrideState: 0
m_Value: 1
min: 0
updateMode:
m_OverrideState: 0
m_Value: 0
updatePeriod:
m_OverrideState: 0
m_Value: 0
min: 0
sunSize:
m_OverrideState: 0
m_Value: 0.04
min: 0
max: 1
sunSizeConvergence:
m_OverrideState: 0
m_Value: 5
min: 1
max: 10
atmosphereThickness:
m_OverrideState: 0
m_Value: 1
min: 0
max: 5
skyTint:
m_OverrideState: 1
m_Value: {r: 0, g: 0.0065784995, b: 0.7735849, a: 1}
hdr: 0
showAlpha: 1
showEyeDropper: 1
groundColor:
m_OverrideState: 0
m_Value: {r: 0.369, g: 0.349, b: 0.341, a: 1}
hdr: 0
showAlpha: 1
showEyeDropper: 1
enableSunDisk:
m_OverrideState: 0
m_Value: 1

8
SampleScenes/HDTest/BakingSkyTest/SkyBlue Profile.asset.meta


fileFormatVersion: 2
guid: a22e785c426e916429715d71f1a94d05
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

76
SampleScenes/HDTest/BakingSkyTest/SkyGreen Profile.asset


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d7fd9488000d3734a9e00ee676215985, type: 3}
m_Name: SkyGreen Profile
m_EditorClassIdentifier:
components:
- {fileID: 114615488076658380}
--- !u!114 &114615488076658380
MonoBehaviour:
m_ObjectHideFlags: 3
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3df29e7cc05fbec4aa43e06ea875565d, type: 3}
m_Name: ProceduralSky
m_EditorClassIdentifier:
active: 1
rotation:
m_OverrideState: 0
m_Value: 0
min: 0
max: 360
exposure:
m_OverrideState: 0
m_Value: 0
multiplier:
m_OverrideState: 0
m_Value: 1
min: 0
updateMode:
m_OverrideState: 0
m_Value: 0
updatePeriod:
m_OverrideState: 0
m_Value: 0
min: 0
sunSize:
m_OverrideState: 0
m_Value: 0.04
min: 0
max: 1
sunSizeConvergence:
m_OverrideState: 0
m_Value: 5
min: 1
max: 10
atmosphereThickness:
m_OverrideState: 0
m_Value: 1
min: 0
max: 5
skyTint:
m_OverrideState: 1
m_Value: {r: 0.0019727899, g: 0.8396226, b: 0, a: 1}
hdr: 0
showAlpha: 1
showEyeDropper: 1
groundColor:
m_OverrideState: 0
m_Value: {r: 0.369, g: 0.349, b: 0.341, a: 1}
hdr: 0
showAlpha: 1
showEyeDropper: 1
enableSunDisk:
m_OverrideState: 0
m_Value: 1

8
SampleScenes/HDTest/BakingSkyTest/SkyGreen Profile.asset.meta


fileFormatVersion: 2
guid: 5309daea9dce20b418b629d05f82e610
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

76
SampleScenes/HDTest/BakingSkyTest/SkyRed Profile.asset


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d7fd9488000d3734a9e00ee676215985, type: 3}
m_Name: SkyRed Profile
m_EditorClassIdentifier:
components:
- {fileID: 114651754069007098}
--- !u!114 &114651754069007098
MonoBehaviour:
m_ObjectHideFlags: 3
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3df29e7cc05fbec4aa43e06ea875565d, type: 3}
m_Name: ProceduralSky
m_EditorClassIdentifier:
active: 1
rotation:
m_OverrideState: 0
m_Value: 0
min: 0
max: 360
exposure:
m_OverrideState: 0
m_Value: 0
multiplier:
m_OverrideState: 0
m_Value: 1
min: 0
updateMode:
m_OverrideState: 0
m_Value: 0
updatePeriod:
m_OverrideState: 0
m_Value: 0
min: 0
sunSize:
m_OverrideState: 0
m_Value: 0.04
min: 0
max: 1
sunSizeConvergence:
m_OverrideState: 0
m_Value: 5
min: 1
max: 10
atmosphereThickness:
m_OverrideState: 0
m_Value: 1
min: 0
max: 5
skyTint:
m_OverrideState: 1
m_Value: {r: 0.745283, g: 0, b: 0, a: 1}
hdr: 0
showAlpha: 1
showEyeDropper: 1
groundColor:
m_OverrideState: 0
m_Value: {r: 0.369, g: 0.349, b: 0.341, a: 1}
hdr: 0
showAlpha: 1
showEyeDropper: 1
enableSunDisk:
m_OverrideState: 0
m_Value: 1

8
SampleScenes/HDTest/BakingSkyTest/SkyRed Profile.asset.meta


fileFormatVersion: 2
guid: c7d272a2b27e3844cbdc5a343c2c50fc
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

部分文件因为文件数量过多而无法显示

正在加载...
取消
保存