浏览代码

Merge branch 'master'

/Branch_Batching2
Evgenii Golubev 8 年前
当前提交
6c224d47
共有 131 个文件被更改,包括 8005 次插入607 次删除
  1. 4
      .gitmodules
  2. 285
      Assets/ScriptableRenderPipeline/HDRenderPipeline/Debug/DebugDisplay.cs
  3. 13
      Assets/ScriptableRenderPipeline/HDRenderPipeline/Debug/DebugDisplay.cs.hlsl
  4. 2
      Assets/ScriptableRenderPipeline/HDRenderPipeline/Debug/DebugDisplay.hlsl
  5. 12
      Assets/ScriptableRenderPipeline/HDRenderPipeline/Debug/Resources/DebugViewTiles.shader
  6. 200
      Assets/ScriptableRenderPipeline/HDRenderPipeline/Editor/HDRenderPipelineInspector.cs
  7. 13
      Assets/ScriptableRenderPipeline/HDRenderPipeline/HDRenderPipeline.asset
  8. 86
      Assets/ScriptableRenderPipeline/HDRenderPipeline/HDRenderPipeline.cs
  9. 2
      Assets/ScriptableRenderPipeline/HDRenderPipeline/Lighting/LightLoop.cs
  10. 2
      Assets/ScriptableRenderPipeline/HDRenderPipeline/Lighting/TilePass/FeatureFlags.hlsl
  11. 113
      Assets/ScriptableRenderPipeline/HDRenderPipeline/Lighting/TilePass/TilePass.cs
  12. 8
      Assets/ScriptableRenderPipeline/HDRenderPipeline/Lighting/TilePass/TilePass.hlsl
  13. 11
      Assets/ScriptableRenderPipeline/HDRenderPipeline/Lighting/TilePass/TilePassLoop.hlsl
  14. 21
      Assets/ScriptableRenderPipeline/HDRenderPipeline/Material/Lit/Editor/LitUI.cs
  15. 20
      Assets/ScriptableRenderPipeline/HDRenderPipeline/Material/Lit/Lit.cs
  16. 31
      Assets/ScriptableRenderPipeline/HDRenderPipeline/Material/Lit/Lit.cs.hlsl
  17. 308
      Assets/ScriptableRenderPipeline/HDRenderPipeline/Material/Lit/Lit.hlsl
  18. 14
      Assets/ScriptableRenderPipeline/HDRenderPipeline/Material/Lit/Lit.shader
  19. 2
      Assets/ScriptableRenderPipeline/HDRenderPipeline/Material/Lit/LitData.hlsl
  20. 13
      Assets/ScriptableRenderPipeline/HDRenderPipeline/Material/Lit/LitDataInternal.hlsl
  21. 16
      Assets/ScriptableRenderPipeline/HDRenderPipeline/Material/Lit/LitProperties.hlsl
  22. 14
      Assets/ScriptableRenderPipeline/HDRenderPipeline/Material/Lit/LitTessellation.shader
  23. 8
      Assets/ScriptableRenderPipeline/HDRenderPipeline/Material/Lit/Resources/CombineSubsurfaceScattering.shader
  24. 4
      Assets/ScriptableRenderPipeline/HDRenderPipeline/Material/MaterialUtilities.hlsl
  25. 2
      Assets/ScriptableRenderPipeline/HDRenderPipeline/ShaderPass/ShaderPassForward.hlsl
  26. 65
      Assets/ScriptableRenderPipeline/HDRenderPipeline/ShaderVariables.hlsl
  27. 1
      Assets/ScriptableRenderPipeline/HDRenderPipeline/Utilities.cs
  28. 36
      Assets/ScriptableRenderPipeline/HDRenderPipeline/Wind/3DNoise.psd.meta
  29. 18
      Assets/ScriptableRenderPipeline/ShaderLibrary/CommonLighting.hlsl
  30. 8
      Assets/ScriptableRenderPipeline/ShaderLibrary/NormalSurfaceGradient.hlsl
  31. 9
      Assets/ScriptableRenderPipeline/ShaderLibrary/Packing.hlsl
  32. 14
      Assets/ScriptableRenderPipeline/ShaderLibrary/SampleUVMappingInternal.hlsl
  33. 103
      Assets/ScriptableRenderPipeline/common/Camera/CameraSwitcher.cs
  34. 16
      Assets/ScriptableRenderPipeline/common/TextureCache.cs
  35. 28
      Assets/TestScenes/HDTest/GraphicTest/Common/Dragon/DragonStatue.mat
  36. 900
      Assets/TestScenes/HDTest/HDRenderLoopTest.unity
  37. 3
      ProjectSettings/EditorBuildSettings.asset
  38. 96
      ProjectSettings/InputManager.asset
  39. 14
      ProjectSettings/ProjectSettings.asset
  40. 14
      ProjectSettings/QualitySettings.asset
  41. 1
      Assets/ScriptableRenderPipeline/ShaderGenerator/Editor/ShaderGeneratorMenu.cs
  42. 9
      Assets/ScriptableRenderPipeline/HDRenderPipeline/SSSProfile.meta
  43. 9
      Assets/ScriptableRenderPipeline/PostProcessing.meta
  44. 9
      Assets/ScriptableRenderPipeline/common/Debugging.meta
  45. 9
      Assets/TestScenes/Common.meta
  46. 221
      Assets/TestScenes/HDTest/GraphicTest/Common/Dragon/DragonStatueSpecular.mat
  47. 8
      Assets/TestScenes/HDTest/GraphicTest/Common/Dragon/DragonStatueSpecular.mat.meta
  48. 610
      Assets/TestScenes/HDTest/GraphicTest/Common/Dragon/Dragon_specular.psd
  49. 88
      Assets/TestScenes/HDTest/GraphicTest/Common/Dragon/Dragon_specular.psd.meta
  50. 9
      Assets/TestScenes/HDTest/GraphicTest/SSS.meta
  51. 197
      Assets/TestScenes/HDTest/GraphicTest/Two Sided/Material/GroundLeaf_DoubleSidedFlipSSS.mat
  52. 8
      Assets/TestScenes/HDTest/GraphicTest/Two Sided/Material/GroundLeaf_DoubleSidedFlipSSS.mat.meta
  53. 8
      Assets/TestScenes/HDTest/NewBatcherBench1.unity.meta
  54. 9
      Assets/TestScenes/HDTest/NewBatcherTest.meta
  55. 37
      Assets/ScriptableRenderPipeline/HDRenderPipeline/SSSProfile/FoliageSSSProfile.asset
  56. 9
      Assets/ScriptableRenderPipeline/HDRenderPipeline/SSSProfile/FoliageSSSProfile.asset.meta
  57. 37
      Assets/ScriptableRenderPipeline/HDRenderPipeline/SSSProfile/SkinSSSProfile.asset
  58. 9
      Assets/ScriptableRenderPipeline/HDRenderPipeline/SSSProfile/SkinSSSProfile.asset.meta
  59. 288
      Assets/ScriptableRenderPipeline/common/Debugging/DebugActionManager.cs
  60. 12
      Assets/ScriptableRenderPipeline/common/Debugging/DebugActionManager.cs.meta
  61. 292
      Assets/ScriptableRenderPipeline/common/Debugging/DebugItemDrawer.cs
  62. 12
      Assets/ScriptableRenderPipeline/common/Debugging/DebugItemDrawer.cs.meta
  63. 267
      Assets/ScriptableRenderPipeline/common/Debugging/DebugMenu.cs
  64. 12
      Assets/ScriptableRenderPipeline/common/Debugging/DebugMenu.cs.meta
  65. 453
      Assets/ScriptableRenderPipeline/common/Debugging/DebugMenuItemUI.cs
  66. 12
      Assets/ScriptableRenderPipeline/common/Debugging/DebugMenuItemUI.cs.meta
  67. 194
      Assets/ScriptableRenderPipeline/common/Debugging/DebugMenuManager.cs
  68. 12
      Assets/ScriptableRenderPipeline/common/Debugging/DebugMenuManager.cs.meta
  69. 178
      Assets/ScriptableRenderPipeline/common/Debugging/DebugMenuUI.cs
  70. 12
      Assets/ScriptableRenderPipeline/common/Debugging/DebugMenuUI.cs.meta
  71. 57
      Assets/ScriptableRenderPipeline/common/Debugging/DebugMenuUpdater.cs
  72. 12
      Assets/ScriptableRenderPipeline/common/Debugging/DebugMenuUpdater.cs.meta
  73. 76
      Assets/ScriptableRenderPipeline/common/Debugging/Debugging.cs
  74. 9
      Assets/ScriptableRenderPipeline/common/Debugging/Editor.meta
  75. 12
      Assets/ScriptableRenderPipeline/common/Debugging/Editor/DebugMenuEditor.cs.meta
  76. 72
      Assets/ScriptableRenderPipeline/common/Debugging/Editor/DebugMenuEditor.cs
  77. 9
      Assets/TestScenes/Common/Scripts.meta
  78. 134
      Assets/TestScenes/Common/Scripts/MiniProfiler.cs
  79. 12
      Assets/TestScenes/Common/Scripts/MiniProfiler.cs.meta
  80. 27
      Assets/TestScenes/HDTest/GraphicTest/SSS/Infinite-Scan_License.txt
  81. 8
      Assets/TestScenes/HDTest/GraphicTest/SSS/Infinite-Scan_License.txt.meta
  82. 178
      Assets/TestScenes/HDTest/GraphicTest/SSS/InifiniteRealityHead.mat
  83. 9
      Assets/TestScenes/HDTest/GraphicTest/SSS/InifiniteRealityHead.mat.meta
  84. 1001
      Assets/TestScenes/HDTest/GraphicTest/SSS/bump-lowRes.png
  85. 122
      Assets/TestScenes/HDTest/GraphicTest/SSS/bump-lowRes.png.meta
  86. 1001
      Assets/TestScenes/HDTest/GraphicTest/SSS/head.OBJ
  87. 148
      Assets/TestScenes/HDTest/GraphicTest/SSS/head.OBJ.meta
  88. 74
      Assets/TestScenes/HDTest/GraphicTest/SSS/lambertian.jpg.meta
  89. 9
      Assets/TestScenes/HDTest/NewBatcherTest/Prefabs.meta
  90. 82
      Assets/TestScenes/HDTest/NewBatcherTest/Prefabs/Capsule.prefab

4
.gitmodules


[submodule "Assets/TestScenes/Big"]
path = Assets/TestScenes/Big
url = https://github.com/Unity-Technologies/ScriptableRenderLoopScenes
[submodule "Assets/ScriptableRenderPipeline/PostProcessing"]
path = Assets/ScriptableRenderPipeline/PostProcessing
url = https://github.com/Unity-Technologies/PostProcessing
branch = v2

285
Assets/ScriptableRenderPipeline/HDRenderPipeline/Debug/DebugDisplay.cs


using System.Collections;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;

[GenerateHLSL]
public enum DebugDisplayMode
public enum DebugLightingMode
ViewMaterial,
DiffuseLighting,
SpecularLighting,
VisualizeCascade

public bool displayRenderingDebug = false;
public bool displayLightingDebug = false;
public DebugDisplayMode debugDisplayMode = DebugDisplayMode.None;
public bool IsDebugDisplayEnable()
private static bool isDebugViewMaterialInit = false;
public static GUIContent[] debugViewMaterialStrings = null;
public static int[] debugViewMaterialValues = null;
public static GUIContent[] debugViewEngineStrings = null;
public static int[] debugViewEngineValues = null;
public static GUIContent[] debugViewMaterialVaryingStrings = null;
public static int[] debugViewMaterialVaryingValues = null;
public static GUIContent[] debugViewMaterialGBufferStrings = null;
public static int[] debugViewMaterialGBufferValues = null;
public DebugDisplaySettings()
{
BuildDebugRepresentation();
}
public int GetDebugMaterialIndex()
{
return materialDebugSettings.GetDebugMaterialIndex();
}
public DebugLightingMode GetDebugLightingMode()
{
return lightingDebugSettings.debugLightingMode;
}
public bool IsDebugDisplayEnabled()
{
return materialDebugSettings.IsDebugDisplayEnabled() || lightingDebugSettings.IsDebugDisplayEnabled();
}
public bool IsDebugMaterialDisplayEnabled()
{
return materialDebugSettings.IsDebugDisplayEnabled();
}
public void SetDebugViewMaterial(int value)
{
if (value != 0)
lightingDebugSettings.debugLightingMode = DebugLightingMode.None;
materialDebugSettings.SetDebugViewMaterial(value);
}
public void SetDebugViewEngine(int value)
{
if (value != 0)
lightingDebugSettings.debugLightingMode = DebugLightingMode.None;
materialDebugSettings.SetDebugViewEngine(value);
}
public void SetDebugViewVarying(Attributes.DebugViewVarying value)
{
if (value != 0)
lightingDebugSettings.debugLightingMode = DebugLightingMode.None;
materialDebugSettings.SetDebugViewVarying(value);
}
public void SetDebugViewGBuffer(int value)
{
if (value != 0)
lightingDebugSettings.debugLightingMode = DebugLightingMode.None;
materialDebugSettings.SetDebugViewGBuffer(value);
}
public void SetDebugLightingMode(DebugLightingMode value)
{
if(value != 0)
materialDebugSettings.DisableMaterialDebug();
lightingDebugSettings.debugLightingMode = value;
}
public void RegisterDebug()
return debugDisplayMode != DebugDisplayMode.None;
DebugMenuManager.instance.AddDebugItem<float>("Display Stats", "Frame Rate", () => 1.0f / Time.deltaTime, null, true);
DebugMenuManager.instance.AddDebugItem<float>("Display Stats", "Frame Time", () => Time.deltaTime * 1000.0f, null, true);
DebugMenuManager.instance.AddDebugItem<int>("Material", "Material",() => materialDebugSettings.debugViewMaterial, (value) => SetDebugViewMaterial((int)value), false, new DebugItemDrawerIntEnum(DebugDisplaySettings.debugViewMaterialStrings, DebugDisplaySettings.debugViewMaterialValues));
DebugMenuManager.instance.AddDebugItem<int>("Material", "Engine",() => materialDebugSettings.debugViewEngine, (value) => SetDebugViewEngine((int)value), false, new DebugItemDrawerIntEnum(DebugDisplaySettings.debugViewEngineStrings, DebugDisplaySettings.debugViewEngineValues));
DebugMenuManager.instance.AddDebugItem<Attributes.DebugViewVarying>("Material", "Attributes",() => materialDebugSettings.debugViewVarying, (value) => SetDebugViewVarying((Attributes.DebugViewVarying)value));
DebugMenuManager.instance.AddDebugItem<int>("Material", "GBuffer",() => materialDebugSettings.debugViewGBuffer, (value) => SetDebugViewGBuffer((int)value), false, new DebugItemDrawerIntEnum(DebugDisplaySettings.debugViewMaterialGBufferStrings, DebugDisplaySettings.debugViewMaterialGBufferValues));
DebugMenuManager.instance.AddDebugItem<LightingDebugMenu, bool>("Enable Shadows", () => lightingDebugSettings.enableShadows, (value) => lightingDebugSettings.enableShadows = (bool)value);
DebugMenuManager.instance.AddDebugItem<LightingDebugMenu, ShadowMapDebugMode>("Shadow Debug Mode", () => lightingDebugSettings.shadowDebugMode, (value) => lightingDebugSettings.shadowDebugMode = (ShadowMapDebugMode)value);
DebugMenuManager.instance.AddDebugItem<LightingDebugMenu, uint>("Shadow Map Index", () => lightingDebugSettings.shadowMapIndex, (value) => lightingDebugSettings.shadowMapIndex = (uint)value);
DebugMenuManager.instance.AddDebugItem<LightingDebugMenu, DebugLightingMode>("Lighting Debug Mode", () => lightingDebugSettings.debugLightingMode, (value) => SetDebugLightingMode((DebugLightingMode)value));
DebugMenuManager.instance.AddDebugItem<LightingDebugMenu, bool>("Override Smoothness", () => lightingDebugSettings.overrideSmoothness, (value) => lightingDebugSettings.overrideSmoothness = (bool)value);
DebugMenuManager.instance.AddDebugItem<LightingDebugMenu, float>("Override Smoothness Value", () => lightingDebugSettings.overrideSmoothnessValue, (value) => lightingDebugSettings.overrideSmoothnessValue = (float)value, false, new DebugItemDrawFloatMinMax(0.0f, 1.0f));
DebugMenuManager.instance.AddDebugItem<LightingDebugMenu, Color>("Debug Lighting Albedo", () => lightingDebugSettings.debugLightingAlbedo, (value) => lightingDebugSettings.debugLightingAlbedo = (Color)value);
DebugMenuManager.instance.AddDebugItem<bool>("Lighting", "Display Sky Reflection", () => lightingDebugSettings.displaySkyReflection, (value) => lightingDebugSettings.displaySkyReflection = (bool)value);
DebugMenuManager.instance.AddDebugItem<LightingDebugMenu, float>("Sky Reflection Mipmap", () => lightingDebugSettings.skyReflectionMipmap, (value) => lightingDebugSettings.skyReflectionMipmap = (float)value, false, new DebugItemDrawFloatMinMax(0.0f, 1.0f));
DebugMenuManager.instance.AddDebugItem<bool>("Rendering", "Display Opaque",() => renderingDebugSettings.displayOpaqueObjects, (value) => renderingDebugSettings.displayOpaqueObjects = (bool)value);
DebugMenuManager.instance.AddDebugItem<bool>("Rendering", "Display Transparency",() => renderingDebugSettings.displayTransparentObjects, (value) => renderingDebugSettings.displayTransparentObjects = (bool)value);
DebugMenuManager.instance.AddDebugItem<bool>("Rendering", "Enable Distortion",() => renderingDebugSettings.enableDistortion, (value) => renderingDebugSettings.enableDistortion = (bool)value);
DebugMenuManager.instance.AddDebugItem<bool>("Rendering", "Enable Subsurface Scattering",() => renderingDebugSettings.enableSSS, (value) => renderingDebugSettings.enableSSS = (bool)value);
void FillWithProperties(Type type, GUIContent[] debugViewMaterialStrings, int[] debugViewMaterialValues, string strSubNameSpace, ref int index)
{
var attributes = type.GetCustomAttributes(true);
// Get attribute to get the start number of the value for the enum
var attr = attributes[0] as GenerateHLSL;
if (!attr.needParamDebug)
{
return;
}
var fields = type.GetFields();
var localIndex = 0;
foreach (var field in fields)
{
var fieldName = field.Name;
// Check if the display name have been override by the users
if (Attribute.IsDefined(field, typeof(SurfaceDataAttributes)))
{
var propertyAttr = (SurfaceDataAttributes[])field.GetCustomAttributes(typeof(SurfaceDataAttributes), false);
if (propertyAttr[0].displayName != "")
{
fieldName = propertyAttr[0].displayName;
}
}
fieldName = strSubNameSpace + fieldName;
debugViewMaterialStrings[index] = new GUIContent(fieldName);
debugViewMaterialValues[index] = attr.paramDefinesStart + (int)localIndex;
index++;
localIndex++;
}
}
void FillWithPropertiesEnum(Type type, GUIContent[] debugViewMaterialStrings, int[] debugViewMaterialValues, string prefix, ref int index)
{
var names = Enum.GetNames(type);
var localIndex = 0;
foreach (var value in Enum.GetValues(type))
{
var valueName = prefix + names[localIndex];
debugViewMaterialStrings[index] = new GUIContent(valueName);
debugViewMaterialValues[index] = (int)value;
index++;
localIndex++;
}
}
string GetSubNameSpaceName(Type type)
{
return type.Namespace.Substring(type.Namespace.LastIndexOf((".")) + 1) + "/";
}
void BuildDebugRepresentation()
{
if (!isDebugViewMaterialInit)
{
var varyingNames = Enum.GetNames(typeof(Attributes.DebugViewVarying));
debugViewMaterialVaryingStrings = new GUIContent[varyingNames.Length];
debugViewMaterialVaryingValues = new int[varyingNames.Length];
var gbufferNames = Enum.GetNames(typeof(Attributes.DebugViewGbuffer));
debugViewMaterialGBufferStrings = new GUIContent[gbufferNames.Length + typeof(Lit.BSDFData).GetFields().Length];
debugViewMaterialGBufferValues = new int[gbufferNames.Length + typeof(Lit.BSDFData).GetFields().Length];
var num = typeof(Builtin.BuiltinData).GetFields().Length * 2 // BuildtinData are duplicated for each material
+ typeof(Lit.SurfaceData).GetFields().Length
+ typeof(Unlit.SurfaceData).GetFields().Length
+ 1; // None
debugViewMaterialStrings = new GUIContent[num];
debugViewMaterialValues = new int[num];
num = typeof(Lit.BSDFData).GetFields().Length
+ typeof(Unlit.BSDFData).GetFields().Length
+ 1; // None
debugViewEngineStrings = new GUIContent[num];
debugViewEngineValues = new int[num];
// Special case for None since it cannot be inferred from SurfaceDAta/BuiltinData
debugViewMaterialStrings[0] = new GUIContent("None");
debugViewMaterialValues[0] = 0;
var index = 1;
// 0 is a reserved number and should not be used (allow to track error)
FillWithProperties(typeof(Builtin.BuiltinData), debugViewMaterialStrings, debugViewMaterialValues, GetSubNameSpaceName(typeof(Lit.SurfaceData)), ref index);
FillWithProperties(typeof(Lit.SurfaceData), debugViewMaterialStrings, debugViewMaterialValues, GetSubNameSpaceName(typeof(Lit.SurfaceData)), ref index);
FillWithProperties(typeof(Builtin.BuiltinData), debugViewMaterialStrings, debugViewMaterialValues, GetSubNameSpaceName(typeof(Unlit.SurfaceData)), ref index);
FillWithProperties(typeof(Unlit.SurfaceData), debugViewMaterialStrings, debugViewMaterialValues, GetSubNameSpaceName(typeof(Unlit.SurfaceData)), ref index);
// Engine
debugViewEngineStrings[0] = new GUIContent("None");
debugViewEngineValues[0] = 0;
index = 1;
FillWithProperties(typeof(Lit.BSDFData), debugViewEngineStrings, debugViewEngineValues, GetSubNameSpaceName(typeof(Lit.BSDFData)), ref index);
FillWithProperties(typeof(Unlit.BSDFData), debugViewEngineStrings, debugViewEngineValues, GetSubNameSpaceName(typeof(Unlit.BSDFData)), ref index);
index = 0;
FillWithPropertiesEnum(typeof(Attributes.DebugViewVarying), debugViewMaterialVaryingStrings, debugViewMaterialVaryingValues, "", ref index);
index = 0;
FillWithPropertiesEnum(typeof(Attributes.DebugViewGbuffer), debugViewMaterialGBufferStrings, debugViewMaterialGBufferValues, "", ref index);
FillWithProperties(typeof(Lit.BSDFData), debugViewMaterialGBufferStrings, debugViewMaterialGBufferValues, "", ref index);
isDebugViewMaterialInit = true;
}
}
}
namespace Attributes

public enum DebugViewVarying
{
None = 0,
Texcoord0 = 1,
Texcoord1,
Texcoord2,

[GenerateHLSL]
public enum DebugViewGbuffer
{
None = 0,
Depth = DebugViewVarying.VertexColorAlpha + 1,
BakeDiffuseLightingWithAlbedoPlusEmissive,
}

public class MaterialDebugSettings
{
public int debugViewMaterial = 0;
public int debugViewMaterial { get { return m_DebugViewMaterial; } }
public int debugViewEngine { get { return m_DebugViewEngine; } }
public Attributes.DebugViewVarying debugViewVarying { get { return m_DebugViewVarying; } }
public int debugViewGBuffer { get { return m_DebugViewGBuffer; } }
int m_DebugViewMaterial = 0; // No enum there because everything is generated from materials.
int m_DebugViewEngine = 0; // No enum there because everything is generated from BSDFData
Attributes.DebugViewVarying m_DebugViewVarying = Attributes.DebugViewVarying.None;
int m_DebugViewGBuffer = 0; // Can't use GBuffer enum here because the values are actually split between this enum and values from Lit.BSDFData
public int GetDebugMaterialIndex()
{
// This value is used in the shader for the actual debug display.
// There is only one uniform parameter for that so we just add all of them
// They are all mutually exclusive so return the sum will return the right index.
return m_DebugViewGBuffer + m_DebugViewMaterial + m_DebugViewEngine + (int)m_DebugViewVarying;
}
public void DisableMaterialDebug()
{
m_DebugViewMaterial = 0;
m_DebugViewEngine = 0;
m_DebugViewVarying = Attributes.DebugViewVarying.None;
m_DebugViewGBuffer = 0;
}
public void SetDebugViewMaterial(int value)
{
if (value != 0)
DisableMaterialDebug();
m_DebugViewMaterial = value;
}
public void SetDebugViewEngine(int value)
{
if (value != 0)
DisableMaterialDebug();
m_DebugViewEngine = value;
}
public void SetDebugViewVarying(Attributes.DebugViewVarying value)
{
if (value != 0)
DisableMaterialDebug();
m_DebugViewVarying = value;
}
public void SetDebugViewGBuffer(int value)
{
if (value != 0)
DisableMaterialDebug();
m_DebugViewGBuffer = value;
}
public bool IsDebugDisplayEnabled()
{
return (m_DebugViewEngine != 0 || m_DebugViewMaterial != 0 || m_DebugViewVarying != Attributes.DebugViewVarying.None || m_DebugViewGBuffer != 0);
}
}
[Serializable]

[Serializable]
public class LightingDebugSettings
{
public bool IsDebugDisplayEnabled()
{
return debugLightingMode != DebugLightingMode.None;
}
public DebugLightingMode debugLightingMode = DebugLightingMode.None;
public bool overrideSmoothness = false;
public float overrideSmoothnessValue = 0.5f;
public Color debugLightingAlbedo = new Color(0.5f, 0.5f, 0.5f);

13
Assets/ScriptableRenderPipeline/HDRenderPipeline/Debug/DebugDisplay.cs.hlsl


#ifndef DEBUGDISPLAY_CS_HLSL
#define DEBUGDISPLAY_CS_HLSL
//
// UnityEngine.Experimental.Rendering.HDPipeline.DebugDisplayMode: static fields
// UnityEngine.Experimental.Rendering.HDPipeline.DebugLightingMode: static fields
#define DEBUGDISPLAYMODE_NONE (0)
#define DEBUGDISPLAYMODE_VIEW_MATERIAL (1)
#define DEBUGDISPLAYMODE_DIFFUSE_LIGHTING (2)
#define DEBUGDISPLAYMODE_SPECULAR_LIGHTING (3)
#define DEBUGDISPLAYMODE_VISUALIZE_CASCADE (4)
#define DEBUGLIGHTINGMODE_NONE (0)
#define DEBUGLIGHTINGMODE_DIFFUSE_LIGHTING (1)
#define DEBUGLIGHTINGMODE_SPECULAR_LIGHTING (2)
#define DEBUGLIGHTINGMODE_VISUALIZE_CASCADE (3)
#define DEBUGVIEWVARYING_NONE (0)
#define DEBUGVIEWVARYING_TEXCOORD0 (1)
#define DEBUGVIEWVARYING_TEXCOORD1 (2)
#define DEBUGVIEWVARYING_TEXCOORD2 (3)

//
// UnityEngine.Experimental.Rendering.HDPipeline.Attributes.DebugViewGbuffer: static fields
//
#define DEBUGVIEWGBUFFER_NONE (0)
#define DEBUGVIEWGBUFFER_DEPTH (10)
#define DEBUGVIEWGBUFFER_BAKE_DIFFUSE_LIGHTING_WITH_ALBEDO_PLUS_EMISSIVE (11)

2
Assets/ScriptableRenderPipeline/HDRenderPipeline/Debug/DebugDisplay.hlsl


#include "DebugDisplay.cs.hlsl"
// Set of parameters available when switching to debug shader mode
int _DebugDisplayMode; // Match enum DebugDisplayMode
int _DebugLightingMode; // Match enum DebugLightingMode
int _DebugViewMaterial; // Contain the id (define in various materialXXX.cs.hlsl) of the property to display
float4 _DebugLightingAlbedo; // xyz = albedo for diffuse, w unused
float4 _DebugLightingSmoothness; // x == bool override, y == override value

12
Assets/ScriptableRenderPipeline/HDRenderPipeline/Debug/Resources/DebugViewTiles.shader


UpdatePositionInput(depth, _InvViewProjMatrix, _ViewProjMatrix, posInput);
int2 pixelCoord = posInput.unPositionSS.xy;
int2 tileCoord = (float2)pixelCoord / TILE_SIZE;
int2 mouseTileCoord = _MousePixelCoord / TILE_SIZE;
int2 offsetInTile = pixelCoord - tileCoord * TILE_SIZE;
int2 tileCoord = (float2)pixelCoord / GetTileSize();
int2 mouseTileCoord = _MousePixelCoord / GetTileSize();
int2 offsetInTile = pixelCoord - tileCoord * GetTileSize();
int n = 0;
#ifdef SHOW_LIGHT_CATEGORIES

// Tile overlap counter
if (n >= 0)
{
result = OverlayHeatMap(int2(posInput.unPositionSS.xy) & (TILE_SIZE - 1), n);
result = OverlayHeatMap(int2(posInput.unPositionSS.xy) & (GetTileSize() - 1), n);
}
#ifdef SHOW_LIGHT_CATEGORIES

bool border = any(offsetInTile == 0 || offsetInTile == TILE_SIZE - 1);
bool border = any(offsetInTile == 0 || offsetInTile == GetTileSize() - 1);
float4 result2 = float4(1.0, 1.0, 1.0, border ? 1.0 : 0.5);
result = AlphaBlend(result, result2);
}

if (tileCoord.y < LIGHTCATEGORY_COUNT && tileCoord.x < maxLights + 3)
{
PositionInputs mousePosInput = GetPositionInput(_MousePixelCoord, _ScreenSize.zw, uint2(0,0));
PositionInputs mousePosInput = GetPositionInput(_MousePixelCoord, _ScreenSize.zw, mouseTileCoord);
float depthMouse = LOAD_TEXTURE2D(_MainDepthTexture, mousePosInput.unPositionSS).x;
UpdatePositionInput(depthMouse, _InvViewProjMatrix, _ViewProjMatrix, mousePosInput);

200
Assets/ScriptableRenderPipeline/HDRenderPipeline/Editor/HDRenderPipelineInspector.cs


public readonly GUIContent skyParams = new GUIContent("Sky Settings");
// Debug Display Settings
public readonly GUIContent debugDisplayMode = new GUIContent("Debug Display Mode");
public readonly GUIContent debugging = new GUIContent("Debugging");
public readonly GUIContent debugOverlayRatio = new GUIContent("Overlay Ratio");

public bool isDebugViewMaterialInit = false;
public GUIContent[] debugViewMaterialStrings = null;
public int[] debugViewMaterialValues = null;
public readonly GUIContent debugViewEngine = new GUIContent("DebugView Engine", "Display various properties of Materials.");
public readonly GUIContent debugViewMaterialVarying = new GUIContent("DebugView Attributes", "Display varying input of Materials.");
public readonly GUIContent debugViewMaterialGBuffer = new GUIContent("DebugView GBuffer", "Display GBuffer properties.");
// Rendering Debug
public readonly GUIContent renderingDebugSettings = new GUIContent("Rendering Debug");

// Lighting Debug
public readonly GUIContent lightingDebugSettings = new GUIContent("Lighting Debug");
public readonly GUIContent shadowDebugEnable = new GUIContent("Enable Shadows");
public readonly GUIContent lightingVisualizationMode = new GUIContent("Lighting Debug Mode");
public readonly GUIContent[] debugViewLightingStrings = { new GUIContent("None"), new GUIContent("Diffuse Lighting"), new GUIContent("Specular Lighting"), new GUIContent("Visualize Cascades") };
public readonly int[] debugViewLightingValues = { (int)DebugLightingMode.None, (int)DebugLightingMode.DiffuseLighting, (int)DebugLightingMode.SpecularLighting, (int)DebugLightingMode.VisualizeCascade };
public readonly GUIContent shadowDebugVisualizationMode = new GUIContent("Shadow Maps Debug Mode");
public readonly GUIContent shadowDebugVisualizeShadowIndex = new GUIContent("Visualize Shadow Index");
public readonly GUIContent lightingDebugOverrideSmoothness = new GUIContent("Override Smoothness");

}
// Display Debug
SerializedProperty m_DebugDisplayMode = null;
// Material Debug
SerializedProperty m_MaterialDebugMode = null;
// Rendering Debug
SerializedProperty m_DisplayOpaqueObjects = null;
SerializedProperty m_DisplayTransparentObjects = null;

private void InitializeProperties()
{
// DebugDisplay debug
m_DebugDisplayMode = FindProperty(x => x.debugDisplaySettings.debugDisplayMode);
// Material debug
m_MaterialDebugMode = FindProperty(x => x.debugDisplaySettings.materialDebugSettings.debugViewMaterial);
// Rendering debug
m_DisplayOpaqueObjects = FindProperty(x => x.debugDisplaySettings.renderingDebugSettings.displayOpaqueObjects);
m_DisplayTransparentObjects = FindProperty(x => x.debugDisplaySettings.renderingDebugSettings.displayTransparentObjects);

return serializedObject.FindProperty(path);
}
string GetSubNameSpaceName(Type type)
{
return type.Namespace.Substring(type.Namespace.LastIndexOf((".")) + 1) + "/";
}
void FillWithProperties(Type type, GUIContent[] debugViewMaterialStrings, int[] debugViewMaterialValues, bool isBSDFData, string strSubNameSpace, ref int index)
{
var attributes = type.GetCustomAttributes(true);
// Get attribute to get the start number of the value for the enum
var attr = attributes[0] as GenerateHLSL;
if (!attr.needParamDebug)
{
return;
}
var fields = type.GetFields();
var localIndex = 0;
foreach (var field in fields)
{
var fieldName = field.Name;
// Check if the display name have been override by the users
if (Attribute.IsDefined(field, typeof(SurfaceDataAttributes)))
{
var propertyAttr = (SurfaceDataAttributes[])field.GetCustomAttributes(typeof(SurfaceDataAttributes), false);
if (propertyAttr[0].displayName != "")
{
fieldName = propertyAttr[0].displayName;
}
}
fieldName = (isBSDFData ? "Engine/" : "") + strSubNameSpace + fieldName;
debugViewMaterialStrings[index] = new GUIContent(fieldName);
debugViewMaterialValues[index] = attr.paramDefinesStart + (int)localIndex;
index++;
localIndex++;
}
}
void FillWithPropertiesEnum(Type type, GUIContent[] debugViewMaterialStrings, int[] debugViewMaterialValues, string prefix, bool isBSDFData, ref int index)
{
var names = Enum.GetNames(type);
var localIndex = 0;
foreach (var value in Enum.GetValues(type))
{
var valueName = (isBSDFData ? "Engine/" : "" + prefix) + names[localIndex];
debugViewMaterialStrings[index] = new GUIContent(valueName);
debugViewMaterialValues[index] = (int)value;
index++;
localIndex++;
}
}
static void HackSetDirty(RenderPipelineAsset asset)
{
EditorUtility.SetDirty(asset);

// Debug Display settings
EditorGUI.indentLevel++;
EditorGUILayout.PropertyField(m_DebugDisplayMode, styles.debugDisplayMode);
if ((DebugDisplayMode)m_DebugDisplayMode.intValue == DebugDisplayMode.ViewMaterial)
{
MaterialDebugSettingsUI(renderContext);
}
else
{
LightingDebugSettingsUI(renderContext, renderpipelineInstance);
}
MaterialDebugSettingsUI(renderContext);
LightingDebugSettingsUI(renderContext, renderpipelineInstance);
EditorGUILayout.Space();

private void MaterialDebugSettingsUI(HDRenderPipeline renderContext)
{
HDRenderPipeline hdPipe = target as HDRenderPipeline;
bool dirty = false;
if (!styles.isDebugViewMaterialInit)
int value = EditorGUILayout.IntPopup(styles.debugViewMaterial, hdPipe.debugDisplaySettings.materialDebugSettings.debugViewMaterial, DebugDisplaySettings.debugViewMaterialStrings, DebugDisplaySettings.debugViewMaterialValues);
if (EditorGUI.EndChangeCheck())
var varyingNames = Enum.GetNames(typeof(Attributes.DebugViewVarying));
var gbufferNames = Enum.GetNames(typeof(Attributes.DebugViewGbuffer));
var num = varyingNames.Length
+ gbufferNames.Length
+ typeof(Builtin.BuiltinData).GetFields().Length * 2 // BuildtinData are duplicated for each material
+ typeof(Lit.SurfaceData).GetFields().Length
+ typeof(Lit.BSDFData).GetFields().Length
+ typeof(Unlit.SurfaceData).GetFields().Length
+ typeof(Unlit.BSDFData).GetFields().Length;
styles.debugViewMaterialStrings = new GUIContent[num];
styles.debugViewMaterialValues = new int[num];
var index = 0;
// 0 is a reserved number and should not be used (allow to track error)
FillWithPropertiesEnum(typeof(Attributes.DebugViewVarying), styles.debugViewMaterialStrings, styles.debugViewMaterialValues, GetSubNameSpaceName(typeof(Attributes.DebugViewVarying)), false, ref index);
FillWithProperties(typeof(Builtin.BuiltinData), styles.debugViewMaterialStrings, styles.debugViewMaterialValues, false, GetSubNameSpaceName(typeof(Lit.SurfaceData)), ref index);
FillWithProperties(typeof(Lit.SurfaceData), styles.debugViewMaterialStrings, styles.debugViewMaterialValues, false, GetSubNameSpaceName(typeof(Lit.SurfaceData)), ref index);
FillWithProperties(typeof(Builtin.BuiltinData), styles.debugViewMaterialStrings, styles.debugViewMaterialValues, false, GetSubNameSpaceName(typeof(Unlit.SurfaceData)), ref index);
FillWithProperties(typeof(Unlit.SurfaceData), styles.debugViewMaterialStrings, styles.debugViewMaterialValues, false, GetSubNameSpaceName(typeof(Unlit.SurfaceData)), ref index);
// Engine
FillWithPropertiesEnum(typeof(Attributes.DebugViewGbuffer), styles.debugViewMaterialStrings, styles.debugViewMaterialValues, "", true, ref index);
FillWithProperties(typeof(Lit.BSDFData), styles.debugViewMaterialStrings, styles.debugViewMaterialValues, true, "", ref index);
FillWithProperties(typeof(Unlit.BSDFData), styles.debugViewMaterialStrings, styles.debugViewMaterialValues, true, "", ref index);
hdPipe.debugDisplaySettings.SetDebugViewMaterial(value);
dirty = true;
}
styles.isDebugViewMaterialInit = true;
EditorGUI.BeginChangeCheck();
value = EditorGUILayout.IntPopup(styles.debugViewEngine, hdPipe.debugDisplaySettings.materialDebugSettings.debugViewEngine, DebugDisplaySettings.debugViewEngineStrings, DebugDisplaySettings.debugViewEngineValues);
if (EditorGUI.EndChangeCheck())
{
hdPipe.debugDisplaySettings.SetDebugViewEngine(value);
dirty = true;
EditorGUI.showMixedValue = m_MaterialDebugMode.hasMultipleDifferentValues;
m_MaterialDebugMode.intValue = EditorGUILayout.IntPopup(styles.debugViewMaterial, m_MaterialDebugMode.intValue, styles.debugViewMaterialStrings, styles.debugViewMaterialValues);
EditorGUI.showMixedValue = false;
EditorGUI.BeginChangeCheck();
value = EditorGUILayout.IntPopup(styles.debugViewMaterialVarying, (int)hdPipe.debugDisplaySettings.materialDebugSettings.debugViewVarying, DebugDisplaySettings.debugViewMaterialVaryingStrings, DebugDisplaySettings.debugViewMaterialVaryingValues);
if (EditorGUI.EndChangeCheck())
{
hdPipe.debugDisplaySettings.SetDebugViewVarying((Attributes.DebugViewVarying)value);
dirty = true;
}
EditorGUI.BeginChangeCheck();
value = EditorGUILayout.IntPopup(styles.debugViewMaterialGBuffer, (int)hdPipe.debugDisplaySettings.materialDebugSettings.debugViewGBuffer, DebugDisplaySettings.debugViewMaterialGBufferStrings, DebugDisplaySettings.debugViewMaterialGBufferValues);
HackSetDirty(renderContext); // Repaint
hdPipe.debugDisplaySettings.SetDebugViewGBuffer(value);
dirty = true;
if(dirty)
HackSetDirty(renderContext); // Repaint
EditorGUI.indentLevel--;
}

if (!m_ShowLightingDebug.boolValue)
return;
EditorGUI.BeginChangeCheck();
HDRenderPipeline hdPipe = target as HDRenderPipeline;
bool dirty = false;
EditorGUI.BeginChangeCheck();
EditorGUI.indentLevel++;
EditorGUILayout.PropertyField(m_DebugShadowEnabled, styles.shadowDebugEnable);
EditorGUILayout.PropertyField(m_ShadowDebugMode, styles.shadowDebugVisualizationMode);

EditorGUILayout.IntSlider(m_ShadowDebugShadowMapIndex, 0, renderpipelineInstance.GetCurrentShadowCount() - 1, styles.shadowDebugVisualizeShadowIndex);
}
}
if (EditorGUI.EndChangeCheck())
{
dirty = true;
}
if (!m_DebugDisplayMode.hasMultipleDifferentValues)
EditorGUI.BeginChangeCheck();
int value = EditorGUILayout.IntPopup(styles.lightingVisualizationMode, (int)hdPipe.debugDisplaySettings.lightingDebugSettings.debugLightingMode, styles.debugViewLightingStrings, styles.debugViewLightingValues);
if (EditorGUI.EndChangeCheck())
if ((DebugDisplayMode)m_DebugDisplayMode.intValue == DebugDisplayMode.DiffuseLighting)
{
EditorGUI.indentLevel++;
EditorGUILayout.PropertyField(m_LightingDebugAlbedo, styles.lightingDebugAlbedo);
EditorGUI.indentLevel--;
}
hdPipe.debugDisplaySettings.SetDebugLightingMode((DebugLightingMode)value);
dirty = true;
}
if ((DebugDisplayMode)m_DebugDisplayMode.intValue == DebugDisplayMode.SpecularLighting)
EditorGUI.BeginChangeCheck();
if (hdPipe.debugDisplaySettings.GetDebugLightingMode() == DebugLightingMode.DiffuseLighting)
{
EditorGUI.indentLevel++;
EditorGUILayout.PropertyField(m_LightingDebugAlbedo, styles.lightingDebugAlbedo);
EditorGUI.indentLevel--;
}
if (hdPipe.debugDisplaySettings.GetDebugLightingMode() == DebugLightingMode.SpecularLighting)
{
EditorGUI.indentLevel++;
EditorGUILayout.PropertyField(m_LightingDebugOverrideSmoothness, styles.lightingDebugOverrideSmoothness);
if (!m_LightingDebugOverrideSmoothness.hasMultipleDifferentValues && m_LightingDebugOverrideSmoothness.boolValue == true)
EditorGUILayout.PropertyField(m_LightingDebugOverrideSmoothness, styles.lightingDebugOverrideSmoothness);
if (!m_LightingDebugOverrideSmoothness.hasMultipleDifferentValues && m_LightingDebugOverrideSmoothness.boolValue == true)
{
EditorGUI.indentLevel++;
EditorGUILayout.PropertyField(m_LightingDebugOverrideSmoothnessValue, styles.lightingDebugOverrideSmoothnessValue);
EditorGUI.indentLevel--;
}
EditorGUILayout.PropertyField(m_LightingDebugOverrideSmoothnessValue, styles.lightingDebugOverrideSmoothnessValue);
EditorGUI.indentLevel--;
}
EditorGUILayout.PropertyField(m_LightingDebugDisplaySkyReflection, styles.lightingDisplaySkyReflection);

if (EditorGUI.EndChangeCheck())
{
dirty = true;
}
if(dirty)
}
}
private void SettingsUI(HDRenderPipeline renderContext)

13
Assets/ScriptableRenderPipeline/HDRenderPipeline/HDRenderPipeline.asset


displayLightingDebug: 0
debugDisplayMode: 0
materialDebugSettings:
debugViewMaterial: 1
debugViewMaterial: 1002
lightingDebugSettings:
enableShadows: 1
shadowDebugMode: 0

useForwardRenderingOnly: 0
useDepthPrepass: 0
sssSettings:
numProfiles: 0
profiles: []
numProfiles: 7
profiles:
- {fileID: 11400000, guid: d6ee4403015766f4093158d69216c0bf, type: 2}
- {fileID: 11400000, guid: 906339bac2066fc4aa22a3652e1283ef, type: 2}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
m_ShadowSettings:
enabled: 1
shadowAtlasWidth: 4096

86
Assets/ScriptableRenderPipeline/HDRenderPipeline/HDRenderPipeline.cs


using UnityEngine.Rendering;
using System;
using System.Linq;
using UnityEngine.Experimental.PostProcessing;
using UnityEngine.Experimental.Rendering.HDPipeline.TilePass;
#if UNITY_EDITOR

Vector4 debugAlbedo = new Vector4(lightingDebugSettings.debugLightingAlbedo.r, lightingDebugSettings.debugLightingAlbedo.g, lightingDebugSettings.debugLightingAlbedo.b, 0.0f);
Vector4 debugSmoothness = new Vector4(lightingDebugSettings.overrideSmoothness ? 1.0f : 0.0f, lightingDebugSettings.overrideSmoothnessValue, 0.0f, 0.0f);
Shader.SetGlobalInt("_DebugDisplayMode", (int)debugDisplaySettings.debugDisplayMode);
Shader.SetGlobalInt("_DebugViewMaterial", (int)debugDisplaySettings.materialDebugSettings.debugViewMaterial);
Shader.SetGlobalInt("_DebugViewMaterial", (int)debugDisplaySettings.GetDebugMaterialIndex());
Shader.SetGlobalInt("_DebugLightingMode", (int)debugDisplaySettings.GetDebugLightingMode());
Shader.SetGlobalVector("_DebugLightingAlbedo", debugAlbedo);
Shader.SetGlobalVector("_DebugLightingSmoothness", debugSmoothness);
}

debugDisplaySettings.OnValidate();
sssSettings.OnValidate();
}
void OnEnable()
{
debugDisplaySettings.RegisterDebug();
}
}
[Serializable]

private RenderTargetIdentifier m_CameraDepthStencilBufferRT;
private RenderTargetIdentifier m_CameraDepthStencilBufferCopyRT;
// Post-processing context (recycled on every frame to avoid GC alloc)
readonly PostProcessRenderContext m_PostProcessContext;
// Detect when windows size is changing
int m_CurrentWidth;
int m_CurrentHeight;

m_CameraFilteringBufferRT = new RenderTargetIdentifier(m_CameraFilteringBuffer);
m_FilterSubsurfaceScattering = Utilities.CreateEngineMaterial("Hidden/HDRenderPipeline/CombineSubsurfaceScattering");
m_FilterSubsurfaceScattering.DisableKeyword("FILTER_HORIZONTAL_AND_COMBINE");
m_FilterSubsurfaceScattering.DisableKeyword("SSS_FILTER_HORIZONTAL_AND_COMBINE");
m_FilterAndCombineSubsurfaceScattering.EnableKeyword("FILTER_HORIZONTAL_AND_COMBINE");
m_FilterAndCombineSubsurfaceScattering.EnableKeyword("SSS_FILTER_HORIZONTAL_AND_COMBINE");
m_FilterAndCombineSubsurfaceScattering.SetFloat("_DstBlend", (float)BlendMode.One);
InitializeDebugMaterials();

m_SkyManager.Build();
m_SkyManager.skySettings = owner.skySettingsToUse;
m_PostProcessContext = new PostProcessRenderContext();
}
void InitializeDebugMaterials()

private void CopyDepthBufferIfNeeded(ScriptableRenderContext renderContext)
{
var cmd = new CommandBuffer();
var cmd = new CommandBuffer() { name = NeedDepthBufferCopy() ? "Copy DepthBuffer" : "Set DepthBuffer"};
if (NeedDepthBufferCopy())
{
using (new Utilities.ProfilingSample("Copy depth-stencil buffer", renderContext))

// select the most main camera!
Camera camera = cameras.OrderByDescending(x => x.tag == "MainCamera").FirstOrDefault();
if (camera == null)
return;
if (camera == null)
{
renderContext.Submit();
return;
}
if (!CullResults.GetCullingParameters(camera, out cullingParams))
return;
if (!CullResults.GetCullingParameters(camera, out cullingParams))
{
renderContext.Submit();
return;
}
m_ShadowPass.UpdateCullingParameters(ref cullingParams);

CopyDepthBufferIfNeeded(renderContext);
}
if (debugDisplaySettings.debugDisplayMode == DebugDisplayMode.ViewMaterial)
if (debugDisplaySettings.IsDebugMaterialDisplayEnabled())
{
RenderDebugViewMaterial(cullResults, hdCamera, renderContext);
}

RenderForward(cullResults, camera, renderContext, true); // Render deferred or forward opaque
RenderForwardOnlyOpaque(cullResults, camera, renderContext);
RenderLightingDebug(hdCamera, renderContext, m_CameraColorBufferRT);
// If full forward rendering, we did just rendered everything, so we can copy the depth buffer
// If Deferred nothing needs copying anymore.
if (m_Owner.renderingSettings.useForwardRenderingOnly)

// Instead we chose to apply distortion at the end after we cumulate distortion vector and desired blurriness. This
RenderDistortion(cullResults, camera, renderContext);
FinalPass(camera, renderContext);
RenderPostProcesses(camera, renderContext);
}
}

return;
}
string passName = debugDisplaySettings.IsDebugDisplayEnable() ? "GBufferDebugDisplay" : "GBuffer";
string passName = debugDisplaySettings.IsDebugDisplayEnabled() ? "GBufferDebugDisplay" : "GBuffer";
using (new Utilities.ProfilingSample(passName, renderContext))
{

return m_SkyManager.ExportSkyToTexture();
}
void RenderLightingDebug(HDCamera camera, ScriptableRenderContext renderContext, RenderTargetIdentifier colorBuffer)
{
if (m_LightLoop != null)
m_LightLoop.RenderLightingDebug(camera, renderContext, colorBuffer);
}
void RenderForward(CullResults cullResults, Camera camera, ScriptableRenderContext renderContext, bool renderOpaque)
{
// TODO: Currently we can't render opaque object forward when deferred is enabled

string passName = debugDisplaySettings.IsDebugDisplayEnable() ? "ForwardDisplayDebug" : "Forward";
string passName = debugDisplaySettings.IsDebugDisplayEnabled() ? "ForwardDisplayDebug" : "Forward";
using (new Utilities.ProfilingSample(passName, renderContext))
{

// Render material that are forward opaque only (like eye), this include unlit material
void RenderForwardOnlyOpaque(CullResults cullResults, Camera camera, ScriptableRenderContext renderContext)
{
string passName = debugDisplaySettings.IsDebugDisplayEnable() ? "ForwardOnlyOpaqueDisplayDebug" : "ForwardOnlyOpaque";
string passName = debugDisplaySettings.IsDebugDisplayEnabled() ? "ForwardOnlyOpaqueDisplayDebug" : "ForwardOnlyOpaque";
using (new Utilities.ProfilingSample(passName, renderContext))
{

}
}
void FinalPass(Camera camera, ScriptableRenderContext renderContext)
void RenderPostProcesses(Camera camera, ScriptableRenderContext renderContext)
using (new Utilities.ProfilingSample("Final", renderContext))
using (new Utilities.ProfilingSample("Post-processing", renderContext))
// All of this is temporary, sub-optimal and quickly hacked together but is necessary
// for artists to do lighting work until the fully-featured framework is ready
var postProcessLayer = camera.GetComponent<PostProcessLayer>();
var cmd = new CommandBuffer { name = "" };
var localPostProcess = camera.GetComponent<PostProcessingSRP>();
if (postProcessLayer != null && postProcessLayer.enabled)
{
cmd.SetGlobalTexture("_CameraDepthTexture", GetDepthTexture());
bool localActive = localPostProcess != null && localPostProcess.enabled;
var context = m_PostProcessContext;
context.Reset();
context.source = m_CameraColorBufferRT;
context.destination = BuiltinRenderTextureType.CameraTarget;
context.command = cmd;
context.camera = camera;
context.sourceFormat = RenderTextureFormat.ARGBHalf; // ?
context.flip = true;
if (!localActive)
postProcessLayer.Render(context);
}
else
var cmd = new CommandBuffer { name = "" };
renderContext.ExecuteCommandBuffer(cmd);
cmd.Dispose();
return;
localPostProcess.Render(camera, renderContext, m_CameraColorBufferRT, BuiltinRenderTextureType.CameraTarget);
renderContext.ExecuteCommandBuffer(cmd);
cmd.Dispose();
}
}

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


public virtual void RenderForward(Camera camera, ScriptableRenderContext renderContext, bool renderOpaque) {}
public virtual void RenderLightingDebug(HDCamera hdCamera, ScriptableRenderContext renderContext, RenderTargetIdentifier colorBuffer) {}
public Light GetCurrentSunLight() { return m_CurrentSunLight; }
}
}

2
Assets/ScriptableRenderPipeline/HDRenderPipeline/Lighting/TilePass/FeatureFlags.hlsl


#ifndef __FEATURE_FLAGS_H__
#define __FEATURE_FLAGS_H__
static const uint FEATURE_FLAG_ALL_MATERIALS = FEATURE_FLAG_MATERIAL_LIT_STANDARD | FEATURE_FLAG_MATERIAL_LIT_SSS | FEATURE_FLAG_MATERIAL_LIT_CLEAR_COAT | FEATURE_FLAG_MATERIAL_LIT_SPECULAR | FEATURE_FLAG_MATERIAL_LIT_ANISO;
static const uint FEATURE_FLAG_ALL_MATERIALS = FEATURE_FLAG_MATERIAL_LIT_STANDARD | FEATURE_FLAG_MATERIAL_LIT_SSS | FEATURE_FLAG_MATERIAL_LIT_SPECULAR | FEATURE_FLAG_MATERIAL_LIT_ANISO;
static const uint FeatureVariantFlags[NUM_FEATURE_VARIANTS] =
{

113
Assets/ScriptableRenderPipeline/HDRenderPipeline/Lighting/TilePass/TilePass.cs


Utilities.SetKeyword(m_SingleDeferredMaterialMRT, "DEBUG_DISPLAY", debugDisplayEnable);
}
public override void RenderDeferredLighting(HDCamera hdCamera, ScriptableRenderContext renderContext,
DebugDisplaySettings debugDisplaySettings,
RenderTargetIdentifier[] colorBuffers, RenderTargetIdentifier depthStencilBuffer, RenderTargetIdentifier depthStencilTexture,
bool outputSplitLightingForSSS)
public override void RenderLightingDebug(HDCamera hdCamera, ScriptableRenderContext renderContext, RenderTargetIdentifier colorBuffer)
var bUseClusteredForDeferred = !usingFptl;
if (m_PassSettings.tileDebugByCategory == TileLightLoopProducer.TileSettings.TileDebug.None)
return;
var cmd = new CommandBuffer();
cmd.name = "Tiled Lighting Debug";
bool bUseClusteredForDeferred = !usingFptl;
int w = hdCamera.camera.pixelWidth;
int h = hdCamera.camera.pixelHeight;
int numTilesX = (w + 15) / 16;
int numTilesY = (h + 15) / 16;
int numTiles = numTilesX * numTilesY;
Vector2 mousePixelCoord = Input.mousePosition;
#if UNITY_EDITOR
if (!UnityEditor.EditorApplication.isPlayingOrWillChangePlaymode)

}
#endif
// Debug tiles
PushGlobalParams(hdCamera.camera, renderContext, null, 0);
if (m_PassSettings.tileDebugByCategory == TileLightLoopProducer.TileSettings.TileDebug.FeatureVariants)
{
if (GetFeatureVariantsEnabled())
{
// featureVariants
Utilities.SetupMaterialHDCamera(hdCamera, m_DebugViewTilesMaterial);
m_DebugViewTilesMaterial.SetInt("_NumTiles", numTiles);
m_DebugViewTilesMaterial.SetInt("_ViewTilesFlags", (int)m_PassSettings.tileDebugByCategory);
m_DebugViewTilesMaterial.SetVector("_MousePixelCoord", mousePixelCoord);
m_DebugViewTilesMaterial.SetBuffer("g_TileList", s_TileList);
m_DebugViewTilesMaterial.SetBuffer("g_DispatchIndirectBuffer", s_DispatchIndirectBuffer);
m_DebugViewTilesMaterial.EnableKeyword(bUseClusteredForDeferred ? "USE_CLUSTERED_LIGHTLIST" : "USE_FPTL_LIGHTLIST");
m_DebugViewTilesMaterial.DisableKeyword(!bUseClusteredForDeferred ? "USE_CLUSTERED_LIGHTLIST" : "USE_FPTL_LIGHTLIST");
m_DebugViewTilesMaterial.DisableKeyword("SHOW_LIGHT_CATEGORIES");
m_DebugViewTilesMaterial.EnableKeyword("SHOW_FEATURE_VARIANTS");
cmd.SetRenderTarget(colorBuffer);
cmd.DrawProcedural(Matrix4x4.identity, m_DebugViewTilesMaterial, 0, MeshTopology.Triangles, numTiles * 6);
}
}
else if (m_PassSettings.tileDebugByCategory != TileLightLoopProducer.TileSettings.TileDebug.None)
{
// lightCategories
Utilities.SetupMaterialHDCamera(hdCamera, m_DebugViewTilesMaterial);
m_DebugViewTilesMaterial.SetInt("_ViewTilesFlags", (int)m_PassSettings.tileDebugByCategory);
m_DebugViewTilesMaterial.SetVector("_MousePixelCoord", mousePixelCoord);
m_DebugViewTilesMaterial.EnableKeyword(bUseClusteredForDeferred ? "USE_CLUSTERED_LIGHTLIST" : "USE_FPTL_LIGHTLIST");
m_DebugViewTilesMaterial.DisableKeyword(!bUseClusteredForDeferred ? "USE_CLUSTERED_LIGHTLIST" : "USE_FPTL_LIGHTLIST");
m_DebugViewTilesMaterial.EnableKeyword("SHOW_LIGHT_CATEGORIES");
m_DebugViewTilesMaterial.DisableKeyword("SHOW_FEATURE_VARIANTS");
cmd.Blit(null, colorBuffer, m_DebugViewTilesMaterial, 0);
}
SetGlobalPropertyRedirect(null, 0, null);
renderContext.ExecuteCommandBuffer(cmd);
cmd.Dispose();
}
using (new Utilities.ProfilingSample(m_PassSettings.enableTileAndCluster ? "TilePass - Deferred Lighting Pass" : "SinglePass - Deferred Lighting Pass", renderContext))
public override void RenderDeferredLighting(HDCamera hdCamera, ScriptableRenderContext renderContext,
DebugDisplaySettings debugDisplaySettings,
RenderTargetIdentifier[] colorBuffers, RenderTargetIdentifier depthStencilBuffer, RenderTargetIdentifier depthStencilTexture,
bool outputSplitLightingForSSS)
{
var bUseClusteredForDeferred = !usingFptl;
using (new Utilities.ProfilingSample((m_PassSettings.enableTileAndCluster ? "TilePass - Deferred Lighting Pass" : "SinglePass - Deferred Lighting Pass") + (outputSplitLightingForSSS ? " MRT" : ""), renderContext))
{
var cmd = new CommandBuffer();
cmd.name = bUseClusteredForDeferred ? "Clustered pass" : "Tiled pass";

SetupDebugDisplayMode(debugDisplaySettings.IsDebugDisplayEnable());
SetupDebugDisplayMode(debugDisplaySettings.IsDebugDisplayEnabled());
if (!m_PassSettings.enableTileAndCluster)
{

if (m_PassSettings.enableComputeLightEvaluation)
{
bool enableFeatureVariants = GetFeatureVariantsEnabled() && !debugDisplaySettings.IsDebugDisplayEnable();
bool enableFeatureVariants = GetFeatureVariantsEnabled() && !debugDisplaySettings.IsDebugDisplayEnabled();
int numVariants = 1;
if (enableFeatureVariants)

}
else
{
if (debugDisplaySettings.IsDebugDisplayEnable())
if (debugDisplaySettings.IsDebugDisplayEnabled())
{
kernel = usingFptl ? s_shadeOpaqueDirectFptlDebugDisplayKernel : s_shadeOpaqueDirectClusteredDebugDisplayKernel;
}

PushGlobalParams(camera, renderContext, shadeOpaqueShader, kernel);
// TODO: Update value like in ApplyDebugDisplaySettings() call. Sadly it is high likely that this will not be keep in sync. we really need to get rid of this by making global parameters visible to compute shaders
cmd.SetComputeIntParam(shadeOpaqueShader, "_DebugDisplayMode", Shader.GetGlobalInt("_DebugDisplayMode"));
cmd.SetComputeIntParam(shadeOpaqueShader, "_DebugViewMaterial", Shader.GetGlobalInt("_DebugViewMaterial"));
cmd.SetComputeVectorParam(shadeOpaqueShader, "_DebugLightingAlbedo", Shader.GetGlobalVector("_DebugLightingAlbedo"));
cmd.SetComputeVectorParam(shadeOpaqueShader, "_DebugLightingSmoothness", Shader.GetGlobalVector("_DebugLightingSmoothness"));

Utilities.SelectKeyword(m_DeferredAllMaterialSRT, "USE_CLUSTERED_LIGHTLIST", "USE_FPTL_LIGHTLIST", bUseClusteredForDeferred);
Utilities.DrawFullScreen(cmd, m_DeferredAllMaterialSRT, hdCamera, colorBuffers[0], depthStencilBuffer);
}
}
}
if (m_PassSettings.tileDebugByCategory != TileLightLoopProducer.TileSettings.TileDebug.None)
{
// Debug tiles
PushGlobalParams(camera, renderContext, null, 0);
if (m_PassSettings.tileDebugByCategory == TileLightLoopProducer.TileSettings.TileDebug.FeatureVariants)
{
if (GetFeatureVariantsEnabled())
{
// featureVariants
Utilities.SetupMaterialHDCamera(hdCamera, m_DebugViewTilesMaterial);
m_DebugViewTilesMaterial.SetInt("_NumTiles", numTiles);
m_DebugViewTilesMaterial.SetInt("_ViewTilesFlags", (int)m_PassSettings.tileDebugByCategory);
m_DebugViewTilesMaterial.SetVector("_MousePixelCoord", mousePixelCoord);
m_DebugViewTilesMaterial.SetBuffer("g_TileList", s_TileList);
m_DebugViewTilesMaterial.SetBuffer("g_DispatchIndirectBuffer", s_DispatchIndirectBuffer);
m_DebugViewTilesMaterial.EnableKeyword(bUseClusteredForDeferred ? "USE_CLUSTERED_LIGHTLIST" : "USE_FPTL_LIGHTLIST");
m_DebugViewTilesMaterial.DisableKeyword(!bUseClusteredForDeferred ? "USE_CLUSTERED_LIGHTLIST" : "USE_FPTL_LIGHTLIST");
m_DebugViewTilesMaterial.DisableKeyword("SHOW_LIGHT_CATEGORIES");
m_DebugViewTilesMaterial.EnableKeyword("SHOW_FEATURE_VARIANTS");
cmd.SetRenderTarget(colorBuffers[0]);
cmd.DrawProcedural(Matrix4x4.identity, m_DebugViewTilesMaterial, 0, MeshTopology.Triangles, numTiles * 6);
}
}
else if (m_PassSettings.tileDebugByCategory != TileLightLoopProducer.TileSettings.TileDebug.None)
{
// lightCategories
Utilities.SetupMaterialHDCamera(hdCamera, m_DebugViewTilesMaterial);
m_DebugViewTilesMaterial.SetInt("_ViewTilesFlags", (int)m_PassSettings.tileDebugByCategory);
m_DebugViewTilesMaterial.SetVector("_MousePixelCoord", mousePixelCoord);
m_DebugViewTilesMaterial.EnableKeyword(bUseClusteredForDeferred ? "USE_CLUSTERED_LIGHTLIST" : "USE_FPTL_LIGHTLIST");
m_DebugViewTilesMaterial.DisableKeyword(!bUseClusteredForDeferred ? "USE_CLUSTERED_LIGHTLIST" : "USE_FPTL_LIGHTLIST");
m_DebugViewTilesMaterial.EnableKeyword("SHOW_LIGHT_CATEGORIES");
m_DebugViewTilesMaterial.DisableKeyword("SHOW_FEATURE_VARIANTS");
cmd.Blit(null, colorBuffers[0], m_DebugViewTilesMaterial, 0);
}
}
}

8
Assets/ScriptableRenderPipeline/HDRenderPipeline/Lighting/TilePass/TilePass.hlsl


StructuredBuffer<uint> g_vLightListGlobal; // don't support Buffer yet in unity
#ifdef USE_FPTL_LIGHTLIST
#define TILE_SIZE TILE_SIZE_FPTL
#endif
// Don't do a "#else" so we can catch error if including call don't setup thing correctly
#ifdef USE_CLUSTERED_LIGHTLIST
#define TILE_SIZE TILE_SIZE_CLUSTERED
#endif
#define DWORD_PER_TILE 16 // See dwordsPerTile in TilePass.cs, we have roomm for 31 lights and a number of light value all store on 16 bit (ushort)
// these uniforms are only needed for when OPAQUES_ONLY is NOT defined

11
Assets/ScriptableRenderPipeline/HDRenderPipeline/Lighting/TilePass/TilePassLoop.hlsl


void ApplyDebug(LightLoopContext lightLoopContext, float3 positionWS, inout float3 diffuseLighting, inout float3 specularLighting)
{
#ifdef DEBUG_DISPLAY
if (_DebugDisplayMode == DEBUGDISPLAYMODE_DIFFUSE_LIGHTING)
if (_DebugLightingMode == DEBUGLIGHTINGMODE_DIFFUSE_LIGHTING)
else if (_DebugDisplayMode == DEBUGDISPLAYMODE_SPECULAR_LIGHTING)
else if (_DebugLightingMode == DEBUGLIGHTINGMODE_SPECULAR_LIGHTING)
else if (_DebugDisplayMode == DEBUGDISPLAYMODE_VISUALIZE_CASCADE)
else if (_DebugLightingMode == DEBUGLIGHTINGMODE_VISUALIZE_CASCADE)
{
specularLighting = float3(0.0, 0.0, 0.0);

uint GetTileSize()
{
return TILE_SIZE_CLUSTERED;
if (_UseTileLightList)
return TILE_SIZE_FPTL;
else
return TILE_SIZE_CLUSTERED;
}
void GetCountAndStartCluster(PositionInputs posInput, uint lightCategory, out uint start, out uint lightCount)

21
Assets/ScriptableRenderPipeline/HDRenderPipeline/Material/Lit/Editor/LitUI.cs


public static GUIContent maskMapSText = new GUIContent("Mask Map - M(R), AO(G), S(A)", "Mask map");
public static GUIContent normalMapSpaceText = new GUIContent("Normal/Tangent Map space", "");
public static GUIContent normalMapText = new GUIContent("Normal Map", "Normal Map (DXT5) - Need to implement BC5");
public static GUIContent normalMapText = new GUIContent("Normal Map", "Normal Map (BC7/BC5/DXT5(nm))");
public static GUIContent specularOcclusionMapText = new GUIContent("Specular Occlusion Map (RGBA)", "Specular Occlusion Map");
public static GUIContent horizonFadeText = new GUIContent("Horizon Fade (Spec occlusion)", "horizon fade is use to control specular occlusion");

public static GUIContent subsurfaceRadiusMapText = new GUIContent("Subsurface radius map", "Determines the range of the blur.");
public static GUIContent thicknessText = new GUIContent("Thickness", "If subsurface scattering is enabled, low values allow some light to be transmitted through the object.");
public static GUIContent thicknessMapText = new GUIContent("Thickness map", "If subsurface scattering is enabled, low values allow some light to be transmitted through the object.");
// Specular color
public static GUIContent specularColorText = new GUIContent("Specular Color", "Specular color (RGB)");
// Emissive
public static string lightingText = "Inputs Lighting";

{
Standard = 0,
SubsurfaceScattering = 1,
ClearCoat = 2,
SpecularColor = 3
SpecularColor = 2
}
protected MaterialProperty UVBase = null;

protected const string kAnisotropy = "_Anisotropy";
protected MaterialProperty anisotropyMap = null;
protected const string kAnisotropyMap = "_AnisotropyMap";
protected MaterialProperty specularColor = null;
protected const string kSpecularColor = "_SpecularColor";
protected MaterialProperty specularColorMap = null;
protected const string kSpecularColorMap = "_SpecularColorMap";
protected MaterialProperty UVDetail = null;
protected const string kUVDetail = "_UVDetail";

tangentMap = FindProperty(kTangentMap, props);
anisotropy = FindProperty(kAnisotropy, props);
anisotropyMap = FindProperty(kAnisotropyMap, props);
specularColor = FindProperty(kSpecularColor, props);
specularColorMap = FindProperty(kSpecularColorMap, props);
// Details
UVDetail = FindProperty(kUVDetail, props);

{
ShaderSSSInputGUI(material);
}
else if ((MaterialIDType)materialID.floatValue == MaterialIDType.SpecularColor)
{
m_MaterialEditor.TexturePropertySingleLine(Styles.specularColorText, specularColorMap, specularColor);
}
EditorGUILayout.Space();
GUILayout.Label(" " + Styles.textureControlText, EditorStyles.label);

SetKeyword(material, "_ANISOTROPYMAP", material.GetTexture(kAnisotropyMap));
SetKeyword(material, "_DETAIL_MAP", material.GetTexture(kDetailMap));
SetKeyword(material, "_SUBSURFACE_RADIUS_MAP", material.GetTexture(kSubsurfaceRadiusMap));
SetKeyword(material, "_THICKNESS_MAP", material.GetTexture(kThicknessMap));
SetKeyword(material, "_THICKNESSMAP", material.GetTexture(kThicknessMap));
SetKeyword(material, "_SPECULARCOLORMAP", material.GetTexture(kSpecularColorMap));
bool needUV2 = (UVDetailMapping)material.GetFloat(kUVDetail) == UVDetailMapping.UV2 && (UVBaseMapping)material.GetFloat(kUVBase) == UVBaseMapping.UV0;
bool needUV3 = (UVDetailMapping)material.GetFloat(kUVDetail) == UVDetailMapping.UV3 && (UVBaseMapping)material.GetFloat(kUVBase) == UVBaseMapping.UV0;

20
Assets/ScriptableRenderPipeline/HDRenderPipeline/Material/Lit/Lit.cs


{
LitStandard = 0,
LitSSS = 1,
LitClearCoat = 2,
LitSpecular = 3,
LitSpecular = 2,
LitUnused = 3,
LitAniso = 4 // Should be the last as it is not setup by the users but generated based on anisotropy property
};

public static uint FEATURE_FLAG_MATERIAL_LIT_STANDARD = 1 << 12;
public static uint FEATURE_FLAG_MATERIAL_LIT_SSS = 1 << 13;
public static uint FEATURE_FLAG_MATERIAL_LIT_CLEAR_COAT = 1 << 14;
public static uint FEATURE_FLAG_MATERIAL_LIT_SPECULAR = 1 << 15;
public static uint FEATURE_FLAG_MATERIAL_LIT_ANISO = 1 << 16;
public static uint FEATURE_FLAG_MATERIAL_LIT_SPECULAR = 1 << 14;
public static uint FEATURE_FLAG_MATERIAL_LIT_ANISO = 1 << 15;
}
//-----------------------------------------------------------------------------

[SurfaceDataAttributes("Subsurface Profile")]
public int subsurfaceProfile;
// Clearcoat
[SurfaceDataAttributes("Coat Normal", true)]
public Vector3 coatNormalWS;
[SurfaceDataAttributes("Coat Smoothness")]
public float coatPerceptualSmoothness;
// SpecColor
[SurfaceDataAttributes("Specular Color", false, true)]
public Vector3 specularColor;

public int subsurfaceProfile;
public bool enableTransmission; // Read from the SSS profile
public Vector3 transmittance;
// Clearcoat
[SurfaceDataAttributes("", true)]
public Vector3 coatNormalWS;
public float coatRoughness;
// SpecColor
// fold into fresnel0

31
Assets/ScriptableRenderPipeline/HDRenderPipeline/Material/Lit/Lit.cs.hlsl


//
#define MATERIALID_LIT_STANDARD (0)
#define MATERIALID_LIT_SSS (1)
#define MATERIALID_LIT_CLEAR_COAT (2)
#define MATERIALID_LIT_SPECULAR (3)
#define MATERIALID_LIT_SPECULAR (2)
#define MATERIALID_LIT_UNUSED (3)
#define MATERIALID_LIT_ANISO (4)
//

#define FEATURE_FLAG_MATERIAL_LIT_SSS (8192)
#define FEATURE_FLAG_MATERIAL_LIT_CLEAR_COAT (16384)
#define FEATURE_FLAG_MATERIAL_LIT_SPECULAR (32768)
#define FEATURE_FLAG_MATERIAL_LIT_ANISO (65536)
#define FEATURE_FLAG_MATERIAL_LIT_SPECULAR (16384)
#define FEATURE_FLAG_MATERIAL_LIT_ANISO (32768)
//
// UnityEngine.Experimental.Rendering.HDPipeline.Lit.SurfaceData: static fields

#define DEBUGVIEW_LIT_SURFACEDATA_SUBSURFACE_RADIUS (1010)
#define DEBUGVIEW_LIT_SURFACEDATA_THICKNESS (1011)
#define DEBUGVIEW_LIT_SURFACEDATA_SUBSURFACE_PROFILE (1012)
#define DEBUGVIEW_LIT_SURFACEDATA_COAT_NORMAL_WS (1013)
#define DEBUGVIEW_LIT_SURFACEDATA_COAT_PERCEPTUAL_SMOOTHNESS (1014)
#define DEBUGVIEW_LIT_SURFACEDATA_SPECULAR_COLOR (1015)
#define DEBUGVIEW_LIT_SURFACEDATA_SPECULAR_COLOR (1013)
//
// UnityEngine.Experimental.Rendering.HDPipeline.Lit.BSDFData: static fields

#define DEBUGVIEW_LIT_BSDFDATA_SUBSURFACE_PROFILE (1044)
#define DEBUGVIEW_LIT_BSDFDATA_ENABLE_TRANSMISSION (1045)
#define DEBUGVIEW_LIT_BSDFDATA_TRANSMITTANCE (1046)
#define DEBUGVIEW_LIT_BSDFDATA_COAT_NORMAL_WS (1047)
#define DEBUGVIEW_LIT_BSDFDATA_COAT_ROUGHNESS (1048)
//
// UnityEngine.Experimental.Rendering.HDPipeline.Lit.GBufferMaterial: static fields

float subsurfaceRadius;
float thickness;
int subsurfaceProfile;
float3 coatNormalWS;
float coatPerceptualSmoothness;
float3 specularColor;
};

int subsurfaceProfile;
bool enableTransmission;
float3 transmittance;
float3 coatNormalWS;
float coatRoughness;
};
//

case DEBUGVIEW_LIT_SURFACEDATA_SUBSURFACE_PROFILE:
result = GetIndexColor(surfacedata.subsurfaceProfile);
break;
case DEBUGVIEW_LIT_SURFACEDATA_COAT_NORMAL_WS:
result = surfacedata.coatNormalWS * 0.5 + 0.5;
break;
case DEBUGVIEW_LIT_SURFACEDATA_COAT_PERCEPTUAL_SMOOTHNESS:
result = surfacedata.coatPerceptualSmoothness.xxx;
break;
case DEBUGVIEW_LIT_SURFACEDATA_SPECULAR_COLOR:
result = surfacedata.specularColor;
needLinearToSRGB = true;

break;
case DEBUGVIEW_LIT_BSDFDATA_TRANSMITTANCE:
result = bsdfdata.transmittance;
break;
case DEBUGVIEW_LIT_BSDFDATA_COAT_NORMAL_WS:
result = bsdfdata.coatNormalWS * 0.5 + 0.5;
break;
case DEBUGVIEW_LIT_BSDFDATA_COAT_ROUGHNESS:
result = bsdfdata.coatRoughness.xxx;
break;
}
}

308
Assets/ScriptableRenderPipeline/HDRenderPipeline/Material/Lit/Lit.hlsl


void ApplyDebugToBSDFData(inout BSDFData bsdfData)
{
#ifdef DEBUG_DISPLAY
if (_DebugDisplayMode == DEBUGDISPLAYMODE_SPECULAR_LIGHTING)
if (_DebugLightingMode == DEBUGLIGHTINGMODE_SPECULAR_LIGHTING)
{
bool overrideSmoothness = _DebugLightingSmoothness.x != 0.0;
float overrideSmoothnessValue = _DebugLightingSmoothness.y;

}
}
if (_DebugDisplayMode == DEBUGDISPLAYMODE_DIFFUSE_LIGHTING)
if (_DebugLightingMode == DEBUGLIGHTINGMODE_DIFFUSE_LIGHTING)
{
bsdfData.diffuseColor = _DebugLightingAlbedo.xyz;
}

void ConfigureTexturingForSSS(inout BSDFData bsdfData)
{
bool performPostScatterTexturing = IsBitSet(_TexturingModeFlags, bsdfData.subsurfaceProfile);
// It's either post-scatter, or pre- and post-scatter texturing.
bsdfData.diffuseColor = performPostScatterTexturing ? float3(1, 1, 1)
: sqrt(bsdfData.diffuseColor);
}
// Evaluates transmittance for a linear combination of two normalized 2D Gaussians.
// Computes results for each color channel separately.
// Ref: Real-Time Realistic Skin Translucency (2010), equation 9 (modified).

return transmittance * tintColor;
}
void FillMaterialIdStandardData(float3 baseColor, float specular, float metallic, float roughness, float3 normalWS, float3 tangentWS, float anisotropy, inout BSDFData bsdfData)
{
bsdfData.diffuseColor = baseColor * (1.0 - metallic);
bsdfData.fresnel0 = lerp(float3(specular.xxx), baseColor, metallic);
// TODO: encode specular
bsdfData.tangentWS = tangentWS;
bsdfData.bitangentWS = cross(normalWS, tangentWS);
ConvertAnisotropyToRoughness(roughness, anisotropy, bsdfData.roughnessT, bsdfData.roughnessB);
bsdfData.anisotropy = anisotropy;
}
void FillMaterialIdSSSData(float3 baseColor, int subsurfaceProfile, float subsurfaceRadius, float thickness, inout BSDFData bsdfData)
{
bsdfData.diffuseColor = baseColor;
// TODO take from subsurfaceProfile
bsdfData.fresnel0 = 0.04; // Should be 0.028 for the skin
bsdfData.subsurfaceProfile = subsurfaceProfile;
// Make the Std. Dev. of 1 correspond to the effective radius of 1 cm (three-sigma rule).
bsdfData.subsurfaceRadius = SSS_UNIT_CONVERSION * subsurfaceRadius + 0.0001;
bsdfData.thickness = SSS_UNIT_CONVERSION * (_ThicknessRemaps[subsurfaceProfile][0] +
_ThicknessRemaps[subsurfaceProfile][1] * thickness);
bsdfData.enableTransmission = IsBitSet(_TransmissionFlags, subsurfaceProfile);
if (bsdfData.enableTransmission)
{
bsdfData.transmittance = ComputeTransmittance( _HalfRcpVariancesAndLerpWeights[subsurfaceProfile][0].xyz,
_HalfRcpVariancesAndLerpWeights[subsurfaceProfile][0].w,
_HalfRcpVariancesAndLerpWeights[subsurfaceProfile][1].xyz,
_HalfRcpVariancesAndLerpWeights[subsurfaceProfile][1].w,
_TintColors[subsurfaceProfile].rgb, bsdfData.thickness, bsdfData.subsurfaceRadius);
}
#ifndef SSS_FILTER_HORIZONTAL_AND_COMBINE // When doing the SSS comine pass, we must not apply the modification of diffuse color
// Handle post-scatter, or pre- and post-scatter texturing.
// We modify diffuseColor here so it affect all the lighting + GI (lightprobe / lightmap) (Need to be done also in GBuffer pass) + transmittance
// diffuseColor will be solely use during lighting pass. The other contribution will be apply in subsurfacescattering convolution.
bool performPostScatterTexturing = IsBitSet(_TexturingModeFlags, subsurfaceProfile);
bsdfData.diffuseColor = performPostScatterTexturing ? float3(1.0, 1.0, 1.0) : sqrt(bsdfData.diffuseColor);
#endif
}
//-----------------------------------------------------------------------------
// conversion function for forward
//-----------------------------------------------------------------------------

if (bsdfData.materialId == MATERIALID_LIT_STANDARD)
{
bsdfData.diffuseColor = surfaceData.baseColor * (1.0 - surfaceData.metallic);
bsdfData.fresnel0 = lerp(float3(surfaceData.specular, surfaceData.specular, surfaceData.specular), surfaceData.baseColor, surfaceData.metallic);
bsdfData.tangentWS = surfaceData.tangentWS;
bsdfData.bitangentWS = cross(surfaceData.normalWS, surfaceData.tangentWS);
ConvertAnisotropyToRoughness(bsdfData.roughness, surfaceData.anisotropy, bsdfData.roughnessT, bsdfData.roughnessB);
bsdfData.anisotropy = surfaceData.anisotropy;
bsdfData.materialId = surfaceData.anisotropy > 0 ? MATERIALID_LIT_ANISO : bsdfData.materialId;
FillMaterialIdStandardData(surfaceData.baseColor, surfaceData.specular, surfaceData.metallic, bsdfData.roughness, surfaceData.normalWS, surfaceData.tangentWS, surfaceData.anisotropy, bsdfData);
bsdfData.materialId = surfaceData.anisotropy > 0.0 ? MATERIALID_LIT_ANISO : bsdfData.materialId;
bsdfData.diffuseColor = surfaceData.baseColor;
// TODO take from subsurfaceProfile
bsdfData.fresnel0 = 0.04; /* 0.028 ? */
bsdfData.subsurfaceProfile = surfaceData.subsurfaceProfile;
// Make the Std. Dev. of 1 correspond to the effective radius of 1 cm (three-sigma rule).
bsdfData.subsurfaceRadius = SSS_UNIT_CONVERSION * surfaceData.subsurfaceRadius + 0.0001;
bsdfData.thickness = SSS_UNIT_CONVERSION * (_ThicknessRemaps[bsdfData.subsurfaceProfile][0] +
_ThicknessRemaps[bsdfData.subsurfaceProfile][1] * surfaceData.thickness);
bsdfData.enableTransmission = IsBitSet(_TransmissionFlags, bsdfData.subsurfaceProfile);
if (bsdfData.enableTransmission)
{
bsdfData.transmittance = ComputeTransmittance(_HalfRcpVariancesAndLerpWeights[bsdfData.subsurfaceProfile][0].xyz,
_HalfRcpVariancesAndLerpWeights[bsdfData.subsurfaceProfile][0].w,
_HalfRcpVariancesAndLerpWeights[bsdfData.subsurfaceProfile][1].xyz,
_HalfRcpVariancesAndLerpWeights[bsdfData.subsurfaceProfile][1].w,
_TintColors[bsdfData.subsurfaceProfile].rgb, bsdfData.thickness, bsdfData.subsurfaceRadius);
}
}
else if (bsdfData.materialId == MATERIALID_LIT_CLEAR_COAT)
{
bsdfData.diffuseColor = surfaceData.baseColor * (1.0 - surfaceData.metallic);
bsdfData.fresnel0 = lerp(float3(surfaceData.specular, surfaceData.specular, surfaceData.specular), surfaceData.baseColor, surfaceData.metallic);
bsdfData.coatNormalWS = surfaceData.coatNormalWS;
bsdfData.coatRoughness = PerceptualSmoothnessToRoughness(surfaceData.coatPerceptualSmoothness);
FillMaterialIdSSSData(surfaceData.baseColor, surfaceData.subsurfaceProfile, surfaceData.subsurfaceRadius, surfaceData.thickness, bsdfData);
}
else if (bsdfData.materialId == MATERIALID_LIT_SPECULAR)
{

#ifdef OUTPUT_SPLIT_LIGHTING
ConfigureTexturingForSSS(bsdfData);
#endif
ApplyDebugToBSDFData(bsdfData);
return bsdfData;

// conversion function for deferred
//-----------------------------------------------------------------------------
#define USE_NORMAL_TETRAHEDRON_ENCODING
#ifdef USE_NORMAL_TETRAHEDRON_ENCODING
// To generate the basisNormal below we use these 4 vertex of a regular tetrahedron
// v0 = float3(1.0, 0.0, -1.0 / sqrt(2.0));
// v1 = float3(-1.0, 0.0, -1.0 / sqrt(2.0));
// v2 = float3(0.0, 1.0, 1.0 / sqrt(2.0));
// v3 = float3(0.0, -1.0, 1.0 / sqrt(2.0));
// Then we normalize the average of each face's vertices
// normalize(v0 + v1 + v2), etc...
static const float3 basisNormal[4] =
{
float3(0., 0.816497, -0.57735),
float3(-0.816497, 0., 0.57735),
float3(0.816497, 0., 0.57735),
float3(0., -0.816497, -0.57735)
};
// Then to get the local matrix (with z axis rotate to basisNormal) use GetLocalFrame(basisNormal[xxx])
static const float3x3 basisArray[4] =
{
float3x3(-1., 0., 0.,0., 0.57735, 0.816497,0., 0.816497, -0.57735),
float3x3(0., -1., 0.,0.57735, 0., 0.816497,-0.816497, 0., 0.57735),
float3x3(0., 1., 0.,-0.57735, 0., 0.816497,0.816497, 0., 0.57735),
float3x3(1., 0., 0.,0., -0.57735, 0.816497,0., -0.816497, -0.57735)
};
// Return [-1..1] vector2 oriented in plane of the faceIndex of a regular tetrahedron
float2 PackNormalTetraEncode(float3 n, out uint faceIndex)
{
// Retrieve the tetrahedra's face for the normal direction
// It is the one with the greatest dot value with face normal
float dot0 = dot(n, basisNormal[0]);
float dot1 = dot(n, basisNormal[1]);
float dot2 = dot(n, basisNormal[2]);
float dot3 = dot(n, basisNormal[3]);
float maxi0 = max(dot0, dot1);
float maxi1 = max(dot2, dot3);
float maxi = max(maxi0, maxi1);
// Get the index from the greatest dot
if (maxi == dot0)
faceIndex = 0;
else if (maxi == dot1)
faceIndex = 1;
else if (maxi == dot2)
faceIndex = 2;
else //(maxi == dot3)
faceIndex = 3;
// Rotate n into this local basis
n = mul(basisArray[faceIndex], n);
// Project n onto the local plane
return n.xy;
}
// Assume f [-1..1]
float3 UnpackNormalTetraEncode(float2 f, uint faceIndex)
{
// Recover n from local plane
float3 n = float3(f.xy, sqrt(1.0 - dot(f.xy, f.xy)));
// Inverse of transform PackNormalTetraEncode (just swap order in mul as we have a rotation)
return mul(n, basisArray[faceIndex]);
}
#endif
// Encode SurfaceData (BSDF parameters) into GBuffer
// Must be in sync with RT declared in HDRenderPipeline.cs ::Rebuild
void EncodeIntoGBuffer( SurfaceData surfaceData,

outGBuffer0 = float4(surfaceData.baseColor, surfaceData.specularOcclusion);
// RT1 - 10:10:10:2
// We store perceptualRoughness instead of roughness because it save a sqrt ALU when decoding
// (as we want both perceptualRoughness and roughness for the lighting due to Disney Diffuse model)
#ifdef USE_NORMAL_TETRAHEDRON_ENCODING
// Encode normal on 20bit + 2bit (faceIndex) with tetrahedal compression
uint faceIndex;
float2 tetraNormalWS = PackNormalTetraEncode(surfaceData.normalWS, faceIndex);
// Store faceIndex on two bits with perceptualRoughness
outGBuffer1 = float4(tetraNormalWS * 0.5 + 0.5, PackFloatInt10bit(PerceptualSmoothnessToPerceptualRoughness(surfaceData.perceptualSmoothness), faceIndex, 4.0), PackMaterialId(surfaceData.materialId));
#else
// We store perceptualRoughness instead of roughness because it save a sqrt ALU when decoding
// (as we want both perceptualRoughness and roughness for the lighting due to Disney Diffuse model)
// TODO: Store 2 bit of flag into perceptualSmoothness (one for SSR, other is free (deferred planar reflection ID ? / MatID extension ?)
#endif
// RT2 - 8:8:8:8
if (surfaceData.materialId == MATERIALID_LIT_STANDARD)

else if (surfaceData.materialId == MATERIALID_LIT_SSS)
{
outGBuffer2 = float4(surfaceData.subsurfaceRadius, surfaceData.thickness, 0.0, surfaceData.subsurfaceProfile * rcp(SSS_N_PROFILES - 1));
}
else if (surfaceData.materialId == MATERIALID_LIT_CLEAR_COAT)
{
// Encode coat normal on 16bit with oct compression
float2 octCoatNormalWS = PackNormalOctEncode(surfaceData.coatNormalWS);
// TODO: store metal and specular together, specular should be an enum (fixed value)
outGBuffer2 = float4(octCoatNormalWS * 0.5 + 0.5, PerceptualSmoothnessToRoughness(surfaceData.coatPerceptualSmoothness), surfaceData.metallic);
}
else if (surfaceData.materialId == MATERIALID_LIT_SPECULAR)
{

float3 baseColor = inGBuffer0.rgb;
bsdfData.specularOcclusion = inGBuffer0.a;
#ifdef USE_NORMAL_TETRAHEDRON_ENCODING
uint faceIndex;
UnpackFloatInt10bit(inGBuffer1.b, 4.0, bsdfData.perceptualRoughness, faceIndex);
bsdfData.normalWS = UnpackNormalTetraEncode(inGBuffer1.xy * 2.0 - 1.0, faceIndex);
#else
#endif
int supportsClearCoat = (featureFlags & (MATERIALID_LIT_CLEAR_COAT)) != 0;
if(supportsStandard + supportsSSS + supportsClearCoat + supportsSpecular > 1)
if(supportsStandard + supportsSSS + supportsSpecular > 1)
{
bsdfData.materialId = UnpackMaterialId(inGBuffer1.a); // only fetch materialid if it is not statically known from feature flags
}

if(supportsStandard) bsdfData.materialId = MATERIALID_LIT_STANDARD;
else if(supportsSSS) bsdfData.materialId = MATERIALID_LIT_SSS;
else if(supportsClearCoat) bsdfData.materialId = MATERIALID_LIT_CLEAR_COAT;
else bsdfData.materialId = MATERIALID_LIT_SPECULAR;
}

// TODO extract spec
float specular = 0.04;
float specular = 0.04; // TODO extract spec
bsdfData.diffuseColor = baseColor * (1.0 - metallic);
bsdfData.fresnel0 = lerp(float3(specular, specular, specular), baseColor, metallic);
bsdfData.tangentWS = UnpackNormalOctEncode(float2(inGBuffer2.rg * 2.0 - 1.0));
bsdfData.bitangentWS = cross(bsdfData.normalWS, bsdfData.tangentWS);
ConvertAnisotropyToRoughness(bsdfData.roughness, anisotropy, bsdfData.roughnessT, bsdfData.roughnessB);
bsdfData.anisotropy = anisotropy;
float3 tangentWS = UnpackNormalOctEncode(float2(inGBuffer2.rg * 2.0 - 1.0));
FillMaterialIdStandardData(baseColor, specular, metallic, bsdfData.roughness, bsdfData.normalWS, tangentWS, anisotropy, bsdfData);
if ((featureFlags & FEATURE_FLAG_MATERIAL_LIT_ANISO) && (featureFlags & FEATURE_FLAG_MATERIAL_LIT_STANDARD) == 0 || anisotropy > 0)
{

else if (supportsSSS && bsdfData.materialId == MATERIALID_LIT_SSS)
{
bsdfData.diffuseColor = baseColor;
// TODO take from subsurfaceProfile
bsdfData.fresnel0 = 0.04; /* 0.028 ? */
bsdfData.subsurfaceProfile = (SSS_N_PROFILES - 0.9) * inGBuffer2.a; // Need to bias for integers to round trip through the G-buffer
// Make the Std. Dev. of 1 correspond to the effective radius of 1 cm (three-sigma rule).
bsdfData.subsurfaceRadius = SSS_UNIT_CONVERSION * inGBuffer2.r + 0.0001;
bsdfData.thickness = SSS_UNIT_CONVERSION * (_ThicknessRemaps[bsdfData.subsurfaceProfile][0] +
_ThicknessRemaps[bsdfData.subsurfaceProfile][1] * inGBuffer2.g);
bsdfData.enableTransmission = IsBitSet(_TransmissionFlags, bsdfData.subsurfaceProfile);
if (bsdfData.enableTransmission)
{
bsdfData.transmittance = ComputeTransmittance(_HalfRcpVariancesAndLerpWeights[bsdfData.subsurfaceProfile][0].xyz,
_HalfRcpVariancesAndLerpWeights[bsdfData.subsurfaceProfile][0].w,
_HalfRcpVariancesAndLerpWeights[bsdfData.subsurfaceProfile][1].xyz,
_HalfRcpVariancesAndLerpWeights[bsdfData.subsurfaceProfile][1].w,
_TintColors[bsdfData.subsurfaceProfile].rgb, bsdfData.thickness, bsdfData.subsurfaceRadius);
}
}
else if (supportsClearCoat && bsdfData.materialId == MATERIALID_LIT_CLEAR_COAT)
{
float metallic = inGBuffer2.a;
// TODO extract spec
float specular = 0.04;
bsdfData.diffuseColor = baseColor * (1.0 - metallic);
bsdfData.fresnel0 = lerp(float3(specular, specular, specular), baseColor, metallic);
bsdfData.coatNormalWS = UnpackNormalOctEncode(float2(inGBuffer2.rg * 2.0 - 1.0));
bsdfData.coatRoughness = inGBuffer2.b;
int subsurfaceProfile = (SSS_N_PROFILES - 0.9) * inGBuffer2.a;
float subsurfaceRadius = inGBuffer2.r;
float thickness = inGBuffer2.g;
FillMaterialIdSSSData(baseColor, subsurfaceProfile, subsurfaceRadius, thickness, bsdfData);
}
else if (supportsSpecular && bsdfData.materialId == MATERIALID_LIT_SPECULAR)
{

bakeDiffuseLighting = inGBuffer3.rgb;
#ifdef OUTPUT_SPLIT_LIGHTING
ConfigureTexturingForSSS(bsdfData);
#endif
ApplyDebugToBSDFData(bsdfData);
}

{
featureFlags |= FEATURE_FLAG_MATERIAL_LIT_SSS;
}
else if (materialId == MATERIALID_LIT_CLEAR_COAT)
{
featureFlags |= FEATURE_FLAG_MATERIAL_LIT_CLEAR_COAT;
}
else if (materialId == MATERIALID_LIT_SPECULAR)
{
featureFlags |= FEATURE_FLAG_MATERIAL_LIT_SPECULAR;

// Precomputed lighting data to send to the various lighting functions
struct PreLightData
{
// General
// GGX iso
// Aniso
// GGX Aniso
// IBL
float3 iblDirWS; // Dominant specular direction, used for IBL in EvaluateBSDF_Env()
float iblMipLevel;

{
PreLightData preLightData;
// We have handle the case of NdotV being negative in GetData() function with GetShiftedNdotV.
// So we don't need to saturate or take the abs here.
// In case a material use negative normal for double sided lighting like speedtree this will be handle in the GetData() code too.
preLightData.NdotV = dot(bsdfData.normalWS, V);
// General
float3 iblNormalWS = bsdfData.normalWS;
// GetShiftedNdotV return a positive NdotV
// In case a material use negative normal for double sided lighting like Speedtree they need to do a new calculation
preLightData.NdotV = GetShiftedNdotV(iblNormalWS, V); // Handle artificat for specular lighting
// GGX iso
float iblNdotV = preLightData.NdotV;
float3 iblNormalWS = bsdfData.normalWS;
// Check if we precompute anisotropy too
// GGX aniso
if (bsdfData.materialId == MATERIALID_LIT_ANISO)
{
preLightData.TdotV = dot(bsdfData.tangentWS, V);

iblNormalWS = GetAnisotropicModifiedNormal(bsdfData.bitangentWS, bsdfData.normalWS, V, bsdfData.anisotropy);
iblNormalWS = GetAnisotropicModifiedNormal(bsdfData.bitangentWS, iblNormalWS, V, bsdfData.anisotropy);
// NOTE: If we follow the theory we should use the modified normal for the different calculation implying a normal (like NDotV) and use iblNormalWS
// NOTE: If we follow the theory we should use the modified normal for the different calculation implying a normal (like NdotV) and use iblNormalWS
GetPreIntegratedFGD(iblNdotV, bsdfData.perceptualRoughness, bsdfData.fresnel0, preLightData.specularFGD, preLightData.diffuseFGD);
// IBL
GetPreIntegratedFGD(preLightData.NdotV, bsdfData.perceptualRoughness, bsdfData.fresnel0, preLightData.specularFGD, preLightData.diffuseFGD);
// Area light specific
// Area light
// UVs for sampling the LUTs
float theta = FastACos(preLightData.NdotV);
float2 uv = LTC_LUT_OFFSET + LTC_LUT_SCALE * float2(bsdfData.perceptualRoughness, theta * INV_HALF_PI);

float NdotL = saturate(dot(bsdfData.normalWS, L));
float NdotV = preLightData.NdotV;
float LdotV = dot(L, V);
float invLenLV = rsqrt(abs(2 + 2 * LdotV)); // invLenLV = rcp(length(L + V))
// GCN Optimization: reference PBR Diffuse Lighting for GGX + Smith Microsurfaces
float invLenLV = rsqrt(abs(2.0 * LdotV + 2.0)); // invLenLV = rcp(length(L + V))
float LdotH = saturate(invLenLV + invLenLV * LdotV);
float LdotH = saturate(invLenLV * LdotV + invLenLV);
float3 F = F_Schlick(bsdfData.fresnel0, LdotH);

[branch] if (bsdfData.enableTransmission)
{
// Reverse the normal.
illuminance = saturate(dot(-bsdfData.normalWS, L));
// Reverse the normal + do some wrap lighting to have a nicer transition between regular lighting and transmittance
// Ref: Steve McAuley - Energy-Conserving Wrapped Diffuse
const float w = 0.15;
float illuminance = saturate((dot(-bsdfData.normalWS, L) + w) / ((1.0 + w) * (1.0 + w)));
// For low thickness, we can reuse the shadowing status for the back of the object.
shadow = (bsdfData.thickness <= SSS_LOW_THICKNESS) ? shadow : 1;
illuminance *= shadow * cookie.a;

[branch] if (bsdfData.enableTransmission)
{
// Reverse the normal.
illuminance = saturate(dot(-bsdfData.normalWS, L)) * attenuation;
// Reverse the normal + do some wrap lighting to have a nicer transition between regular lighting and transmittance
// Ref: Steve McAuley - Energy-Conserving Wrapped Diffuse
const float w = 0.15;
float illuminance = saturate((dot(-bsdfData.normalWS, L) + w) / ((1.0 + w) * (1.0 + w)));
illuminance *= attenuation;
// For low thickness, we can reuse the shadowing status for the back of the object.
shadow = (bsdfData.thickness <= SSS_LOW_THICKNESS) ? shadow : 1;
illuminance *= shadow * cookie.a;

[branch] if (bsdfData.enableTransmission)
{
// Reverse the normal.
illuminance = saturate(dot(-bsdfData.normalWS, L) * clipFactor);
// Reverse the normal + do some wrap lighting to have a nicer transition between regular lighting and transmittance
// Ref: Steve McAuley - Energy-Conserving Wrapped Diffuse
const float w = 0.15;
float illuminance = saturate((dot(-bsdfData.normalWS, L) + w) / ((1.0 + w) * (1.0 + w)));
illuminance *= clipFactor;
// For low thickness, we can reuse the shadowing status for the back of the object.
shadow = (bsdfData.thickness <= SSS_LOW_THICKNESS) ? shadow : 1;
illuminance *= shadow * cookie.a;

14
Assets/ScriptableRenderPipeline/HDRenderPipeline/Material/Lit/Lit.shader


_Thickness("Thickness", Range(0.0, 1.0)) = 1.0
_ThicknessMap("Thickness Map", 2D) = "white" {}
_SpecularColor("SpecularColor", Color) = (1, 1, 1, 1)
_SpecularColorMap("SpecularColorMap", 2D) = "white" {}
// Wind
[ToggleOff] _EnableWind("Enable Wind", Float) = 0.0
_InitialBend("Initial Bend", float) = 1.0

_ShiverDirectionality("Shiver Directionality", Range(0.0, 1.0)) = 0.5
//_CoatCoverage("CoatCoverage", Range(0.0, 1.0)) = 0
//_CoatCoverageMap("CoatCoverageMapMap", 2D) = "white" {}
//_CoatRoughness("CoatRoughness", Range(0.0, 1.0)) = 0
//_CoatRoughnessMap("CoatRoughnessMap", 2D) = "white" {}
_DistortionVectorMap("DistortionVectorMap", 2D) = "black" {}
// Following options are for the GUI inspector and different from the input parameters above

[HideInInspector] _UVMappingMask("_UVMappingMask", Color) = (1, 0, 0, 0)
[Enum(TangentSpace, 0, ObjectSpace, 1)] _NormalMapSpace("NormalMap space", Float) = 0
[Enum(Standard, 0, Subsurface Scattering, 1, Clear Coat, 2, Specular Color, 3)] _MaterialID("MaterialId", Int) = 0
[Enum(Standard, 0, Subsurface Scattering, 1, Specular Color, 2)] _MaterialID("MaterialId", Int) = 0
[ToggleOff] _EnablePerPixelDisplacement("Enable per pixel displacement", Float) = 0.0
_PPDMinSamples("Min sample for POM", Range(1.0, 64.0)) = 5

#pragma shader_feature _ANISOTROPYMAP
#pragma shader_feature _DETAIL_MAP
#pragma shader_feature _SUBSURFACE_RADIUS_MAP
#pragma shader_feature _THICKNESS_MAP
#pragma shader_feature _THICKNESSMAP
#pragma shader_feature _SPECULARCOLORMAP
#pragma shader_feature _VERTEX_WIND
#pragma multi_compile LIGHTMAP_OFF LIGHTMAP_ON

2
Assets/ScriptableRenderPipeline/HDRenderPipeline/Material/Lit/LitData.hlsl


surfaceData.subsurfaceRadius = 1.0;
surfaceData.thickness = 0.0;
surfaceData.subsurfaceProfile = 0;
surfaceData.coatNormalWS = float3(1.0, 0.0, 0.0);
surfaceData.coatPerceptualSmoothness = 1.0;
surfaceData.specularColor = float3(0.0, 0.0, 0.0);
GetNormalAndTangentWS(input, V, normalTS, surfaceData.normalWS, surfaceData.tangentWS);

13
Assets/ScriptableRenderPipeline/HDRenderPipeline/Material/Lit/LitDataInternal.hlsl


#endif
surfaceData.normalWS = float3(0.0, 0.0, 0.0); // Need to init this to keep quiet the compiler, but this is overriden later (0, 0, 0) so if we forget to override the compiler may comply.
// TODO: think about using BC5
normalTS = ADD_IDX(GetNormalTS)(input, layerTexCoord, detailNormalTS, detailMask, false, 0.0);
#if defined(_MASKMAP_IDX)

surfaceData.materialId = (_EnableSSS || _MaterialID != MATERIALID_LIT_SSS) ? _MaterialID : MATERIALID_LIT_STANDARD;
// TODO: think about using BC5
#ifdef _TANGENTMAP
#ifdef _NORMALMAP_TANGENT_SPACE_IDX // Normal and tangent use same space
float3 tangentTS = SAMPLE_UVMAPPING_NORMALMAP(_TangentMap, sampler_TangentMap, layerTexCoord.base, 1.0);

surfaceData.subsurfaceRadius *= SAMPLE_UVMAPPING_TEXTURE2D(_SubsurfaceRadiusMap, sampler_SubsurfaceRadiusMap, layerTexCoord.base).r;
#endif
#ifdef _THICKNESS_MAP
#ifdef _THICKNESSMAP
surfaceData.coatNormalWS = float3(1.0, 0.0, 0.0);
surfaceData.coatPerceptualSmoothness = 1.0;
surfaceData.specularColor = float3(0.0, 0.0, 0.0);
surfaceData.specularColor = _SpecularColor.rgb;
#ifdef _SPECULARCOLORMAP
surfaceData.specularColor *= SAMPLE_UVMAPPING_TEXTURE2D(_SpecularColorMap, sampler_SpecularColorMap, layerTexCoord.base).rgb;
#endif
#else // #if !defined(LAYERED_LIT_SHADER)

surfaceData.thickness = 0.0;
surfaceData.subsurfaceProfile = 0;
surfaceData.coatNormalWS = float3(1.0, 0.0, 0.0);
surfaceData.coatPerceptualSmoothness = 0.0;
surfaceData.specularColor = float3(0.0, 0.0, 0.0);
#endif // #if !defined(LAYERED_LIT_SHADER)

16
Assets/ScriptableRenderPipeline/HDRenderPipeline/Material/Lit/LitProperties.hlsl


CBUFFER_START(_PerMaterial)
// shared constant between lit and layered lit
float _AlphaCutoff;
float4 _DoubleSidedConstants;

float3 _EmissionColor;
// Wind
float _InitialBend;
float _InitialBend;
float _Stiffness;
float _Drag;
float _ShiverDrag;

TEXTURE2D(_ThicknessMap);
SAMPLER2D(sampler_ThicknessMap);
// float _CoatCoverage;
//TEXTURE2D(_CoatCoverageMap);
//SAMPLER2D(sampler_CoatCoverageMap);
// float _CoatRoughness;
//TEXTURE2D(_CoatRoughnessMap);
//SAMPLER2D(sampler_CoatRoughnessMap);
float4 _SpecularColor;
TEXTURE2D(_SpecularColorMap);
SAMPLER2D(sampler_SpecularColorMap);
float _TexWorldScale;
float4 _UVMappingMask;

float _TessellationObjectScale;
float _TessellationTilingScale;
#endif
CBUFFER_END

14
Assets/ScriptableRenderPipeline/HDRenderPipeline/Material/Lit/LitTessellation.shader


_Thickness("Thickness", Range(0.0, 1.0)) = 1.0
_ThicknessMap("Thickness Map", 2D) = "white" {}
_SpecularColor("SpecularColor", Color) = (1, 1, 1, 1)
_SpecularColorMap("SpecularColorMap", 2D) = "white" {}
// Wind
[ToggleOff] _EnableWind("Enable Wind", Float) = 0.0
_InitialBend("Initial Bend", float) = 1.0

_ShiverDirectionality("Shiver Directionality", Range(0.0, 1.0)) = 0.5
//_CoatCoverage("CoatCoverage", Range(0.0, 1.0)) = 0
//_CoatCoverageMap("CoatCoverageMapMap", 2D) = "white" {}
//_CoatRoughness("CoatRoughness", Range(0.0, 1.0)) = 0
//_CoatRoughnessMap("CoatRoughnessMap", 2D) = "white" {}
_DistortionVectorMap("DistortionVectorMap", 2D) = "black" {}

[HideInInspector] _UVMappingMask("_UVMappingMask", Color) = (1, 0, 0, 0)
[Enum(TangentSpace, 0, ObjectSpace, 1)] _NormalMapSpace("NormalMap space", Float) = 0
[Enum(Standard, 0, Subsurface Scattering, 1, Clear Coat, 2, Specular Color, 3)] _MaterialID("MaterialId", Int) = 0
[Enum(Standard, 0, Subsurface Scattering, 1, Specular Color, 2)] _MaterialID("MaterialId", Int) = 0
[ToggleOff] _EnablePerPixelDisplacement("Enable per pixel displacement", Float) = 0.0
_PPDMinSamples("Min sample for POM", Range(1.0, 64.0)) = 5

#pragma shader_feature _ANISOTROPYMAP
#pragma shader_feature _DETAIL_MAP
#pragma shader_feature _SUBSURFACE_RADIUS_MAP
#pragma shader_feature _THICKNESS_MAP
#pragma shader_feature _THICKNESSMAP
#pragma shader_feature _SPECULARCOLORMAP
#pragma shader_feature _VERTEX_WIND
#pragma multi_compile LIGHTMAP_OFF LIGHTMAP_ON

8
Assets/ScriptableRenderPipeline/HDRenderPipeline/Material/Lit/Resources/CombineSubsurfaceScattering.shader


#pragma vertex Vert
#pragma fragment Frag
#pragma shader_feature _ SSS_PRE_SCATTER_TEXTURING SSS_POST_SCATTER_TEXTURING
#pragma multi_compile _ FILTER_HORIZONTAL_AND_COMBINE
#pragma multi_compile _ SSS_FILTER_HORIZONTAL_AND_COMBINE
//-------------------------------------------------------------------------------------
// Include

float stepSizeY = rcp(fragheight);
// Compute the filtering direction.
#ifdef FILTER_HORIZONTAL_AND_COMBINE
#ifdef SSS_FILTER_HORIZONTAL_AND_COMBINE
float stepSize = stepSizeX;
float2 unitDirection = float2(1, 0);
#else

totalWeight += sampleWeight;
}
#ifdef FILTER_HORIZONTAL_AND_COMBINE
#ifdef SSS_FILTER_HORIZONTAL_AND_COMBINE
bool performPostScatterTexturing = IsBitSet(_TexturingModeFlags, profileID);
// It's either post-scatter, or pre- and post-scatter texturing.

4
Assets/ScriptableRenderPipeline/HDRenderPipeline/Material/MaterialUtilities.hlsl


}
// This function convert the tangent space normal/tangent to world space and orthonormalize it + apply a correction of the normal if it is not pointing towards the near plane
void GetNormalAndTangentWS(FragInputs input, float3 V, float3 normalTS, inout float3 normalWS, inout float3 tangentWS, bool wantNegativeNormal = false)
void GetNormalAndTangentWS(FragInputs input, float3 V, float3 normalTS, inout float3 normalWS, inout float3 tangentWS)
{
#ifdef SURFACE_GRADIENT
normalWS = SurfaceGradientResolveNormal(input.worldToTangent[2], normalTS);

GetShiftedNdotV(normalWS, V, wantNegativeNormal);
// Orthonormalize the basis vectors using the Gram-Schmidt process.
// We assume that the length of the surface normal is sufficiently close to 1.

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


#endif
#ifdef DEBUG_DISPLAY
if (_DebugDisplayMode == DEBUGDISPLAYMODE_VIEW_MATERIAL)
if (_DebugViewMaterial != 0)
{
float3 result = float3(1.0, 0.0, 1.0);
bool needLinearToSRGB = false;

65
Assets/ScriptableRenderPipeline/HDRenderPipeline/ShaderVariables.hlsl


// ----------------------------------------------------------------------------
CBUFFER_START(UnityPerDraw)
CBUFFER_START(UnityPerDraw : register(b0))
float4x4 glstate_matrix_mvp;
float4x4 glstate_matrix_modelview0;
float4x4 glstate_matrix_invtrans_modelview0;
float4x4 glstate_matrix_mvp;
float4x4 glstate_matrix_modelview0;
float4x4 glstate_matrix_invtrans_modelview0;
float4x4 unity_ObjectToWorld;
float4x4 unity_WorldToObject;
float4 unity_LODFade; // x is the fade value ranging within [0,1]. y is x quantized into 16 levels
float4 unity_WorldTransformParams; // w is usually 1.0, or -1.0 for odd-negative scale transforms
float4x4 unity_ObjectToWorld;
float4x4 unity_WorldToObject;
float4 unity_LODFade; // x is the fade value ranging within [0,1]. y is x quantized into 16 levels
float4 unity_WorldTransformParams; // w is usually 1.0, or -1.0 for odd-negative scale transforms
float4 unity_LightmapST;
float4 unity_DynamicLightmapST;
// SH lighting environment
float4 unity_SHAr;
float4 unity_SHAg;
float4 unity_SHAb;
float4 unity_SHBr;
float4 unity_SHBg;
float4 unity_SHBb;
float4 unity_SHC;
// x = Disabled(0)/Enabled(1)
// y = Computation are done in global space(0) or local space(1)
// z = Texel size on U texture coordinate
float4 unity_ProbeVolumeParams;
float4x4 unity_ProbeVolumeWorldToObject;
float3 unity_ProbeVolumeSizeInv;
float3 unity_ProbeVolumeMin;
CBUFFER_END
#if defined(USING_STEREO_MATRICES)

CBUFFER_END
CBUFFER_START(UnityLighting)
// SH lighting environment
float4 unity_SHAr;
float4 unity_SHAg;
float4 unity_SHAb;
float4 unity_SHBr;
float4 unity_SHBg;
float4 unity_SHBb;
float4 unity_SHC;
CBUFFER_END
TEXTURE2D_FLOAT(_MainDepthTexture);
SAMPLER2D(sampler_MainDepthTexture);

TEXTURE2D(unity_DynamicDirectionality);
CBUFFER_START(UnityLightmaps)
float4 unity_LightmapST;
float4 unity_DynamicLightmapST;
CBUFFER_END
CBUFFER_START(UnityProbeVolume)
// x = Disabled(0)/Enabled(1)
// y = Computation are done in global space(0) or local space(1)
// z = Texel size on U texture coordinate
float4 unity_ProbeVolumeParams;
float4x4 unity_ProbeVolumeWorldToObject;
float3 unity_ProbeVolumeSizeInv;
float3 unity_ProbeVolumeMin;
CBUFFER_END
CBUFFER_START(UnityVelocityPass)
float4x4 _NonJitteredVP;

1
Assets/ScriptableRenderPipeline/HDRenderPipeline/Utilities.cs


None = 0,
SSS = 0 + Lit.MaterialId.LitSSS, // 1
Standard = 2 + Lit.MaterialId.LitStandard, // 2
ClearCoat = 1 + Lit.MaterialId.LitClearCoat, // 3
All = 255 // 0xff
}

36
Assets/ScriptableRenderPipeline/HDRenderPipeline/Wind/3DNoise.psd.meta


fileFormatVersion: 2
guid: fcecce6d2c9be8d418a27f0658a2210d
timeCreated: 1490775966
timeCreated: 1493292037
licenseType: Pro
TextureImporter:
fileIDToRecycleName: {}

linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:

allowsAlphaSplitting: 0
overridden: 0
- buildTarget: PS4
maxTextureSize: 2048
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: iPhone
maxTextureSize: 2048
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: tvOS
maxTextureSize: 2048
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: Windows Store Apps
maxTextureSize: 2048
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: WebGL
maxTextureSize: 2048
textureFormat: -1
textureCompression: 0

18
Assets/ScriptableRenderPipeline/ShaderLibrary/CommonLighting.hlsl


// Helper functions
//-----------------------------------------------------------------------------
// NdotV should not be negative for visible pixels, but it can happen due to the
// perspective projection and the normal mapping + decals. In that case, the normal
// should be modified to become valid (i.e facing the camera) to avoid weird artifacts.
// Note: certain applications (e.g. SpeedTree) require to still have negative normal to perform their own two sided lighting, they can use wantNegativeNormal
// This will potentially reduce the length of the normal at edges of geometry.
float GetShiftedNdotV(inout float3 N, float3 V, bool wantNegativeNormal)
// NdotV can be negative for visible pixels due to the perspective projection, the normal mapping and decals.
// This can produce visible artifacts with direct specular lighting (white point, black point) and indirect specular (artifact with cubemap fetch)
// A way to reduce artifact is to limit NdotV value to not be negative and calculate reflection vector for cubemap with a shifted normal (i.e what depends on the view)
// This is what provide this function
// Note: NdotV return by this function is always positive, no need for saturate
float GetShiftedNdotV(inout float3 N, float3 V)
float limit = rcp(256.0); // Determined mostly by the quality of the G-buffer normal encoding
const float limit = 0.0001; // Epsilon value that avoid divide by 0 (several BSDF divide by NdotV)
if (!wantNegativeNormal && NdotV < limit)
if (NdotV < limit)
// We do not renormalize the normal because { abs(length(N) - 1.0) < limit }.
// We do not renormalize the normal because { abs(length(N) - 1.0) < limit } + It is use for cubemap
N += (-NdotV + limit) * V;
NdotV = limit;
}

8
Assets/ScriptableRenderPipeline/ShaderLibrary/NormalSurfaceGradient.hlsl


return deriv * scale;
}
// Unpack normal as DXT5nm (1, y, 0, x) or BC5 (x, y, 0, 1)
float2 UnpackDerivativeNormalRGorAG(float4 packedNormal, float scale = 1.0)
{
// This do the trick
packedNormal.w *= packedNormal.x;
return UnpackDerivativeNormalAG(packedNormal, scale);
}
float2 UnpackDerivativeNormalRGB(float4 packedNormal, float scale = 1.0)
{
const float fS = 1.0 / (128.0 * 128.0);

9
Assets/ScriptableRenderPipeline/ShaderLibrary/Packing.hlsl


float3 UnpackNormalmapRGorAG(float4 packedNormal, float scale = 1.0)
{
// This do the trick
packedNormal.x *= packedNormal.w;
float3 normal;
normal.xy = packedNormal.xy * 2.0 - 1.0;
normal.xy *= scale;
normal.z = sqrt(1.0 - saturate(dot(normal.xy, normal.xy)));
return normal;
packedNormal.w *= packedNormal.x;
return UnpackNormalAG(packedNormal, scale);
}
//-----------------------------------------------------------------------------

14
Assets/ScriptableRenderPipeline/ShaderLibrary/SampleUVMappingInternal.hlsl


// Nested multiple includes of the file to handle all variations of normal map (AG, RG or RGB)
// TODO: Handle BC5 format, currently this code is for DXT5nm - After the change, rename this function UnpackNormalmapRGorAG
// This version is use for the base normal map
// This version is use for the base normal map (BC5 or DXT5nm)
#define UNPACK_NORMAL_FUNC UnpackNormalAG
#define UNPACK_DERIVATIVE_FUNC UnpackDerivativeNormalAG
#define UNPACK_NORMAL_FUNC UnpackNormalmapRGorAG
#define UNPACK_DERIVATIVE_FUNC UnpackDerivativeNormalRGorAG
#endif
#include "SampleUVMappingNormalInternal.hlsl"
#undef ADD_NORMAL_FUNC_SUFFIX

// This version is for normalmap with AG encoding only. Mainly use with details map.
// This version is for normalmap with AG encoding only. Use with details map encoded with others properties (like smoothness).
#if defined(UNITY_NO_DXT5nm)
#define UNPACK_NORMAL_FUNC UnpackNormalRGB
#define UNPACK_DERIVATIVE_FUNC UnpackDerivativeNormalRGB
#else
#endif
#include "SampleUVMappingNormalInternal.hlsl"
#undef ADD_NORMAL_FUNC_SUFFIX
#undef UNPACK_NORMAL_FUNC

103
Assets/ScriptableRenderPipeline/common/Camera/CameraSwitcher.cs


private Quaternion m_OriginalCameraRotation;
private Camera m_CurrentCamera = null;
private float m_MessageDuration = 1.0f;
private float m_MessageTimer = 1000.0f;
private static string kDebugNext = "Debug Next";
private static string kDebugPrevious = "Debug Previous";
private string[] m_RequiredInputButtons = { kDebugNext, kDebugPrevious };
private bool m_Valid = true;
GUIContent[] m_CameraNames = null;
int[] m_CameraIndices = null;
void OnEnable()
{

m_Valid = Debugging.CheckRequiredInputButtonMapping(m_RequiredInputButtons);
}
if(m_OriginalCamera == null)
{
Debug.LogError("Camera Switcher needs a Camera component attached");
return;
}
int GetCameraCount()
{
return m_Cameras.Length + 1; // We need +1 for handling the original camera.
}
m_CurrentCameraIndex = GetCameraCount() - 1;
void NextCamera()
{
m_CurrentCameraIndex = (m_CurrentCameraIndex + 1) % GetCameraCount();
m_CameraNames = new GUIContent[GetCameraCount()];
m_CameraIndices = new int[GetCameraCount()];
for (int i = 0; i < m_Cameras.Length; ++i)
{
Camera cam = m_Cameras[i];
if (cam != null)
{
m_CameraNames[i] = new GUIContent(cam.name);
}
else
{
m_CameraNames[i] = new GUIContent("null");
}
m_CameraIndices[i] = i;
}
m_CameraNames[GetCameraCount() - 1] = new GUIContent("Original Camera");
m_CameraIndices[GetCameraCount() - 1] = GetCameraCount() - 1;
DebugMenuManager.instance.AddDebugItem<int>("Camera", "Camera Switcher", () => m_CurrentCameraIndex, (value) => SetCameraIndex((int)value), false, new DebugItemDrawerIntEnum(m_CameraNames, m_CameraIndices));
void PreviousCamera()
int GetCameraCount()
m_CurrentCameraIndex = m_CurrentCameraIndex - 1;
if (m_CurrentCameraIndex == -1)
m_CurrentCameraIndex = m_Cameras.Length;
return m_Cameras.Length + 1; // We need +1 for handling the original camera.
}
Camera GetNextCamera()

return m_Cameras[m_CurrentCameraIndex];
}
void Update()
void SetCameraIndex(int index)
if (m_Valid && Debugging.debugControlEnabled && m_OriginalCamera != null)
if(index > 0 || index < GetCameraCount())
m_MessageTimer += Time.deltaTime;
bool needUpdateCamera = false;
if (Input.GetButtonDown(kDebugNext))
{
NextCamera();
needUpdateCamera = true;
}
m_CurrentCameraIndex = index;
if (Input.GetButtonDown(kDebugPrevious))
if (m_CurrentCamera == m_OriginalCamera)
PreviousCamera();
needUpdateCamera = true;
m_OriginalCameraPosition = m_OriginalCamera.transform.position;
m_OriginalCameraRotation = m_OriginalCamera.transform.rotation;
if (needUpdateCamera)
m_CurrentCamera = GetNextCamera();
if (m_CurrentCamera != null)
m_MessageTimer = 0.0f;
// If we witch back to the original camera, put back the transform in it.
m_OriginalCameraPosition = m_OriginalCamera.transform.position;
m_OriginalCameraRotation = m_OriginalCamera.transform.rotation;
m_OriginalCamera.transform.position = m_OriginalCameraPosition;
m_OriginalCamera.transform.rotation = m_OriginalCameraRotation;
m_CurrentCamera = GetNextCamera();
if (m_CurrentCamera != null)
{
// If we witch back to the original camera, put back the transform in it.
if (m_CurrentCamera == m_OriginalCamera)
{
m_OriginalCamera.transform.position = m_OriginalCameraPosition;
m_OriginalCamera.transform.rotation = m_OriginalCameraRotation;
}
transform.position = m_CurrentCamera.transform.position;
transform.rotation = m_CurrentCamera.transform.rotation;
}
}
if (m_MessageTimer < m_MessageDuration)
{
string cameraName = m_CurrentCamera != null ? m_CurrentCamera.name : "NULL";
string message = string.Format("Switching to camera : {0}", cameraName);
Debugging.PushDebugMessage(message);
transform.position = m_CurrentCamera.transform.position;
transform.rotation = m_CurrentCamera.transform.rotation;
}
}
}

16
Assets/ScriptableRenderPipeline/common/TextureCache.cs


private static uint g_MaxFrameCount = unchecked((uint)(-1));
private static uint g_InvalidTexID = (uint)0;
public int FetchSlice(Texture texture)
public int FetchSlice(Texture texture, bool forceReinject=false)
{
var sliceIndex = -1;

//assert(TexID!=g_InvalidTexID);
if (texId == g_InvalidTexID) return 0;
var bSwapSlice = false;
var bSwapSlice = forceReinject;
if (m_TextureCacheVersion != s_GlobalTextureCacheVersion)
sliceIndex = m_LocatorInSliceArray[texId];
bFoundAvailOrExistingSlice = true;
if(m_TextureCacheVersion!=s_GlobalTextureCacheVersion)
m_LocatorInSliceArray.Remove(texId);
}
else
{
sliceIndex = m_LocatorInSliceArray[texId];
bFoundAvailOrExistingSlice = true;
bSwapSlice = true; // force a reinject.
}
//assert(m_SliceArray[sliceIndex].TexID==TexID);
}

28
Assets/TestScenes/HDTest/GraphicTest/Common/Dragon/DragonStatue.mat


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}
- _SpecularOcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}

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}
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}

- _DistortionDepthTest: 0
- _DistortionEnable: 0
- _DistortionOnly: 0
- _DoubleSidedEnable: 0
- _DoubleSidedMirrorEnable: 1
- _Drag: 1
- _EnableWind: 0
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1

- _InitialBend: 1
- _StencilRef: 1
- _Metallic: 0
- _Mode: 0
- _NormalDetailMul: 0.347

- _PPDLodThreshold: 5
- _ShiverDirectionality: 0.5
- _ShiverDrag: 0.2
- _Smoothness: 1
- _SmoothnessAO: 0
- _SmoothnessAv: 0.499

- _SrcBlend: 1
- _StencilRef: 2
- _Stiffness: 1
- _SubsurfaceProfile: 0
- _SubsurfaceRadius: 1
- _SurfaceType: 0
- _Tess: 8
- _TessFar: 1

- _TessellationObjectScale: 1
- _TessellationShapeFactor: 0.75
- _TexWorldScale: 1
- _Thickness: 1
- _Tiling: 1
- _TilingDetail: 6
- _UVBase: 0

m_Colors:
- _BaseColor: {r: 1, g: 1, b: 1, a: 1}
- _Color: {r: 0.9862069, g: 0.9862069, b: 0.9862069, a: 1}
- _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0}
- _SpecularColor: {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}

900
Assets/TestScenes/HDTest/HDRenderLoopTest.unity
文件差异内容过多而无法显示
查看文件

3
ProjectSettings/EditorBuildSettings.asset


- enabled: 1
path: Assets/TestScenes/HDTest/HDRenderLoopTest.unity
guid: 0b16df2ba8fd0f244a826da853bc2d3b
- enabled: 0
path: Assets/TestScenes/HDTest/NewBatcherBench1.unity
guid: efeef759b5144ef4fa1cfc182ddbaea5

96
ProjectSettings/InputManager.asset


type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Debug Horizontal
descriptiveName:
descriptiveNegativeName:
negativeButton: left
positiveButton: right
altNegativeButton:
altPositiveButton:
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 2
axis: 5
joyNum: 0
- serializedVersion: 3
m_Name: Debug Vertical
descriptiveName:
descriptiveNegativeName:
negativeButton: down
positiveButton: up
altNegativeButton:
altPositiveButton:
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 2
axis: 6
joyNum: 0
- serializedVersion: 3
m_Name: Debug Horizontal
descriptiveName:
descriptiveNegativeName:
negativeButton: left
positiveButton: right
altNegativeButton:
altPositiveButton:
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 6
joyNum: 0
- serializedVersion: 3
m_Name: Debug Vertical
descriptiveName:
descriptiveNegativeName:
negativeButton: down
positiveButton: up
altNegativeButton:
altPositiveButton:
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 6
joyNum: 0
- serializedVersion: 3
m_Name: Debug Validate
descriptiveName:
descriptiveNegativeName:
negativeButton: return
positiveButton:
altNegativeButton: joystick button 0
altPositiveButton:
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 6
joyNum: 0
- serializedVersion: 3
m_Name: Debug Persistent
descriptiveName:
descriptiveNegativeName:
negativeButton: right shift
positiveButton:
altNegativeButton: joystick button 2
altPositiveButton:
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 6
joyNum: 0

14
ProjectSettings/ProjectSettings.asset


captureSingleScreen: 0
muteOtherAudioSources: 0
Prepare IOS For Recording: 0
Force IOS Speakers When Recording: 0
submitAnalytics: 1
usePlayerLog: 1
bakeCollisionMeshes: 0

macAppStoreCategory: public.app-category.games
gpuSkinning: 0
graphicsJobs: 1
xboxPIXTextureCapture: 0

m_Height: 128
m_BuildTargetBatching:
- m_BuildTarget: Standalone
m_StaticBatching: 0
m_StaticBatching: 1
m_DynamicBatching: 0
- m_BuildTarget: iPhone
m_StaticBatching: 0

wiiUGamePadStartupScreen: {fileID: 0}
wiiUDrcBufferDisabled: 0
wiiUProfilerLibPath:
playModeTestRunnerEnabled: 0
actionOnDotNetUnhandledException: 1
enableInternalProfiler: 0
logObjCUncaughtExceptions: 1

ps4GarlicHeapSize: 2048
ps4ProGarlicHeapSize: 2560
ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ
ps4UseDebugIl2cppLibs: 0
ps4pnSessions: 1
ps4pnPresence: 1
ps4pnFriends: 1

psp2UseLibLocation: 0
psp2InfoBarOnStartup: 0
psp2InfoBarColor: 0
psp2UseDebugIl2cppLibs: 0
psp2ScriptOptimizationLevel: 0
psmSplashimage: {fileID: 0}
splashScreenBackgroundSourceLandscape: {fileID: 0}
splashScreenBackgroundSourcePortrait: {fileID: 0}

incrementalIl2cppBuild:
iOS: 0
additionalIl2CppArgs:
scriptingRuntimeVersion: 0
apiCompatibilityLevelPerPlatform: {}
m_RenderingPath: 1
m_MobileRenderingPath: 1

tizenMicrophonePermissions: 0
tizenDeploymentTarget:
tizenDeploymentTargetType: 0
tizenMinOSVersion: 0
tizenMinOSVersion: 1
n3dsUseExtSaveData: 0
n3dsCompressStaticMem: 1
n3dsExtSaveDataNumber: 0x12345

projectName:
organizationId:
cloudEnabled: 0
enableNewInputSystem: 0
enableNativePlatformBackendsForNewInputSystem: 0
disableOldInputManagerSupport: 0

14
ProjectSettings/QualitySettings.asset


shadowNearPlaneOffset: 2
shadowCascade2Split: 0.33333334
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
shadowmaskMode: 0
blendWeights: 1
textureQuality: 1
anisotropicTextures: 0

particleRaycastBudget: 4
asyncUploadTimeSlice: 2
asyncUploadBufferSize: 4
resolutionScalingFixedDPIFactor: 1
excludedTargetPlatforms: []
- serializedVersion: 2
name: Fast

shadowNearPlaneOffset: 2
shadowCascade2Split: 0.33333334
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
shadowmaskMode: 0
blendWeights: 2
textureQuality: 0
anisotropicTextures: 0

particleRaycastBudget: 16
asyncUploadTimeSlice: 2
asyncUploadBufferSize: 4
resolutionScalingFixedDPIFactor: 1
excludedTargetPlatforms: []
- serializedVersion: 2
name: Simple

shadowNearPlaneOffset: 2
shadowCascade2Split: 0.33333334
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
shadowmaskMode: 0
blendWeights: 2
textureQuality: 0
anisotropicTextures: 1

particleRaycastBudget: 64
asyncUploadTimeSlice: 2
asyncUploadBufferSize: 4
resolutionScalingFixedDPIFactor: 1
excludedTargetPlatforms: []
- serializedVersion: 2
name: Good

shadowNearPlaneOffset: 2
shadowCascade2Split: 0.33333334
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
shadowmaskMode: 1
blendWeights: 2
textureQuality: 0
anisotropicTextures: 1

particleRaycastBudget: 256
asyncUploadTimeSlice: 2
asyncUploadBufferSize: 4
resolutionScalingFixedDPIFactor: 1
excludedTargetPlatforms: []
- serializedVersion: 2
name: Beautiful

shadowNearPlaneOffset: 2
shadowCascade2Split: 0.33333334
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
shadowmaskMode: 1
blendWeights: 4
textureQuality: 0
anisotropicTextures: 2

particleRaycastBudget: 1024
asyncUploadTimeSlice: 2
asyncUploadBufferSize: 4
resolutionScalingFixedDPIFactor: 1
excludedTargetPlatforms: []
- serializedVersion: 2
name: Fantastic

shadowNearPlaneOffset: 2
shadowCascade2Split: 0.33333334
shadowCascade4Split: {x: 0.021409363, y: 0.051549375, z: 0.07213539}
shadowmaskMode: 1
blendWeights: 4
textureQuality: 0
anisotropicTextures: 1

realtimeReflectionProbes: 1
billboardsFaceCameraPosition: 1
vSyncCount: 1
vSyncCount: 0
resolutionScalingFixedDPIFactor: 1
excludedTargetPlatforms: []
m_PerPlatformDefaultQuality:
Android: 2

1
Assets/ScriptableRenderPipeline/ShaderGenerator/Editor/ShaderGeneratorMenu.cs


static void GenerateShaderIncludes()
{
CSharpToHLSL.GenerateAll();
UnityEditor.AssetDatabase.Refresh();
}
}
}

9
Assets/ScriptableRenderPipeline/HDRenderPipeline/SSSProfile.meta


fileFormatVersion: 2
guid: a0ba759eadcfdcc44bc08adad4960ed0
folderAsset: yes
timeCreated: 1493162006
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

9
Assets/ScriptableRenderPipeline/PostProcessing.meta


fileFormatVersion: 2
guid: f9e0215129f26be429b86e3119cc9a5c
folderAsset: yes
timeCreated: 1493295523
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

9
Assets/ScriptableRenderPipeline/common/Debugging.meta


fileFormatVersion: 2
guid: 58a02e8711d94134393b2a8ac22b96ca
folderAsset: yes
timeCreated: 1491989728
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

9
Assets/TestScenes/Common.meta


fileFormatVersion: 2
guid: e42cfeaf226ad624786ad5b39095906c
folderAsset: yes
timeCreated: 1493044341
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

221
Assets/TestScenes/HDTest/GraphicTest/Common/Dragon/DragonStatueSpecular.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: DragonStatueSpecular
m_Shader: {fileID: 4800000, guid: 6e4ae4064600d784cac1e41a9e6f2e59, type: 3}
m_ShaderKeywords: _ALPHACUTOFFENABLE_OFF _DEPTHOFFSETENABLE_OFF _DETAIL_MAP_WITH_NORMAL
_DISTORTIONDEPTHTEST_OFF _DISTORTIONENABLE_OFF _DISTORTIONONLY_OFF _EMISSION _ENABLEPERPIXELDISPLACEMENT_OFF
_HEIGHTMAP _MASKMAP _NORMALMAP _NORMALMAP_TANGENT_SPACE _SPECULARCOLORMAP _TESSELLATION_DISPLACEMENT
_TESSELLATION_OBJECT_SCALE
m_LightmapFlags: 1
m_EnableInstancingVariants: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses:
- DistortionVectors
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: 2800000, guid: d2472fab9be6dd4479dd5895a5055413, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
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}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DispTex:
m_Texture: {fileID: 2800000, guid: 57044228904fe56449ead7efc223e4ad, type: 3}
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}
- _EmissionMap:
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: 2800000, guid: 57044228904fe56449ead7efc223e4ad, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MSK:
m_Texture: {fileID: 2800000, guid: e31d177bc8c9381439c9b327a2636d3e, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: d2472fab9be6dd4479dd5895a5055413, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MaskMap:
m_Texture: {fileID: 2800000, guid: e31d177bc8c9381439c9b327a2636d3e, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _NormalMap:
m_Texture: {fileID: 2800000, guid: 75bfcd5e2d2d5954ca601a85db5d1a73, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _NormalMapDetail:
m_Texture: {fileID: 2800000, guid: ad9cb02bddceb1340bc1fcb19d5f35bd, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SpecularColorMap:
m_Texture: {fileID: 2800000, guid: 53cf1b46cfd6ff347aad6fd4c6e1ea1e, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SpecularOcclusionMap:
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}
- _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}
- _ThicknessMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _AlphaCutoff: 0.5
- _AlphaCutoffEnable: 0
- _Anisotropy: 0
- _BlendMode: 0
- _BumpScale: 1
- _CullMode: 2
- _Cutoff: 0.5
- _DepthOffsetEnable: 0
- _DetailAOScale: 1
- _DetailAlbedoScale: 1
- _DetailHeightScale: 1
- _DetailMapMode: 0
- _DetailNormalMapScale: 1
- _DetailNormalScale: 1
- _DetailSmoothnessScale: 1
- _Displacement: 0.008
- _DisplacementCenter: 0.36
- _DisplacementfalloffFar: 150
- _DisplacementfalloffNear: 30
- _DistortionDepthTest: 0
- _DistortionEnable: 0
- _DistortionOnly: 0
- _DoubleSidedEnable: 0
- _DoubleSidedMirrorEnable: 1
- _DoubleSidedMode: 0
- _Drag: 1
- _DstBlend: 0
- _EmissiveColorMode: 1
- _EmissiveIntensity: 0
- _EnablePerPixelDisplacement: 0
- _EnableWind: 0
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _HeightAmplitude: 0
- _HeightCenter: 0
- _HorizonFade: 1
- _InitialBend: 1
- _MaterialID: 2
- _Metallic: 0
- _Mode: 0
- _NormalDetailMul: 0.347
- _NormalMapSpace: 0
- _NormalScale: 1
- _OcclusionStrength: 1
- _PPDLodThreshold: 5
- _PPDMaxSamples: 15
- _PPDMinSamples: 5
- _Parallax: 0.02
- _ShiverDirectionality: 0.5
- _ShiverDrag: 0.2
- _Smoothness: 1
- _SmoothnessAO: 0
- _SmoothnessAv: 0.499
- _SmoothnessTextureChannel: 0
- _SmoothnessVar: 0.491
- _SpecularHighlights: 1
- _SrcBlend: 1
- _StencilRef: 3
- _Stiffness: 1
- _SubsurfaceProfile: 0
- _SubsurfaceRadius: 1
- _SurfaceType: 0
- _Tess: 8
- _TessFar: 1
- _TessNear: 0.2
- _TessellationBackFaceCullEpsilon: -0.25
- _TessellationFactor: 4
- _TessellationFactorMaxDistance: 50
- _TessellationFactorMinDistance: 20
- _TessellationFactorTriangleSize: 100
- _TessellationMode: 1
- _TessellationObjectScale: 1
- _TessellationShapeFactor: 0.75
- _TexWorldScale: 1
- _Thickness: 1
- _Tiling: 1
- _TilingDetail: 6
- _UVBase: 0
- _UVDetail: 0
- _UVMappingPlanar: 0
- _UVSec: 0
- _ZTestMode: 8
- _ZWrite: 1
m_Colors:
- _BaseColor: {r: 1, g: 1, b: 1, a: 1}
- _Color: {r: 0.9862069, g: 0.9862069, b: 0.9862069, a: 1}
- _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _EmissiveColor: {r: 0, g: 0, b: 0, a: 1}
- _SpecularColor: {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
Assets/TestScenes/HDTest/GraphicTest/Common/Dragon/DragonStatueSpecular.mat.meta


fileFormatVersion: 2
guid: fe109261e26646f4b88bc8153a24ecc3
timeCreated: 1480931890
licenseType: Pro
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

610
Assets/TestScenes/HDTest/GraphicTest/Common/Dragon/Dragon_specular.psd


8BPSM8BIM%8BIM$7�<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c138 79.159824, 2016/09/14-01:09:01 ">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/">
<xmp:CreatorTool>Adobe Photoshop CC 2017 (Windows)</xmp:CreatorTool>
<xmp:CreateDate>2017-03-29T10:26:04+02:00</xmp:CreateDate>
<xmp:MetadataDate>2017-03-29T10:45:22+02:00</xmp:MetadataDate>
<xmp:ModifyDate>2017-03-29T10:45:22+02:00</xmp:ModifyDate>
<dc:format>application/vnd.adobe.photoshop</dc:format>
<xmpMM:InstanceID>xmp.iid:62fdb28d-db2d-a842-974d-32399f2be92d</xmpMM:InstanceID>
<xmpMM:DocumentID>xmp.did:84481483-4ba5-8b4d-8ed3-aa1f69d35c61</xmpMM:DocumentID>
<xmpMM:OriginalDocumentID>xmp.did:84481483-4ba5-8b4d-8ed3-aa1f69d35c61</xmpMM:OriginalDocumentID>
<xmpMM:History>
<rdf:Seq>
<rdf:li rdf:parseType="Resource">
<stEvt:action>created</stEvt:action>
<stEvt:instanceID>xmp.iid:84481483-4ba5-8b4d-8ed3-aa1f69d35c61</stEvt:instanceID>
<stEvt:when>2017-03-29T10:26:04+02:00</stEvt:when>
<stEvt:softwareAgent>Adobe Photoshop CC 2017 (Windows)</stEvt:softwareAgent>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<stEvt:action>saved</stEvt:action>
<stEvt:instanceID>xmp.iid:62fdb28d-db2d-a842-974d-32399f2be92d</stEvt:instanceID>
<stEvt:when>2017-03-29T10:45:22+02:00</stEvt:when>
<stEvt:softwareAgent>Adobe Photoshop CC 2017 (Windows)</stEvt:softwareAgent>
<stEvt:changed>/</stEvt:changed>
</rdf:li>
</rdf:Seq>
</xmpMM:History>
<photoshop:ColorMode>3</photoshop:ColorMode>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end="w"?>8BIM: printOutputPstSboolInteenumInteClrmprintSixteenBitbool printerNameTEXTCanon iR-ADV C2220/2230 PCL6printProofSetupObjc Proof Setup
proofSetupBltnenum builtinProof proofCMYK8BIM;-printOutputOptionsCptnboolClbrboolRgsMboolCrnCboolCntCboolLblsboolNgtvboolEmlDboolIntrboolBckgObjcRGBCRd doub@o�Grn doub@o�Bl doub@o�BrdTUntF#RltBld UntF#RltRsltUntF#Pxl@R
vectorDataboolPgPsenumPgPsPgPCLeftUntF#RltTop UntF#RltScl UntF#Prc@YcropWhenPrintingboolcropRectBottomlong cropRectLeftlong cropRectRightlong cropRectToplong8BIM�HH8BIM&?�8BIM Z8BIM8BIM� 8BIM'
8BIM�H/fflff/ff���2Z5-8BIM�p��������������������������������������������������������������������������������������������8BIM@@8BIM8BIM5nullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum
ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong
leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?�8BIM8BIM8BIM
����,
����� Adobe_CM��Adobed����   
        ����"��
��?

 3!1AQa"q�2���B#$R�b34r��C%�S���cs5���&D�TdE£t6�U�e�����u��F'���������������Vfv��������7GWgw��������5!1AQaq"2����B#�R��3$b�r��CScs4�%���&5��D�T�dEU6te������u��F���������������Vfv��������'7GWgw������� ?��Bv2
�*.�Z�2Vܵ&1�K� ��K�#�f5�n��⠖��c��b���I�F�H��m.��!�6񎪹��T�ou`:fPm��V�6�&�U�>\{D*v�ϒ� ,�6<��(��4�V���Qk{�։�K��� ֓��E��fxN� (�aᕐ֜��Y���9�k���Ȧ�O��v�� TIv�!��o�3
nf����b�ڜ�����&��U�ۅj0K�?�����0���U�P��Q{$B���U��K �V��n�D7��7���q7l6��Nnwn@KT�a)��m h��tPs��w����
9kJ��v�������S��nӎvQ�{#��(u���mU�D��|�� t�qw�BqvMR�H�HW�)my�=��:b8������j�tR �*����p����PӢ�XR5�(�\ Vd���ѪӕN9V� �iD(2swg��5��tW�YE^߂X��tk��h>���Yp�Fv5ݔf�j)@��� ��㪚̍��&����H4�S���� µ���V-���4D���3*X�gF�2^�x�Aӕ��MBv��S�`An�vV�|Uj50U����'�Q<,}> �>�q.���y*9r�˻\�wC��\5���i�Ί��#��Ҽ�†�V�gEI�U�$%�e��5,�EF�r�_�R���g�"�Y�����+��u;G�U�J��Dݵ>�I��x ��K���<&m:-\" 6qd�i��:!
�y(���"�8�u`�[5�M8����|9�(K}" ������E�bB�wdu�
�]��'Dj�^�?,�7w�E�"�i��V��V�g1��KE�Z���AP�N���Z��\�nÐ��������"H��&�}�[W&C�Z�L��[I�����j���:�1�Íu@�7���׵�Y�i��e� Z���oل�_g+��\d��[)!��Hj9���B
��i��YJ��տ�5`
[���b4�� ��@�%����5H�<(���]r)��VK�� h �3*��#X��\©�9�X��#�+�^Я�P 6��J0����ϖ�Xr7��c@��'�*�3�5`�ʄ欳������t�!4AS.܄���rx�&�� J�9�5�Rȵ��S]��+:닉*�\�X�.N�N�C�Bq�[ւ�e񪿆&$˛ѝ�!|P�}�x!ib���$w �! �Dr��<�k���b����}@2Z�0��@��z<:3�Z#l�[��|�P���*y��[��H�� db���Dj���� �6��$�<r��J5m ���j���= � ������hL!8 U �E~\�]�����怩�h�� ����I�����SW@�"�J���eمNٙZ�Di���T�;][�;��IUn=���2���=VB�������2�׈�V����1�m��-P�Dk�)c:�IDU���d�v���N�N��bZ����Ij-D4����Q'Eyƨ�sT���(�i1(uq
�H!dg�5�H��c@�DӁ�Gu1� +<l��1��[�+O�t�I��(%��ͼx��O��;�B�v�P}m�J�x���8x:::2��U|�Wۧ���|
Q4(/�t��*��駊%���C�O�gvዪ G���)�����O &Ya�f�uE�#��F��ܤ������l������Z�fl25�V4�A�Fh�C�v��/��=�[�N�� �Wan�7<l�r֭��~JC@�--r���W%dA��tT,�ouẐ�hr�[K���פ-�� �D�m��J~lѻ �Z7^���l����*/ʩ�Aѵ�u-Gn�P �U��S:�:)c��r� @�:r��dh�]PxVY�/w�d�V�m{9E��Q^���������Ye���v��� ���Q����kFx̤���qh: ��. 5+%�Dj�(��5LY�ξ90u�����}W����!x�!�_FV�s��T��#f���^8�����v �9i������(�@�G
U丘[9�D�a��]�ih �5�T��дi��<�1��tqe�tm��?CMU���I�t �j���ʹ�6�\�l ;���c����aw<k�����E�2�� �|"V�:��`�=��i2��O�t�+F ���'r`�����3A�8�7�[��)�&>_5w5�/,E��C��V�Wy J��ԔI6� �U�v���'D�v�l8�u�����8BIM!]Adobe PhotoshopAdobe Photoshop CC 20178BIM"2MM*bj(1"r2��i��
��'
��'Adobe Photoshop CC 2017 (Windows)2017:03:29 10:45:22�����"*(2HH 8BIMFMsk ��2������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/00//02�42�0�2$47<?BDDEIJLORTWZ^afkotw{~�������������������������������������������������������������������������������������������������������������������~|�{wtqonl�k igffggfdb_\YWV�TV�WVTROLIEB=840-,*('%$"" � $$%'*--/�0�2�4�0�2.458<?BDDEIJMORRVY\^bglqty|������������������������������������������
���������������� ���������������������������������������������������~|{yywtsonn�lkigf�g�fda\YWVV�T�VTVW�YWVTROLGB?840-,*(('%$" � $%'(*,,-/0�2�4202�4+57:=ABDEGILOQRRTVY\adinsw{~����������������������������������������������������������������������������������������������������|{yywvsqo�nlk�igfda\Y�WV�TVWVVWY�Z YWVTQMID?:52/,�*('%$""� "$%'(***,-0200�245778:<=ABEIIJLOQ�RTWZ_bfkqvy~������������������������������������������������������� ��������������������������������������������������������~|{ywwvsq�on�l�kifda^ZY�W�V�WYZ�\ ZYVTROJEA<740-�,*(''%%$�"�$%''((*,-/�024578:<==?ADGJLMMOQ�RTWZ^adioty~������������������������������������������� �������������������������������������������������������������~|{ywwvs�qo�n lkkifba_\Z�Y�Z\�^\ZWVTQMIB=8520/--,,�*('�%�'�(�,-/�02458::<==ABEGJM�OQRRTWZ\_bgnsw|��������������������������������� ��������������������������������������������������������������������������������~|{�ywts�q�sq�nlkigd�a_^ZZ\\�Z�\^__�^ \YWVROJD?:7420�/�-�,*((�'�(�*�-�/0�20458::<=?BEGIJMQQOOQRTVYZ\_bglqv{~������������������������������������������������������������������������������������������������������~|�{ yvtssqqssq�nligfb�a_�^�\^�_�a�_ ^\ZWTQLGB=:754�20/�-,*((*�,�/�0�2458::<?BEIIJLMQR�QRTWYZ^adglqv{|~������������������������������������������������������������� ����������������������� �����������������������������������|{�|yvttsqssqonlkgfd�a�_�^_abab�a _\YVQMIDA=:875�4�2�0/-,**,�-�/�0�2�4578:<=ADGJLMMOQ�R,TVWYZ^adglqvy{|������������������������������������������������������������������������������������ �������������������������������~�|�~|ywvt�sqonlkgdb�a�_�ab�d�b�db_\WROLGDA?=<8755�420/�-/00�2�4�5078:==BDGLMOOQRTTRRTWWYY\_bfkosvwy~���������������������������
�����������������
������������������������������ ������������������������������������������������~�|�~|{ywvtqqoonlkgdbaabbaa_�abddfg�f gfb^YTQMJGDDA?:87755420//0/--//00�5�7 8:<=?BDGLOQQR�T�RT�WY\_dilosvw{~�������������������������������������������������������������������� ����������������������������������������~~�|{wvtqo�nlkgfdbbdda__aabdfg�igfaZVRQMJIGDA=<:8754200220//�02�7�5�7�8 :<<=?DDGLOQR�T(RTTWVVWYZ^bfknqtvy|������������������������������������� ����������������������������������������������������������������������������~��|~|wvtqon�lkgfdbbdda__aabfgi�k�l�kigb^YVTQMMJGDA?=<85220244200�24�8�78�:<�=ADEILOQR�T�V"WYZ^adinqstw{~�������������������������������������������������������������������������������������� ���������������~�|�~|yvtqon�lkgff�dba�_abfikkl�nlkifb^ZWTRQMJGDA?=85�24�5422457�:�<=?�ABDGJLOQR�TVWW�V WY\_dglostwy|�����������������������������������
�����������������������������������������������������������������������������~~�|�~|yvtqon�lkiggfdba_^^__adilloqq�onlkifb_\YWTQMJEB?=87�5�7542478<�=�?AB�DGJMOQR�TVWW�V WYZ_dgkosvwy|�����������������������������������������������������������������������������������������������������������~�|�~|{wtqo�nlkiigfba_^^__adilnq�sqonlkgda^ZVROLGDA=:�875457:<?�ABE�G EDDGJMOQQR�TVW�V�W�Y*Z_bgkostvy~���������������������������������������
�������������������������������������������������������������������������~�|ytsq�onllkigdb_^^__adilns�ts�qolifa^YTQMJGDA=<<�:�<:87578:=ABDDEEDDEIJJIGEEGJM�QR�TVWVVWY�Z\_bgloqsty~������������������������������������������������������������������������������������������������������~~�|yvtsqqoo�nlkigda__aabfilostv�wv�tsqnkfa\WTQMJGDBA?�=�?=:�8:<?BDEGIIGGIJLJIIGGILOQRQR�TVWVVWY�Z^_bgknosty|������������������������������������ ���������������������������������������� �������������������������������������~~||{{yvttsqoo�nlkifd�bdfgknqsvy�{yw�vtqokfa\YVRMJGEDB�A?=�<=BDEGI�J�LJ�IJMOQ�R�TV�W�Y\_adgklosvw{~����������������������������������������������������������������������������������������������������� ��~|{{ywvtsqoo�nlkiggffgiknostw{|�~|{y�wvtsokfb_\WROLJIGE�DB�A�?A�DEIL�M�LJ�I JLMOOQRRTV�W�Y^abfiknostvy|~������������������
���������������������������� ������������������������������������������������������������� ���~|{{ywtsqoo�n�l�k ikknnqqvvy|~��~|{�ywvsokgda\WTROMMLIIGGEDEDBAB�E
GJMOOQQOMLL�JL�MOQRTVWWVV�WYZ^adgkloqstvy{|~����������������������������������������������� �������������������������������������������������������
���~||{yvsq�o�n�o�qstwy{|~����~�|{wvsokgda^ZYVTRQOMLJ�IGEDD�GIJMOQ�RQMLJLLMOMLLMORTTVVTTW�YZ^afiklostvvwy{|������������������+���������������������������������������������������������������������������������������� ���~||{ywtsqq�o�q�s�t*vy{||~���������~|ywtqnkgfb_^ZYVTRQOMLMLJGEEIJLLMOQRTTROLLM�OMLJLMQ�RTVYZZ\^afiklost�vwy|��������
�������������
�������������������� ������������������������������������������������������������������������~||{ywvts�qs�qst�v
wy{|~���������~~|yvsqnlkgda^\YWVVTRQQOMJII�LMOOQQRVTROMMOQOOML�JMOO�QRTYZ\^_bfgkloqsttvwy|��������� ������������ ��������������������������������������� ���������������������������������������������
������������� ��~~|{ywvt�st�stvwyy�w vwy{|������������~|yvtsonlifba^\ZZYWVTQOMLL�OQ�RTVTR�Q�ODMLJIIJLMOOQRTWZ\^_bdfilnoqstvwy|������������������������������������������������������������~������������������������������������������������������������ ����~|{ywv�tvwy{{y�wy{|~�������������|{ywtqolkgfdbaa_^ZWTRQOO�R�T�VT�RFQOMLLJIJJLOOQQRVYZ\_bbdgklnostvwy|�����������������������������������������!��������������������|�������������������������
����������������������������������� �����~|{yw�v�wy{|ywwy{|~����������������~||yvsonlkigffdb^\YWTRR�VW�V�WVTT�RQO�ML�JLO�QRTWYZ^aabfiklosvwy{~���������������������������������������������������������~|~��������~ ~������������������� �������������������������������������~|{y�wy{|{yy{|~�������������� ������~{wtsqol�kifba^\YWVYZZYYW�YWVVRQQ�OMLJJLO�Q�R#VWY^__adgiknqvw{~��������������������������������������� �������������� ����~|{|~�������|�| ~������������� �������������������������������������������~|{�y�{�y�w y{||{{|~���������������������|ywvtqoonligfb_^^Z�^\Z�Y�WVRQ�O�QOMMLLMO�Q�RTVY\^^_bfgknqtw{��������������������������������������� ������������������~|�{|�����~|�{
|~����������������������������������� �������~~|{{�|�~|{ywy{|~~||~��������������������~|ywvtsqonlkgdbb_�a_^\ZWW�VTRQOOQQ�OMLLM�O�Q�TWY\\^adgknqtw{������������������������������������� ������������������~{�y{~����~~||{�y
{|�������������������� ��������������������� ��������~~�|~��~||{||�~�������������������������~|{ywvtssqnigfbdbba_^ZWV�T�VTR�Q�OMLLM�OQTTVWZ\^_bgloqtw{~�����������������������������������������������������|ywwyy{|�����~|{y�y{~����������������������������������������������������~�����������������������������������~|�{ywvsnkifgdbaa^ZWV�TVTRQQ�OMLLM�O*QRRTVYZ^_bgloqtwy|�������������������������������������������������������~{wvvwy{|~��~||~{ywwyy|������������������� �������������� �������������������������������������� �������������~|{wsoli
kgdba^ZYWVV�T�VTRQ�O�M�OQRRTVWZ^_bgloqtwy{~�������������������������������� ������������������|y�vwy{|�~�|ywwwy{~����������� ���������������������������������������������������������������������� ���������������~{vsolnkfda^\YW�VWVTR�QO�M�OQRTTVWWZ^adglosvwy{|���������������������������������������~||��������~{wvtvvy{|�~�|{ywwwy|~����������������������������������������������������������������������������������������� ����������������|yvsqqnifb_^Z�W�Y�WV�TRQ�O�QRTVW�Y\_dgilotwy{||~�������������������������������������~|{{|~�����|{wvtstvw{|�~|{�yy{~~�������������������������������������������������������������������������������������� ���������������~{wvt tqkgfb_\YYZ\ZZ�WVWWTRQ�OQRTTVYZZ\^afiknqtwy{�|~�����������������������������������|{�y{|���~ywtsqqsvvy|��~{�wy{{|~~�������������������
������������������������������������������������������������������������������������|ywv vsnkifb_\\^^\Z�Y�ZWTR�QRTVVWY\^_abfilostwy{�|�{|�������������������������������|y�wy{|~~{wtqonoqtvy|���|yvvwy{�|~�������������������������� ���������������������������������������������������������������������������~{ywwtqlkgfb�_^\�Z�\ZWV�T�V�WYZ^_abbgknoqsvw�y {yy{~|~�������������������������~|yw�vwy{{wtqo�nosty|~�~|ywvwy{�|~���������������������������
���������������
����������������������������������������������������������������~{{ywvsoligdbaa__^^�\�^\ZY�W�Y Z\_aabdilnnost�v�wy{{|~����������������������~ |{yvttvwwvtqo�noqty{�|{ywwyy�{|~������������������������������������������ ������������������������������������������������������������~||{
yvtqolifdba�_^\\�_^\ZYZZ�\Z\^�abfkllnos�tstvv�wy{{|~����������������� �����������~|{|~~{yvtsttssqonl�noqtw{{�|{yywwy�{|~������������������������������������������������������������������������� ����������������������������������~|{
{wvtsokgfdb�a_^^�_^\Z\^�_�^
_aabdgkllnq�s�qs�tv�wy|��������������������~|{�y {|~{wvtssq�onll�nostvy{||{�y�wy�{|~��������������������������������������������������������������������������������������� ���������������~||ywwvsligffdbbdb�a�_�^_abba__�abdiklno�q�onooqqst�vy|~����������������~|{yw�v�wy|yvtsqon�l klloosstwy{{y�wy�{�|~��������������������������������������������� ���������������������������������������������������������������~ ~{yywtolkiig�f�dba�_abdd�bdfiln�o�n�l�n�o
qstvwy|~���������� �~{ywvvtss�t vwvsqqonll�k lkkloqsstv�wy{�| ~�������������������������������������������� ������������������������������������������ �������������������|{{ywsonllkiggffdbaa�_a_bd�f dbbdfginoqonl�k�l�noqsvy{|~������������|{wvts�qs�qsqo�n�l�klnq�st�vw�y|�~ |~���������������������������������������������������������������������������������������������� �������������~||{yvso�nligffddbb�abdf�gfddfgiknqqnlkigi�kl�n
osvy{|~��~~��~�|~�� �|ywvsqonn�o�n�l�nl�k�lnq�st�vw�{|�~������������������������������������������������������� ������������������������� �������������~|{{ywtq�onkig�f�d�bfg�i gfggiklnooli�gikk�n
oqtw{|~�~||�~|{�y{�~ |ywvsonlkk�l�kl�kl�nlkklnno�s�t�vy�|�~|~�����������������������������������������������������������������������������������������������~|{{ywtsqqonlki�gf�dfg�i�k�lkgffggikl�n�oqsvy{|~~||~~|{ywwvvwy�{ywvtqnlk�i�k�ik�ik�l�klnoqss�t�vw{�|�|
~���������������������������������������������� ��������������������������������������������� �����������~�| {yvtssqonlkgg�ikig�fgiikk�l�ki�fgik�l�o�qtwy{~~||~|{wvttsstv�wvsqnki�g�f�gfggiggikl�klnoqqst�vtvwy|~~||�|����������������������������������������������������� ��������������������������������������������������������~
|ywvttsqnlk�i�kig�fgikl�n�lkig�fgi�k�lnoqqsvy{||{||{yvts�qs�tsonlig�f�d�fg�k�iknoqqst�vwy{|~~||�|~���
��������������������� ������������������������������������������������������������������ ��������������~{ywvttsqnl�k�i
kiigfddfikl�n
lkiikgfddff�i�k�nlnnoqvy�{�ywtsq�o�qonlkigf�dbabbdfd�bfgikkiiginoqqst�vwy{|~~|~~����� ���������������������������������������
��������������������������������������������� ��������������~{ywvttsqon�lkigg�igfddfik�l
kiggigfddfg�iklnn�lnotw�yw�vtsq�o�n�onlkkigff�dba_abddb�abdgii�giloqss�tvwy{|�~������������������������������� �������������������������������������
������������������������
����������� ����~|{ywvtsqo�nkiggf�gfdffgi�ki�g�f�dfggikk�l�k�lnqv�w tssqonnoon�lki�g fgfddba__aba�_ab�fdffglnoss�tvwy{~������� ��������������������������������������������������������������������
���������������������������������������~|{ywvtsqoonkigg�f�g�f gikkigffgg�f�gi�k�lnost�vtqon�l�nl�kigff�gfdba�_�^�_a�bdfgklnqs�tvwy|����������������������������������������������������������������������������� ����������������������������������~{ywwvsqoonlkii�gf�dgikkig�f�g�ikllnnoqsttsonnllklkk�igffd�f gffdba__^^\^�\^_�abfgiklnoq�tvw{~���������������������������������������������������������������������������������������������������������|{yywtsqoonnll�k igfdbdgikkigg�fgffg�i�g�ikl�no�qonnllkk�igff�d�fdba__^^\\�Z\^__abdfg�i knstvvw|��������������� ����������������������������������������������������������������������� ���������������� ��~|{{wvtsqo�n�lkigf�dfg�ig�figgi�ki�gikln�l�nlk�i�gigf�d�fdba__^\Z�YZ\^^_abd�f
ilqsvwy~������������������������������������������������������������������������������ ������������������������������������� ����~|ywvvsq�onlkkig�fg�igffgi�k�lki�gikll�kl�nlk�i�g�ig�d�fdba_^^\ZYWWYYZZ\\^_ab�d
filosvy|����������������������������������������������������������������������������������������������������������� �����~{ywwts�q�nlkii�g�i�g�fgikk�lkif�gikll�k�iklnnlliig�f giigdfddbdfba^�\ZY�W�Y�Z�\^_aabbdfknqtvy|�������������������������������������������������������������������������������������������������������������������������~|{ywvttsqoonlkk�ig�fgikk�lkgfg�ik�lkigg�ik�lkig�f�g�fdbabda^Z�Y�W�YZ\�^_aabdgilosvwy|��������������������������������������������������������������������������������������������������������� �������~|{ywwt�qonll�k�ig�fgik�l kgffgiikllnlkg�fgik�l�kgffd�f gffda_ab^ZWVT�V�W�Y\^�_abdfilnstvwy|���������������������������������������������������������������������������
�����������������������������
�������~|yv�sqonn�lkii�gik�l�kigffgikl�nlkgf�dfgi�kigf�d�f�dba�_\YVRQRTV�WY\_�abdfiloqtvvwy|��������������������������������������������������������������������������������������������������������������{v�ts�qonnllk�i�giklkki�g�ilnonnlkgfdbbdfgi�kigfdbbfdb�a&_^^ZWTQOQRTVWWVY\^_aabbfilnqsvwwyy|~��������������������������������������������������������������������������������������
����������������������������������|wvvwv�tsqonll�k�i�kig�f gikklnonllkifd�bdfgikkigffdbbdba�_ ^\ZYVRQOOQRT�VWZ\^_abdgknostvw�y{|~��������
����������������������������� ��������������� ����������������������� �����������������������������������{�yw�vtsqonn�l�kigf�dfikkl�n�lkifb�abdfgiigfddbaaba_�^\YWVTRQOMOQQTTVWZZ\^_bfiloqsttv�wy{|����� �������������������������������������������������������������������������������������������������������������������������|
{ywvttsqoon�l�nl�kigf�dfgik�lkigda�_abbdfgf�db�a_^\ZYVT�RQOMMOOQRTVYZ\^_bgkloq�s tvwwy{|~���� ������������������������������������������������������ �������������������������������������������������������������������~||{wttsqoonlnn�onlkigf�dfgkkl�kigfba_^^�_adf�d�a�_
^\ZYWTQOOMM�L�MOQRTWY\^_bgiloqststvwy{||~��~ ~�������������������������������������������������������������������������������� ������������������������������������������������~|yvtsqonlln�onligf�dfgi�kigfdba_�^_b�d ba_^\ZYWTQMLJ�I�J�LMOQRVWZ\_bfgknqsttvwy{|~~���~ ~�����������������������������������������������������������������������������
�������������������������������������������|{wvsqonllnn�onlkif�dfg�i�kigf�ba_^^�\^aa�b
a^ZYYVTOLJG�E!GIJJLLMORVYZ^abfiloqstvwy{|~~�~~|~ ~���������������������������������������������������� �������������������������� ��������������������������������������
����~|{wtqo�no�q onlkgfdbdf�gikkigd�a _^\\ZZ\^__�a
_\YWVROLIGD�BDEI�JLMORWYZ^adgknoqstwy{{|�~�|~����������������������������������� ����������������������������������������� �����������������������������������������~|yvsqoonnoq�sqnnkgfdbbdfggikigfda__^\Z�Y�\�^_�^*\YWVTOLIEDBA??BDGIJIJJLLORVW\_bfilnostwwyy{�~�|�������������������������������������������� �������������������������������������������������������������������������������������~{wvtsqooqs�tsonkgdbaabdfgiiggfda^\ZZWVWYZZ�\ZYYZZYWVTQLIGDBA?==ADEGII�J LORVZ_bfiklost�vwy|�~������������������� ��������������������������������������������������������������������������������� ����������������������|ywvtsqqst�vtqnifba�_abf�gfda\YWWTTVYYWYYWVTT�VTQMJGDBA?�=?ADEGGIGIIJMQTY^bfiknoqs�tvw{|�~��������������������������������������������������������������������������������������� �����������������������
��������������� �����|{ywtsstv�wvsnifb_�^_ad�f db_ZWVTRRTWW�VTR�Q RTTQMJIEBAA?�=?B�E GIJLORW\adgkn�oqsstvw{|�~������������������������������������������������������������������������������������������������������� �������������� ������|{yw�v
wyywvsnifb_�^_a�ba_\WVT�R�V�TRQ�OQRQMJIGDA??=<<=<=A�D EGILORWZ^afil�noqstvw{�|�~����������������������������������������������������������������������������������� �������������������������������������
�������~|{{�ywvsokfba_�^�_^\YVT�R�TRQ�OMLIGEBA??<::<<=?B�D EGILORWZ\_dgik�l noqstvwyy{�{ |~��~~�����~�����������������������
�����������������
����������������������������������������������������
����������������������������~�|
{ywvvsolfba�_�^�\�ZYVTT�QRQRQ�R�Q OMLLJIIGEB?==<�:"<=?ABBDDEGJMQTWZ\_bffgikklnoqstvvtv�vwy{�|�~�|~������������������������������������������� �������������������������������������������������
������������������������������� �~|yvttsolgda�_^\ZY�WVTRRQOOQ�O�QOLJII�GEB?==<�:<=?AABDEGILORVYZ\_b�d fgikklnqss�q�stvwyy�{ ~��������������������������������������������� ������������������������������������������������������������������������������~|yvssqolifb�_^\YWVVTR�QOML�M�OM�OMJIGE�DB??=<:88<==??BDGJJMQTWYZ\^a�bdfggilno�noqst�v�y�w
y{{|��������������������������������������� ������������������������������������������������������������ ��������������������~{yvsqonkifb_�^\ZWVTTRO�ML�JLMM�LJIGEDB�A�?=<:88:<<=?BEILMORTWZ\^^_�a�b�dfi�k�lnoqs�t�v�tvy{{|~��������������������������������������������������������������������������������������+��������������������|ywtqonligfb_^\\ZWTRRQOL�J�I�G IJLJJIIGEDDBA?�=�<:88::=?DEILOQRVY\^�_a__�abdff�giklo�q�sty{{|~~��������������������������������������������������������������������������������������������������������!���������|yvsonligfda_^\ZWTRQQOMJI�GEDDEG�IGEDB�A?=<�:�<:�8 :=ADEILOQRVY\^�_�a�_a�bdffgikn�o�noqstwy{|�~�����������������������������������������������������������������������������������������������"����������|wtqolkgfdba_^\WTRQOOMLIG�ED�BD�EBA?�=<:�8�:�878:<ADDGLOQRVYZ\�^\^^a_^^_�abddffgk�n�l
noqsvwyy{{|�~���������������������������������������������������������������������������� ��������������������������������|wtqolifdbaa_^ZVRQOMMLJIGEE�DB�A�BA?=<::8�7�8�78:<?BDGJMQRVWYY�Z\^__�^�_ab�dfgkll�k�l�noqstvvwy|~~������������� ��������������������������������������������������������� ��������������;������������������������������������~yvqolifdbaa^\YTQOMLLJII�GD�BA?�=�?=<:7755�78�7�58:<?BEGILORTVWVWYYZ\\�^_ab�d�dgii�giknnoqoqstvy|~~���������������������������������������������������������������������������������������������!�����������~{vqnkifdba_\ZWTQMLJJII�GEBA?==<<�:�<:85445�75�4 58:=?BEGIJMQR�TVWYZ\\�^�_abdd�bd�fgilnoonnosvy{|~���������������������������������������������������������������� ����������������������������������������������~ytqligddb_^ZYVROLJ�IG�EDBA=<<:875578754�24554200�2 47:=?ADEGJLO�Q�RTVYZ\�^_abb�a�b�dfgklnllnoqtvy{~�������������������������������� ���������������������������������������������������������������� ��������������|wsolgdbba^ZYWTQMJI�GED�B A?<:875422442�0�20//00247:=??ADGJLM�O�QRTWYZ\^�_�^_aa�_abddfgi�k
lnqqstwy|�������������������������� ����������������������������������������� ��������������������������������������~{wsnkfbaa_\YVTROLIG�EDB?�A ?=:8520/--�/-/00�/�0�/�0 2478<=?ADGJL�M�OQTVWYZ^_�a�_�^
^\\^_abbdfg�i lnqqstvw{��������� �������������������������������������������������������������������������������������������� ��������~{wsnkfba_^ZWTQOLJGEDDBA?�=<:852/-,�*�,-�/�0 24578<=?ADGJL�MOQTVVWY\_abba_^\�Z\ZZ\^_aabdffgilnoqstvw{����������������������������������������������������������
�����������������������������������������~{vsnkfa_\ZYVROLIGD�B?=<�:8750/,,*�(*,,-//0�2 4578:=?AADEIJ�MLMORTTVWZ^_bb_^\ZWWYZYWYZ\^_aabbfgklnoqsvwy����������������������������������������������� ����������������������������������(�����������������������{vsolfa^ZYWVROJGDB�A=:88�7540-,**(�'�(/*,/0244554458:<=?ABBDEGJMOOMLMOQRTVWZ\^aa^ZYWVVWYWVWYYZ^�_ adfgilnosvwy~���������� ������������������ ������������������������������������������������������������������7�����������������������|wtqnga^ZWVVROIEAA??=:8754220/-**�('�%�'(*/025578�7:<=?BBDDEEGJLOO�M�OQTVWZ\\^_\YWVTVVVTT�WZ\^^_bddfilostwy|~������ ���������������������������������������������������������������������������������������� ����������������������������~yvsoib^ZWVTQMID�? =<87540/--,*((�'%�$
%''(*-/2578�:<=?B�E�GIJLMM�OQTWYZ�\ZWV�TR�RT�VWZ\^_aabdgkostw{||~��������������������������������������������������������� ��������������������������������������������������%����������{wtqld_ZWTQMLGB?==<:7742/-,*�('%�$�"�$�%(*,/258:�<=?BE�G�IGIJLLMO�QTWY�ZYVVTRQO�Q�RTRTVYZ\�^ _bfinqtw{{||~���~ ��������������
���������������������������������������������������������� ���������������������� ������������������'������|yvsnga\WTOLIEB?=<:87542/,*(''(('$�"�$ %(*,/258:<�=?ADG�I�J�IJLLMOQ�RTWY�ZYWVVTQMM�O�QRTWZ�\ ^adgkotwy{�|�~�|~�������������������������������!������������������������������������ ������������������������ ����������������"��������~{vsoib\WRMJGDA?<:754220/*(�'�(%$�"�$%(**/257:<=??ABEI�JIJLLMORTTRTVWYY�ZWVVTROLJ�LMOQRVYZ�\ ^_adinsvwy�{�|~��������������������������� ����������������%�����������������������������������������������������������������������(������{vsokd^WRMJEBA?<854200/-*(''(('%%$$�"�$�%'(*-2458<=?ABDEI�L�J�LMOR�TVW�Y�ZYVTTRQMJI�I�JLMQRVYZ�\�^
_bglqtwyy{{�y{|~~������������������������������������� ������������������������������ ���������������������������������������� ��������{wsokd_YTMJEBA?:74200/-,(�'�(�%$""$$�%'(-0457:=?ABDGILLM�J�L MOQRTVWYZZ�YVTRQOMLJIIGGIJLOQTYYZZ\^__bgkosvw�y�{�~������������������������������������� ������������������������������������� �������������������������2��������������������~{wsnid_ZVOJGDB?:74200/-*(''(('�%�'%�$%(,/2458<=?ADGIJLML�JLMOOQRVWWYZZYWVRQOMLL�JIGEGIJMQTWYYZ\_abdgknsvw�y�{|~���������������������������������������������*�����������������¾�������������������������������3��������������������������|{vqlid_\WOJGDA?:75420-,**�(%$%%'('�%$""$%'*-0247:<=?BEIILML�JLMOORT�WYZZYVROML�J�IIGEGIJMORTWWZ^abdfgklqtwy�{|~����������~~����������������������������������������������������������������������������������)�������������������|ytolid_\WQLGDA?<87540-�,�*(%$%'(*(�'$""$%'(,-/258:<=ADGIJ�L�JLMOQTW�YWTQMLJ�I�G�GIJMORTWY\_bfgiiklotwy�{�|�~��� �~|{{|����������������������������������������������������������������������������������)������������������|wsokgb_\YTOJEB?<:7542/-�,('%'(*,*�'$""$$%'(*-/257:=ABEGIJJ�LMOQRTY�ZYWVTQMLJI�G�E�E�GILORVWZ\^afgikklnqtvw�y�{�|~��~�|{�y
{|~~||~��������������������������������������������������
¾�������������������������+��������������|wsokgb_\YVRMIDA=<87540/-,,-,*�(*,,*�'%�$�%(,-/25:=ABEGIIJL�MOQTTVYZ\ZYVRQMLJJGEEGGEE�EGIJMQVY\^_adgiklnoqst�v�w�y{|�~{yy{{y�w�y{|�����������������������������������������������������
��������������������������������&��������������{wsokgb_\YVTOLGB??:87520/�-,**�,*(''�%�$''*,-048<?ADEGIJLOOQRRVVWYZZYWTQOMLJJGEEG�E�EIJLORWZ^_bdfikkloqtt�v�t�vwy�| wvvwwvvwvv�t�vwy|��������������������������������������������������� ¾�������������������������'�����������~{wtokgb_\YVTQMIDBA=<:85420/-�,�-,*(('%%�'%$$%(*,/47:=ADEGIJMOQRTTVW�YWVRO�MLJI�G�EEGJLOQTW\_adfgiklnos�vt�s�tvw�yv�tvwvtsqqsstw{�������������������������������������������������������������������7�������������������������{wtqlgb_\YWTQMIEDBA?<:754200/-,�-*(('%%�'�%$%'(*,/458<?DEGIJMQRTTV�W�VTQOMLLJII�G�EGGIJLQRVY^abdfgiknoqt�vtsqq�s�t�vwt�stvsq�oqstvy|���������~|~�������������������������������������������������������������� ����������������|yvsnida^ZWTQMIED�B?<875�42/�-,*(�'�%'(*,-0458<?DGIJLMQ�TVWWV�TRQOMLJ�I�GI�JLMQTWZ^abbdfiloqs�ts�q�s tvvttvvtssts�q�s qonnoqstvw{~�������~|{|~��������������������������������������
�¾������������������&�����������������������~{wsnkdb_ZWROLIE�DB?<:8�740/�-�,*�(�'�*-/2458<AEIJJLMORTT�VT�RQOMLJI�J�IJ�LMOQVY\^_aadfins�t�s�qstt�v�ts�q�o�qo�noqtvvwy{|~~���~{�|�{|~��������������������������������������¾���������������� �����������������������|wsnkfb_ZVQMLIGEE�DBA=<::8520/--,,�*�,*�( *,/24578=BGJ�LMORT�VTR�Q�R�QOM�L�J�L�MOQRVY\^^_adgkotvvtsq�oqst�vt�sqonn�o�qo�noqtv�wy{|~~|{yy�{|~������������������������������������¾���������������������������������������|wsnkgb_YTQMLIIGG�E�DA?==<840/�-�,�-,�*,/4457:?BGLMMLMQT�WTRQOO�Q�O�M�OQ�RTVYZ\\^_bglqvwvtsoonnoss�t�vtssqonllnoonooqoonnoqsvww�v�y�vw�y{|~�����������������������������������¾���������������������������������������|wsnkgb^YTQMLJI�G�E DBA?=:520//00/�-�/-�,
-04578<?BGL�MORW�YVRQOO�Q�RT�VWYZ\^_bgnsvwvtsqqono�qstvvtsqon�l�n�ln�q�oqstvv�t�v�t�stvwwy{~����������������������������������������������������������������� ����������������|wsnkgb^YTQMLJIGG�E�GEDDB?:742�0/�20/�-/25778<?BGLMMOQT�YWTRQOOQRR�V�T�VV�W!VWWYZ^_dinsvwwvvttqooqqoqstvvtqnnl�k�l�k loqqoqqsttvtts�q�o�q�stvwy|~�����������������������������������¾�������������������������������������������~ytolgb^YVROLJIGG�E�G�EDA<8754�2455420/025788:<?DGJLMORV�W�Y WVTRQOQTVW�YWVVWW�W�Y�W YZ^afknqtv�wvts�qstvvtso�lkii�kln�o�qs�t�sqo�n�lno�qstwy{|�������������������������� �������������������������������������������������������{volgd_ZVROMLLJI�G�E DB=::7545542�457754224588::<=?DGJLMOR�TVWW�VTRQRVWWY�Z�Y�W�YZ�Y
Z\adgklostv�wvtt�s�tsqn�k�iklnn�o�qsqqnn�lkl�noqsvwy|������������������������� �������������������������������������������������������|wqlifa\WTQ�OML�JIGE�D BA=<:87887�457887�578:�<=?ADGJLMO�QRT�V�TV�WY�Z�Y�Z�\ ^_adgiklostt�v�t�v�tsqnk�i�g�i�kl�n�on�l�n�lnoqtvy|�����������������������������������������������������������������������������~ysnkgb^YVR�QOM�LIGE�DB?==::<:8�578�:�8 :<==?AABDGIJLM�OQR�VW�Y�Z�YZ\\�\^_abdfgikklostt�vtvvw�y�vtsqnlkk�i�g�i�k�l�k%lnnlnnllnoqtvy|������������������������������
����������������������������������������������������~ytqlgb_ZWTRQQO�MLJG�EDBA??�=
<:8778:<<==�<�=?AB�DEGIJLMM�ORV�WY�Z�YZ^_�_adgi�k�lnostvww�vwy�{ ywtsqonllk�i�g�i�kigg�ilnnll�noqtvy|������������������������������������������������������������������#���������������~yvsngb_\YVRQQOMOOMLI�GEDBB�A�?=�:<==AA�?ABBDD�EGILM�ORVWW�YZ\\�YZ^a�abfik�lnooqstvw�ywy{�| {ywtsqonllkk�i�g�igff�gk�l"kllnnqstw{~���������������������������������� ���������������� ���������������������������������|yvsnid_\ZVRQQ�OMLJIGE�D�BA?�=?A�BD�E�GIJMOQQ�OQRVWWY�Z�\ZYYZ�YZ\^a�bdgiklnoq�stwy{||{{|~~|{ywvsqon�l�ki�g�fgi�k�lnostvy~������������������������������������������������������������������������"���������~{wtsnkfa^ZVRQOOQQOOMLJIGG�E�D�B�AB�D�E�G�E�G�IJMOQQ�OQRVWWY�Z�\�Z\ZYYZ\^abdd�fiklnos�tvyy|~�~|�~|{ywvtsqq�on�lki�g�fg�f�d�fgiiklnoqstw{~���������������������������������� ���������������������������������������� ���������|yvsqnkgb^YVTQOOQQOOMLJI�G�E�DE�G�E�G�I�JLMO�QRVWWYZ\\�^\ZZ\^_adfg�iklnost�vwy{~����� ~|{{ywvvtt�sq�onki�gf�d�fd�b�dfgiknoqstvy|�����������������������������������������������������������������������������~{wtqnlifb^YWVR�Q�OMLJIGGEE�G�EGEGIIJ�I�GI�JLMLMMOOQ�RQRVYZ\�^�_�^�\^_abfgikklnoqsttvvwvvwy|�����~�|{y�wv�t sqqoligfgd�b�dba�b dfiknoqsvw{��� �����������������������������������������������������������������������~|yvsoligda^ZYWTR�Q
OMLJJIGEDDE�G�I�GIGGIJ�LJ�IJLMM�OQ�RTWZ^_a__a�ba�_abdfgikklnqt�v�tv�wy|��������~|�{yww�v
tsqoligffdb�ab�a�b dfiklnoswy|��� ����������������������������������������������������������� �����������~|yvsnkgdba_\ZYVRQOMMJ�IGE�DE�G�I�JL�M�L�J�LM�O�QOQQ�R TW\abdbbdd�fbaabbddfgiklklotwywvttvw�y {|~��������~�|~�| {wwvtqoligfdba�_a_aa�b�dgiklosw{~�����������������������������������
�����������������������������������������~|{wsnkfbaa_\ZYVROMLLI�GE�D�E�GIJJIIJ�LMOO�M�LM�OQ�R�Q�RTVY^b�fgiigdbbd�fg ikllnqvyyw�vwy{�|~����������~����~{wvtsqnkgfdba�_�a�bdgklosw{~��������������������������������������������������� ��������������������������~|yvslifba__\ZWTQOMLLI�GE�B�D�GI�JLMOO�QOMM�L�M�OQ�T�QRTVWZ_d�g ikkifddffgfggiklnqtwyywvvwy{|~��~������������������|ywtsqnlifda_�^_aa�_!abbfinqtvy|��������������������������������������������������������������������������������~|{wtqlifba_^\YVRQOMMLI�G EBAABBDDEG�IJLMORTTRRQMLJJL�MOQR�T�RTVWZ^adgiiggiklkig�f�g�iklnqtv�w�vwy|~������������������~{wvtsonkgda_�^�_�^_abfinqtvw{~������������������������������������������������������������������������%����~|{wvsolifdb_\ZWVRQMLLJIGIIGEBAABB�DEIGIJMORTWWTTQMLJJL�MOQR�TR�TWY\_bfgikiiklnlki�g�i�lnoqtvww�vwy|~������~~������������|{wwvtqnlida_^^�\^_dilotvw{|�����������������������������������������������������������������������������~{yvtsolifdb_\YWVTQMLJJ�IGDBAAB�DEGGIJMQTVWWVTQOMLLM�OQR�T�VWZ\_bfgi�klnnlk�iklnoqstv�w�vwy|~������~~������� �������~{y�w tqnlifb_^^�\�Z ^bgknsvy{|��������������������������������������������������������������������&����������~ywtssolifba^\YWVRQMMLLJIIGEB�A�DEDEEGJJLORVWVTR�O�LOQOOQT�V
WVVW\\adfgi�kloonlkk�l�noqstw�y�w�vwy|~�����~||~�������������~yy�w tqnlifb_^^\\ZZ�Y\adinqty{{~���������������������������������������������������������������������~yvtssqnkfb_^\ZYVRQ�OMLIGEDB�ABD�EG�JMQTVTRQ�O�MO�QRV�WY\^adfggi�kl�o�n�oqstwy�{y�wy|�~�|�~������������|yw�vtqnkgfb_^^\\ZZYY�WY\_bgnqtwy{|���������������������������������������������������������������������������~yvtsqqnkgd__^\YWTRQQOMLIGD�BABD�E GIJJILORTRRQ�OQRRTW�Y�W�YZ\_adfgfgiiklnnooqq�sqqsvwy�|�ywy�{�|�{�|~����������~|{w�vtsolkgfb_^\^^\ZWV�TVWZ^afnqtwyy{~��������������������������������������������������������������������~{wtsqqolifba_^ZYWVTROMLJGD�B�DEG�ILOQ�RQ�OQRTVWY�Z�YZ\\^_ad�f
giklnnoqstt�vtsstwwy|�~|{�y�{�y{�|~��������~{ywv�tsqnkifda_^\^^\YVT�R"TVY\aflqtvwy{|��������������������������������������������������������������������~|{wtsqqonkgfdb_\ZZYVTQOLJGD�A�B�DEGEGILMOQ�R�Q�O�MQRTWWY�Z\�^_abd�fgil�noq�t�vts stywy|~~��~|{�y{�|~����������|ywt�s1qooligdb_^^\^\ZWTRQQRTVY\afkoqtvyy{~������������������������������������������
����������������������~||{yvtssqolkigfb_^\ZWTRQMJGDA�?A�B�DEIJLOQ�R�QOMLMQRTWY�Z�\^_aa__aabdffgilnooqs�ttv�y{|~��~||�{�y{�|����������~|yvsqoonllkgdba^�\0ZYVTRQQRVWY\afilnqtwy{~���������������������������������������������������������������������!~|{{||{wvttssonlkgfba^\YTRQMJGDA??�AB�DGIJMO�QMLJLQRTWYZ\\^_bbdd�abddfilnoostvttssttvvw�y�{~���~{�|�{�|���������~|{wsqollk�i fa_^\ZYYZYWTT�R(VWY\afgiknsvy{|��������������������������������������������������������������� ~{yy{||{yw�vtsqoligfb_\YVRQMJGEBAABBA�?AB�DEGJLM�O MLLMQRVYZ\^_ad�fdb�a�bdgklnosvwvtsstvw�y�{|�~�|�~|�{�|~���� ���~|ytqonki�g fb_^\ZYWWYYW�TVWY\adfgilqtwy{|���������� ������������������������������������������������� ��������~|{yy�{�y�wtsqolkigb_\ZWROLJGGDBBDDBAA??AA�BDGJLL�M�O
QTVWYZ^_abf�gfba�_adilloswyvtsstwy�{y{{yy{|�~|{�|{yy|~~�������~|yvsoliggffdb_^\ZYY�WVTTV�TVWY\_bdfgkostvwy{~���������������������������������������������������������~|{�y�w�ywtsqnlkifb_\ZWRMLJIIG�EDBB�ABDGIJJL�MOQRTVWYZZ\_bddg�igfba__�^_bgkloswywvttvy{�{�y{|�~|�{ywy|~~��
����~{wtqni�fdba^\ZZYY�WVTTV�TVWZ\_bdfgiloqstvw{~������� ����������������� �������������������������������������||{yw�v�ywvsqlligda_\ZWQML�J�I�EDB�A�BDEGIJLLMORVWYYZ\\_adfg�kiggdba_^\\^afikosw{ywvvwy{�{�y�{�|�~|{{�ywy{~~��~
����~{vsnkf�d ba_\ZYYWYW�V�TVTTVWYZ\_bdfggklnoqstw{~������ �����������������������������������������������������~|{yv�tv�wvsolkgfba_\YVQM�L�MLIGEDB�A�BDEIJJLMQTWYZ\\^_bdfik�lkigfdba^\\^adgknsw{{�y{|�|{�y�{�|{�y{|�~ ����{vqlgd�ba_^ZY�WVTTV�T�VWYZ\^abd�fgilnoqsvy|������� ���������������������������������������"��������~|{wvttstvvwvtqnkigfda_\YTQ�M�QOMJIEDB�A�B�DEGIJLMQTWZ\_abdfgi�ligfdba�^ _adgklqv{|�{|~�~{�y�{�y�|{�y�{�|�~����{tokfba�_�^\ZY�WV�TVT�VYZ\^_a�b�d fiklnosv{~������������������������������������������������������|{ywvvtst�vtqonkiggfba^YTQ�OQ�RQOLIGED�BD�EGIJLMQTW\_bfgiikl�nkgfdba�_abdgkloty�|~��~|�{�y�{�y{�|~�� ~ytokfb_^^�\ZYWV�T�V WYZ\^_aa__�a bfikklotw{~�����������������������������������������������������������|{ywvvts�tsonnkiggfba_YTQOQQRT�VTQMJIGE�DE�GEGIJLORVY^bfilnn�oligfdb�a bdfgklotw{|~���~�|{||{�y{�|�~�|~��~|wsokfb_^^\ZZ\\ZYWTRR�TVWYZ\^�_�^"_bggiknsvy{~��������������������������� �������������������������������������|{ywvv�tsqonnlkgfdba_ZVRQQRTV�WVROLJIG�EG�I�GIJMQTY\_diloqssqq�sqolkifdbbdffgiknqtwy|�������~�|{ywwy{|�~�|~��~|yvsokfba_^\ZZ\\ZYVRQR�TVYZZ\^__^�\ ^adfgilosvw{~���������������������� �����������������������:������������~~|{yywvvttsqonnlkgfdda_ZWTRQRTVWYWVRQOMJIGEEGG�J�IJMORVZ^_fknqsttssttvvssonkigffg�iklosvy{~�������~�|{�y{�|�~�|~��~|ywtqnigba_^\ZZ\\ZWTRQQRR�T VWZ\\__a_^�\�Z!\^adffilostw{~~����������������������� �������������������������������>�~||{ywvtsqqonkigffda^ZYVRQQRTVWVTRRQOLJIGGIIJLLJJMQRTWZ^afknqt�v�w�vtqnl�k�l noqty|~����������~||{{�y�{�|�~�|{wvtqligda__^\\^\ZWTRRQQR�VWY\^_�a_^�\�Z^abdfilosvy{|~���������������������� ��������������������������
�������������~{ywvtqqonkigffb_^ZYVR�Q�R VTTRRQOLLJII�J�MLORTVY\_bfknsvwwyy{�ywvsqo�n�oqstvy|����������~||�y{�|�{�|�~�~|{�y
wvsolifda__�^\ZYVT�R�VWZ\^__aa�_�^\�Z2\^_bdfikoswwy{|~��������������������������������������������������������������|{ywvsqonkigfda^\ZYV�R�QRTTRQOOMM�LM�OQTVYZ^adgknsvy{{|~|{{|{yvtss�qsvwy{~������
�����~|ywy|�~|�{�|~��~{y�wvsolifdba�_^\ZYV�T�VWY\^�_�^�_^�\�Z^abdfglqtvwyy{~���������������������������������������������������������������~|ywvsqolkigfda\ZYWV�R�QRTQQOQOO�M�LMOQQRVY\^_bfilosv{||~��~~��~{ywv�tsvwy{|����������
�����~~{y{|�~�{|{||~��~{�y
wvqolifdba_�a�^\YW�V�WYZ\�^�_^\^^�\�Y\^abdgkoqstwwy|������������������� ���������������������������������������|ywvtsolkigfda\YWWVTRR�Q�R�Q�R�QO�MOQRTWZ^_adgloqsw|~~������~|{yywvwy{|~���������������~�|�~�|~�|�~|�{yvqonkgdb�a�ba�_^\ZYWWYYZ�\�^\�Z#YWWYZ\_bdgknnosvwy{~��������������������������������������� �������������������~|yywvtolkkifd_\YVWVVTRQOO�Q�R�TR�OQRTVWZ^adfinqtty|~�����������~|{yy{|~��������������~~|{|~~���~|�~�| yvsonkgddbaabb�a_^\ZZY�Z�\�Z�\ZYYWW�Y�W!YZZ^adgillnqtvy{|������������������� ����������������������������������������������~|{{ywtqnllkgd_\Y�WVRQOO�QR�T�VTR�QRTWWYZ^afgknsvw{~��������� ���~||~������������������|{|~������~�|�~ |ywtqnkgffdb�a�ba_^^\\�ZYWVVW�Y�Z"^adgikklosvy{|������������������������������������������������������������������~|{ywtqonnlgda^�Z�YWTQOO�QTVV�WVT�RTVYYZ\_bgiknsvw|���������������������������� ���������~{|~������~�|
{wsqnkiggfd�aba__^^�\ZYYZZ�Y�Z�YW�VWY�Z^adgikklosvw{|���������������������������������������� �����������������������~|{wtssqnlifb_�^\ZYVR�QRVWW�YWVTT�VWZZ\^adgiknqtw|�������������������������|~������~�|�{
wsqolkiggfb�a_�^�\Z�Y�Z�YWVVWZ\\ZZ\_bfgikklosvw{|�~����������������������������������������������������������������~|yvttqnlkgfbaa_^\ZWT�Q�RTWYWYYWW�V�WYZ\\^_bfgiknqtw~���������������������������������~~�����~~�|{�ywtqonliggfbbaa__�^\Z\\ZYY�W�Y�\ZY�W�VWZ\^\\^abfgikklosvwy�| �������������������������������������������������������������~{wvvsonlkigfdba_\YVRQRTVW�Y�WYZ\�^_adfgiknsvy~��������������������������������������������~�|{�ywvsqonkigfddba__�^\�Z
YWVVWYZ\\ZY�WYZ\^__abdgikklnosvwy�{|~�������������������������������� ������������+���������������|ywwtsqonlkigfdb^ZYVTVVYWYYZZ�Y�Z\^_aabbdffgiknsv{~�����������
���������������������������������~�|�y wvsqqolkigffda�_�^\ZZ�YW�VYZ\\YY�W�Z\^aabdfikllnoqtvw�y{|���������������������������������
��������������������������~|{ywvtsqonlkigda^\Z�YZYYZ\\ZZ\\^^_abdf�g�i knqv{~���������� ���������������������������������~|{�y�{ yvtssqolkigfdb�a _^\ZZYWVTT�VW�Z�Y Z\^_bdfgil�noqsvw�ywvw{~�����������������������������������������������������������~|{ywvtqolkkgfba_^\\Z\ZZ�\�_�abdfgikkiggiklnqty|~���������� �������������������� ������������������~{�y{|{yvtstsqnlkgfdd�ba_^ZYWVTRRTTVVYYZ�Y Z\_adgikln�o�qtwy�{�y�w�v y{|��������������������������������������������������������~|{ywvsolkkgfddba_�^_�bdffgikllkiiklnoqtw{|�~��������� ����������������������������������~{�y{||{ywvttsqnlkgfdd�ba_^ZYWVT�RTVVWYZZ�Y�Z ^adfiklnoo�qtwy{||{y�w
y{~��������������������� ��������������������������������~|{ywtsolkli�fb�a�_ab�dgiikl�n�lnoqsvw{{�|~���������������������������������������~~�{�|�y
wttsqolkgfd�ba^\YYWVT�RTVVWYYZ�Y�Z\_bfgiklo�qtwy{||{yw�y wy{~��������������������� ��������������� ����������������� �����~|{yvsqn�lkgffbaa�b�a bdffgikklnoonn�oqsvwy{{�|~������� ������������������������������������~~�|{y{{yvtsqolkigdb�a_\ZYYWVTTRRTVWW�Y�Z�\
^adgiikloqq�o qsvy{||{yy�{ |~���������������������� ����������������������������� �����|{ywtqon�l kgffbabdff�b dfgikkllnn�o�q�sqstwy�{|{|~������������������������������������~������~��~||{{y{{yvtsonlkkgdba�_\ZYWVV�T�V�W�Y-\Z\^adfgigiknoonooqqtw{||{yy{|~|~������������������������� �������������������������������� ����|ywvtqon�l
kigfdbdfggf�dfik�l�noqss�tvy�{|~�������������������������������~�|~�������~|�{ ywvsonllkgfda�^\YW�V�W�YZ\\^ad�f�gikl�n�o�qsvy�{|~���������������������������������������������������������������|ywvvsqonl�kigfdfgiig�fgiklnnllnnoqstvvwvwy�{�y{|�������������������������������~|�{|�~��������~|{|{{yyvsonllkgfb_�\ZYY�WY�W�YZ\\_bd�f�gikl�n�o�qtwwyy{~���������������������������������������������������������3���������~{ywwvsqolkkllkiggikkiggiggikklnonlnooqsvww�y�{ ywy{|����������������������������~|�{|~�������~||{�y vsqonlkifb_\�Z�Y�Z\^abd�fgikln�o�qsvvwy|�������������������������������������������������������������������~||{ywtsqnlln�l�k�iklklno�n�q�svwy�{�y�{ ywy{|~����������������������������|{{y{y�w�y|~~������~~||ywwyvtsqonkifb_\�Z\�^\�Z�\^_bdd�fgikln�o�n�o$qttw{~���������������������������������������������������������������������~|yvtsq�o�n�on�l�n�lnlln�o qsttvw{||{�y {|~������������������������������~{�yw�vwy|~~��~�|{y�w�vtsolifda^�\^�_^\�Z\�^_abd�fgiklnoo�n�oqstw|����������������������������������������������������� ���������������~�~{yvtss�q�sq�oqon�o�n
oqqooqsttvw�{�y�w�y�{ ~���������������������������~{�w�vwy|~��~��~�{y�wvtqlifda_�\�^_aa�_^\�Z\_^^_abbdffggiiklnoo�n�qstvy|�~������������������������������������������������������������������~~��~|ywvv�t�v�t�s�q�oqss�qsttvw�y�w�v�wy{~����������������������������~{w�vwy{|~��~��~|{yy{{y�w�ywtqnkgfba^\\^^_aa_�^ \ZZ\^_^^_b�dfgi�k�lnoonnos�tvw{�|�~�������������������������������������������������� ������������������~{�ywvv�w�v�t�s�qstt�stvwv�w�v�wvttvvw{~���������������������� ��������~{yvv�tvwy{|~~��~|{yywyy�w�ywvsokgfdb_^\^^_aa_^�\Z\^�_ bdffgilnnl�noq�ostvwyy{{�|~�������������������������������������������������� �������������������~ |{yy{||{ywwvt�stvv�tvww�vwvvwwvttvvw{~������������������� ��������~|{wv�t�vw{�|�~|{y�w�v�w vsoligfda_�^�_^�\^_�abdggikn�oqssqqstvy�{�|~����������������������������������� �����������������������������������~�|~�~||{ywv�tvww�vt�vtvttww�t�vy{~����������������� ���������|{wwv�tvw�y{||ywvv�t�v
sonkiigdb__�^_^�\^_abaa�bdiiklo�q oqqsttsstvwy�{|{{|~���������������������������������������������������������������������������~|{y�w�yw�v�t�v�tvw{|~������������������������~{yywvttvwwvvwyywvtt�s�tson�l kifba_^^_^�\^_bddbb�dfiiklo�qst�vw�y{||�{|~������������������������ ������������ ����������������������������������������������~|{{�y{|{ywvwvv�ts�t vtvy{|~�����������������������~|ywv�tvtsst�vtss�qs�q�sqsqo�nlkgdba_^_�^_bdffdd�fgiikloq�svw�y{�y{�|{|~����������������������������������������������������������������������������������~~|{{|~~|{yyw�vtssttvvwy{|~���������������������~{ywvvtt�s�ts�q�o�q�o�nlifdba�_adfggffggiikklnqsttvy�{�|�{�y{|�~�|~�������������������������������������������������������������������������������������~�� ~||ywvvtss�tv�y{~�������������������������~|{yvv�t�s�q�o�n�o�n�l�nlkgdbaa�_abd�g�i�k�lnostvvw{�|�{y{{|~���~���������������������������� ��������������������������������������������������|ywv�tv�y{~�������
��������������������������~|yvtt�vts�q�o�n�onll�k�lkgdb�a�_abffgk�lnooqsv�wy{�|�{�|~������������������������������������������������������������������������������������������~|y�w�v�wy{~���������������������������������~|yvttv�wvts�q�o�n�l�nlk�ik�lkgdb�a�_�^_abdfgknooqstvw�y�{|{|�{~���������������������������������� ����������������������
����������������������������������������|�{y�w y{~�������������������������~|{yvttv�wvt�sqonn�l�n!liggikllkifdbaaba_^^_abdfiloqstvwy�{�y�{|�������������������������������������������������������������������������������������������������������~|{yww�y
{~����������������������������~|{yw�v�wvtt�s�q�o�nlkk�lkgffi�k igdbaabdba�_ abfgknqstvwy{~�|�{�y�{�y{~��������������������������������������������������������������������������������������������������������~|{yy�{
|������������������������� �����~~||{{yy�wvt�s�qolkkllkg�fg�igfbaab�dbaabdgknqstvvwy|�~|�{ywwy{~������������������������������������������������������������������������������������������������������~|{{~�| ���������������� ��������������
����~||{|{{�yw�v�t�sqnl�kif�dfgiigdbaabddffdbbdfilostvvwy{|�~|�{ywwy|~~���������������������������������������������� ���������������������� ��������������������������������� �������~~��~���������������������������~�{�|{�ywv�t�sqonlkkif�dfggfd�bdffddfgiklostvvwy{�|{�y�{�y{|�~��������������������������������������������������������������������������������������������������������~������� ����������������������~�|{ywwvv�t�st�s�tsqonlkigd�b�d�bdffddgikknqttvwwyy{�|y�w{�|�{ |~~������������������������������������������������������������ ����������������������������� �������������������������������������~�|{yw�vtsqqs�q sttsqonlkigd�b�a�b�dgkklosttv�w y{|{wvvwy|~~|�{|�������������������������������������� �����������������������������������������������������������������������������������������������~�| {ywvvtvvtq�o�qsttsqonlkigfdba_^^__a�ba�b�dgklnqs�t�vwy{yw�vw|~||�{|������������
�������������������������������������������������������������������������������������������������������������
���������~~�|{ywvv�tsqonnoqs�t sqonlkigfba_�^_a�b�abdfgknoqs�t�v�w�vw{�|�{�|~���������������������������������������������������������������������������������������������������������������������������������������������
�������~~|~�{ywvvttsqoonooqs�vtsqonkiifdba__^__�ab�abdgikoqqs�t�v wvwvtsttvw{|~~�|�~���~������������������������������������������������ �������������������������������������������� ������������������������������������������~~�|
{yy{{ywvvtq�o�qt�w vtsolkigffdba�_�a
bdfikloqsst�v�w�v
tsqstvw{~���~���~�|~������������������������������������������������������������������������������������������������������������������������� �������������������~�|{ywy�{ywvtq�oqsstvw�y wvtolkiigifdba�_�a
bfgklnosttv�w vtsqqoqttvy~�������| {|~��������������� ������������������������������������������������������������������
�����������������������������������
������������������~|{yy{�| {yvtsqooqstvww�ywtqnl�kigfda�_abdgklnoqstvwwyywvtsq�oqttvy|����|�{|~��������������
����������������������������������
����������������������������������������� ����������������������������������������~�|�~|yvtss�qstvw�y�wtso�n�lkigfbb�a_bdgikloqqstvwwyywvtsq�oqstvy|�����~|�{
|~��������������� ��������������������������������������������������������������������������������������������������������������������~|ywvttss�qstv�w�vs�qonnligffddbbdgkllnq�st�v�w�v tqooqqstw{|~~��~||�{|~����������������������������������������������������������������������������������������������������������������������������������������������~|{wv�t�s�qs�t�v�w vttsqqonki�g�fgilnnoqss�t�v wvvtqooqqstw{�|~�~|�{|~����������������������������������������������������������
���������������������������������������������������������������������������������������������~||yw�v tsqooqsstv�wv�tsqnl�klno�qstvvtsstv�wvsqq�stwy�{|~~|�{|����������������������
�����������������������������������������������������������������������������������������������������������������~||yy�w tsqonoqqsv�w�y wvvwvtqqoo�n�oq�stvwvv�tvwyywsqs�tv�wy{{�|�{|����������������������������������������������������
������������������������������������������������������������������������������ ������~|{{�y wvtsqooqqstvww�ywvvtt�s�t�v�w�vw�ywtst�v�w�vw�{|~~�|~��������������� ����������������������������������������� ��������������������������������������������������������������������������������~�|�{ywvtss�q�stwy�{�|�{y�w�y�wy�wy{ywwvtvw�yvttvy{{|�~��������������������������������������������������� ����������������������������������������������������������������������������� ��������~~||�{ywvtt�stw{||�~|�{|�~�|{�y�{y�w
y{{yvttvw{|�~���������������������������������������� ����������������� ���������������������������������������������������������������������������������������~~|�{ywvttqqsstvw{~~�����~
�����~~{{y{�|{�y
{||{vttvwy|�~�����������������������������������������������������������������������������������������������������������������������������������~{�y�w vtsqqstvwy|����������������~|{|�~|�{�|{w�vwy{�|~������������������������� ���������������������������������������������������������������������� �������������� ��������������������������� ������������~{�ywvvttssttw{|�������������� ������~|~��~�|�{�|�{|y�wy�{�|~���������������������������������������������������������������������������������������������������������������������������������� ������������~{�yw�vy|������������������� �~�����~|{{|�~|{{�y�{ywwywwy�{|~���������������������������������������������������������$�������������������������������������������������������������������������������������������~|{yywyw�v�wy{|���������������������������~|{{|~~�~|{y{{yywyyvtt�v�w
y{|����������
����������������������������������� ������������������������������������������������������������������������������ �����������������~|{yww�v wvvwy{||~�������������������������������~�|~��~�{yw�vt�s�t vwy{~������������� ����������������������������������������������������������������������������������������������� ���������������������� �����������������~|yw�vw�y {|~���������������������������������~�|�~�|{ywv�tsqq�o�q
stvw{~��������� ����������������������������������������������������������������������������������������������������������������
��������������� ��~{wvvwy{�|~������������������������������~�|{wvtt�sqon�l�n
oqtvy|~����������������������������������������������������������������������� ��������������������������� ���������������������������� �����������������~{wvvwy{|~��������������������������������������|{||{yvvttssqonl�k�l
nostw{|~~�������������������������������������������������� ���������������� ������������������������� �������������������������� ���������������~|ywwy{|~����������������������������������~~|�{yw�vtsonlkiik�lostvy{�|�~��������������������������������������������������������������������������������������������������������������������� ������������������~|�{|~��������������������������������������~~|{yywvt�vtsonlk�i�klnqtvyy�{|~���������������������������������������������������� ����������������������������������������������������������� �������������������~�������������������������������������������~|{yw�v�tsonllkkiiklnqtvww�y{|~����������� ����������������������������������������������������������������������������������������������������������� �������������������������� ���������������������������������~|yw�t�sqo�n�l�klnos�t�v�wy{|������� ~��������������������������������������������� ����������������������������������������������������� ������������������������������������������������~�|~��~|{wt�sqo�n�l�no�qstvvwy|������������~ y{|~��������������������������������������������������������������������������������������������������������������������������� ���������������������������������~|{yy{|~~|{yvs�q�o�ln�l�n�oqsvvww{~����~||{vwy{|~��������������������������������������������������� �������������������������������������������������������������������� ��������������������������������~�|{y�wy{{ywvs�qon�l�kl�kl�n�oqtvwwy|��~�|�~�|{w�t vww{{~����������������������������������������������� ������������%�������������������������������������������� ����������������
�������������������������������|~||{{yww�vwvsqnn�olkk�i�k�ik�ln�oqtvvw{�|�{�|�{yv�s�tvw{|~~�������������������������������������������
������������� ���������������������������������������������������������������������������������������~{�y�{yw�vt�s
qnlkklnnlki�g�igffgi�kln�oqstv�wy�{�ywvt�qs�q
tvvwwy|~��������������������������������������������
������������� ��������������������������������������������� ��������������������������������
��������������~{�wv�tsqoonkiggiklkkigg�f dbbdgigiigikn�o�noq�st�wvtvssq�no�n�oqstw{|~���������������������������������������� ������������������������������������������������������ �����������������������������������������|y�vts�qonlkg�fg�i�gfdbbaabd�fgilnn�on�ln�oqs�tsqqoon�klnqtwy{�|~���������������������� ����������������������������������� ������������������ �������������������������������������������������������������������������|{w�t�v tsqoonligg�d�f�d�b a_aabdbbdfgill�nl�ik�lno�sqoollkg�fgknqstvwy{|��������������������
������������������������������������������������������������������������������ ����������������������������������������~{yvt�s tvvtsonlkgfdd�b�dba�_abaabddfi�ki�gi�kln�o�nlkigdbaa�_�a"dgklnoqsty{~�������������������������������������� ���������������������������������������������������������������������������������������������������������|ywvt�s�t vttsokifdb�a�b�a�_abddfba�_a__a�bf�g�f�gi�gik�lkiggffa_^\�Z$\^adfgiklnqvy|~������������������������������������ ������������������������������ ����������������������������������������������������������~|ywvvtss�t�s qnifbaa_^_�a�_�^_abddba_�^�_abd�f�df�gfd�b^\ZY�W$Y\_abdgiknqty{~��������������������������������������������������������������������������������������������������������������������������������������~||ywvvt�s�onlgb_^^\\�^�\^_�a_^\�Z�\^_adb�d�bd�b�a_^�_YWWV�T*VWZ\_adgiklotw{~��������������������������������� ��������������� ����������������� ���������������������������������������#�������������������������~||{ywvtsqq�onlkifa^�Z�\�Z\�^\ZYW�VW�YZ\_�a_^_�a_\�Z\ZZ\\ZT�R'TVWY\^adfiklosw{��������������������������������������
�������������
�����������������������������������������������������������$��������������������������~|{yywvtqon�ligfb_\�Y�Z�\�Z\ZZYWVTR�Q�R�TVWY\^�_^\Z\�^
\YVTVWVVYYVQ�O�QRTVWZ\_adgikloty~������������������������������������������������������������������������������������������������
���������������������������������������|{yywvtqnl�kgdba^Z�Y�Z�\�ZY�WVTRO�M�O�QRTWYZ�\Z�Y�ZYWVROQ�R�TRO�MOQRTWZ^_bfgiknsw|���������������������������������������������������������� �������������� �����������������������������������������+���������������������~|{yywvsonkkiigdb_\ZYWY�Z\ZZ�Y�ZYVTTRQQOM�LM�OQTVWYWYY�WVTRQMLL�M�O�M�LMOQRVY\^adgiknsvy~�������������������������������������������������������������������������������������������������������������)��������������������~|{{ywtqolkiigfb_\ZYWY�ZY�W�YWTRQO�ML�JL�MOQR�T VWWVVTRQMLJJ�I�JLMJLJLL�JLMOQTWZ\adgiklqsv{������������������������������������������������������������������������������������������������������������������������� ��������������������~||{yvsqnlkigfb_\Z�Y�Z�YW�V�WYVROM�LMLJ�IJ�L�MOQRTVVTTQOMLJIG�EGIJIJJLL�J�LMORVY\adgikloqsw~����������������������������������������������������������������������������������������������������������������� ����������������������~|{wtqonlifdba^\�ZYWW�V�WTQML�J�LJI�G IJJIIJJLMQ�RQOMLJIGEDDBBDEG�G'IJLJJIJJLORVY\adfgiknosw|��������������������������������������������������������������������������������������������� �����������������������������������������������~|yvtqolkidbaa^\Z\Z�Y�W�V�WTQOLLJIIJJIEEDDEGG�EGILOQ�OMLJIGGEDAA?ABDE�EGI�J�IJLORVY^adfgiklosw|���������������������������������������������������� ����������������������������������� �������������������������&�����������������������~|{wtsqnkigdba_^�\Z�Y�WVROMLLJ�IGEDD�BDGJL�MLJIGEEDB?==?ABD$BDEIIJJIIJLQTWZ_bdfgiiknqw{��������������������������������������� ���������������������������������������������� �������������������������������������������~{yvtsqligfdba_�^\Z�YW�YWVTQO�MJ�GEDBBAA?==�?ADIIJ�L
JIGEDBAA=<<�?AADEGG�IJMQTW\_bdfgiiknqv{������������������������������������������������������¾��������������������������� �������������������������������������������������~{wvtsoligfdba�_^\ZZ�Y�ZYWVRQ�OMJGEED�BA?<::<<=?BEGIJLLJIGEBA??=<<�=?ADDEE�GJMORW\_bdgikiknqt{����������������������������������������������������������������������������������������������������������������%����������������{wvsqnligfdba_a_^\ZZYY�ZYWVRQO�M JGEEBABBA=:88::<=ABDGIJJIGEEB?==<�:<=?A�BD�E
ILMQVZ^adgi�k nqty~���������������� ����������������������������������������������������������������������������������������������������������������|yvsonlkgfdb�a_^\�Z YWVRQOMLLJIGEB�A?<:�8 :<?ABEGIIG�D
B?=<::88:=?�A�B�D
GJLOTY^adgi�k%nqtw~�����������������������������������������������������������������������������������������������������������������������������������������~{vsqonkgfddbaa_^�\�ZYWVTRQOLLJIGEDA??=<<�8:<=?BDEED�B
A=<<::778<?�?�A3BDGJORW\_bfgiiklosv|��������������������������������������������������������������� ������������������������� ���������������������������������������������~{wtsqoli�fdba_�^\�ZYWVTTRQMLJIGEDA=�<:�8:<=?ABBA�?
=<::88778:=-:<<=<<==?BEIMQVZ^_bdfgiknqty~��������������������������
������������������������������������� �����������������������������������������������������'������������������������~ywttsqnkigffdba�^_^\ZZYWWVTTRQOLJIGEB?<�:�7878:<<=?=�<:8�78:578�:�<(=ADGLORWZ\^_bdfgknqv{|~����������������������� ���������������� ������������������������ �������������������������������������������������������������2����������|ywvvtsonligffdb_^^_^\ZZYWVTRRQOOMLIGDA=:�8755�78�:8�75�4�5245�7�:,<?BEILOTVYYZ^_bdgkotwy{|~����������������������������������������������������������������������������������� �����������������������������������������������~|{ywyvtqqokiffdb�_
a_^\ZYWVRQQ�OLIEBA=:88�754�578875544�2�0�2�4�22/0245578:<?BEILOQTVWYZ^adglqtvwy|���������������������� �������������������������������������������������������������������������������������������������~||�{
ywtsqnkgfdb�a _^\ZYWTRQQ�OLIEBA?<:8�75�4�54�20/�-/�0�20//1,-/0224458=?ADILMORTVWZ\_bgnqstvy|��������������������
�����������������������������������������������������������������������������������������������~|~�|{yvttqnkgfdbbaa_^\YVTR�Q�O�M
LJGDBA=<:87�52�0�20�/-�,-/-�/�,(*-/�0)25:<=AEIJLORTVWYZ^binoqsv{������������������ ��������������������������� ����������������������������������������������������������������������������~�~�|{wvvtqnkgfdba_^\ZWTR�QOM�L JGDB?==<85440/�-�/-�,�*�,*('(*,-�/ 0278:=ADGILOQRTVWZ_dilnqty|������������������������������������������������� �������������������������������������������������������0���������������������~����~~|{wvvtqolgfdba^\ZYVTR�Q�ROM�L JGDBA?=:7420/�,-�,*(�*�(�'�'(*,-�/)0458:=ADEILOQRRTY^adgknsvy|�����������������
������������������������������������������������������������������������������������������������������������~~|{wvtsqolifdba^ZYWVTRQQRTROM�L IEDBA=<8520/,�*�,*�(�*(''%%$$%�%'(,--�/(0257:=ADEILMOQRVY\_bgkosvy|����������������
�������������������� ������������������������� ������������������ ��������������E�����������������������������������~����~|{ywtssqqnkgdb_^ZYWVTRQQRTROM�LMJGDBA?=:520/,**((�* ,*'%'(('%$�"$�%'(,--�/'0457:?BDGJLMORTVY\_bfknsv{����������������
�����������������������������������������������������������������������������%���������������������������~~��~|{ywvs�q olifb_^\ZWVT�RQOMLL�MJGDBAA?<7420-,*((�*(%$$�%$"  "$$%(*,--�/ 02447<=ADGJLO�RVWZ^afkosw~��������������
��������������������� ���������������������������������������������������������������������������������������~|�{yvtq�o nlkgd_^\ZYWV�R�Q�OMLL�MJGEDAA?<8720/-,((�*'$�"�  ""$'*,-//�0�258:=AEILO�QRTWZ^bgnqv{��������������������������������
������������������������������������ ���������������������������������������~|{�ywtqon�lkifa^\ZYWVTRRQQOO�M�OMLIGEBA?=<840/-,�*(%$" �� �"%(,--//�0/�0!478<?DGJLMMOQTVY\_dkoty�������������������������������������������������������������������������������������������������������������������~|{ywvtqnl�k�l kifa^\ZWVTTR�Q�O�MOQQOMLJGDBA?<840/,�*('(%$"  ""$$(,�-/0�20�/"0258<?BEGIJLOQTVYZ^bioty~���������������������������������������������������������������������������������������������������������������������~~�| {yvsqnlkii�k igfb_\ZWVTTR�Q�OQ�R"QOMJGEDA=852/,**('%%$"  "$%'',//--/2�42�//0247<?BDEGIJMORTYZ^agnsw{~������������������������������������������������������������������������������������������������������������������������~|{|{ytqonlk�i�gfba^ZWVTT�R�QRTTVTRQOJIEB?:72/,**('%$"" ���"%'(*�57�87420/-,*('(*,-/002478:<?ABDGJMQR�TVWYZ^adgknqssqqssqoonnll�k�ig�f db_\YTOLJIGEDA�? =<87540/--�,*('%�$"� �"$�%'(�*,�-/24578<?B�D�BD�E�GIJJ�I
JLMQRTTVVTR�Q�RTV�WYZZY�WVTQMLJIJLLJIEDA=:�8�:�8:�<
=?AA?=<:887457�85400/-,(('((*-/0024578:<?BBEIMQR�TVWYZ\_dilosttssts�q�o�n�lkiikk�igfddb_^ZYTOMLJIGEB�A?=875420--,*,*(%$"� � �"$%%'�(,--,,-02457:=ABBDDBB�AB�DGI�G IJLOQRTVVT�Q�RTV�WYZZY�WVTQOL�J�MLIEB?<:�7�8�78::<<=??=<:8875457�8742�0/,�(*-//0224578:=ABDGLOR�TVWYZ\_dinqtvvtvvtssts�q0onlkkllkiigfba_\ZYWTQOMLJIGEDBBA?:75542/-,**('$" ��� ""$%'(*�,-/02458<=?ABDDBA�?A�BA?AD�E�G�IJLOQRTVT�QRTV�W�Y�WVTRQOM�L�M
LIDA=<:7557�57�578�:<=<:�87525�75200220-*�(*,�-/0024578<?ADEJMQRRTVWWYZ\_dinqt�vtssqqonlk�l�kifa_^ZWVVTROMLLJIGEDDB?<7�540/-*('%" ��� "$'(�*,-/02578:=?ABDB?�=�?=<=BDD�E�GIJLOQRTT�QRTVW�V�W�VTRQQO�MLGDA?<:�75445�45�78:�8:87424�54200�2/,�*,�-/0024578:=ADEILOQRVW�YZ\_bglost�v�w vtsqqonlkk�lkifa^\YV�T'ROMLLJIGEEDB?<8775420/,(%$" �� "%'�(*,--/25778<=?ABA?�=<::<?AB�D�EGIJMOQQRR�QRTVV�T�V�TRQQOO�M�OMLJGDBA=:�875445�4�5�78::874�2�4�2�0�20-�,�-/�02457:<=ADGILOQRVY�Z�\_afinqst�vwyywvvtqqonlkilkkiifa^ZWT�RQOMLJ�IGEDB?<:887542/,*'%$" ��� $$%%''(*--/24577:<??AA=�<:878:=A�B�DEGILMMOQ�R�T�R�T�QO�MLMOOLJIGEDB?<::8754242�45�7�8752�2�420020�/-,,-/0�2�458<=?BEIJMOQRVYZ�\^_bfknost�vwyyw�vsonlkiiki�gfb_ZWTR�QOLJ�IGEDB?<:887542/-,*'%$" ���� "$''(*-/0245778<�?=<<�:87557:=?AABDEGIJLLMORTTVVT�R�QOM�L�JLMMLLMMLJ�I GDA?<:8754�2�45�75442�2�4�0�20-,-/2�4�578=??BEILOORTVYZ�\�Z\_bgknoqstvwyyw�vsolkiggig�fdb_ZVRR�Q"OMLIIGGEBA?<:8874420/-,('%$"" ��� $''(*,/0457�8<�=<�:�8754457:<==ABDEGIJJLORTTVTR�QO�MLJ�IGILMM�L JIJJIEDA=:7544�2�4�2 4557554220�0�2�42002�42/--/2445778:=?ABEILOQTVWY�Z�YZ^adgklnostvwwv�tsolki�gfdbba^ZV�RQOOMJIGGEBA?<:885�420/,('%%$" ��� $'((*,/2578�:<==�<�:�<:8754224588:<?ABDEIJJLOR�TRQ�OM�LJI�GILMM�L�J�LJGEB=:75�4202�4�54220�/�0�20/2�420--/0445778:=ABBEIJMQT�W�YWYY\^adgklnqstvwvsstsqlki�gfb�a_\WT�R�Q OLJIGEDBA<:875�4 2/,('%%$" � � �� $'((*,/4578:�<�=�<�:87544�24788:=?ABEIJLLOQ�ROM�L�JI�GILMMLLMM�L�MLIGB=<875544554420�2544�20/�-/00//0�20�/024578:<?ABDGIJMQTWW�V�W�Y!Z\^adilnoqstvtsstsqnlkiigda__^\YVT�R�T�R QOMJIGEDB=:87�540-*('%$"  � ����$'(*,-04578:<�=<:�875�4�24788:<=ABEIJLLMO�QOL�J�I�GI�JMOOMMOO�MLJGB?=<:87557754�2�4�20/-�,�-/-/0�2�02457:<?�A DGIJMRTVVT�RTVWYZZ\^afilnoqst�sqnlkiifb_^^ZYWVT�R�T�R QOMJGGEB=:8755�752/,*('$  � ����$'*,-/24578:<�=<:�875445�4788:=?ADEIIJLMM�OMLJJ�IJ�MOQQOMOQOO�M LJGB?==<:8�74�2�0�2�42/-,�*�,�-/02�4�2458<?�ADGILOR�TR�QRTVWYYZ\_bfiklno�qolkiigda_^\YWVV�T�VT�R QOLIGEB?<8�7�8740-,*(% ����� $'*,-/24457:<�=<:�87�57�578:<?ABEG�IJ�LJ�I�JLO�Q�O�QOMLLJIEBA?=<::88�754�20/0�2�42/-,�*�(�*,-/02554�2478:=�ABDGILOQ�RQ�OQRTVVWYZ^abfgikl�nonlkiggfba_^ZYWVVT�VWVVTTRRQOMJGGDA<:�8:852/-,(% ���  "%'*,/�2 458:==??==<<�:�8�75744578:<ABDGIJJIIJJ�I�JI�G�IJLMOQRR�QROOQRQMLLJIEBAA=<:<::87754�2�02442/-�, *((**,-024554�247:<=?�ABEEGILM�O�Q�OQR�TVWY\_abdfgikiiklkigfddba_^\ZYW�VW�Y�W VTRQOOMJGGEB=<�:�<
8520-*%"�����""$%(,/0224578<=??�=<�:8754458:<=ADGIJLLJ�I�G�I�G�IJLOQQRR�QRQQRRQMLLJIEDBB?=�<:8755�42�0�20/�- ,*((**,-04�54�247:=??�A
DIGIIJLMLLM�OQ�RTVVWY\^_abdffddfigffdba_^\�ZYWVWWYZZYWVTRQOMMLJGGEB?==�< =?<852/,'"������ "$"$%(,/0224578:<=�?=�<:8�57:<=?ADIJ�LJ�IG�EGII�G�IJMQRRTTQQRTRRTRQMLJIGEEDDB?=<:87�54�5�20�/�-,�*,-04�5�47:=?�ABE�I�JLMO�QRT�V WYZ\^_abbaabdd�ba^\Z�Y�W�YZ\\ZYVTRQOMLJIGEDB�A�?�A?<852/($ �� "�$'*-/0245578::<=�?=�<:8�78:<=?ADIJ�LJ�IG�EGIIGG�I JMQRRTTRQR�TRQMLJGEE�GEB?=:87�5�7540�-�-,�*�,-/04�5�458<?�ABDGGII�G�IJLOQQ�OQRT�V
WYZ\^__^^_a�_�\ZYWWVVWWYYZ\^\ZYVTQOLJJGGDD�BABBA=<850*%"�� "�$'*//02�5�7�8:<==�?=<�:8�7 8::<=ADIJJLLJ�IE�DE�GIJ�I JMQRRTTRQQ�R�Q�MLIGG�IGDA?<:87�5�7540�-,�,�*,-/0024�5 7:=?AA??AABBDE�G�EGIIJMOOMMOQRTVVTTVWYZ�\�^�\�^�\ZYWVTTVWYYZ\^^\ZWVROLJJGE�D�E�DB?=:72-($�� "�$%(,/024�5�7�8�:�<=�?=:�8755778:<=ADGIIJLJ�IE�D�EGI�JLMOQQ�R�Q�OML�JIGDA?=:87�5�7540�-,�*,-/0224�578:=??A�?�ABAAB�EDEGGIL�M OQRTVVTRTVWYZZ�YZ\\�ZYVTTRTVWYZZ\\ZYWVROLIIE�D�GEDBA?<850,% �� ""$$"$%%(*-/024�5�7:�8�:=�?<87�5 78:=?ADEGI�JIGE�DEGJ�L�M�O�QRQQOO�M�O�M�L�JGBA?<:87�5420//-*�(*,,-/24�5�7�57:<=�?�A�?AB�D
EGIJLLMOQRT�VTRRTVWYYW�VWY�ZYVTTRRTVY�Z YWVTROLIGE�DEG�I GEDBA=:72-($���� "$$""$'(*,-/024�578::�8:=??=:75�4�578<?ABDEG�I�JIGEE�DEGJLL�M�OQRRQOO�M�OMLIEBA=<:8775544�20-*�*(,-/02457�8�78:=?A�?A??==??�ABDEGGIJMORTTVTRR�QRVWWVTR�TVWYY�ZYWTTRTTVWYZZYWVVRQOMJIG�E�DEG�IJIGEDA=:82/,'"�" "$$""$'(*,--/024457�8:<==:85424244578<?B�E�G�IGE�DEG�JLMLMM�OQRR�OMOO�Q�O�QOMJGDA?=<:88775422442/,�,-/25778:�<�:<?AA�?�=?AD�EGILOR�TRQQ�OQTVVTRQR�TVWYZZ�YVTTVVWWYZZYVTTQO�MLI�G�EGI�JIGEB?<840/,'" � �"$%'(*�,-/0245�78�:�<:87422422457:=AD�G�EGEEGGE�D�EGI�J�LMO�QRTR�OQ�RQ�O QRRQMLIEBA?=�<
:875445540-�- /0278::<=??=�<=?ABA�?=�<�:<=ADEDEGIJMQRTTRQO�MOQRRQ�O�QRTVW�YW�V�W�ZYWTRRO�MLJII�GIJ�LJIGDA=:542/*'$ ��� �"$%'(*�,-/024�578�<875420202457:?BE�G�E�D�E�I�JLM�Q�TR�OQ�RQO�Q�TROLIGDBA?=??=:87�5754/�0247:<�=?AA?�=?A�B�A?<�:�8 :=ABDDEGIJLOQ�RQM�LM�O�M�OQRT�VWYYW�V
WYZYWVTRQOM�LJ�I�JLMMLLJIGEB?<8740-*%" � � �"$%'(*�,-/04�57:�=<87542�02478<ADE�G�E�DE�GI�J�L�JLO�QRTTRQOOQ�R�Q�R�TRQMJIGDB�A
?<::8778752�4578<=�?�A?�=?AA�B�A?<:88:8�7 8<=ABBEGJJLOO�QOL�J�M�L�MQRR�TV�W�V�T
WYYWVTRROML�J�L�J�LJ�M�LJIGEB?<:852/,'$ � "� "�$�"$%'*,�-,--04�7�8 :==??=<87442�02478=ABE�G�EG�I�J�LM�L MOQQRTTRQQ�OQRR�Q�R�T ROMLJEEDBBA?�=<�8754�7�8:<?�A�?�AB�DBA?=:88:8�7
8:<?ABDGJLM�OML�J�L�M�L�MO�QRT�V�T
VWWVTTRQMLJ�I�J�L�M�LJIGEB?<:852/,'$� �"� "�$�%�$%'(,-�/�-058::�<=??=<:7�4�2 47:=?ADEGG�I�GI�JL�M�O�QRTTRQ�OQ�R�T RQOLIGEDBB�A?<::877�:<=?�B�A�B�EDA??<:88�7
8:<??ABGJLM�O�MLJ�I�J�M�L�MOQ�R�TRTTROLJJIGGIIJJ�MLJ�I EDB?<8852/,($�"$�"�$�%(*,/�0�/278::<==<<=?==<8�5422458<=??ABEGII�J�IGI�JLJLL�MOQ�RTRQQ�O�Q�R�T�V�TRQMJIG�D�B�DB=<<:88�=?AD�ED�B�D EGGEDBA?=<:8�7 8:<=??ABEIJL�MJ�I�GIJ�LJ�IJLM�OQR�T RQQRRQMLJJIGG�IJ�MLJI�G EDB?<8752/,(%�$$�"$%�'(*,/�02478::<==�<�= <:87754457:<=�?ADGII�J�IJ�L�MOQR�TRQQ�OQ�RTV�WV�TROLIGEEGEEGGDA?=�<�A�BABDE�G�E�D�E�GEDBA??=<:�8 :<=??AADGI�J�LJ�IGEG�I�JG�E�GILMOQR�TQOOQQOLJIJIGGIGGJMM�L�J�I�G�E
DBA=:752/,(�%$$ ""� "$�'(*,/�0�2�478::�< =<::8875578:<<�?BGII�J�I
JLLMMOQQRRT�VTRR�Q�R�QRTV�WVTTVVTROLJIGIJIIJIGBB�?�D�EG�I�J�I�G�EDBA�?=�<�:<?�ABDE�GI�J�IGEEG�E�GEDD�B�DEILOQ�RQO�MLJIIJIGGIGGILLJ�I�JIGEEDBA=:742/,('%%$"� � "%'((*,-//02�4578�:�<�:�8�:<=�?BEGI�JLMOQ�RTV�WV�TR�QRT�VTQMLLJIJ�LJIEDBBDD�G�I�JL�M�L�J�IJIG�E�DBA�?�=�< =?BAA?AABD�E�G�IG�D�EDBBA??AABEIMOQRQQOML�J�I�JI�G�I�GIJLJIEEBA?<8522/,*('%$"� � "%'�*,-/045544557788:�<�:�8�:�< =??ADEGIJL�JLOQ�RT�W�V�WVRQQOQR�T�VTROMLL�JL�MLJIEDEGG�I�J�LM�OM�LJIG�EDBAABBA?�=?ABA�?AB�D�EGIIGD�BDEEDBA?==??ADGJLOQOMLLJ�I�JI�G�EGIJLJIEDBA=:7520-,*('%$"� � $%'*,,**,/2455�4�5�78:�<�=<�:�<=?AABDGIJ�L�JLO�Q�RTVWW�VW�YWTRQOOQ�RTVVTRQOM�LM�OMLJGEGII�JL�MO�Q�RQOOMLIIGGEEDDBB�D B??AABB?==�?�ABDEEGGE�B�A�BDBA?=<=�? BEIJMOMLJJII�G�I�J�GIG�E�DEIJLJGDBBA=:750/,**('%$�" � "%''*,,**,/2�4�24557�8:<<�=�<�=�?�ABEGIJL�M�JLOO�Q�RTVWY�WY�ZYVRQ�O�QRTTRQOMMLLMOOQQOOMLJ�I�J�L�JL�MO�RTVVTRQML�JIG�ED�B?==??�=?ABDDEED�B�A?=<<=�?ADGIJLLJ�I�GIJJIGGIG�E�DEIJJIEDBBA=:850-,*('%%$�" � $'((*�,/�2 4578::88:<�=�<�=?�ABDG�IJM�OMLLJJL�MOQQRTVWWYYWWY\\ZYWTRQ�O�QO�MOQRRQOML�J�L�M�J�LMO�TWYYWVRO�LJIGGIIGGE�DBAA?=<==�<?AAB�D�BA?AA�?�=�<=�?ADEGIJ�I�GIJ�I�G�EDEEGIIGEDBBA=<850-,*('%$"�"� � "'(**,�-�,/2�0�2�4578:88:<<�=�<�=�?�ABDG�IJM�O�MLJLMLLMQQRTVWWYYWWY\^\YWTRQ�O�QM�OQRRQOML�JLM�MLJJLLMQTVVYZZYWTQ�ML�J IGEDDEEDBAA?=�<�:<==?A�BA??AA?�=?==?AA�?ABEG�I�G
IGGIJJIJJIG�E�GEDBA?=<852/,*'%$" � � "%(*,-�/�-/�0�2457�8�:<�=�<=�?�A�BDE�GIL�M�OM�L�JLOQRRTV�W Y\^\ZWVTRQ�O�MO�Q�O�QOML�JLM�O�M�LMLMQTWWZ�\YVTQO�M�LJGG�ED�B?=<<::�8�:<=?�A�?�=�?�A�?ABE�G�E IGIJLLJLJI�G�I�G�EDB?==<840-*(%$" ��� "$'*,-�/�0�/�0/25�7�8:<�=�<=??�A�B�DG�J MOOMLLJIJLMQ�RT�V WY\^\\YWVTRQOO�M�OQOOQOOMLJ�LMO�O�MQVWYZ\^^\YWVROMM�LJ�IGE�DA=<<:�8�78:<�=�?�=?�A�?ADEE�D�E�GIJ�LJ�I�JIGEDBA=<<:740-*'$"   "$%%'*-�/�0�/�- 0455445778:<�=�<=?ABBAA�BD�GIL�MLJIIJLMO�QR�TVWZ�\�ZYWVRQO�M�O�QOMLM�O�O�Q�ORVWY\^�_\ZYVROM�LJIIJGE�DB?=<�:�8�78:�<=??�=�<=�A�?ABDD�BD�E�IJLMLL�JILLJIEBA?<::8540-*(%$ � "$''(*-�0200�/�-�,-0220224577:<==<<=?ABDBA?�ABDEIJ�LJIGIIJM�ORQRRVWYYZ�\ZYWTRQOO�M�L�MOQRRQOO�QO�O�QTWYZ^_�a _^ZYVROMLLMML�JIG�E�DB?=�<:8�78�:<�=<�:<?�A�?�A�B�ABD�E�GIJ�L�J�LJIEB?=<:87542/,*(%"�  $'(*,-0�20//--,,�*,-�/�024557:<<:<=?ABDBA�?�A�?ADG�I�GIL�M�OQRTVWWYZ�\ZYVTRQO�M LJJLMMOQRRQQRR�QO�Q�RVYZ\_a�b a_\ZWTQOMMOOM�LJGEEGGEDBA?=<<::8�7�8:�<:8::<=?AA�=�?�ABDD�EGIJJL�J�LJIGDA?=<:75440-*(%" �  $'*,-/022�0�-�,*,�*�(*,�-/0244578�:=?ABDBA?�A�?=??BDE�G�EGJ�LMOQRT�WYZ\\ZYVTRQMMLLMMLJIIJMMOQR�Q�R�Q�R�T�VWZ\^a�ba_^ZWVTR�QO�M LIGGIIGEDBA?=<�:�8�:�8�:�<=??�=?�ABD�E�DEG�IJ�LJIGGEBAA?<875540,(%$" "$'*-//�0�/-,�*�,*�(*�,-/2�4 578::<=?ABBAA�B?==??AAB�DEGIJLL�JLOOQRV�WYZ\ZWVTQOMMLLMMLJIIJMOQRR�Q�R�T�V�WY\__b�dba__\YWVT�R�Q�OMJ�I�GEDB?=�<�:�8�7�8�:�<�= ?ABAA??ABE�G�ED�BD�EGI�JIGEEDBA?<:88752-*'%$"" �"$'*-�/�-�,�*�(*((*,/0�2 4578:<==??ABB�DB??=�?�ADEG�I�J�IJMMOQR�VWYZYWTRQ�O�ML�JMORTR�Q�R�TV�V�W�YZ\_aab�d baa_^ZYWVV�TRQOL�JIGEB?�=�<:�87�5�7�8�:<=?A�BA??ABE�G�EDB�A�BDEGII�JIG�EDBA=<::8740-*'%% %$  "$'*,--�/�-,�*(�' (*-/0024578:<�=?BD�EDBAA�?�=?BEG�I�J�I JLMOOQRTVW�YWTR�QOMM�LMQTT�R�TV�W�W�Y�Z\^�ab�d baba_\ZYWW�VWVROM�LMLJIGEA�?�<�=:�8�7�5�7 8::<=?AABB�A�BDEGGEDBA�?ABDEGII�LJIGGIGEDA=::8852/*(''�' $" ""$'(*,-//�-�,*,*('�$�% '*-/02247:�=?BD�E�DBA�?=�<=?DEGGIIJ�IJLLMOQQRV�W
YWVTTRRQQOM�L�MOQ�T�V�W�Y�Z \^^_aba_ab�d�ba_^\\ZZ�YWTQO�M�OMLJIGDBAA=<<==<:�8�78:<=�?A�B�D�EDBA?==?ABDEGIJMOOML�JIEB?<:8874/,**(�('%�$ %''(*-//-,-//�-�,*'$�"�$ %(,/02247<�?�=?AB�DB�A?<�:�<=ADEGIJJIIJJLLMOQQRV�W�Y�WVTRQOMLLMMOOQRTTVWY�Z�Y\^^\\^_abdda__ab�dba__�^�\�ZYVRQOO�Q OMLJIGEBA?�=�<�:875�78:<=�?�A�BDEEDD�EDBA�? ABDDEILOQQOL�JIEB?=<::840--,*�(�%�' (*,--,,-/0�/�0/,*(%�"�$ %(,-02248<�?=??A�BDB�A?=<�:�<=?BEGIJJIJLJLLMOOQRVWVWY�ZYVTRQO�M QOQRVWYZ\^^\\�Z^__^^_adffda__ab�db�a�_^\ZWVTRRTTRRQOMLJJIEBAA?�=<:87�5�78:<=?�ABDEGG�EDB�A�B�DEILOQQOL�JIEBA?=<:8520/-*�(�*�(�'(*,--,,-/�0�2/,(%$�"�$ %(,-/0248<==�?�=?�A�B�A?=<�:�<=?BEG�IJLMLLM�OQRTVVWZ�\ZYWVTRQ�O�Q RTWZ\^^__^�\^�_�afggdbaabb�d�b dfdbdbb_^\ZYW�V�T
RQOMLLJGDBA�?�=<87�5�78:=??B�ABDEGII�GED�B�D�EILOQQOM�JIEDDA=<:87520-*(*�,�( '(*,--,-//�02-*'$�"�$�%(*,-/048<=<??=<<=?�A�B�A =<::<==??BDE�GJLM�L�M�OQRTVWZ\\^^\ZYWVT�R�QRTVY\^�_�^�^�_abfggf�dfgig�fdba__^Z�Y�W VTROMLJIGD�A?=:87�5�78<?AA�BDEG�IG�E�DE�GIJMQQOMLJ�I�G EB?<:88740-**,�-,*((*�-/�0�/,(%$�"�$%''(*,,-/27:<<==<:<=?ABBAAB�DBA=�<=?�A�BDEGGILMMLLMMOOQQRVYZZ\^^\\ZYW�VTRTVWZ\^�_�^�^�_adfgg�f�d�b�d�fgi�k�igfdbba_^�\�Z YWVRQMLJIE�BA?=:88554558:<=�A�B�D�EGIGGII�JIG�EG�I�JLOOMMLJ�GEDA=�:850-,�,-�/-�,-//02200//--,('$$�"�%�(�*,-058:<=<::<=?BDDAABDEEDA?�=?AABB�DEGGIJMOMM�O�QRV�YZ�\�ZW�VWY\\�^�\�^�^�_abf�g fddbbdfgik�lkig�fdb�a_^\ZYWTQMLJGEDDBA=<::75457:=?A�BD�E�G�IJLLJI�GI�J�LI�G EDB?<::872/-�-/�0�/0245420//-,('%$$""$�'(�* ,-/258<<::<<=A�D�BD�EDB�A�BD�EG�IJMOO�QRTW�YZ�\�^�_^Z�YZ\�^�\�^�^�abdg�i�gf�dfgil�o�nli�gf�d�a
_^ZZWTQMLIE�DB?=<:87578:?BDEDDE�GE�G IJIJLMLLJIJL�M�J�IGE�G EDB?<:87740/�/�0 24578542//-*'%�$%�(�*(�*�,-047�:<=A�DBEGE�DE�DE�G�IJLMOO�R�TV�YZ\�^�_�a_�\^_�a�_^\\^^ ^_bbdfiklkig�f�gilossq�onki�g�f�g fddba^\ZWTQMJG�EDBA=<:�8:<?DE�G�I�GI�JL�OMLMO�QOLJIIGG�E�G�E DBA?<8755420�0�24578::8740/-*'%$$%%'(**((*((*�,-/2578�:<?AB�DEGEDDEGII�GI�J�IJLMOOQRT�V�WY�Z\^�_a�ba__ab�db�a_^^_^_abdfgk�lki�gikkoqssqqooqolki�g�i�gfda^\ZYTQMJIGGEDD?=<<::<?AEG�I�G�I�JM�QOMQ�RQMLIIGE�DEGGEDBA?=<:7745422�2�024578:<<::874/-*('%%''(*,,((*((*�,�/ 245788:=AB�D�EDEIJJLJJIIJLMLLJJLMOQQRRTW�Y�Z�\^_�ab�dfggf�dba�_�abdfi�lk�iklnq�s�q�onk�ik�lkgfda__^YTQOLJIIGEBA??==?BDEG�I�GIJJIIJLO�R�Q RTTRRQOMJIGED�BDEGGEDA?=<:87755�4�54�2458::<==<<:850-,*(''((*�,*�(*�, -/0224578<?AB�D�EGJLLMM�LMOQO�MOQR�TVY�Z�\^_a�bd�f�g�ig�fdba�__abdfik�l�knossttq�sq�on�ln�onkgf�ba^WTROMLLIGDDBBAABDEGIJ�IJI�G�JLMQR�TVTRRQOMLIGEDABBDE�GDA?=<::�8�7�8�7�578<==�?=:850-,,�*,�-,�(,--,--/002478<??ABBDD�EGJLLM�OQRTR�QRT�VW�Z\ZZ\\^_abddbbdf�g�i�k iggffdb_^_^_abfgik�lnqssttssttsqqss�q�sqolig�f da\YWTRQOLIGG�E�GIJJ�I�JI�GIL�MOQRTT�V
TRQQOMLJIGD�BDE�GEB?=�<�:�<�=<�:<=??�A=:752/--�,�-,*�(,--�,-/0247:<�=?ABDE�GIJLMOQRTV�WV�TVWYWWY�Z�\^_ab�d�f�gi�kigffdb_^^�^
_bfgiikklln�ono�q�s�t�st�v�tsqonk�i
fb_^\YWTROL�J�I�G�JI�GILOOQQRRTVWWVVRRQOMLLJJIGE�D�EBA?<�=�?==?ABBAA?==?AABBAA=<7540//--�,�-,�*,--,**,-/245:<==<=?ADEG�IJLMORTWY�ZYW�Y Z\ZYZ\Z\\^\\�^�_abddff�g�k�igfda_^^�^_bfg�iklnoqss�q�s�t�vw�ywvtsqon�lkgdba_^ZWVRQOMM�OMLJII�G�I�GIJMOQ�R
TVWWVTRRQOM�L�JIGE�DBA?==�?ABBAABD�EBAA�B A?=<875420/-�,�-,�*�,*((*,/2458<==<<=ADEGI�J LMORVYZ\^^\\�^�_^�\^__^^_�a�bdfg�i�gi�k�lk�igda__^�^ _adfgiklnqqs�t�s�tvwy�|{ywts�qonnkgfba_\YWVTR�Q�ROMLJ�I�GILOQQR�QRT�V�TRQO�M�LJGGEEDDBA�?�=?AAB�DDE�G�IEDDED�B A?<::887520/�,*�,*�(�*�(*,-0457:<=<<=?BDGI�J LMOTWYZ^aa__a�b a^^\^_aa__ab�d�fgi�k�ik�lk�igfba_^
^_aabdgiloq�stv�wvtt�stvw{|�~|{wv�tsoonkgdb_^ZYWVT�R�TROMMLJJLJ�I�GIJMO�Q�OQR�TRQ�O�QOMLJ�IGEDA?�=?ABD�EG�I�JI�GEDBBA?<�: 87420-,*((**('�%'�(*,-04578:�<=?ADG�I�JLMQTWYZ_�bd�fdb_^\^_a�bdfg�iklnn�l�nlk�igdba_�a dfgknqssttvw�{
yvtsstvw{~�����#~|ywwvvtsqolifb_^ZYYVVTVTVTROMOMLLML�I LMOOQQOOMMOQ�R�Q�RQOM�LJIGEA=<�=?BDEGEGG�J�IGEBA?=<�:8740-,(�'�%�$�%'�(*,-04578::<<=?ADEG�IJLMOQTVYZ_bdfggiigfda^\^_adffi�klnoonnoo�q�onlk�igfdbdbabfgiloqsstvw{�| {wvttvy{~���������|{yywvvtsolifb_^\ZY�W�VTRQOO�MLJIIJLM�O�MO�QR�TRQ�OMLJIGB?�=?ABDEGGIJ�LJ�IGDA=�<�:850-,(�%�$�%'�(*,/24578�:=ABDEGIJJLMOQRTVY\_bfi�kigfb_^^_bfgilnn�l�no�q�sqonl�kigffdbdgiklqqsstwy|�~�|{ywwy{|��������+�||{{wvvtsolifda_^\ZYYZYWVVTRQOMOOMLJJIJLMOO�MOMM�O�QRT�R�QOMLJIGDB�?ABDEGILMOMLLMJ�IGDA=�<�:
8750-*'%$$"�$%''�(*,/24557�8 <ABDEGILLM�QRTWZ^adgillkkigfb�adfil�n�o�q�s�t�s qonllklkiggffgiklnqsttvy|~���~�|�~��������~~|{wvttsolkgfba_^�\ZYWWVTRQ�OML�JLMOO�M�OQRR�Q�R�QOLJI�GEB�ABEGIJMOQO�MLJII�GEDB?=<<�:87540-*'%$""$$%%'�(*,-024457�8 <?BEGIJMOQ�RTVY\_bfgi�kigf�dfgk�n�o�qs�tvwvt�s�tsqon�lki�ikllnnoqstvw{�������������������~|{wvtssqnlgfba__�^\ZYYWVTQOOMLJIIJJLMOO�MO�Q�O�R�Q�O�QOLJIG�IGED�BDEIJJMO�Q�OLJII�EDB?=<=::875540/,'%�"$%�'(*�(*,-/0245�7
8<?BEILMQQR�TVWZ^adfg�i�g�fgil�n�qs�tvwywvv�t�w vttsqonnlklno�q stvw{~���������������������~|{wvtssqolifdbaa�_ ^\ZYYWVRQOLJ�IJLM�O�MO�Q�OQ�RQOMO�QOMLJII�JIG�EGIJJLO�QOLIGG�EDB?�= <:8755420-(%�"$%�'(**((*,�-/245�78<?BEJMQ�R
TVVWY\_bddf�gikl�no�qs�tvw�ywvvwyyw�vtqonloq�s tstvwy|��������������������"���~|yvvtsqonligfdbbaabb_\ZYYWVTQMJ�IJM�O�M�OQ�RQOMM�OML�J�L�J�I�G�IJM�OMJG�EDBA?==<<:855422/(%"" "$�'(�*!,-//-/0457557<ADGLMQRTTVWYZ\^abdbd�f�g�i�knln�o�qs�tvwy�{�|yww�y�w�ywtsqo�t�v wy|�������������������~{wvvtsonllkigfd�b�da^\ZYYWVRMJIIJJLM�OM�L�M�OQ�RQOO�MLJJL�ML�J�IJL�M�LJG�EDBA?=<<=<:75442/*'$" "%�'(*,--�/04�57<AEILMQRTVWYZ\^_a�bd�f�g�i klnoqooqss�qst�vwy{|�~|{{�y {yy{{ywvvtyw�v�w y{~��������������������~|ywvvtqonlnnlkgf�b�d b_^\ZZYWTOLJJ�LM�OM�LJL�J�MO�QRQQOMLLJ�LJLMOOML�J�L�MJIIJL�J�IE�D�EDBA??=<=?=<87552/*(%" "$%''(*,-�/�0�4�57:AEILMQRTWYZZ\^_abab�dfgiikloq�svwwvvwy{|��~|{{y{y{�|�{y|{y�w�y{|~���������������~{ywwvtqonnoonlifbb�d b_^\\ZYVRO�M�OL�J�I�JLM�O�QOMLJIJ�LMOQQOM�LMOQQOL�JI�GE�D�EDA?==<<=?=<:8752/,*'$�"$%'(**,-//--/02�4�57:?DILOQRTWYZZ\^_�ab�dfikklnqs�t�s�t wyywwyy{|����~||�{|�~�~|�{�|����������������������~|y�wtq�onligdd�f dba_^^\ZWTQOM�O�ML�I�G�IJ�L�MOMLLJI�J�LO�QO�M ORTRQMLJIGG�E�DEDA?<<::<=<<:8540/-,(%�$%''((*,�-�,-024�5 7:?BGLQQRTWZ�\�_abd�fiklnoqs�t�st�vw�y�{|~������~~|�~�����~~�� ������������������������~{�yvs�qonlkigff�g fdbba_^\YVRQ�OM�LJG�EG�IJ�L�J�LMOQRR�Q RTVTQOMJGEE�D�E�DB?<�: 87420//-,('%%'�(*�,�*,/25�78<?BGLQRTVWZ\^^�_abf�gikno�qsttsstv�wy|�~������������������ ��������������������������|{y{wvsqqolki�g�i gfddba^ZYVTQ�OMJJIGE�D EIIGGEEDDEEGIJ�L�MOR�TVWTRQOJGEE�D�E�D�BA?<�:�8 75420//--,*((�*�(,/257�8<=ABGJQRVWYZZ^^�_ abfgikkloqqooq�svw�y�wy~�������������������������������������������������~|{{ywtsqolki�gi�kiggfda^\ZWTQOOMJIGED�BDEGGEEDBAABDEGILM�OQTVV�WVTROLIG�EDBAA?<�:877�5420�/�-,**((''(,/257:<<=?BDGJORVY�Z\�^
_aabdfgklno�q�o�qstw�y{~����������������������������������������������������|{ywvtsolkigg�i�k�l�kigb__\YVROOMJIGEDB�D�E�D
BA??ABDEGLO�QRVVWYYZZYYWVTOMJI�EG�E�G�E�DBA?<�:�87442�0�/-,**(('((,/257<�=ADDGJORVYZZ\\^^\_abf�gklo�q�o�qsvy{{�y�{�~ �������~~�����������������������������������������~{ywwvtqnkigg�i�kl�nlifba^ZWTQOMLJIEDD�EDBA�?�ABDGLOQ�R�T�V WYZ\^\ZZYVQOMJ�GI�G�IG�EDBA=<�:�<8�5�42�0/-�,
*((**,/258<�=
ADEILORTWYZ�\^_dg�iklo�qsvy�{�|�~�������~���������������������������������������������~|y�wtqnkiggi�g+iknqqonlgfd_\YVRQMLJJGEDEEGGEEBA?=??A?ADGLOR�T�V WY\^_^\\ZWRQOL�IJ�G�I�GIGEB?�<�=�?
<8875577542�0/--,�*�,/047:<=??BDGJMORTWY�Z\_dik�iko�qstvyy{|~~��~~�������~�����������������������������������������~{yywtqnlk�i�gilossqonkifa^ZYVROMLLIG�E�GEDA?�=�?ADGLORTVV�WYZ^�_^\YVRQM�J�I�JIGDA�=�?�A
?<:8778:854�20/-�,-/2457:<=?ABDGJMORTVW�YZ\_dg�ikno�qstvvwy{~���������~����������������������������������������������������||{wvsonl�knossqqonkgb^\ZVRQOMMJIG�EBA?=�< =ABEJMRRVW�Y�W�YZ^_a_�a^ZWTQML�J�LJIGDB�?�A�BA=�:<875�420/�-/04�5 8:=?ABBGJMORTT�V WYZ\_bfggiikno�q oqstvvwy|�����������~������������������������������ �����������������������|ywvsonll�noq�sqolid_^\WTRRQOLJIGEDBA??=<�:=ABEIMQRV�Y�Z\_�a�b_\WTQOM�L�MLJIGEDB�A�BA=�<8�752�024�5 78<?AABEILMQ�RTWYZ\^_bdfgiknoqssqoqsstvw{~���������~~�������������������������������������������������������~{ywso�n�q�s�tsqnkfa_\YWVTROLJIGDBAA==<<�:<?BEIMQRV�YZ\^\^_a�b_\YTRQOMMLLM�OMJIIGGEDD�BD�BA?�=<:8�7�854�245�7 578:=AABDGJMO�QRVYZ�\_abdgiloqssqoqsstvw{�~���������~~��������������������������������������������������������~|ytqooqs�t�vtsolgda^\ZYVRQMLIGDBAA=�<�: <?BGJMQTVWWYZ^�_a�ba^ZYVTRQOOMMO�QOL�JIGE�DBA?==<:�8:<<:7�57�8�7
8:<?ABBDGLM�OQRTW�Z\^abfgknqssqqsttvwy|�~����������������������������
��������������������������������~{vsqqstv�w�v�wtsqnkgba_^ZWTROMJIEDBB?�<�:<=ABGJMQTVWWY\_�a_\ZYWVTRQQOOQ�TRQMM�LMLIGEE�DBA?==<<�:<=�?<:88:<::8778:<==?ABDIJMM�OQRTWWYYZ^abdfiloqsqqsttvy{�~�������������������������������������������������������������������|yv�tvy�{y�wvtsqnifdba^YVTRQMJGEEDA=�<=?BDGJORTVWWY\_aa�ba�_^\ZYWVTT�RTWYWVRQQ�OMLJIG�EDBAA??==�<=?A�B A?==??=<:878:�<=?ABEILM�OQRTVWYZ^abdfiklo�q stvw{|~~��������
��������������������������������������������������������������~{y�wy|�~|y�w*vsokigfda\YVTROLIIGED?=<<==?ADEILORTVWWY\^a�ba_^�_^\YWVVT
VTTVWYZZYWT�R QOMLJIGGEDBBA�?�=?AD�EDBABDDB?<:788::<==?ADGIL�O�QRTVWZ\_abdgikloqstvwy{|~���� ����������������������������������������������������������~�|~��~{�y0wtolkigfda\YVTQOLJIGEB?==?ABDEGILORTVVWYZ\_bba_^^�_^\YW�V�WYZ�\ZYWVTT�V TRQOMLJIGEDDB�ABE�GEDEGGEB?<�8
:<==?ADEGJM�O�QRTVWZ\^_abfgiknqstvwy{|~�����������������������������������������������������������������������~|�{ywtonlkgffb_ZWVRQMLIGEDA?ABDE�GIJMQ�RVWWZ^ab_^\\^__^\ZY�W�YZ\\�^\ZYW�V WVTRQOMLJJIGEE�DBDG�IG�I0D?=::88::<<=?BDGIJLMMOOQRVWZ\^^_bfgiknoqstvy{||�������������������������������������������������������������������������������~||�{ywtqonligfda^ZYVROLIGEEDBDEG�I�GILO�QRTVY\_a_^\\^_a_^\\�Z�\^__^\ZYWVVWWVTRQO�MLJ�IGEGI�JIEA?=<�:<=ADG�IJLMOQRVY\�^(_bfgiknoqqstwy{|~������������������������������������������������������������������������������~||�{ywtqqonkigfba^ZWTQMJI�G EGGIJJIGGILOQQOQRTWZ^__^\\^_a__^^�\�_�^_aa_^ZYWVVWWVTRQQOQQOO�M�LJIIJ�LJIEBAA=<�:<=AD�GIJLOQTVZ\\^^adfgiloqqsstvwy|~���������������������������������������������#�����������������������������������������~|�{ywvsqoonligfda\YVROLJ�IJLLJIGILOQQOQRTWZ^�_�^_�a�_abba__�a_^ZY�WVTR�Q�RQ�OM�L�MJGEEDB?=�<?BE�GIJLORVWZ\\^_bfgiknqss�tvy|�~�������������������������������������������������������������������������������|{{y�wtq�o nkiggd^ZVROML�J�LJIILM�OQRTWZ�^_�bbddb_�a^\ZY�WVTTR�QRTT�VTRRQQOM�L�OMJ�GEDAA?�=�<?BE�GILORTWZ\^_adggiloq�s�tvw{�|~���������������������������������������������������������������������� ���������~||y�wvsq�o nlkifa\WTQOM�L�M LJJLLMMOQRVY\�^�_a�d�f�db�a�_^ZYWWT�R�QRTVWW�YWVTTRQMLM�OMJ�I#GEDDBA??==?BEGIIGGILORTWZ^_adgiiknoq�s�t�vw{�|~���������������������������������������������������������������������������������~|{ywwvts�q
onlid_ZWTRO�M�OM�LMOQRVY�\^_abbd�f�g�db�a_\ZYWTR�QRTWZZ�\ZYWTROMM�OMLJJIGGEGEDAA??ABEG�I�JMORVY\_abfillnooqs�t�vw{�|�������������������������������������������������������������������������������������~|{ywvvt�s
qonkgb^ZYVR�Q�O�QOMMLLMOQTWYZZ\^abdd�f�g�fdb�a_^\ZYVR�Q�RTVY\^�_\YVTRQ�O�QOMLJJ�IGEDBAABDEGIJLMMOQTW\_abfgkno�qst�v wy{||~����������������������������������$���������������������������������������������������������~|{{ywv�t
sqolida^ZWT�R�T�R QOMLLMORVW�Y\^ab�d�f�gi�gfd�b�a�_�^\ZWT�RTVWZ^_b�d�b_ZWVTR�QOMLJ�LJIGED�BDEGIJM�Q RVW\_bdgkloq�stvv�w y{{||���������������������������������������������������������������������������������~~|{yw�v
tsonkgda^ZW�V�WVTRQOMMOQTWYZYY\_a�b�dfgi�igfddfdba_�^\ZWV�TVWYZ^adgigfda\YWVT�RQMLL�MLJIGE�D�EGILORTTVWY\_bfilnoqstv�wy�{
|~||~�������������������������������������������������������������������������������|{�y wvsoonlida^\�Y�Z
WVTRRQQRTWY�Z\_a�ba�b�dfi�igfddffdb_�^\^^\YW�VWYZ^bfgkigda^ZYWVVTT�RMLL�M#LJIGEDDEGGIJMQTVVWYZ^_bgklnostvwyy{|�~��~�������������������������������������������������������������������������������~�|{wt�qolifba^\\^\\^^\ZYWVVTTVYZZ�\^_bddb�a�b�dfg�ig�f da__^\\^\ZYY�W Y\_bfgiigda^\Z�YWVTTRO�M�L"JIGEEGIJLMQTVWWYZ\_adgklnqtvwy{|~���������������������������������������������������������������������������������������������� ~|yvtsqqonkgfb�a�_ ^\\ZWWVWYZ�^�\^_bdd�abd�f�i�g�fda�_�^�\�Z�YZ^adg�igfa^^�\YWVTROO�MLMLJ�IJMOQTVWYYZ\^abfgkloqtw{|~�����������������������������������������������������������������������������������������������|ywts�qonligfd�ba__^ZYYZZ\_aa_^^_abdb�abdfggff�gfddbb�a_^�\�^�\
^abdgiiggfb�_^\ZYVRQQO�M�OM�LMQTVWYZ�\^_bfiiknqsty~���������� ��������������������������� �����������������������������������������������������������������|ywvs�tqolkg�f
baa_^\\^^_a�b�_abbdbaabddfggfd�f�g fddbdbba_\ZZ�\ ^_^^_bddfg�fdbaaba__^\ZWTRRQ�O�QO�MORVYZ�\�^$_abdgklnoqtw{�����������������������������������������������������������������������������������������������������|{y�w�ywvsol�kifdbba�_ab�d�b�d�fd�dfggf�da^ZYYZZ\^�_ab�d�b�db�a_^ZWVVR�Q�R�QTWZ\^�_abffgiloqqsv{~������������������������������������������������������������������������������������������������������~�|�~|ytqnnlligffddbaabb�db�ab�d�fb�b dfggfddfddba^Z�YZ\^�_�b�d�fd�f�d�b
a^ZYWVTRRTV�T�VY\^_�a�b,dgkklnqsttwy~���������������������������������������������������������������
��������������������������������������������������~yvsqoonlkiggfd�b�db�ab�db�bd�f
dba_^\ZYYZ\�^_�abdff�g�fdb_\ZYY�WY�WYZ\^_ab�d*fgiloqstvvwy|~��������������������������������������������������������������¾����������������� ��������������
������������������~{wvttsqonlkigf�dfdb�a�d�b�aba�b�f�dfggfda^\\�Z�YZ�\�^_adfgiigg�ikiigfa_�^�\�Z\^_aabdfggikloqtvwy{{|~���������������������������������������������������������������¾�������������������������������������������������������~|�{yvtsolkkg�f�d�f dbbaabddba__aa bdffddfggfb_\�ZYWWY�Z�\ ^_bfgiiggi�k�lkgd�b�dba__ab�dfgiklnoqtvw{|~~�������������������������������������������������������������������������������������������������������������������������~{wtqnllg�f�d�fdb�a�dba__aabdffdd�fb_^�Z�WY�Z \^adfgiggi�k�l<nlkgffggiigfdbdfgiikklnoqstwy|~�����������������������������������������������������������������������
����������������������������������������������������~{vsonli�g�fdb�a�b�ab�da^\ZZ\\ZY�WYZ\\�Z\^abdf�gi�kl�nlkiklnnlkigikln�oqstvwy|������������������������������������������ ���������������������������������%�����������������������������������������������������|wtqonkiigffgfgdb�abaa�b�b�da^ZYZ\\ZY�WYZ�\�Z\aabf�g�i�k
lnoqonlnoqq�o�n�qs�tvwy{|���������������� ���������������������������������
������������������������������������������������� ���������������������������~yvsqonlki�gfd�b�a�b�d�b�a�ba^ZYYZZY�WYZ�\�Z\_abf�gikklnqss�q�s�t�vw�y�{ |~�������������� ���������������������������������������������������������������������������������������������������������������������|yvs�olki�gfdbdd�a�b�ddb�a�_\Y�W�VWYZ\\�Z^_adfgffggiklns�tv�w�y{|�~���� ��������������������������� ��������������������������������������������������������������������������� ��������������������������~{wt�qolkiggff�d�b�d dbaaba_^^\ZYW�V�TVWYZZ�Y�Z\^_bd�f�g iklostvvwy�{�|~������� ���������������������������������������������������������������������������������������������������������������������������������������������|yt�sonkggff�db�dfddbd�b_^\ZZYWV�TVWYY�WZYZ\^abdfgiiklnosvwyy{�|�~�������������������������������������������������������������������������������������������������������������������������������������������������|yv�tsokig�f�df�gfdb�b�d�ba^\ZZYWV�T VWWVVWYYZ\^_adgikklnoqtwy{{|~||~��������������������� ������������������� ���������������������������� ������������������������������:�������������������������������������������������������~ywv�tokigff�g�i�gdb�b�d�ba\�Z�YWVTTRRTRRTVVTVVWWYZ\_adgk�lnqtvy{�|~|~��������������������������������������� ����������������������������
�������������������������������������������������������������!�������������������~{yyvttsnkiiggi�ki�gfd�ba_\�ZYVT�R�T�VWYZ\_bfik�losvwy{|�~�������������������������� ���������������������������������������������������������������������������������������¾������&�����������������������������~||{wtsqnk�ik�l�i�gfd�ba_^\�Z�\ZWVRRQQR�T�VWZ\^adgkkllnqsvyy{~���������������������������������������������������������� �������������������������������������������������������������������������������������~|yvsonl�k�l�kigfdd�ba_^\�Z�\ZYWVTRQQR�TVWY\^_bfikklnqstvy{|�����������������������������������������������������������������������������������������������������������������������¾��������������������������������� ~{wtqonllkklnn�lkligfddbdda_^\�Z5YWVTTRQQRTTVVTVWY^_abfgklloqtvwy|����������������������������������������������� ������������������������������������������������������������������������������������������������������� ~|yvsqonlkklnn�lkigf�d
ba_^\ZYWWVT�R�QRTVWWVVWZ^abbdfilnoqtwy{~�������������������� ������������������������ �����������������������������������������������������������������������������þ���� ���������������� ��������������~~{yttqolkklln�l�nlkigf�d ba__^ZWVTRQO�QRTWY�WYZ_bdbdfglnoqty{|����������������������������������������������������������������������������������������
�������������������������������� ��������½�� ����������������
������������� ��~~|{wvso�l�nlkigd�ba__^ZWTROMMOOQQRTVWYWWYZ\_b�d fgknosvy|�������������������������������������������� ���������������� ��������������������� ���������������������������������� ��������½����������������������������������~~||ywtolln�l�nligfb�a_\YWTQ�M&OQQRTVWYWWY\^_bfddfgknosvy|�������������������������������������������������
������������� ��������������������������������������������� �������������� ��������¾��)�����������������������������������~||{wtq�n�lkgfdba__aa^ZYWTQOOMMO�R
TVWYWWY\^_b�fgiknqtw{~�����������������������������������������������������������������"����������������������������������������������������������������������������������������~|{{wtqo�no�nlkkifd dba__aa^ZYWVRQ�OQ�RTW�YZ^_bfggiklnsw{~����������������������������������������������������������������������������������������������������������������������������������������������������������������������~|{{yvsqonoqqoqqonkigfd�dba�_^\YWVTRQQ�RTVY�Z\_bfgiklnoty~��������� ���������������������������������������������������������������������������������������������������������������������������������������������������������������
��~||ywttqo�q�soligffd�da__�^\YVTTRRQ�RTVVYZZ\\ZZ\^bfgiklnoty~�������'������������������������������������������������������������������������������������������������������������������������������������������������������������������������~{ywvs�q�solig�ffda__�^\YVTTRRQQRTVWWYZ�\^adfgikloty~���������������������������������������������������������������������������������������������������������������������������)��������������������������������������������������~|ywtsqoq�sqligfgggda__�^\ZWTTR�QRTVWWYZ\\�^\^_bdfgiloty~������������
������������� ����������������������������������������������������������������
�����������������������������������%���������������������������������������������~{wvtqoq�sqnk�ggfbaa�_^\YVTRQQRTVVWYZ\�^�_abfgiloty������������������������������������������������������������� ����������������������������������������������������������������������¾���������������������������������� ��~|yvtqoq�sqnk�ggfdba__a_^ZWVTTRTTVWYZ\^_�^�_abdfilqw|������������������������������������������������������������� �������������������������������������������������������������������������¾�������������������������������������~|yvtsqqssqolig�f�fdb�a_^\Y�W�VWY\^^_a_�^�_abdfint{������������������������������ ���������������������������� ����������������������������� �������������������������������������������¾��������������������������������������~{wvt�sqnkigffdd�babba_^^\ZZYYWWYZ^_abba_�^�_abdfkov|������������*����������������������������������������������������������������������������������������������������������������������������������������������������������~����~{wvt�sqolkigffdb�a�ba_�^\�Z\^abddba�_�a�bdglqw~����������������������� ������������ ����������������������� ����������������������������������������������������������������!���������������������������������~�|~��~��~{ywvssqonlkkigffdb�a�b�a�_�^�\Z\^ad�f"da_aabbdfinsw~������������������������������������&����������������������������������������������������������������������������������������������������� ��������������������������������~�|�~�|�~|{ywtqnlk�ig�fdbaaba�_^\\�^�\^_adfggfb�abdfilqtw|������������������������������������������������������������������������������������������������������������������������������������ �������������������������������~|�{|~~|{{�|{ywtqlig�f�gfdb�a_�^�_\ZZ�^_abfgiigd�abdfknsvw|��������������������� ������������������������������������������������������������ ����������������������������������¾������������ ������������ ��������������������~|�{�|�{ywtokgf�dfggfdbba_�^\ZZ\^�_abdfgiigdbaabfgkotwy|������������������
����������������� ���������������������������������������������������������������������������������������
������������� ���������������������~~|{y�{yw�ywvsnigd�b�d�f�db_�^"\ZZ\^aabbddfgiigfdbabfilqvy{|���������������������������������������������������������������������������������������������������������������������������������������������
���������������������~{yyww�v�w
vtsoligdaab�d�db_�^�\^_bd�fgig�fdbdgknswy{|�������� �����������������������������������������������������������������������������������������������»���������������������������������������������~{wwv�t sqolifb__a�b�b_�^�_�^�\^_adg�i�g�f)dfgkosvy{~��������������������������������������������� ��������������������������������������������������� ������½���������������������������������������������~|{wvt�s�qonkgda�_a�ba�a_�^�_�^_abfi�kigg�f�giloqtw{~�����������������������������������������������������������������������������������������������������������������������������������������������������~~|{ywtsoqqsqqoonnlkifb_�^_�ba�_a_^\\^^__^^_adg�k�l�i�g�i�knoqtwy~������������������������������������������ ������������������������������������� ���������������������¾������������������������������������������������ �~|{{ywvsonno�qonkiggfda^\\^_abba�_^�\^_a__abfi�klnnl�k�lnoqsvwy|������������������������
����������������������������������������������������������
��������������������þ������������������������������ ������������������~#�����~|ywwvttolkklnoonlifddba_\ZZ\^_�a_�^�\�_a�bdfgikllnn�l�klnnoqstvwy|���������������������������������������������� ���������������������������������������������$����������������������������������������������������������~||~|�{|~~||{ywvvtsqnk�ik�lkgdba_^^\�Z\�^__^�\^__ad�fgik�l�klnnoqstvw{|~�������������������������������������������������������������������������������������#�������¾�������������������������������������������~|{yywywwvvwy�{ywvvtsqolifggik�ifba_^\\Z�YZ�\^^�\�^_bdf�gikk�l�k�iknnooqstw{|~��������������������������������������������������������������������������
���������������������������������������������������� ���������~|{w�v�t�stvwwv�tsqonkgdfgiigffda_^^\Z�YZ�\�\�^�\_bdfgikll�k�lkiiggil�noqsvy|~��������������������������������� ������������
��������������������������������
�����������������¾���������������������������������� ��������|{wvs�qo�q�oqssqoqqonlkgfdd�fdba_�^ZY�WY�Z�\�^_�\
_abfiklnlkk�igffdfgk�l�oqtvy|~���������������������������������������������������������������������������������
������������������������������������������������ ������|{ywtqon�l�n�lkgf�d�ba^�\Y�W�YZ�\^_^�\^_bgklnnlkigffdd�bdfikklnnoqsvy|�������������������������������������������������������������������������
���������������������������������� ��������������������������~{w�tolk�ig�i�g�igdb�a�_�^Z�YZWVVWW�Y�WY�Z\^_^\ZZ\_bgklnnlkgfddbbaabdfgi�k+lnosvy|��������������������������������������������������������������
���������������������������������þ������������������������������������� ������|yvs�olig�f�d�bd�f�gfdba_�^\ZYWW�VW�VWYZZY�W YZ\^_^\ZZ\_bgk�lkifdbb�abdfgikk�iknosvy~������������������������� �����������������������������������������������!������������������������������������%�����������������������|{wtqnlkkgfdbaa�_^__aab�dba_^^�Z�\YWVT�R�TWYZ\\ZYWW YZ\^^\\Z\\_afi�k�gfd�a:bdffikkggfgklosv{���������������������������������������������������������� ���������������������������������½�������������������'�����������������������|yvsolkigfdba_^^\�Z�\�Z
\^_aa_^\\ZZ�YWVRQ�OQRTWY�ZYWWYZ\^^�\�^_adgiig�fda�_abdfikigfddgknosw|���������������������������������������������������������� ����������������������������þ������������������(����������������������~{wtqnkgffdba_^^\ZY�WV�WZ\^\ZYWW�VTRQML�MOQRV�WWYZ\�^_abdfggf�db_^�\^_bfgifd�b dilnqw|������������������������������������������������������ ���������������������������������������������������~����������������~���~{vsolkgd�ba^�\ZWV�T�R�TWYYWVVTT�R�T�R QOLJLMMOQR�TVWW�WYZ^�_a�d�f�dba_^\�Z\^adffdbaabdgknsw~������������������������������������������ ������������������ �������������H������������������������������������~||{{|~�������������~||{||~~{wsokigda�_^\�ZYWTRQQ�OQR�T�R�QOQQR�Q OLJIJLMOQQ�RTVW�W
YZ\__abbdff�d�ba_^\�Z�YZ\_b�dbabdfiloty~��������������������������������������� �������������������� �������������&������������������������������������|{{�y
{|~����������~|{�y�{
yvqlgfda_^\�ZYWVVTROM�LMO�QOMM�O�QMJ�IJM�QRVW�WYZ\^_b�d�fd�ba_^^\�Z�YZ\^abddbbdfgknqvy~������������������������������������������������������� �������������&�����������������������������������~{yy�wy{|�������~~||{yw�y vsnida_\\Z�W YWVTRRQQML�JIJL�M�L MOOLIGGIJM�QRVW�W YZ\\_bddbdfd�ba_^\�ZYWWYZ\_b�dfgikoqtw|������������������������������������������������ ��������������������������������»������������������|yww�vwy|~��~|{yy�w�ywtokfa^ZYWVTTVVTRQO�ML�JIGGIJ�L�MLJIIJLMMLIGGILO�Q�RTVW�W YZ\\^abbab�d�ba^\ZZY�WYZ\_bd�fgikloqsv{~��������������������������������������������������������������������������½��������������������|ywv�t�stvwy{{�|{wvvtvw�y+wtnid_\YVTRQQRRQOMLJJLLJJIIGEEGIJJLLMMLIGGIJ�L�IJMOQRQQR�T�VVWYZ�\_aa_ab�dbaa^\YY�WYZ\_bfg�iknooqstw{|���������������������������������������������������� ����������������������������¾����������������������|ywvtts�qsttvw�ywt�stv�w vsngb_ZWTQ�O�MLJII�JI�G�EGIJLLMMLI�G
IJLLJJLLMOQ�RT�VVWYZ�\^�_a�ba_^\Y�WYZ\_dgi�k#loqqsttvw{~��������������������������� ���������������������������������������������*�������¾��������������������������|{wvttsq�o�q�st�vsqooqtvvtsokfa^YTQM�L�MLJJI�G�EGJLLMML�G�I�J�LMLLOQRRTV�W�VVWYZ�\�^_aabda_\Z�W�YZ\^adgk�ln�q,sttvwy|��������������������������������������������������������¾��������������� ����������������������������������~|yvttsqonn�oq�sqo�n qssonkgda\WROL�J�LJ�IGE�D�E�DEGEEG�J�LJ�G�I�J LMMLLMOQRV�W�V�WYZ\�^ _abdb_\YWWYZ�\ ^_bfikllnoqqst�vwy|������������������������������������������������������������ ������������� ���¾���������� ������������������~|{wttsqnllnlkl�n�lnonligdb_ZVQMLJIILLJIIGE�BDBDE�GIJ�I�G�I�JL�M�LMORTV�W�Y�Z\�^_abdb^\�YZ\�^_adgk�lnqstvvwwyy{~����������������������������������������������������������¾��������������� �������������� ������������������~|{yvtsqnlkkigi�k�lkifdba^YTQMLJIIJJ�IEB�ABDEGI�JI�G�I�JL�M�LMQRTVV�W�Y�Z\�^�_abba^\ZZ\\^^__abfi�lnqtvww�y{~����������������������� ���������������������������¾����������� ����������������!�������������������|{ywvsqlkggfdfg�i�g�igfdba^ZWRQLIIGGIGEGGDA�?BDEGJ�LI�G�EGIIGGJJLM�LOQR�VTVVWYWYZ�^_^^_abba^�\�^_abdgikl�noqtvw�y{~����������������������������������������������������������������������������������������������������������|ywwvsolifdbbdfg�igff�g fdba_\WTQOJG�EDBDDB?�=ADEGJ�LJIGGEEGIIGGIJLLJJ�LMORTT�RTV�WY\�^�_^\^_�a_�^�_!abdfggiknooqstvwyywwy{~���������������������������������������������������������������������������������������������~|wvvtsnlidbaabdg�i�fdba_^ZVQMLIGDBBA??AA?�<=?ADEIJLLJIEEDE�G�IJLMMLMM�Q�RTVWY\\�^_^�\^__�a_�abf�g ikloqsttvwyy�wy|������������������������������������������������������������������������������������������~|{wvtsqnlida_abdf�g�fdba_^\YTOLJIGDA?=<<==<�:<==?ADGIJJIGEDD�E�GIJMOO�M�OQ�RTVYZ\\^�_^�\�^_abb�d fgiiggiklost�vwyy�wy|�������������������������������������������������������������������
�������������������������~{yvtsqonkgda_aabbf�dfddba_^\ZWVROLJGEB?=�:�8�: <==??BDGIJIGG�D�E�GIGGIJMOO�MOQTRRTVYZ\^_�a^�\Z\abd�f�g�iklnqstv�w y|������������� ����������������
����������������������������������������
��������������������������~{wvtsqonkgdb�a�bdfdba_\ZYWTRQOMJEBA?<�8�78�:<=�? ABEGIIGGEDBD�EG�IJ�MOR�TVWZ\^_�a_�^\ZYZ_bf�gikk�i�klnqsttvwyywwywwy~���������������������� ������������������������������� ������������������� ����������������/�����~{wtsqonnkigfbaa__aabdfdba^ZYWVRQOOMJDA?=:8�7�578::<=�?�A�DEGEEDD�BEG�IJL�MOQRTTVV�WYZ\_�a�_^\ZWY^adggikllkiiklnost�vwy{yw�y{������������������� ����������������������� ������������ �������������������������������������~{wtsqonnlkigdba�_ab�dba^ZYVTQOMMLIDA=<:8�7�578:<�=�?�AB�D�B�ABDGIIJL�MOQQRTVW�WYZ^�_
^\ZYY\_bfgk�l�kloqsv�wy{{yy{|~����������������������������������������������� ������������������������������������� ������|ywtsq�olkigfba�_a�ba_^ZYVRQOLLJGDA<:87�5�4578:�<=�?�AB�ABEGIJLM�LMOOQRTV�W�VW\�^�_�^\�Z^_bfgikll�k�loqstvw�y�{|������������������������� ������������������������ ����������������������������������
������|ywts�qoliggfba�_^\YVRQOLJIGDA<8775544�2 4578::88:<�=�?�=?�ABDEIJ�L�JLMMOQRT�V�TVY�Z\^^�\�^_abdfgi�k lnnoqsstvy�{|~���������������������������������������������������������������������������������������������|ywt�s qoliggfdba__�^�_^\YVTROJIGEDB=:77554200//0245�78:<�:<::=�?=?BDGIJ�L�J�LMOQQ�TRTVWWYZ\\ZZ\^__�a,bddfikllnonooqsttwy{||~���������������������������
������������������������������������ �������������������������� �����������~|yvt�sqnlkgfddba__^^\\^�_^ZWVTQLIGEDB?<8755420/�-/02�4578877�8:�<=ADEEGJ�L�JLM�OQ�RTVW�Y�Z\^_aa__abbdfiln�oqsttvw{~���������������������������������������������������������������� ���������������������� ����������������~|{{wttsqqonlifdbba�_^�\^�_ \ZYWTOLIEBB?<8�7540/-,,--�/ 0255445778�:<?BDDEI�LMOOMOO�QR�VWYZ\^�_ ^__aabdgkl�o�q�s�tvw{~������������������������������������ ������������������������������������������������������~������������~|ywvttso�n
lifdba__aa_�\^�_�^\ZWTOJEBA=<:8::8520-�,�*,-0�2457�8:<=ABBDG�JLMM�L�M�LM�OQ�TVYZ\�^�_abfgknoqs�t�vwy|~��������������������������������������������������� ����������������������������������~���������~{wv�t qnlkllkgdba__�a�^_^�_ ^\ZWRLEB?=�<:852/-,**('%%''(*-�/0245�78:<=AABEIIJJLMOMLJLJ�I�J�LMO�RVYY�Z�\�^�_�adfglost�v�wy|~������������������������������������������������������� ������������������������������~���������~{wvttsolkiikkifb�a_�^�_�^\YTMGB?�=�<:740-*('%$""$$%'*�,�-/0455788:<?ABDEGIJLMOMLJIG�G�I�JLMQQRV�WYZ�\^_�abdfkot�v�w
y|�����������
���������������������������������������������������������������������������~~�|��������~{wtssqnlkigiigd�b�a�_^\\^\^�_�^\YTMGB?==?==<<:74/,'%$" � "%�(*,-0�4578:<=?�B
DGJLLMLJIGE�EGIIJLMOQT�VWYZ�\^_�abdfinst�v�w y|�����������������������������������������������������������������������������������~~||�{|������ ��~{wtsqonlki�gf�d
ba_^^\ZZ\\^�_^\ZWRLGBA�?=<:8740,(%$  $�'(*-0�4578:<=?�ABEI�JIGED�DE�I
JLMORTVVWYZ�\^_�abdfinqs�t
vwy|����������������������������������������������������������������
���������||�{|����� �~{wtsqnlkig�f�d�f
da^\\ZYYZZ\�^\ZWTOJIDA?A?=<752/-*'$"�"�%'(,/44�58:<=�?ABE�GEDA�ABDGIGIJLMOQTVWYZ\\^^_�abdgknoq�s tvwy|����������������������������������������������������������������������������|�{�|~������� �~{wvsqnligff�d fggfda^\\ZYY�Z(WTQMJIEBAA?=:52/,*('$ "%%$%'(*-24�5
8<=??==??AB�DBA?�?ABEGGIJLMMORVYZ\\^�_abbdfilno�qstvwy|��������������������������������������������������������������������������
������~��|{�y{�|~�����~ywvsqnli�f dfgigda^\Z�Y�Z�Y!ZYYVRQMJIEDBA?<840-*('%$ "�$%'(*/24558<=??=<==?�A?==�=/ADEEGJLMMORVYZ\\^__abddffillnoqqsvwy{����������������������������������
�����������������������������������������������~|{ywwy�{|~�����~|ywvtqoli�f�g�fgigda_\Z�Y�Z�YWVTRQMJGEDB?=:74/,*('%$ �"�$�%'(,/2458<=??=<<=??�=�?=<<�<?BDEGJLMOQRVYZ\^^_abdf�giklnoqstwy{~���������������� ���������������� ����������������������������������������������~�|{yyww�y�{|���~||{ywvtqoligff�g*fggfba_^ZYYWYYWWVTRQQOLIEEDB?:740-,(''%"�"$�% $%'*-0458<=??=�<=<<:::<<?BEGIJLMORRTWZ\^_bdfgg�i�klnoqtvy{~������������������ ������������������
����������������������������������������������~|{yy�w�y�w�y{~��� �|{yywvtqnkig�f�g�fda__^\ZY�WVTRQOMMLJGEEDA=852/-,('%$ �"$�%�$%(,/258<�=�<�:�<�::<?ADGIJLLMORRTWZ\^adfg�i�k�lnoqsvw{|�������������������� �����������������������������������������������������������~�{yvvttvwyy�wy{|��� �~{{ywwtsolkg�f�d%b__^\\ZYWWVTRQMLJLJGEEDB=<852/-,(%$"��"�$%(*-047:�<�:�<<=ABEGIL�M ORTVY\^_adfg�k�loqqsvy|~���������������������� ��������������� ������������������������������������������������{ ywvttsstvwwyy�wy{|~��~|{{ywvsonkifddffd�b&a_^\ZZYWWVRQQOLIIJIEDDB?<:852/-,(%" � �" $%'(*-/2578::�8:<<�:<==?ADEGIJM�OQRVY\^a�bdgk�lnqsstvy|~��������������������� ����������������������¾��������������������������������~|wv�wvs�q stvwy{yywyy{|�~�| {ywtqnkgfdbbdb�a�_&^\ZYYVTTRQOMJIGEGGEDBA<::8540/,(%" � $%'(*--/24�578:�<�:=?ABDGGIJMO�QRTWZ^_b�dfgklnllnosttvwy{|��������������������������������������������&������������������������������������~{ytssttsq�o�qstvy{{y�w�y{�| {ywtolifdbbaa�_�^\ZYWVTRQOMLIGEE�DBA=�:8542/,('$"��  "$%(*,,-/0�2458::<==�<?BDEGIIJLOQ�RTWY\_bd�fgikl�noqtvw�y{|����������������������������������������������������������������������������~|yvtonnoqoo�n�oqstwyy�wv�wy�{�y!wvtokgdbaba_^^\\^\\ZWVTTRQOLJGEEBB�A?=<�8 7540-*('$ �� "%'((*,-/0024588:<??�=ADGI�J LORTVTVYZ_bdff�g�i lnnoqsvvy{�|�~
�������������������������������������������������#������������������������������|ywtqol�k�lnoqqst�vwyyw�vtsokgdb�a_^\�ZYVT�RQMJG�DA�?=<:87�5 42/,('%" ��� "$%%'(*,-/025788:=�?BEIJ�L MORVWWY\^adfgg�i kloqsvwwy{~���~������������������������������������������������������������������������������~yvtqnli�g�ikllnnooq�s�t�vwvvttsqnigdaa__^\ZYY�W"VTQOQOLGDBAB?=<<=:875424420/,'%$" ��� "$$%'(*,-024788<=�?ABEGJL�M OQRWYY\_abdfik�l kiilqsvy{yy{~���~�����������������������������������������������������������������������~|wsqnkif�d�fgkl�no�q�s�t�vtsqnkigda_^\\ZYWW�V TROMMLIEBA??=<�:87420020//-*'%$""  �� �� "$%%'(*-024578<=�?ADGIJLM�O QRTWYZ^abbdfil�n liilqtw{||{|~���~�������������������������������������������������������������������~~|{yvqnkigbaab�dgilnn�o�q�s�t
sonkiifda^\�Y�W VTTRQOMLLIEDA?�<:8775420/-/-,,*('%$""� " � " �� �"�$%'(,/24557:<==?BEGIL�MOQQRTTWZ\_abddfil�nliiloty|~~||~����~������������������������������������������!���������������������~|{{ywvqnkgfda__a�bfil�no�q�oqssqqolkiigdb_\YW�V TRQMLJJIEBA=<�: 854200/-,,*(''�%$"� � ""  �"�$%'(,/2�5
78<==?BEGILMOOQRRTVY\^_abdfgkl�nlkkloty|�~�����~���������������������������������������������"���������������������~|{yywvsnkgdba_^^�_bfk�l�n�o�n�o nlkigfdba^YVTT�RTQQOMJIGEB?=:87�8 7420/-,,*('%�$%$$"  � "$"� "�$�%'(*-02�5
78<==?BEGIJMQQ�R TWYZ\^aabfiln�o
nkkloty{|~~���~��������� ���������������������������������������������������|{ywwvtqlifba_�^adgik�ln�o�n lkkigdba_\WTRR�Q�O MLIEDA?<:755�7 520/-,**('%$�"�$" � "$%$�"
$%%'(*,-/24�5
7:<==?BEGIJMQ�R TVYZZ\^aabfiln�o nllnqtwy{|~���~������������� ����������������������������������������������~|ywvvtqnkgdba_\Z\Z�\_adgikkilooqonnll�n lkigfba_\YVRQQ�O�MJIEB?<:8854455420/-,*('%%$" � �"� �"$%'%�$�"
$%'(,--/045�7
8:<==?BDEIJMQ�RTWZ\\^_�bdgklnoollnoqtvwy{~��||~���������� �������������������������������������������������|{wvtsqligda__^Z�Y�Z"\^_bfgiggknoqqonllnoonkgfdba^ZWTRQQ�OMJGDB?<8�74245420//-,('%$$" �� � "�$%'('�%�$ %'*-/02457�8
:<<=?ABDEIL MOQRTVY\^^_b�dfgilnnlnooqstvw{�~�|~��������� �������������������������� �����������������������|yvtsolifda�^\Y�W�YZ\^adfgffglnoqonll�n ligfba^\YVTRQ�O�MLGDB?<854454244200/-,*'%%$"" �  "$$%'(*(('�%
$%'*-045778�:�<=??ABDEIJ
MOQRTVZ^_ab�dfdffgk�l�o�qstv{�|�{|�~���~����~�����������������������������$����������������������|yvsolifba_^\\ZYWVV�WYZ^_ab�dfikl�n�l kigfb_\ZWVTTQ�O MLJIEBA=85�2�42�0/-,('%%$�" � �"�$%'(�*(�'�%(,/25�8:�<=?�ABEGIJ MOQRTWZ^_b�d�fgikln�o�qstvy�{�y�{|�~�|~���~ �����������������������������������������������|yvsnifda_^^\ZY�W�V W\^^_aabdfgi�k*igdb_\ZWVVTROOMLIGEB?=<85200224420//-,*'%$%�"  �"�$�%�'�( *,,*(('%'*-057�:�<=A�DGIJL OQRTWZ\^_b�d�f�gik�nossttvw�yw�y�{|�{|~~���~�� ������������������������������������������������|ytqlgdba_^^\ZY�WV�T VYZ\^__abdff�g�i�g�igdba^ZYWWVTQMLIGEDA=<<852�02�4 2/-,,*'%$$�" � �"$%'�(*�, *('(,0478:�<�=?BE�GIJMOQRTWZ�\^a�bdf�gikllnost�vw�yw�vw�y�{|�~���������������������������������������������|ytokgdba_^^\ZYWYWWT�R
TVWY\^^_bbd�bd�fd�gdb_^ZYYWVTQLJGEDB?=<<852�02�42/-,*('%$�"���� �"$%(*,�*�,�*,/258::�<=?ABDG�IJLQQRVWZ�\^_aadfg�igiillnost�v�w
vtssqssvvww�y�{�|���������������������������������������������~{wtokgdba_^^\ZY�YWVT�RTWZ\^_�a�_a�bdffdb_^\ZZYWTOLIEDBA?==<852002�4�20/-*(''$�" �� �"$%(,�-�,�-/02478�:�< =?ABDEGIJLMORTVYZ�\^_adgi�k�iklnoqstvv�w�v
tqonnooqstv�wy{|����������������������������������������~|{wtqlifba_^\ZYY�YWTR�QRTVYZ�^\^^�_adfdb_^^\\ZYTOLIEBA?=<=<87442�4�2�0 /,*('%$""� "$%'(-//-,--//�045588�:�< =?ABDEIJLOQRTWYZ\�^�\^_bfgi�k�i giknoqstvv�wvttqnlkkllnoqsttvwy{|������������������������������������������~|{wtqlifba_\ZYWWYWVTRQQOOQTTVWZ\\�Z�\�Z�\^_bddba�_ ^\YTOLIEBA?=�<:8775544�2
/,*('%$"� �" $%((*-//--//02�4578�:�< =?ABDEIJMQRTVYZ\\^__^�\^adgi�ki�gilnoqst�vtsqnkiggiiklnoqsvwy{|~���������������������������������~{wtqlifda_\ZYWW WVVTRQQOOQTVWW�Y�Z
YWWYZZ\^abb�a _\YTOJGDBA?=�<�:8755�4
2/-,('$"� "$$%',*,-/0//0247�8788:<<::<�= ?ABDEGIMQRTVY�\^__^�\_bdgkllkigffggiknoqs�tsoligfddffgiklnqtwy{|~����������������������������������������|ytoligfa_\ZYWWVTTR�Q�OQRV�W�YW�VWYYZ^�_�a_\YTOJGDBA?==<<::<<:8�7 5420-*(%$ � "$%%'*�-/0�2458:<==�<�=�<=�? ABDEEGILORTVY�\�^�\ ^abdgkllkigff�gilnoq�sqolifd�bdfgilosvy{{|����������������������������������������|ytolkigb_^\ZYWTRQOO�MQRT�VW�V�TVWYZ�\^_a_^\ZWTOLIEBA?==<<::�<�8�:�8 7520-,*'%" �"$%''*--//0224458:<=?A�?�=�?ABDE�GILOQTWY�\Z�\ ^aabfkllkiifd�fgkkln�onlifb�a�b�d filotwyy{~�����������������������������������~{wtonkiida^\ZYVTQOMM�LMOQ�RT�VT�RTVWY�Z\^^\ZYWVTQOLGDA?�=<::<<�:�<�: 850/-,*('%$$�%�'(*-//02�457:<<=A�B�ABDG�IJMOQTWY�Z�Y�Z\^__adi�kif�df�gi�kigfda�_a�bdgilqtvwy{|~��������������������������������~~|ytsqnkiifb_^ZYVRQOM�L�M�O�QRTTR�QRTW�Y�W
VTRRQOLIEB?�=<::�<�:�=&<=:50/-,*(''%%''((**,/00224575578:<=?BD�EDBBDEEIJJLJJMOQTVW�Y WVVWYZ\\^^_bgi�kg�d�f�d�gfdbaa_^\\^abbdbdfgknqqstwy{~�����������������������������������~��~|{yvsqqnkiifba_\YVRQOM�L�MO�Q�O�QRTW�YWVV�TR�Q OLJGDA??==�<�=�<=�?<720/-,*�(�*,-0�2�4 578778::<?BDEG�IGEEGIIJLMMLLMOQRTV�V�TVWYZZ\^_adgkkifbbdd�b�a�b a_^^\\ZZ\_ab�d fgilnnoqtvy|�~�����������������������������~|�{�|{yvtsqolkigdba_\YVQOMM�L�MLM�O�M�OQRTVW�V�T�R�Q�OQOLJIEB�A?==�?�=?�A=8520/-,,�*�,-024424457:8:<==?BDEGI�L�JIGGIJLM�O�MQRRQRRTTRRTVWYZ\^^_bdggfbaaba�_�^\�^\Z�YZ\^^abddfggiklnosvw{{||�{�|�~���������� ����������~��~�����|{�y�{ywtsqqoliigdb_^\YVQO�M�LM�O�MOQR�T RQOOMMOOMLJIGE�DBA�?A�BA?<8540�/�-�,-/2455�4 57:<=?AABDEEGJ�MLJ�IJM�Q�OQRQOOQRRQQRTVWZ\^^_abddba�_^�\Z�Y�ZYWVVWYZ�\^_bdf�g
iknosvwyy{{�y�{|~��~~�� �����������~~�|~��~~|{y�w�ywvtqoonk�gda^\ZWT�OMOOMLL�JM�O�M�L�MOQ�R�T�R QOMLLMMLJI�GEBA�?A�BA?<872�0�/�-/24577�578:=AB�D�EGJM�OMLJIIJMO�Q�O�QOMM�O�QRVWZ^^__�a�_�^Z�YWV�W�V�TVWZ�\^adfg�i klnstvwwyy�wy{~~�|�{|~�������~|�{�y|~~||{yww�vtsonkg�fb_\ZYVR�OMLJIIJMOO�M�L�MOQ�R�T�RQOM�LJI�G�IGEDA?�=?A�BA=:854�20/045�78:<?BD�E�G IJMOQQOMLJJLO�QO�M�O�M�M�OQTVY\�_^\Y�WVTTVVT�RTWZ�\^_bfgi�klnqstv�w�v�tvwy{{�y�wy{~�����~|{�y�wy�{y�wvtst�vtqlifddb_\ZYVRQQ�OMJIGIJ�M�LJLLMLLMM�O�QOMLJ�I�G�JIEDBA?�=?A�BA?<:7544�5�24788�78:<=ADEG�IJLMOQQ�OMLMO�QOMLMOOM�L�L�M�OQRVVYZ�_\ZYWWVT�R�QRTWZ\\^\^^adfgikklnooqsvvts�t�v�t vw{|{||~||{{�w�v�w�vwttsttvvtqlgdba_^ZYVRQOQO�MLIGGIJ�LJIIJLMM�LM�O�QOMJIGGIJJIIJJIGDBA??�=?A�BA?<:88�7�5 788778:<=ADEGI�JLM�O�Q�O�Q OMLMOOMLLJ JLMMOQRVWWYZ^_�a�_ ^\ZYYWVTRQOOQQ�ORVYZ\\�^_bdfgikl�noqssqqs�ts�qstvwwvvw�ywvvtt�st�v�t qlgda_^\YVRQOOOM�LJI�G�I�J IGGILMMLLJLLM�O�M OQQOMLIGEGGI�JIEDB?�=?BDD�BA?=<�:87788:877�8:<?ADEGI�J�LM�O�Q�O�MLMOOMLLJ�J LMORTWYYZ\^_�a_^^�ZYWRQOMM�ORVY�\ ^\\^_abdgikkl�n�oqstt�so�noq�sqstvv�wvtsqq�oq�ts�t�s
okgda^\YWRQ�OMLLJJII�G�I�GIJLMML�JLO�Q�OQRQOMJGEE�GIJJIGDBA=�<=??ADEED�BA?�=<:88:<=<:�8:<=?BDEGI�J�LM�O�QOMM�L�M�LJ�JLMQRVY�Z\^�_
^\\ZZ\\ZWRO�M�ORVY�\ ^_abdgikkl�noqss�qonl�kln�o�noqss�tsqo�nos�t�s�t sqolifb_\YVTQ�O�MLJ�I�G�ILMLJJ�L OQRRQQRRQOMJG�E�I�EDBA=�<=??AEGGE�DB�A�?=�<=??=�<�=�A�DEGIJL�J�L�MOMOQQOML�J�L�J�JLMQRVY\�Z\�^
\ZYYZ\\YVRO�MO�QTWY�Z�\ ^_bdfgikll�n�l�noqqonnkk�i�k�l�kln�o�n�l�k�lnqstvssttqonkgb_\YVRQ�MO�MLJ�I�G�ILMLJL�MOR�TRQOMJG�E�GE�DBA?�=?AABE�GE�DBA�?�A�?�A�B�D�EGJLLJJ�L�JL�M�OMLJ�I�JI�GI�J LMQRVY\ZYY�Z�\ZYWYZ\ZWTRQOMOQ�RTVW�Y Z\^^_adfggil�n�l noonnoonki�g�i�g�iklnl�k�iklnostvt�s olkgd_\YVROM�LM�L�JI�G�E�G�ILMLJLMOOQTVWWVTRQOMJIGEE�D�BDBA??�ABDGG�IGEGGEDD�B�A�B�DEDEEGILL�J�IJ�L�MLJ�IJGG�EG
IJLMQRWZ\ZY�W YZZ\YWVYZZYVRQ�OQ�RTVW�Y�Z�^abdfiikn�o nllnnonnlnlif�d�figg�fgiki�g�i�giknos�t sqqnkgd_\YVRQM�L�JL�IG�E�G�IJLMMLLMOQRVWYYWVTRQMLJIGED�B�D�B�DBAA�BDEGG�I�GED�B�DE�G�E�GIJ�L�J�IJ�LJ�IE�DEGIJLMORW�ZYWVVWYZZYWVWYYWVRQ�O�Q�R�TVWY�Z \^abdfikln�on�l�n lkkigdbabdfggf�df�g�f�dfggffgilo�s qonkgda\YVRQOM�LJII�E�D�E�G�IJLMMLMQRTVWYZYWVTROMLJIGD�B�D�B�A�BD�GI�JGEDDBBDEEGGIIGGEE�GIJ�L�JIGIIJ�L JIGGIIGDBABBEG�IJMOQV�YWVTVWWY�W�VTQQ�OQRRT�V WYYZ\^aabfikl�n�l�k�igfdb�abdffd�b�dfdd�bd�fgikn�qonlkgd_^YWTQOML�JIGD�BD�GIJJIIJLMMOQRTVWYZZYWWVROMMLIE�D�BDGII�GIJ�L�MLIGEEDDE�G�IGEG�IJ�L�JIGIJ�LJI�GEBA?ABEG�I JLMORVWWVTTV�W�V�TR�QO�MOQRT�V WYZ\^__adgikll�k�l�kigffgfdbb�ab�d�b�d!ba__abbaabddfgilnonligfb_\ZWVRQMLJ�IGEB�ABDGII�JIJJLJIJLMOOQRTVWYZZYWYWVRQQMJGE�DEG�IJLL�M�QOMJIGGEDEIIGIJJIIGIJ�IJ�LJIJIGJ�L�MLJJIGGEDBA??ABDGIJJLLMOR�T�RT�V�T�R�QMLJJLOQRTTVVWYZ\�^_afggik�igf�bdbbaa__aa�d�a�b�a�_^�_�abdgilnlidba^ZYWVTROLI�GED�?ABDGIJ�L�J�L�JLM�OQRTVWYYWWYYWVTROLIGEDD�E�GI�JLMOQQRRQOLJIIGEG�I�J�I�J�LJ�IJ�L�ML�JIGDBA�?ABDGI�JLMO�QRTVVT�R�QOLJIIJMOQQRTVWYZ�\^_bddf�g�fda�_�a�_ab�db�a�_�^�_abfgikifa_^ZWVTTRQMJG�EDBA�<�=?ABEGJ�L�J�L�JLMMOQRT�V�W�Y�W
VTRMJIGEEGG�E�GIJL�MOQ�T�RMLJJIGII�J�IJLLJIJJLJ�I�JLMML�JIDBA�?ABDE�GIGIJLLMLMMOORTVVTRQRQ�M LIIGIJLMOQ�RVWY�Z\^_�abddbaab_�^\^^_�^�_a�ba�_�^\^_^�\^�_ab�fgfd_\YVTRQROMJGEDBBDA=< 8:<<=?ABDEIJ�L�J�L�JLMOQR�TV�W VTQMJIGGII�GIJLMO�QRT�V�TQMLL�J�IJLLJ�I�JI�G�IJLL�J
IEDBA??ABDD�D�EG�I�JLMQR�TRQQOL�JI�GIJLMOQRQQRTWYZZ\^__�^_aa_�^�\�Z\�^�_�^\Z\^^�\^_�abdd�ba^YVRQ�OMJGEDB�A=:8 58:<?AABBDIJ�L�J�L MJJIIJMOQR�T�W�V�WVROLJJIJ�ILOQQRR�T�V�W�VTROMML�J�I�J�LJI�G�EG�IGEDA�?ABBBD�E�DEGGIJMQRRQQOOLJI�G�E�GJLLMOOQOQQRVWYYZ\^^�\�^\�Z�Y�Z�\^a_�^�_�^�\�ZYZ\\ZZ\^�_�a�ba_^\ZVROM�LIEDA�?=:7557:=A�BDGI�JLMLJIGILMOQRTTVV�T
VWWVTQOMMLL�JLOR�T�VW�Y�WVTRQOM�L�JLJJLMML�JIG�E�DE�GEDA?�=?AB�DB�ABDDEGJMOO�M LJIGEEDBDGIJ�L�M�O�QRTW�YZ�\�ZY�W�VW�YZ\_a_�^�\^__^^\Z�YZ^__^^�_^\ZYWTQML�JIEB?�=<875 78:=ABBABDEG�IJ�LJ�G�J�MORRTRQRRV�WVRRQQMMLMLLMRTVWVW�Y�Z�\�Z�WTRQO�M�LMLL�MLJ�IGDDEDD�BDE�G�EBA?=�<=??�A?�=�?ABDGI�J
IGGEDBBDGII�JLMQOQRV�Y�Z�Y�WYW�VT�V�WYZ_a^\\^�\�^\^\YWWYY�WYZ\^�\ZYYWWVRMJ�I�GDA?�=:878:<?�A�BDE�GI�JI�G�I�JLOQQOOQRV�WV�T RQOOQOOQTVWYY�Z�\�^�\ZYVTR�Q�O�M
LJIGGEDDEED�BD�E�DB?=<<�:<=�= <::<=<<=?ABD�E�GEDBBDEGG�IJLOOQRVY�ZYWW�V�WV�T�V�WYZ^_^\\^^�\ZYWWYW�VWY�Z�YW�VTQLI�G EDBA?==??=<::<=�A?AB�D�E�G IJMOOMMOQTVWW�VT�R�TVWYZ�\�Z�\^�_�^�\YWVVTTRT�RQ�O LJIEEDBBEE�B�A�B�D�B
A?<:8878:<==<<:877:<�:<=?�ABDEEGED�BDEEI�GIJJMMQRVY�ZYWVV�T�V�T�VWZ�^\^^�\ZYWWVWV�TRTVWW�VT�RMJG�EDBAA�?�A?<�=?�A?�=�?AB�D�E�G�E
GJLMMLLMOQT�V�W�VW�YZ\^^�\^_abba_^^\\ZZYYWWVV�TRQ�OMLIED�B�D�BA??==?AA�?=<87�578:<<:87�57�8�78:<�=?ABD�ED�BDE�GIJJLMQTVW�YWVV�T�V�T�VWZ\\^^�\�^�\ZYWVVTTRR�QR�T�RQ�OLIE�DB�A�BA?A?A??A??�<:�<?�A?ADDEGGDDEJJLLJLMOOQTTVW�Y�W�YZ�\�^_abddba_�^\^�ZYWVTTRQQ�OMLIGD�BA?<<:8:�<�=:855�4�578875�2�54578::<=??ABDEED�B�D�EG�I
LOQTTVWYYWV�TV�RTVVWWY�Z�\Z\^^\ZYWWVTRQOO�MOQQ�R�QO�LJGDBB�A�BDBBBAA�?=<�:�8:�< =ABDEEDDEI�JLM�O QRTWYZZYYZ\^^�_�^_�abdffdba�_�^\YVTR�QO�MLIGEDDBAABBA?<:8755778::8544�245540�/�0244224�7:�=?ADEED�BDE�GILOQRRTV�WV�T�RTVWYYZZ�Y�Z\^^\Y�WVRQOMLJJL�OQ�RQOML�JIGDBA??�ABDD�B�D�BA?=<:�8�7�5�78:=?ABDBBEGIIJL�M OQRVWZ\\Z\^_�a�_abddf�gfdba__�a^ZWTRQOO�MLIE�DB?�A=<:85420224575400/00�/00/-,�-,--/022024458::<<=?BDEEDDBBDD�EGLMOOQRTT�V�T�R�T�RTVWY�Z�W�YZ�\ZY�W TQOMLJIIJMMO�QOLJIGII�G
DB??=?AADEE�B�D�BA?<:8�7�542024457:<=?AABDEGIJL�MORTWZ\�^_a�b�abdfg�igfdbb�a
bddb_\YVRQO�MJGD�BA�?=<:8740/�-/0�2/�-�,--,**�,�*,-/�025788:<=?ABDEEDBB�DEGJJLMQ�RT�VT�R�T�RTVWYZZY�W�YZ�\ ZYWWVROMMJ�IJLM�OMLIGEEGG�E DA??==?ADEED�B�BA?=:87�5420�/02478<==?BBDEGIJ�M QTVWZ\__abbdbb�d�bdffg�i�g�dbd�bdffda_\WTROMMOMMIEB�A?=�<:8740/-,**,-//0/,,�**(''�(�*�,�-/045778:<?ABDEDBAB�D�G�IJLO�R�VTRR�T�QRVW�Y�W�YZ�\ ZYWVTQMLLJ�I JLMMLLJIEDDB�D BA?=?<<=ABDEE�DBA?=<:875�42/�-�,-/047:<<=AABDGGIL�M ORVWYZ^_ab�dfggffg�igff�d�f�d�fdba^ZWTQ�OMLIEB�?=<�:852/-,�*,�-,*�(('�%�'(�*,/025�7
8:=ABDDBAAB�DE�IJLMQ�R�T�R�TRQ�O�QRV�W�YZ\^\ZYWVTQMLLJJ�I JLJIGGEDBB�A?�=�<=?ABD�E�D?=<<:8754�2/�,�*,-/04788:=?BEGGIJ�MORVYZ^_ab�d�fgiklkk�lkigffd�fgfdd�fda^\YVQOOMMJIEB?==<:88::840-,�*�(�*�(�' %$""$$%'(*�(*-0245778:<?ABB�A�BDG�I�JLM�Q�RQ�RQ�OQRRTV�TV�WZYZ\^\ZYWVTQOMMJJIJ�IGDDB�A�?�=�< =?ABEEDDBA<�:8544�2/,�*,-/04578<?BEGGIJM�OQRVY\_ab�dfgikln�o�nlig�f�g�f"da^\ZWROMLLJIEB?=<::88::72/-,**,,*(�'�('�% $" ""$'((''�( *-/024578::<?�A�BDG�I�JLMOO�Q�OQR�T�RTVWY�Z�\ ZYWVTRQQOL�JI�GEBA�?=<::�<�=?BDDBBA=:88::85442200-*�(%*,-/04458<?BDDGJLOQOOQRWYZ^_adffgilnno�q�onlii�g�i�g�fb_\\YTQMLJIIDA?=<::�850-,�*�,*'�%�'%�"� "%�'�(*�-/045788:<�?A�BDE�GI�JLMLMMO�Q�OM�OQR�TR�QRTWY�Z�\ YWWVTRQQOM�J�I�GDBA==�<�:�<�=?ABBAA=<:88::85�420/,(�'(*,-/24458<?AABEJMO�Q RTWWYZ^_bfgikn�o�q�onlkk�i�k�ig�fda^\YTQMLJIGDA?=�<:87540-�*('�%�$�%$" � $%'(''(*,-,,-/025778:==?B�D�EGI�JLM�O�M�O�QR�TR�QRTWYY�ZY�WVTRQOMLJ�IGDBA=<�:�<�=?�A?=<:�7�875440/-,(�'&(,,-022478<=AABDILOQRRTTVVWY\^afgiloqqo�q�onlkk�i�k�ig�f!db_\YTOLJIGEDA?==<<87542/-,*,,*(('�%�"�$"  $%�'(*,,*,--//24578:<?B�D�B�DEGIIGGIIJLMLLJLMOQRRTVTTR�Q�RVWW�Y�WVTROMLJIIJJIGDDA=:�8�:�<
=??AA?=<::8 �������������������������������������������(�����������������~|{yvttvtsqnkifdba^\ZYWW�VWYZY�W�VW�YZ\^_�a�b�abddb_\YW�VTOJGEDB�A?=<=ADEIMTY\_bfinsv{������������������������������������������������������������������� ����������������������������������������������������������������|{yv�t solkifdba_^Z�YWVWYZ\ZYWWVVWYYZ\^�_a�b�aba bababbddb_\Y�WVROJGDBB�A?�=?BEJOTW\_bfkosw~������������������������������������������������������������������������ ����������������������������������������������������������������~|{wvttsqn�kgdbaa_\�ZYWYZ�\ZY�WYZZ\^_�abddbaabbb�a�ba_\ZYYWTQOLGDBB�A�?BGLORVZ^afkot{�������������������������������������������� �����������������������������������
������������������� ���������������������,���������������������������|{ywvtqnlikkgdbaa_�\ZYZ�\�YZ\\^_�abdffbaabbb�a�_ ^\ZYVRQMLIEDD�BA??�ADGLQRVY\_dkov~���������������)������������������������������������������������������������������������������������������������������� ���������������������~|{ywtolk�igdbba_�^\ZZ�\�Z\�^_aabd�fd�b�ba__aa__^\ZYVRQMLJIG�EDBAABDDEILQTWY\_dkqy��������������������������������������������������������������������������������������������������������������������������������������~|{wtoli�g�da�_^\ZZ\�Z�\�Z\^^__abd�f�db�ba�_^\ZYYWTROMLJIIGGEED�EGIJLORVY\_dls{��������������������������������������������������������������������������������� �����������������
����������������������� �����������������������~{wtolig�fbaaba_\�Z�YZ\\�Z\^_abd�fd�dba�_^\Z�Y WTRQOMLLJJ�IJIIJLLMORVY\_fnt{������������������������� ����������������������������������������������������������������� ������������������������"�������������������������|wtoligfdd�fdbbdba^�Z�YZ�\�Z\^_bdfg�f�g�fdba�_^\Z�YWVTRQO�M�LMO�MOQTWZ^agot{~��������������������������������������������������������������������������������������������������������������������������������������|ytqnkgfdd�fdb_\�Z\^^�\^_bf�gi�kigfdb�a_\�ZYWVTR�Q�OQRRQOOQRTWY\_bioty~���������������������������������������������������������������� �����������������������
����������������������%�����������������|ytqnkifddfddfgiifb_\�Z�\^_�^�_bf�g�ik�lkigf�d�ba^�\0ZYWWVTRRQRTTRRQQRVWYZ^afkoty~�����������������������������������������������������������������
������������� ������������������������������������������������������|yvsolkg�f�dfikkgda^�\�^�_�abdfgikl�nlki�g�fdba�_ ^\ZZYWVTTVVT�RTWZ\^_diloty~������������������������������������������������������������� ������������������������� �������������������+�����������������������{wvtqnkigffdfgkllkfb_�^�_^�_
abbabdfgkln�o�nlkkikk�igfd�ba_^^\ZY�WV�T�VY\_bbgknqvy~������������������������������������������������������������� ���������������������������������������������������������������~{wvtsolkigffgik�lida�_�a bddbbdfilnoqq�on�l�n�l�kig�fdbaa_^\\Z�Y�W�YZ^bfgilotw{~����������������������������������������������������������� �������������������������������������"������������������������|{wvttqnlki�gik�lkfbaa�_abb�f�d fgknoqssooqqq�o�q�o�nlk�igffdbaa^�\ZYYZZ\_dgiknqwy|��������������������������������������������������������������������������������������������
�������������������������������������� ~|{wvttsonlk�ik�l kgdbbaa__abdf�g
ilnoqssqqst�t�stvvttsqo�n�l kigfdba__^\\�^adgkloty|����������������������������������������������������
�������������������������������������������������������������������������~ |{{ywvvtsonl�k�l�kigfdb�a
bfggiikiikn�oq�stv�v�ywvtsttssqqonligfdbba__�adfilosw{������������������� ������������������������������� ���������������������������������������������������������������������~|�{ywvvtqo�nl�kigd�b
dfggiklkkln�oqstvww�w�y{�|{�y�w
vtsqolkigff�dfgilosvy|����������������������� �������������������������������������������������������������������������������������������������~|�{ywvvtsqooqqonnl�klkkg�d�fgikllkkln�oqtvy{{�{|~~���~�|{yvtqonlk�g ilnoqtw{~������������������������������������������������������������������������������������������������������������� ����������~|�{ywvttssqqssqonn�lkg�f�gikll�k lnqqsvy|~~�~��������~|yvsqonl�k lnqsstvy|������������������������ ���������������������������������������������� ������������"������������������������������������������������������~||{ywvttssqqttqo�nlkgig�i�k lnqqtw|�������������������~{wvsqo�n�o qstwvwy|~��������������������������������������������������������������������������������������
������������� ����������������������������������~|{wvtt�s�tsq�onlkk�i�gik�lnqsv{����������������|{yvts�qs�t
vwy{{|~��������������������������������������������������� ����������������������������������������������������������������������������������������|{yyw�v�t�s�qoqqonlki�gf�g illnoqtw|�������������������~{ywv�tvwwy{|~�����������������������������������������������������������������������������������������������������������������������������������������������~�|{yy{yw�vts�qonkig�f�g ilnoqsv{�����������������������~|{�y�{|~�������������������������� �����������������������������������������������������������������������������������������������������������~�|{ywv�wvts�qonki�g iklnosv{~���������������������������~����������������������������������������������������������������������������������������������������������������������������������� ������������������~|{yww�ywvt�sqolk�i klnoqty~�����������������������������������������������������������������������������������������������������������������������
����������������������������� ���������������~|ywwyy{ywvv�tqnlkik�l nqqsv{~���������������������������������������������������������������������������������������������������������������������������������������������������������������������~{ywwy{yw�v�wtqnlkloqooqttvy|~�����������������������������������������������
���������������������������������������������������������������������������������������������������������������������������������~|{�wywvtvw�yvsqooqtvttvwy{{~��������������� �����������������������������������������������������������������������������~�������������������������������������� ������������������������������������������������������������~|y�wvttvwy{{yvtstvw�y {|~~�������������������������������������������������������������������������������~~�|
~�������������������� ���������������������������������������� ��������������������������������������|~~|y�w vttwwy|~|y�wy�{�~���������� ����������������������������������������������������������������������������~~||{|~����������������������� ������������������������������������������� ����������������������������������~�|{y�w vtvyy{~�~|�{�|�{|����������� ����������������������������������������������������������������� ������~~||{{|�~�����������������������������������������������������������~���������������������������������
����|{{||{w�v�y|����~�|~||~���������� ������������������������������������������������� �����������������������������~~||{{�| ~���������������������������������������������������~|{{||~���������������� ������������
���~|{{||{w�v�wy{~������~�~~�����������
����������������������������������������������
������������������������������~~�|~������������������������������������������������~|{yy{|~~������������������������������~|�{|{ywv�wy{|~~������������������������������� �������������������������������������������������������� ��������������~ |{{|~������������������������������������������~{�y{|�~�����������������������������~|�{y�w�y{|�~�������� ������������������������������������������� ������������������������������� ��������������~ |{{|~��������������������������������������� �����~{ywy{|�~ �������������������������������~|{yywvww{{||~~������������ �������������������������������������� ���������������������������������������
��������~~|�{|~��������������������������� ���������������~��~�|{ywy{|�~�������������������������������~{ywvvwy{|�~����������������������������������������������������������������������������������������~|{{|~~������������������������ ������������������~�|�~|{y{yywy{|~~�~|~����������������������
���~{ywvvy{�|�~�����������������������������������������������������������������������������������������������������~||~������������������������������� �������������|�{�|{y�wy{~�� ~||~�������������������������~|{{ywwy{|{{|~~||~�����������������������������������������������������������������
��������������������������������~����������������������������� ���������~��|{�y�{ wvvttvww{~��~�|~����������������������~|�{�y�{y{||{|~~����������������������������������������������������������������
��������������� �������������������������������������������������������~|{y�w vttsstvw{~��~�|~��������������������~{�y�{yww�y�{|�~��������������������������������
������������������������� �������������������������������������������������������������������������~�~||{yyw�v�t�s�tw{�~|�{|�������������� ��������|{�y�wy�{�|~����������������������������������������������������������������������������������� ����������������������������������������������~|{y�wv�tsqqs�tw{�|{�y{|�����������������������~|{ywwvtt�v�wy�{|���������������������������������� �����������������������������������������������������
������������������������������������������������~
|{yvtvvtssq�oq�tvwyy{{yww�y{|����������������������~|ywvtsqq�tvwy�{|���������������������������������������������������������������
��������������� ������������ �����������������������������������������������~|{ywt�sqo�noq�st�vwyy�w�y{|~���~����������������~{wvsq�o�qstvy�{ |~������������������������������ ����������������������������������������������������������� ����������������������������������������������~~�|{ywvqoo�n lkklnoqsstvvw�v�w�y�wy{{||{y{|�~�|~�����������|ytsqo�n�oqsv�y{~����������������������� ����������������������� ���������������������������������������������������������������������������������������~|{{�ywvsolk�iklnoqstvv�w�vwyy�w�ywvwy{||�{|����������~{vsqo�noqsvwyy{~�������������������
�����������������������������������������������������������������������������������������������������~�|�� ~|ywvwwvtoligf�dfgikkloqsttvwwvtv�w�y�wv�tvw{ywyy{~��������~|wtqqn�l�noqtvyy|����������������������������������������������������������������������������������������������������������������������������������������|{yy�{|�~ |{wttvtsqnkgdb�abf�g
ilnoqstvvtt�vw�y�wvt�stvwvvwy{|�������~|yvsqqnl�klnnoqtvy{~��������������������
����������������������������� ��������������
��������������� ����������������������������������������������� �~{yywywwy�{ywtqqsqonlifb__�a�d fgilnoosttss�tvwyw�vs�qststvwy{~����~||yvt�qnl�k�lnqtvy|����������������������� ����������������������������� ���������������� ���������������������������������������������������������������������~|{yyww�v�wvtq�onlkgda__�abdfgklnno�q�svwwv�tsq�o�qstvw{|~���|{yvts�qn�l�klnqtw{����������������������� ����������������������������������������������������������������������������������������������������������
���~|{ywywv�s�q onllnkigfbba�_�^_bffiikll�n�qt�v�tsqo�no�q stv{{||~~{wvts�qonll�klnqvy|������������������������ ������������������������������������������������������������������ ������������ ���������������������������~|y�wvsqqoo�nl�kigfd�b a_^^\\^adfggi�klooqt�vtqo�no�qsvy�{yvtssqq�onl�klnosw{~��������������������� ������������ �������������������������������������������������������������������������������������������� ���|{wvwvt�onl�kikk�gfdb�a_^\�Z^adff�g�iklooqt�vtso�n�l�noqqsstw�y�w tsqqoonnon�klnoqtw{~����������������������� ���������������� ������������ ���������������������������������������������������������������������������� ��~|{wvvtq�nlkiigffgf�dba_^^__^Z�YZ^abd�fgikloqst�v tqoonllnnoqs�tv�wvtsqoo�nl�k
lnqqsvy|������������������������������� ������������ ���������������������������������������������������������������������������~||{yvtsollkigffddbdbbaa__^�\�^\Y�WY\^_adfdfgkloqstvv�wvsonlkklnoqsttsttvvtsqoonnllnnl�k
lnqstw{~�������������������������������� ��������������������������������������������������������������������������������������������~|�{ yvsqnlkigfddbb�a_^\\�Z�\�Z YWVWYZ\\^a�dfilnoqstv�w vsonlkklnoqstt�s�tsqo�n�l�k
lostvy|������
������������������������������������������������������������������������� ������������������������������������������|{�y
wtqolkigfdb�a�_^\�ZYZZYYW�VWYZZ\^aabfiklnoqst�v
sonlkklnoqq�s�q�o�nl�k�i�klnqtwy{~����������������������������������������������
���������������������������������� ����������������������������������������������~yw�v
tsqolkigdba�_^\�Z�YW�VWY�Z \^_bfgiklnnoqs�tsqon�ln�q�sq�o�nlk�iklnqtw{|~�������������������������
���������������������������������������������������� ������������������
����������������������������~{vt�s qolkifbba_^^�\�^�\�Z�Y�WV�W�Y�Z \^_adfggiiklno�qo�no�q�s�q�o�n�l�k�ikloqtvy|��������������� �������������������������������������������������������������������������������������������������������������~{ws�q
onlifba_^\\�Z\�^\ZYWW�VW�YZ\\^_abd�fgklln�o�q�o�q�sqonn�l�klosvwy|�������������� ������������������������������������������������������������������������������������������ �������������~||{wtq�o noonnlida^\Z�Y�Z�^\ZYWVV�R�TVW�YZ\\^^_aab�dfikllnoq�s�t�s�q�stssttqonn�lnqtw{|��������������������������������������������������������������������������������������������� �������������������
�������������~{ywvtsqo�n�lkgd_\Y�WY�Z�\ZYWVTRQOQRRTVYZZ\�^�_a�bdgkllnq�tvwwvtt�s�tsqoonnllnooqsvy~���������������������������������������������������������������������������� ��������������������������~~�������� �����~||{yvs�qon�l�kigd_ZW�VY�Z�YWTRQOMOQQRVYZZ^__�^_aabdfilnosvvwwyywwvts�qst�vtsqqoo�noqtvy~������� ���������������������������������������������������������������������������� ������������������������~|{~������ ���~|{ywvs�onl�k�i gfb_ZVTTVYZZY�WVRQO�MOQRVYZZ^�_�^ _aabdfgknqtvw�ywvsqooqt�vtssqq�oqtw{~���������������������������������������������������������������� ��������������� ������������������������~||{{|�������� ��~|{ywtsq�onlkii�gfb_^YVRRT�W�V�TRQM�LMOQTWZZ^__a_^^__aabdffilqtvw�ywvtqooqt�vts�q
oqsw{|������������������������������������������������������������������������������������������������������������||{||~������� ���~{ywvssqq�oonli�g fdb_\ZYVRR�TR�QOL�J LMQRVYZ\^_aa__�abd�fgkostv�w�vtsqqsst�vts�q svy|~������������������������������������������ ������������������������������������������������������������������~||~||~��������~{wvt�sqooonli�gda_\ZYWW�T�Q�OML�J LMQQTWZ\\^�_�a bdffgfgknqst�v�t�s�q�ts�q stw{~����������������������������������������������������������������������������������������������������������������~~�~||�~�����~�|{wvtss�t�qonli�gfb_^ZY�WVTROMMOO�ML�JLMOQRWZ�\�^�_abd�f�giklnostt�s�q�oq�s�t�s tvy|����������������������������������������������������������������������������������������������������������������������~�|~��~||~|{{yv�t�vtsonlkgffda^\YYWVVTRQ�M�LML�J LMORWYZ\Z\^__abffddgfgiklnoqqoqqo�nonn�oqssttvvw{|~������������������������������������������������������������¾�������������������������������������������������������~|�{�~�|�{vtvvwwvtsonlkgdba_\ZYYWVTRQO�MLJJLMML�JLORVWYZZ\^_abdffddffggikl�nl�k�l noonnosstvy{|������������������������ ������������������� ����������������� �������������������������������������������������������������|{yy{�|�{�y�{wvv�wvtqqnkigda_\ZZYYWVRQ�O�MJIIL�ML�J�LMQRTVWY\^_adfgffdffggik�l�k�i�k lnnllnqstw{~����������������������� ����������������������������������������� ��½��������������������������������������������������������~{�y�{|{�ywyy�{ywv�wvtqqnkgfda^�ZYWVTQ�O�MLIGIJL�M�L�M
OQRTVY\^_bf�g�fg�ikllkii�gi�g�i klnllnqsvy|������������������������ ������������������������ ������������������������������������������������������������������������~~{�y{|{y�w�yw�vtssqnkgdb_\�YWVRO�M�LJ�GIJ�M�L�O�M
OQRTVY\^_bf�gfg�i�gi�g�i/klnllnqsv{|������������������������������������������������ ������������������������������������������� ��������������������������������������~~{�y{|{yw�vwvv�wv�t�sonkgda^ZY�WVTQOML�JI�GIL�M�O�QRTVY\_adf�g�i�g�i�kl�noqtw{|~���� ���������������������� ������������������&�������������������������¾������������������������������������������������������~|�{�|{wv�t�vts�q�olida^ZYWWVTRQOML�IG�IGIJLLM�O
RQRTWY\_adf�iki�gfggii�k�i�kl�noqsvy{|~�����������������������������
�����������/������������������������������������������������������������������������������������������������~�|�~|ywvtt�s�tvtq�oq�o
lida^\ZYWTR�QOLI�G
JLJIIJJLORR�Q�R
TVYZ^_bfgik�lkig�f�gik�lk�ikln�o#qsvwy{|~������������������������������ �����������������������������������������¾�����������������������
��������������������������~~���~|ywvtt�s�tso�nonlkgda^\ZWVTRQRQOLI�G
JMLIIJLMQTT�R*QRRTVZ\_adggiklnnkkigffggiknnlkiikkllnoqqtv�wy{~����������������������������������������������������������������������������������������������������������������������������~~�����~|{ywvt�q�sqolklln kigfb_^\ZWVT�RQOLJ�ILMLJJLMQT�V
TRRTVWZ^adf�g ilnnllkigg�ilnnl�k�l�noqstv�wy{~������������������������������������������������������������������������������������� ��������������������� ��������������~����~�| {ywtqooqssolk�ikgfdba�^\YWTR�QOL�JMOMLMOQR�V�W
VTTVWYZ_bdf�giknonnlkiikkinoonklknn�qstvv�w&y{~���������������������������������������������������������������������������¾����������������������������������������������~~�|����~�|{wtq�o�snkigffgfdba_�^\ZYVR�QM�LMOOMMOQRT�V WYYWVWYZ\_bdf�gikn�onl�knoon�lnos�tv�wy{|~�����������������������
�����������������������������������������������¾�������������������������������������������~|�{�|~��~�|{wtsqooqqnigfddf dba_^\^^\ZWVT�ROM�L�O�MOQRT�VW�ZWYZ\^abbdfgiklnoonnll�knoo�lnqt�vwyy{{y{|~������������������������������������������������� �������������������������¾�����������������������������������������|{wwy||~��~~|�{ywtsq�onkgfdbbdba_^^�\ZY�WV�TRO�M�O�MOQRTVWWYZ\\ZZ\^_abbdfikl�n�l�klnn�l&nostvvwy{|~~||~������������������������������������������������� �������������������������¾����������������������������������������
�����~{yvvy�|�~|{yy�wvsq�onligfd�ba_^\\�Z�YWVWVTQ�O�M OQRTVWWYZ\�^ _abbfgilno�n�lkl�klnn�l nqstvvwy{~��������������������������������������������������������������������������������¾�����������������������������������������
�����|ywttw�{�|�ywyvvttsqo�nlkifdb�aa_�\Z�Y�Z�YWVTRRQO�MORTTVWYZ\^_aa__aabdgiknoo�nl�kl�n ostvvwy{|������������������������������
�����������������������������������������������������������������������������������������
�����|yvttv�y�wvtsqoonn�lkifdba_a_^�\�Z�\Y�Z�W�VTRQ�OQTVVWWY\^_abbaabbdfgik�n�l�k�i�kln�o3qtvvwy{|~���������������������������������������������������������������������������������þ������������������������� ���������������� ����~{wttstvv�w�vtsqqoon�lkifdaa__^�\�^ \ZZ\ZYYZZYWVT�RTVW�YZ^_ab�d�f�gik�l�k�iklno�q svwwy{|~�����������������������������������������������������������������������������þ�������������������������������������� ����~{yvts�qst�vtss�q onllnlkigda__^�\�^�_ ^\\Z^\ZZ\^\ZWV�TWYY�Z\_abd�f�gikk�l�k�ikloq�s tvwy{|~������������������������������������������������������ ����������������������¾��������������������� ��������������������~{wwtsqonnoq�ts�o�q onllnlkigd_^^\�Z�\^_a_^�\�^�_\YWVVWZ�\�^_abdf�gikl�n�l�nlkiiknqs�tvwy{|������������ ��������������������������������������������������������������¾�������������������� ������������������|wvvtqonlkloqsqo�no�qon�lkigfb_\ZZ�YZ\^�_^\\^�_�a_\ZYYZ^__^^__aabdggiilnoqqoo�nonllklloqsttvvwy{|~���������������������������������������������������������������(��������������������������������������������������������������������{v�t onkkiknnon�lnoqoonlkkigfdba_\YY�VWYZ\�^�\^_aa�b�a_^\\^_aa�_�abdggiknoq�s�q�o�qo�n�oqst�vwy{|~��������������������� ���������������������������������������������������������������¾�����������������������������������������~|yvttsol�i�k lnoonlkiigfdba�_\YW�RTWYZ\�^�\�_a�babba__�a�_�a bdggiknqsstv�tsqqs�oqsstv�w vww{||����������������������������������������� ���������� ����������������������������������������������������������������������������~{yywvtsqnligi�g�iklnnlkigfdba_^\^^ZWV�QRTVWZ\^^�\�^_a�b�d�ba�_�a
bdfgiknqstv�wvtss�qst�vw�y�wy{|��������������������
������������� ������������������������������������ ����������������������������������������������������~{w�vtsqnlkiggfddffggikllkigfda_^\�ZYVR�O�QRTWZ\^^\\^^__abd�f�dba�_�abdffgknst�w�ywvt�st�v�w�y{�y{~��������������������������������������������������������� ���������������������������������������������������������������������|y�t�sonkiggffddbddfgi�kigffda_\ZYYWVVRO�M�OQRTWZ\�^�_abd�fdba__^^_aabdffgknsvyywwy{{ywv�t�v�wy�{#|�����������������������������������������������������������������������������%����������������������������������������������~|w�sqolkigff�d�bdfg�ig�f db_\ZYWTRQOM�L!OMMOQRTWZ\^^\\^^abdffggfdaa^^\\^_b�dfgilsv�wy{{ywv�t�v�w�{�|${|��������������������������������������������������������������������������������������� ����������������������������� ������~{vq�onkigf�d�babdffggf�d ba^ZYWVRQMLLJL�MOQRTWZ^^�\ ^abdffggfbaa^�\^_b�dfgilqt�vw�ywv�t�v�wy{�| ~���������������������������������������������������������������������������������������������������������������������� ������~yto�nligff�dbaab�abd�fdba_^\YWVTROLJJ�J�LMOOQRVW�\^ab�d�fdbaa_�^_b�dfgilq�tv�w�yw�v�w�v�w$y{||~���������������������������������������� ������������������������ �����������������������������������������������������������������{vsn�lkggfd�ba__a�_ab�d ba_^\ZYVTROL�J�J LMOOQRTVYZ�\^_a�ba�_�abdfgiknq�t�v�w�vwyy�w�y{|~���������������� �������������������������������������������������������� ��������������������������������������������������~ytqnllkiggfdb�a_^^_�^_b�d
ba^\ZYWTQOL�J�J�L�MOQRVY�Z\^_�a�_a�b�a baabfgklnq�s�t�v�tw�y�{ywwy{|���������������� ��������������������
��������������������� ������������������������������������������������������������~ytolklkkigdbaa_^�\^�\^abddb_\YWVTQML�J�LMORVW�YZ\^�_�^_a�b�abfilnno�q�s�tvw�y�{y�wy{|���������������� ����������������� ������������������������������������������������������������������� ��������~ytol�kigdbaa^\�Z\ZZ\^_a�b_ZWVTQML�J�L�M�LOQ�T�VWZ\�^�\^_abbdd�bdgklnnl�n lnooqstvvwwvvw�y�wy{���������������������������������������������������������������������������������� ����������������%��������������������~{wtnkiigiggdba_\Z�YZ\^_�a ^ZWTROLJII�J�L�M�LMO�QRTVWY\^^�\ ^_abddbbdfgik�l�k�iklnost�vtsst�wy{~���������������������������������������������������������%���������¾�������������������������������� �����~~����� �~{wvsnkig�fdba_\ZYY�WYZ\^�_
^ZWTROLJIIJ�L�MOMM�L�J LMOQQRTVWZ�\�Z \^^_bbabfggii�k
iggffgilnqs�tsqoqtt�v*wy||����������������������������������������������������������������������������������������� �����������������������~�|~���.~|yvtqnligffddfda_\ZYWWVWZ\\^__^^\ZYVQMJJIIJLMM�OM�L JIIJLOQQRTTVY�Z�Y�Z�\^_aabf�g�igf�dfgilo�qonnoqs�t vwy{~���������������������������������������������������������������������������� ������������ ���������������
����������|�{|�~|{wtsqonkgffddffb_\ZY�WY\^^�_�^\ZYVQM�JLMO�M�LJGIJLMOQRTRTVWWYWWYZYZZ^_aadffgg�f�d�b�dfil�n�l�noqq�stwy|�������������������������������������
������������� ��������������������������������������������������������������~�{y�{�|{ywtsqonkgffddffda^\ZYYZZ\�_^�\ZYTOM�J�LM�JIGIJLMOQ�R�T�V WYZYYZ^_ab�d�fd�b�a�bdg�k�l�no�qsvy|����������������������������������������������������������������������� ������������������� ���������������~~||�{�y�{
ywtsqnlkigf�db_^�\�^�_^\�ZYWROMLJII�J�IGEGILMO�Q OQQTTVYZWWY\_a�b�da__a�_�a�_abfgg�i'klkklkklonoqvy|���������������������������������������������������������������¾���������������������� �����������������~|{{�y�w�ywvtsqnlkiigfdbddba�_a__a__\Z�Y WVQMMLIGGIIGI�G�E�G�EGILM�O�MORTVWYWWYZ^_aa__aa_^^�_�^_adf�gi�k�i kllnqtw{������������������������������������������������������������������������������������������ ����������������~|{{yy�w�y�wvtsqnlk�igd�b�a�b�a_^\ZYWVVTQMLJIG�EGD�B�EGIJLMMLLMMLMOQRTVWVWYZ^^_^\\�^�\�^\�Z\_ab�dfg�i�giklnqty|�����������������������������������������������������������������¾�����������������������������������~~|{yy�wy{{�ywy�wvtqollk�igd�a bdb_aa_^^\ZWT�ROLJJIGE�DA�?AD�EG�I�J�IJLLMOQRT�VWYZ�\�Z�\�ZY�W�YZ^_�abdf�g�f giklosw{����������������������������������������������������������������������������������������������������~|{�y�wy�{y�w�y�w vsonllkiggfda�_abba�^�\ZYVRQOOMLJJIGEDBBA?<==?BDEE�G�EGJLMOQQRVVWWYYZ�Y�WYZZ�YW�V�WYZ\^_�abdfgg�fgklnqvy~������������������ ����������������������������������������������½�����������������������������������~|{y�w�y {yywwvwwywwvtsonlkiiggfda_^^_aa_^�ZYZYWTQOMLLJLLJGGEBA? =<<=?ABEGGEGGE�D EIJLMOQRTV�W�VW�YWV�TVWYZ\^_�abdfgig�fgklnqvy|�����������������������������������������������������������������������������������������������������|{y�w�yw�v�wvtsqonlkiigfdba_^^__^\ZY�WVTROML�J�LJGGEB?==<<=?ABEIIEGEBAABDEIJLMQRRT�V�TV�WVT�R�T�V WYZ\^__abbdgig�fgikloty|������������������������� ����������������������������������������������������������������������������|{yvv�w�t�vtsqonnlkiifdba__\\^^\ZYW�VRQQML�JIGGDA?=?==?ABDGIIGEDA??ABDEIJLO�QR�TV�WVT�R�T�V(WYZ\^^_abbdgiigffgiiknsy~��������������������������������������������������������������������������������������������~{yw�v�t�vtss�tsqon�lkigdba_^^�\ ZWVTTVVTQOMLL�JI�GEBA??A?AABDEGIIGDB??=?ABBEIJM�OQ�RT�V WTRQQRRTVWVWYZ�^_abdfikki�g�iknsy~�������������������������������������������������������������������������������������������������~|w�v�t�sqstssqonlkikllkigba__^^�\ZWT�R�TRML�JIGE�D�B�A�B�DE�G EBA??==?AABEIL�MO�Q�RT�VTRQQRTV�W�YZ^�_adgikll�k�iknsw|������������������������������������������������������������������������������������������������~|yv�ts�q�sqonlkkigi�kifba__^�\ZWTQOO�QOLJ�I�JIGED�B�DB�E�GEDAA??�=�?ABEIJ�L�MORRT�V�T�R�TV�WYWY\^_abfiklnnlln�klosv{~��������������������������������������������������������������������������������������|{wt�sq�s�qsqonk�igff�igda_^^\�ZYWTQMLLM�LJ�GED�BDEE�G�EDBAA??�=�?ABEIJJLMLJJLMQRT�VT�R�T�V�WYZ^_bdgklnoonno�noqsv{~��������������������������������������������������������������������������������������� �|yvtsqooqss�q�sqonli�gfdd�fdb_^\\ZYYWVROMLJII�G�E�D�BDEG
IGEDDEEDDBA�? =AA?ABDGII�J�IJLMQ�T�R�T�V�T VWYZ^adgilno�q�o*qssv{~������������������������¾�������������������������������������������������������������������|yvsq�nqssq�sqnlkg�d�bdbba_^\\ZZYWTQOLJIGE�D�E�BAB�AB�DEG IGEDDEEDBAA?==�?�ABDEG�I�JLORRQQ�R�T�RTVVTTVWZ\_bfiknoqq�s�q)stw|��������������������������������������������������������������������������������~���� �|yvsollnq�sqonlif�ba_�^ \ZYYWTQMLIGEEB�ADEEDBA�?ABD�EGI�G�E�DBAA?=<==�?ABDEG�IJLMQQM�OQRTRQR�T WY\^_bfiilnqq�stw|������������������������������������������������������������������������������~~|�{�|~���~��~|yvqnllnooqssqqonlkgd�a�ba__�^\ZYWWVRMJIEEDDA?�= ?ABDAA?=<=?ABD�EG�IGE�DBA?=�<�=�?�ABDGIJJ�IJL�M�LMQRRQQRRTVYZ\^_adfgilo�qs�tvy|���������������������������������������������������������������������~|{y�wy{|~���~
���|{wtqnll�noqqoonlkifba__aa_�^
\ZYVTTROJGE�DBA=<:<=?AA??=<:<?AABDEGIJIIGEE�DB?=�<�=�?�ABDG�J�IJLMLJ�ILOQRQQRRTVYZ\^_abbdgknq�oqs�tvwy|~���������������������������������������������� �������������������������~|{{ywv�tvy|~���~��
~��|ywvsqnn�l�n lkigdba_^^_^�\
YWVRQQOLGED�B?=<:8:=?A?==<::<�?ADEGIJIG�EDBA?=�<=?�A�BDEI�J�LJIGEEGJMO�Q�R TVYZ\\^_aabfil�oqsttvwy{|~����������������������������������������������������������������������~|{ywvtt�stw|~���~ |ywvvsqoonllnn�lkigfddb_^�\'ZYVTRQOMLIEDBAA?=<<:8:=?A?=<::<<==?ADEGI�I�GED�A?=�< =?AABDEEIJJIIJ�LIGEEDEEIJMMOOQQTVYZ�\�^_adgk�ostvwy{�|~�������������������������������������������������������������������������~|{yvt�s�qsv{~������~~|{yw�vtsqqon�ligff�db_^�Z\ZWVTQOMMLJGDA?==<<::878<=?==<::�<=?DEGI�G�IGEB�A?=<<==??ABDGIJJIGIJLMLJGE�D�E GIJJLMQQRTWYZ�\(^_bfknooqtwy{|~�~~������������������������������������������� �������������������������~|{wts�q�oqsvy|~����~|{yww�vt�sqn�lkgf�d ba_^ZYYZYVTRO�LJIEB?=<�:8778:<�=�<�:<=?BEGG�G�IGDA�?�=�?ABDG�J IGIJLMLIGE�D�E�GIJM�Q0RVWYZ\ZZ\^afilnosvy{|~�������������������������������������������������
����������������������������|{vtq�oqstw{|���~|{ywvtt�vwvvttso�lkiffddbbaa_^ZYWWVTQOM�JIGDA=<:�8�78:<�=�<�8:=?BDEG�E�GEBA?�=�?�=�?ABDGJJ�IJLLJIG�EGJM�QRTVWY�Z \_dgklosvy|~�������������������������������� �����������������������������������������|yvtq�o�qstwy{~��~{ywwtssttv�wvtsolkkg�fdba__^\ZYWVTROMLJIIGEB?<:�8�78:<�=
<:88:=?ABDE�B�D�A?=<<?�=?=?BDGIJ�I�JLJIIG�E�DEIM�Q�RTVW�YZ\^adiknqvy|~������� ��������������
���������������� �������������������������������������~~{wtsqq�osqstwwy|~�~{ywvsqqss�vwttsoligf�d�ba^\\ZZYWTRQOMLJIGEDA?<<:887�5788::�<:�8:<=?ABB�?�A?=<<=�<�=ADEG�I�J�IG�ED�BDEIL�OQRRTVWWYZ\^_bfilotw{~�������~ ��������������� ��������������� ��������������������������������|{wvt�sqoqsstvwwy{|~~|{yvs�qs�t�sqnkgfdb�a_\�YWVTRQOMMLJGEDA?==<:875445�78�:8�78:<=�?�<�=�?=<<�: <==<==ABDG�IJII�G EDDBBDEEIL�MOQQRTVWY\^__abfilqvy|����~�||��������������� ��������������������������������������������������������{wvvtsstsqqsstvwy�{�|{yvs�o�s�qolifdba�_a_\YWVWVVTTROOMMLJGEDA�?=:75�4�5787�578::==<�8�:<�=<:88:<=<<=??ABEGG�I�G�I GEEDDEGGIJ�L MOQRTVWY\^�_ adgknsw{|~���~�|~����������������������������������������������������������������{wvv�t�vtsstvvwy�{yvs�o�q�onlifda_^^__\YWVTT�RQ�O MLJIEDBAA?=:75�4200�2 4554224788::8�57�8:8�: 878:<<::<==?A�D�GIG�EGIJI�G�E�GI�JLMOTVWYYZ\\^^_bfilqvy{|�~�|{|~�������������������������������������������������������������������|yw�vwv�twvvwy�{�ywvqonnoo�n�o�l ifb_^\\^^ZWVTR�Q OMMOOMJIEB�A?<7545420�/�0�2�025�7�5�45�7�5�78�:�<=?AABDEGG�EGIJJ�I�G�IJLOTW�YZ\_bfgkotwy{|~~|{{|~��������������� �������������� ����������������������������� �������~|ywwyy�w�vw�vw�yw�vtqo�n�l�nlkifa^\�ZYVTRQ�O�M�OLIEB�A ?<8755420/--/�0�/0245422024�5�4�57�8:�<�=ABD�E�G�IJ�LJGGE�GIJMRVYY�WY\_adgknqtw{|~~|{y{|��������������� �������������� �����������������������������������|{y{yywy�w�v�wvt�sq�onllkklkigfb_\YYWWVTRQQOO�M�OMLJGDBA??=<:87542/-,,-/0//�-�/02200/0�4�2�4�5�78:<�=�<=ABDDEGI�JLMOO�MLIG�EGIJMQT�W�VWY\_adgklosw{|~~|{yy|���������������� �������������� ���������������������������������������~||{{�yw�v�wvts�q�s�qonlk�i gfdb_\YWVVTR�QOM�L�M�LJIEDB?=<::87420-,**,-�/�-/00//�/�0�2�0�2�4578::<<�=<=B�DEGIJLLMOQ�O LIGEEDEGJMOR�W�VWY\_adfiknswy{|~||yy|�������������� ������������������������������������������������~~||{yy{{�wvs�qs�qonlli�g fdba^ZWVTRRQ�OMJ�I�J�L�JIGEDB?=<::8720/,*((*,,-/�-�,-00//�/�024457�8:=�?AD�E�G+IJMOOQQOOQQOLJIGEDDGJLORVWWVVWYZ^abdfinsvwy{�|�{~�������������� ����������������������������������� ���������������~|{{|{�y�wvs�q�sqnlkkig�fda^ZYWVR�QOMMLI�G�IGEDBBA?<:8752/-,*�(�*,�-�,-00//0/--�/�0�/022457788:=?ABDEGG�IJLOQQRQOORROMJIE�DEIJMQTVVTTVWYZ^abdglqtvy�{|�����&����������������������������������������������������������������������~�|{y{{y�vs�qsttqnlkiggffdb_\ZYVTRQOOMLLJGGEE�D�E�GEDDBBA?<87540/-*�(�*�,-00/00/--�/02245778:<=?BEGGIJ�LMO�Q�R�Q�RQOLIE�DEGILOQRTRRTVWY\_abfknqtw�y{~������������������������ ���������������������������������������������������~|�{w�vt�stvvsolki�gfda^\ZYVTRQOMLLJIGGED�BDEED�B A?=<85420/-*((�*�,-/00/0�/�-�/�-�/ 0224577:<<=?DG�IL�MOQRQQRTQQ�RQMJG�D�EGILO�QRTVWY\^_bfilnqv�w{|~��������������������������������������������������������������������������������~{{ywwvv�t�s(vwvsonligffdba^\ZYVTRRQMLLJIGGEEDBBABDDBA�? =<8520/-,**(�*�,-/0/-/�-�/-,,-/0224578:<=?ADGIJJLM�OQ�R�T�R�TROLI�EGJMOOQRTWYZ\^_bfiklostvvwy{|~����������������������������������������������������������������������������|{�yw�vtsstvwvsonlkgfddba^\ZZWVTTROMLJI�GEDB�A ?=<<==<:8520/-�,�*�,-//--�,-�/,**,/02244578<?ABEIJLLMM�OR�TVT�RTVVROJGG�EILMOQRVWYZZ\^adgkknoqstvwy{|~~��&�����������������������������������������������������������������2�����������|{{yywwvvtsstvwvsonlkigfdba_^ZZYWVVTQMLJ�IGEB??==<�:�<�:852//�-�*�,�-�,*,,-/--�,
-//-*((*-02�4 578<?ABEIJLM�OQRT�V�TVWWVRMJI�GILMOQRVWYYZ\^abfiklnoqsvwy{{�|~������ ����������������������������������������������������� ����������~||{�ywv�t�vtsol�kigdbaa_\ZYYWVTQML�JIGEB?=<::�8�:�8740�/-�,�-,�*�,-//-�,�-,*�(*,/0445778<?ABEIIJM�QRT�V WVVYYWROML�JIJMMOQRTVWYZ\_aadgikloqsvvw�{|������� ������������������������������������������
������������� �����������~|�{w�v�wvsqnl�kigdbaa_^ZYWVVTQOM�JIGEB=<:�8�752/�-�/�,�-
,*((*,,-/--�-,*�(*,-045788:<?ABEIIJMQ�R�T�V WYZYWYYWTRRQ�O�M�OQRRTVYZ\_aabdgiloqstvw�y{|~����������������������������������������� �������������� ������������~�|{y�wvsonlkkigfdbba_^ZWVTTRQQOL�JIGEB=:�87540�-�/�-�/ -,*((*,-//--�-*(�'!(*,-0258::<<?ABEIJLMORRTTRTTVVYZ\Z�YW�V�TRQ�R�Q�RVYZZ^__abfgknoqsv�wy{{|~~�������������������������������������������������������������~||{�y�w$vtsonlkkigffdda_\YWVTRRQQOLLJJIGEDB=:�878740-,�-�/�-�/
-*((**,-/--/-*(�'!(*-/0258:<==?ADEILMOOQRTVTTVWWYZ\\�Z�YWVVWWVT�RV�YZ\^_adfgknoqtvv�tvwyy�{|����������������������������������������������������������������~||�{ ywvttsqonllki�gfb_\YWVT�R QOMMLJIGDBA?<�8�752/,,-�/�0/,�*,-�/0-*(�'(*-/0258:==??ADGJMOQOQRVW�VYWY�\�Z�\�^�\ ZYYZZYWVTRRTV�WYZ\^_bbdgknoqssqqsstvwy�wy~���� �������������������������������������������������������������~|{|{ywvttsqon�lk�igda^ZYWV�TRQMMLLJGDA??<88�: 8754/-,,-/�0�/�020-�,�-/000-*(�'(*,-047:<==?ABEILMO�QRV�W�YZ�\�^_aa_^�\ZYVTTV�W
YZZ\^aabfil�n�oqst�vwy|���������������������������������������������������������������~||{yw�vtsqo�n
lkigfb_^\ZW�VTROMLLJGDA??<::<<:8520-�,-/0022�0�20/--�/�0/-*(�'�(*-048<�=?ADGJMM�OQRVW�YZ�\�^�_�ba_^\�^\YWVV�WYZZ\^_adg�k�l noqstvwy|~������������������������������������������������������������~|{y�wvtsqoo�qolkgfdaa_^ZYWVTTQOLLIEDA??�<:8740-�, -//0/0202244�20/�0/00/-*(�'�(*-258<�=?BEIL�OQTVW�YZ�\^__ab�dba_^^�_^\ZYWWY�WY�Z^adfgg�i klnosvy{|~�� ���������������������������� �����������������������������������~{�y+wvtsqsttsqoligfdba_^\YWVTRQMJGEDBA?==<:8752/�,-�/�02�4�20�//-*(�'(*,/258<<=?ADGJMOQOOQQTV�Y�Z\^_aabdf�dba_�a_^\ZYYZYYWWYZYY\_bbdf�g
iknqvy{|~���~�����������������������������������������������������������������������|�{*ywvttvvtsqnkiifda_^\ZYWVTQMJGEDDB??=<:8752/�,�-�/�0242�42�4�20--/0/,(�'(*,/0478:<=ABEILMO�Q�RTWYYWY�Z\_abdd�fd�ba_^�\ ZYWWYWWZ^__ad�f�g�f ilqtw{|~���~ ������������ ��������������������������������������������������������������~|{y�w#vtsonlkgda_^\\ZYVTQMJGEDDBA?=<:8752/�-�,-/�0�2 455455420/--/#0/-*(''(*,02578:<?DEGILMOQQRTVVWYYWY�Z\_b�fgf�g�f�d�b�a_�^ZY�WVWY\\^_a�d�fgkosvy{~�� ���������������������������������������������������������������������+�~|{{wvttqonkifb_^\\ZYVROLJGEDDBA?=::875200/�-/�0�2457�540/�-/�/-,*((*,-04788:=BEGIJLMOQRTV�WYZ\^ad�g�ig�fdb�a�_�a^ZYYWVVWYZZ\^_b�d�fgknqtw{~�������������������������������������������������������������������������'��~~|yvttsqnkigda_^\ZYVQMJIGEDBAA?=:8754�20�/0�2�45775420/�-/�/-,�*,-/2488:<?DEIJLMMORTVV�W�VWZ\_bfg�i�ki�gda__aa�bdb_ZYYWVVWWYYZ\^adf�d�f gknqtw{~~���������������������������������������� ������������������������������������������~{wvvtsoligfdba_\YVQMIGEDBA�?<:754�20/�0/2�457754200/�-/-�,-/02458:<?BDEILMOOQT�V�W�VWZ^adfg�i�kigda^^_abdffda\ZY�W
YZ\^adffddf�g knqtw{|~������������������������������������ �������������������������������������������'�����~|{wvtsqnkiggfdb_ZVQMIEDBAA?==<:754�2�02455�7�5�754�2/---�,-//02457:<?BDEGILMOQRVWWVWWVT�VWZ^bdgg�ikllifba^^_abfggfa^ZY�WYZZ\_bd�f�gknqsvy{~����������������������������������������������������������3�������������������������~{wvtsqnkkiiggfaZVQMIEDBA?=�<:742�0245�7�5�7�5�40--�,-/�02478:=ADEGIIJLMQTVWW�V�TVWWY\_bdg�ikllifba�_ abdffda^ZY�W YZZ\^abdff�g knqstw{~��������������������������������������������������������������������������!�������~{wvsqonllkiigfa\VQMJGDBA?=�<:742�0�2�0�247�8�7�52/-�- /020245778=ADG�IJLMQRVWWVTTRTVWY\^_bdg�i�kiklkgfda�_�a�ba_^Y�W�Y�Z\^abbdffgginqsvw{~������~�����������������������
������������������������������� ������������������������~|{wvsqon�lkifda\WRQMIEBA??=<:8742�024�2458�:8�787�540/�/0�245�78<ADG�IJLMOQTVVT�R TVY\_aabdgikk�l�kiggfb�_�^\Y�WY�Z\^__abdfgilosvy{|�~
|{yy{|����������������������������������������������?�������������������������|{yywtsqoonllkgdba^YVTQLGDBAA?=:8742002�457:<�=<:�8755�420�02�4�7878:<?DEGGIJLMMO�RTVY^a�bdfikk�l�kiggfda_�^�\Z�Y�\�Z�Y�Z�\^_adfilnqtwy{||yywwvvwy|~������
����������������������������������������������������������������~ywvwvtsq�onlifdba_ZYVROJGDBBA?<874�0244�5�7:=?AA=<�:8755�4�2�4�57�8 :<=?BDEEGIJLMO�QR�TWZ_�bdfi�k�igfddb_^\\�Z�Y�Z�\Z�Y�Z \^_bfiklnqvw�yv�t�stwy{|���������������� �����������������������������������������������������~|{wv�tsq�o nkgfdba_\ZWTQMJGDBA?=:74002244557�8 <?ABBA=<::8755�4�5�7877�8:<=?ABBDDEGIJMO�QR�TY\_�bdffg�k�igff�d ba_^\ZYYWVVWWY�Z�\Z�YZ\^_bf�ikosvwvt�s�qsvwy{~���� ������������ ������������7��������������������������������������������|{ywttsqqonn�lkgfda__^ZWTROLIEBA?=:75�2�45788:<?BBDDB?<::87�4�5�78:<:�8:<=?�ABDEGILO�QRT�VY\_aabf�gikkiggff�db�a_\ZYWV�TVWYZ\�^\�Z�YZ\^adf�gilosts�qstvwy|��������������������� ���������������/�����������������������������������|{yvtssqonnlk�igfda__^ZWTRQMJGDA?=:875422�45778<?B�E DA<:875445�7�8:<?=<�:<=?A?�=?ADEGJMQ�RV�W Y\^_abfgii�gf�da�_^\ZYWT�RTVY\^�_^�\�Z\^ad�fiknq�o�qstw{~����������������������������������������)���������������������������|ywvsqqsonnllig�f+dba_\YWVRQMJGEB?=::87542244578:?BEGIGGDA<875�457�88:<=??=�<=??=�< =?BDEILORTTV�W Y\^_abfgiigfd�b�d
ba_^^\ZZYVT�RVY\_�a_^�\^_adff�dfgk�n�ln�oqsvy|~��~~����������������������������������������������������������|yvtsqooqonnlkgfd�b�d)ba^ZYYWTQMJIGDA=<<:875424557:=ADGIJIGDA=85�457�8:<<�=�<=<�=<::<=?BDEGJMRTT�VWY\^_bbf�gfdb�a�bdaa_^\ZYYVTRRQQRTY\_�a_�\�_bdf�dfgi�k�l�i�lnoqtw{|~~|{|���������� �����������������������������������������
�����~yvsqo�nonnlkgdbb�a_aba_\ZYZYTQOMJGDA?=<�:7545778:=ADGIJJIDA=854�5�7�8:�<�=�<�:
<=ADEEGJMQR�TVY\_abbdffdffdba�_�a�_^\ZWVTR�Q RTWZ^__aa_�\�Z\�_ab�d"fgiiggiigffgknoqsvy{||{y{~����������������������������������� ������������������~{wson�lkgd�a_^^__^\�Z YVRQOLGDBA?=�<:87788:<=ADGIJJIEA=:8�7�8�:�<�=<�:<?AD�GJLOQ�TY\_a�b�dbddba_�^�\ZYVRQOMMOOQQRTVYZ^_aa^�\�Z\^�_�abddfgigg�f�diloqsvy�{ ywy||~��������������������������������������������������������{wtonl�kgda__^�_�\�^�\�Z YWTQOLIEDDB?==�<�:<=??ADGIJJIEB?<<::�8788:88:<�=<�: <?ADGIIJLOQR�TWZ^�a�b�a_^�\ZY�WTQML�J LMORTVVWY\�_�^�\^�_abdff�gfdbb�dgloqsvy{{ywvwyy{|~���������������������������������������������������~|ytqnlk�i gda__^\\^^�\Z�Y WTQMJIGEEDBA?�=?==?A�BDGJLJIGDA??==<<::�8<:8:<�=�<�: <=ADGIGIJMOQ�TRWZ\__a�_�a�_^Z�Y�V�TQMLJIGGIJMRTVWWYZ^^�_�a�_abdbdffd�b�dfgknstvy{ywvttvvwwy{~~����������������������������������������������|ywtqnlki�gfdb_^^\�ZY�Z YWWVROLJIG�EDAA�?A??B�DBDGJLLJIEBAABBA=<<�:=<:<�=�<�=<::<=ADEGGIJMOQ�RVYZ\^__^^�_^\YWVTRR�QOLJJGEEGILQTVWWYZ\^_�ab�d�ba�_�abdd�b dfgiknsvwy{ywt�s�tvw{{|��������������������������������������������|yvsqnlkig�fdba_^\ZZY�WYZZYZZYWVTOLJIG�ED�B�ABDEE�DGJLMMLIEDDEEDA?�=
=<<=?=<<=<<�=�< =ABDGGIJMO�Q RTVWY\^^\\�^\YWVTQO�MJII�EGILQRTWVWYZ^_abdfggf�dba__^__a�b�f gilnsvwyywvts�q�stvwy{| �������������������������������������������~{wtqnlkigfdd�fba__^ZYYWVVWWYZYZZYVTQMJIGEE�GE�D�BDEEG�EGJLOOMJIGGIGEDA�??==??=<<�=�?�= ?ABDGIJLMO�Q�RTVWZ�\ZWWVROL�JIGG�EGILOQRTTVWY\_abfgiig�fdba_^^_a�bdggiknoqt�wvts�qsttvwy{~��������������������������� ������������ ��|yvtqnlkgf�d�f da_^^\ZYWVTV�WY�Z YVROLJGEEG�I�G�EG�I�GILMOOML�JIGEB�A�A�?=<<�=�A�?ABDEGIJLO�QOQRTVWZ�\ZYVVTQMJI�G�E�DEGJMMOQQRTWZ^abf�ig�fdbaa�_a�b dfgikknoqtvw�vts�q�stvww{|������������������������� �������������� ��|yvsqnlkfd�b dba_^Z\ZYWVTRT�V WYZZYVROLJIGGI�J�IJLL�JLMOOMMLJJ�LJGEDBAA�BA??�=?A�B�DEGIIJLO�Q�ORVWY\^^\^^\ZWVTROLIGEDDEDBBDD�BEI�J LMOQTW\_ad�g�fdbaab�a�bdfgik�lnqst�vt�s�q�s�t�v wy~��������������������������������� ��~yvsqonkfb�a_^\Z�YWVT�R�T�V WYZYVRQMLJIJL�M�LM�O�M�OMLL�J LMMLIGEDBBDBA??==<<=?ABDD�E�GJIJLOQ�OQVWZ\�^\ZWVTQOJGDBAABBA?�ABDE�G
ILMMQVY\_bd�f�dbaababbd�b dfiklnllnoqs�tv�t�s�t vw|���������������������������������� ��~yvtssokfb�a_^ZY�WVTT�R�TV�W�YVTQMLLJMO�Q OMMOOQRTRR�QRQOMLLJJLMMOMIIG�DDB�A ?=<<=ABBDE�G�I�J�LM�OQTWZ\�^
\ZYWVROMJEB�?�A?�=?AABDEEGIJLORVY\_abddbbdd�b�dfil�noqss�t tv{�����������������������������������|ywwvtqlgb�a_\YW�VT�R�TV�WVTQO�MOQRTTRQQRTVWWVT�R�TROM�LM�OMJIG�E�BA=<<=ABDDEGIIJJL�J�LM�OQTVZ\�^ \ZWTROMLIDB??�=<�:<�=?�B
DEIMORVZ^_a�b�d�f�dfgil�noq�st�v�t tvy|�����������������������������������|yywvtqlgdba_^ZWV�T�R QOQQRTVWVVTRQQ�ORT�V
TVWWYYWTRTT�VTQO�M�O�QOLJIGGE�B�DB?==?BD�EGIJLMMLJJLLMOQQ�OQTVY\^^�\YTQOLJIGDBA?=<:�8�:<�? ABEJLORWZ^_abd�f�gf�d fgiklnoonnoq�st�v�w�vt tvy{~����������������������������������|{ywvtqlifdb_\YWV�T�RQO�MOQTVVT�R�QRTVWW�YV�T�VTR�Q�RQOLJJIE�D�E DBA?ABDEEGIJJL�MLJJLMOQ�O�QTVWZZ\Z\ZWROMJGEDBBA?=:87�5�78:<==?BGILOTWZ\_bdff�g�if�d fgkllnoqqooqs�t�stvv�w�vt�vwy|~������������� ����������������������~|yvtsqlkgfba^ZWV�TRTQQOOMMLOOQRTTRR�TVWYZ�\Z�YW�V�T�R�T RTTVVTRQOMLIE�E�G EDBBDEGGIJ�L�MLJLMOQOOQRRTVWYY�ZYVQMLIEDBAA?=<:75�4�2"45578<<=ADGJMQTWZ^abdfgiigiifddfgkn�oqssqqstv�wv�tv�w�v�w y{|�����������������������������������|yvtsqnkifdb_\YWV�TQ�O�M�OQR�TVWW�VWZ\�^\�ZYWWVV�TVWW�V�W�VTRQMJG�IJG�E�GIJL�M�O MLJLMORQQR�TVW�YZYWTOLJGEDB??=<:855442200�24588:=ADGJMQTY\_abdfgigii�fglo�s�t�vw�ywvtv�w�vw�y�w
y{~�������������������������������|yvvtqnkigfb_\YWWTTRRQ�O�M�OQ�R�TVYY�WYZ\�_ ^Z\\^ZYYWW�VW�Y�WY�WVTQMJ�LJ�I�J
LMOQQOOQQOM�LMQTTRT�VW�YWVROLIGEDB?=<:87�542�024578<?BEGJMRWZ^_abdf�gilqtvv�w�ywvwyyw�vw�y�wy|��������������������� �����������|ywwvsnkigfb_\ZYYVTRRQ�O�Q�OQRQQR�TVW�Y�Z\^�_^\^__^\�ZYWWY�Z�YWVTQMQOO�M�L�MOQ�RQRQOM�LOR�VYZYYWWTROMLIGGDA=<:877�52�0/-/0458:=?BEILRVY\^_abd�f�g�iknsvwy�{�y�{yw�v�tvw�y�w {|~������������������������������|yywvsoligfb_^\ZZWVTRQOO�Q�R�QRQQR�TVWYY\^__aa_^\^_aa_^\\ZYYZZ�\�YZYYWTQVTRQOOQQ�OQRTTRRQOMLLMQTVWW�V WYZYWVTQOMLJ�IEA=:8�7-54200220-,-/2478<=ADGLQTVY\^_abbdfgikklnosvy{|�~�|{ywwvttvw�y�w y{|~������������������������������~{ywvsoligfba_^^\ZWVTRQQ�RTVT�R�TVWY\_�a
_^^_abdba_^�\�^ZYY�ZYWVYWVTTRTR�QOQRTTVTTQOOMMORTVVWVWW�YWVTROMLJ�IGB=:8�7"5420022/-,,-0045:<=AEIMORVY\^_aabfi�knossvy|~~���~���~|{wwvtvwy{yywvvwy{|~~����������������������~$����~{ywvsoligfbba__^\YWVTTRTTVWWVVTT�R�TVW\_�a_^_ad�fda__a�_a__^�Z\ZZ\Z�YWVT�R�QR�T�VTR�Q�R�T�VW�YWVTRQMLJIGGIIGD?<:8�754�2+0/-,,-//048:<?DEILQTVYZ\^_afikklnqttvy|~~���������~|{yywvwy{|{ywvvwwy{||~������������������~�|~���~{ywvsnkigfdbaa_^\ZYYWWVVWYY�WV�TVWZ^�a�_bf�gfdbb�d�ba_^�\�^_�^ZWVTT�R�T�VTR�QRQRRT�V�WVTROMJIG�E�IGDA=:8755�420/-�,�-!/278<?BDEIMQRVWYZ^_dgklnoqttvw{|~���������|�{�wy{|~|{w�vwy{|~����������������������|�{|~���|{wtqnkgffdbaa^�\�Z�Y�ZY�WYWWV�TVWZ\__�a�_bfggigg�f�gfdda_�^�_�a_\YWWVTTV�T�VTR�QRQQRT�VTROLJIGEDDEGIGDA?<:75�4�5420/-�,#-/0258<?ABEILOQTVWY\_bfknoqstvwwy{~��������|�{�y{|~�~|yw�vw{|~����������������~|�{|���~{wtqnkgffdbba^\\�^�\ZY�W�YWVV�TVWZ\^_�a�_bfgg�i�g�igfdba�_�a�_�ba_^�ZWVVY�W�V TRQQOQOQQRTT�V�T ROLJIGEDBB�EBA?=<7�5�20//-�/#0245:=?ABEILMORTWY\^afinqstvvwwy{~����������||�{|~��~ |ywwvvwy{|�~������������~�|�{~��|ywtqnkigfddba_^\�^�\�YW�Y�W�VWY\^^�_df�g�ikllkgfdbb�a�dbaa�dba_�^\ZYY�ZYWVTRQO�M�O�Q RTVVTRQMJIGED�B�D�BA?==<8�754�2�0�24578<?ABDGJLLMQTWZ\^afilqtv�wy{|�������~||�{�|~���~{yywvwyy{|~||~���������~�|�{|�{ |~~{wvtqnlli�fdba_^^\\�ZY�W�Y�W�Y�WYZ\^�_ad�fgiklnnlig�fdbbd�f�d�fda�_^\\Z�\ZYWTQOM�LMORTVVTROMIGDDBBDBAA??=�<:�85442�4�578:<=ABDEGIJLMORVZZ^afikosvw�y�{~�����~�|�{|~����~|{{�wy{�|~���������~|�{�|~|{wtsqonnkgfgfdba^\YYWYYW�VWYYWWY�Z�YZ\^aa�_�a�dfgklnnlk�g�f�gigg�gfb�a_�^�\ZYWTQM�L�J LMQRTTRQMLIE�B�DB?=�<�:�<�:85�45�7�8:<=?ABDEGIIJLMORVYZ^afiknqtwy�{�y{�~�|�~�|�{|~�����~|{{yy�wy{||~���������~|�{�|�{|�~|{wts�qoli�gfda^ZW�V�TV�WY�Z\_bb�a�b�dfgk�lk�i�k�i�ki�igd�b_�^\�^\WVRQOLL�JIJLO�QOLIGED�B?<�:�8:�<87�5�8�:�<=?B�DEIIJJLMORVYZ^adgklosvw�y{�|�{�|�{�y�{�~�����~|�{�y{|~~�����������~�|�{�|�{�|yvt�s qliggfdba^YWV�T�R�TVW�Y�Z
^addaababbd�b�dfg�k�l�kln�lk lkigfdba_^\\�^\WTRRQML�J�IJLMMLJGE�DB�A?<:�8:<=<:8�7�8:<<=?ABD�EGIJ�LMORVY\^_bfiklqtvv�wy�{�|�{�|{�y{|�~����~|�{|�~���������~||~�|�~|�{�|{wvttsqnkigdba_\YWVTRRTT�RVYYWWY�Z\_bddbbd�bd�b�dfg�i�kln�o�noqqonl onlkifbaa^�\^\WTRQQOMLLJIGGIJJIEDDBB�DBA??=<:�8�:=<<:78:8�:<==?BDEE�G�IJ�LMORVY\^^_bgiiosts�v�w{||�y�|�{�y{|~||~�~��~�{�|�~�������~~�|��~��~�|~|�{ywvttsolkgda_^ZYWVT�R�QRVYY�W YZZ\^abddb�d�bd�b�d fgiggiklnoqqs�q�tqon
qonlkgdbb_^�\ZYVR�Q OMJIGEEGGE�B�DBA?�=<:88�:�<:8:�<=?ABE�I�J�L�MOQRVYZ\\^adfgloqq�stvy{{�y�{�y{�|�|~��~|�{�|�~ ����������~|�{|~��~~���~|{�ywvttsqnkgda^\ZYWVT�RQOOQRVYY�WY\\^_bdff�d�b�df�giknoqqs�t�vtsq
sqnnlkfdda_�^\ZYWVRR�QOLIGEEGGE�ABDBA?�=:�8�:�<�:�=�?ABDEI�L�J�L�M�OQTVYYZ\^_abfklnnoonnoqtwywyywyy�wy{{||{�{|��~||{{�|�{|~~|~�������~|�{|~���~���~�|{y�wvttqonkfda^\ZYWVV�T�R�ORTW�Y Z^^_adfggfdb�d�ba�b dffgiknqsq�tvwyyvtttqonnligfdbaa_^ZYWVTTR�QOMJ�GEBA�?ABBA?==<:�8:<�=�<=?B�DEGIL�M�L�MO�QRVWYYZ\^^_adgik�l�klostvv�w�vwy{||{�{|�~|�{�y{�|~������~|{{�|
~��~||~��~|�{yw�v tsonlifdb_\ZZY�WVTTRRTVY�Z\^__abf�gfdbbdd�b�a
bdffgiknqss�tvy{{ywvtsqonlk�igfda_\ZYWVVTRQQOOL�I�GEBA==�?�A=�<�:<=?=�<=?ADE�GILM�O�M�OQ�TV�WYZ\�^_adfg�i�gknqsttvv�w vttsstwy{|{y�{�|�~�� ~{{yywwy{{|��������~"|{|~~���~||~��~|{yywvttvtqnlkifba^\�ZYW�V WZ\^\\^_aabdf�gfd�ba__abffgilnqttvttvvy{||{wvttqonn�lkifb_^\ZYWWVTRQOOMLJJIGEDA==�?=�<
=?=<<=?ABDG�IJMOQQOO�QRTV�WYZ\�^_adf�g�filoqs�t�v tssqqsvy{{yy�{�|~��~|{yy�wy{~������~||~����~||~��~~|ywvv�t solkkifba^�\^__^^\Z�YZ\^�_abd�f�gfdd�b�dba__abfgiknoqtvvtvwwy{|~|yywvtsqqonlkigb_^\ZZYYWTRQ�OMLLJGEDA�?�=�<=�<�=�? ABEIJJLMOQRRQQ�T VWWYYWWVVWYZ\\�^_abf�dfknoqsqqstssqqooqswyywy�{�|~��~|{�y w{{|�����������~�� ��~||~��~~|y�w vtsqnlkkifba_�^_aa�_�^�\�^ _abbdfggffggf�d�b�db�a�b�giloqqs�vwy{|~�~||{ywwvtsolkigb_^\�ZYVTRQQOMMLJGEDBB�A?�=�<�=�<�=�?�ABDGIJLMOQ�RTVWW�YW�VWYZ\\�^_�bdgknoonno�q�oqt�wy�{|~��~|�{�|~���������~���~���~|{�y wtsqnlkkigdb�a�b�a_�^_bdfg�i�gfddf�d�fd�bdfiiknq�stv�w{~���~�~|{{ywtqlkigb_^ZYYZZYWVRQQOMOLJGG�EDBBA=<<=�<�=�?=�<�=?ABDEGGIJLMOQQRRTVWYYZY�W VWWYY\^\^^�\�_�abdgk�ln�o�nqs�vw�{|~��~|{{�|~�~~|~~��������~���~�|�{ ytsqonlkiiff�bd�fd�ba__^^_bfgklkkiigg�fg�f�dgi�lnq�s tvwyy|~����~�� ~|{yvsnkigda^Z�YWTRRQOOMJ�IGEDBA=<<�=?�A?�=�?ABEGIIJL�M�OQRVWWYZZY�W�Y�Z\�^\�Z\^�_abf�iklnnoon�lnqsttvw{||~��~�|�~�����~���������~����~�|{yvtsqonlkkigdbdf�gf�d baa__abfik�lki�g�i�g�fgkn�oqs�tvw{|~~��������~|{vsnlifdb_\ZZ�YWVTTQ�OL�JIGEDBA=�<=??A�B�?�ABEGIJLMOOMOOQRVWY�Z�YZ\\ZZ\^^�Z�\�^_bd�gikklnnlkllnqsttwy{�~��~�|�������~����������|�~������~�|ywvtqon�lkgddf�g�igffggfbb�abfiikklki�gikki�gikloq�s�t�vwy|�~���������~{vsonifdba_^\ZZYY�WVR�Q
OMMLIEDDBA=�<=?AA�B�A�BDEGILMOQQ�OQRTWY�Z�\�^\ZZ\\�Z\�^_bdf�g�i kllkklnoqstvy{|~���~�|~������~���~~���~�|~�������~�|{ywvso�nkg�f�gikigikigffdbbdf�gikki�g�i�k�iklnoqsv�w�y{|�~���������~|wtonifdbaa_^\\ZYWYYWT�R QOMIEDDBA=�<�=?ABDDB�A�BDEGJMMOOQQOOQRTWY�Z�\�^_^^\�Z\^__�^_abf�g�i�k�lnoqsvwy{|~���|�~���������~~��|�~�|����������~�|ywtq�o
nkigffggikl�klkiggf�d�f�gik�i�k�lnostvy{||�{|{||~����������~|yvqnkgdbaa_�^\Z�YWV�T RQOJGEEDA?�=?AB�D�B�DEGIL�O�QRTWY�Z\�^\�Z�\ ^__^^__abfggi�k�lnosvwy{|~��~�|~��������
����~|{{yy{�|�~���������~~||~~|{wtssqolkiggiik�lk�ig�f�gi�kl�n�oqsvy{|~���~�����������~{yvsolgdb__^�_\Z�YWVVTTVTRQLIEEDBA�?A�B�D�EGJMO�QRVWYYZ�\ZYZZ\\^^\\^_^^_abd�fi�k�i kllnnqtwy{|~��~�|~�������������|ywwvwwy{{|�~ ���������~|~||�~ yvttsqonlk�il�nlikki�gi�klkkl�oq�stvw{~~����������������������|ywvtqnifb_^^�_\�ZYWW�V TRQMJGEDDB�ABDDBBD�E�GILOQ�R�QRTVWY�Z�YZ�YZ\�^�\^__abd�fg�ik�losvy{|�~�|~�����������~{wvttvvwy{|�~��������~�|�~�� |ywwvtsqonlkkl�nl�kigikk�ik�lnoqqsv�wy{|��������������������{wvtsqnkgb_^^_aa^�\�ZYZWWVTRQOMJGEED�BDEDBBDDE�GI�JMQR�TR�QRTTW�YWVVWWYYZ\�^�\^_a�dfd�f�g�igi�knosw{|~||�{�|�����������~|{vtssvvwy{|�~ �����������|�~�� �~|{{wvtssqn�l�n�l�k igkllkklln�l�noqstvy�{|~�����������������������{wtsqonlgb�_�a_�^�\ZYWVTRRQMJIGEDDEDDEGE�DEI�JLMMOR�TR�QR�Q�RTV�WVTTVWYYZ\�^�\^_bff�d�f�d fgiiggiiklnqvy
{||{yy{|~����������~||{wvttvwy{|�~�����������~||~�����~{w�vtqonn�l�n�lk�ik�l�n�oqstw{|~������������������������~yvsqonnlgba�_�a�_^_^\�ZYWVTRQMLI�G�IGEEGGIJ�LMOQR�TR�QR�Q�R�Q�RTVV�TVWWZZ�\^\\^ad�f�dfd�b dgigfgiiklnqty{||�{�|~�����������~|yy�wy{|�~
�������������������~{�ywtqon�lnl�kigi�kl�n�o qstvw{���������������������������~yvsqnllkgdba�_�a^\\�^\YWVTROL�J�LJ�I�JL�MOR�TRQQ�R�Q�RQ�OQR�TVW�Y�Z�\^_bd�fd�b dgigfgikllnqtwy�{|�~����������~�|{yy{{|~���������������������~�|{wsqonllnlkiiggi�kl�n oqsstvwy|������������������������������~{vsqnkkigfdbaa_aabdbba_^^�a_^ZYWTRO�M�OM�L�MOQOOQRTVV�TRQ�R�QRTRO�MOQTTVTVV�W�VWYZ\^abd�fdbabdgigffgklnosstvwy{|�~|~�����������~|�{ |~�������������������� ������|yvsoon�l kggfggikkl�noqstvwy|~�����������������������������~ {wtqnkiiggffdd�bdffdb�a bddba_^ZWVTRQQ�R�QRQQRTRRTV�W�V�T�R�TROM�LMORTVV�W
VTTVWZ^_aab�dbabdf�g�filoq�stvw{�|�~�|~�������������~||~��������������������������~{wtqoonllkgffggikln�oqstvy|~�����������������������������~||{{yvsqnlikii�g�fdffggddbbdfgfdba_ZYWWVV�W�T
VTTVWVVWYZZ�YWVV�TQML�JLMORT�VTVWY\^_�a�b�d�b�a�bdfgffilo�qstvw�{�| {|{|~����������������� ����������������������������|wtqoonlki�f�gklnoq�stvy|�����������������������������������
~|{yywvsqon�l�ki�g�igf�dgigffdb_^�\ZW�VW�Y�Z\^^�\�^\YW�V TRQMJIIJJLMQR�T�VWYZ^_�a�ba�_ abdffgiknooqsvww�y�{�|~������������������������������� �����~yvso�nkg�fgiloqst�vwy|������������������������������� ~|{ywwvtsq�o�l�nl�k�i�fiki�gfb�a�_^Z�YZ\�^�_�a _^ZYWWVTRQOLJI�JLOR�TVWYZ\_ab�a_�a_^^\^^_abdfggiknnqstvvww�v�w y{||~����������������������������������������{wtqnnlki�giknqstvwwyy{����������������������������������~|{y�wvt�sq�on�lkii�gikk�igf�d ba_^^\\^_abd�f�d�f�d ba^\ZYWTRQOML�JLOR�TVYZ\^_a�ba�_ ^\Z\^_aabf�gilnoqsttvv�t�vwy{{|~�������������������������������'���~yvsonlkkiiklnqstvwwy{|~������������������������������ ��~|{yywwv�t�s�qo�n�l�kigg�i�ki�gfb�a�_abdfi�k�g�f�g�f db_^\ZYVTQMLJJ�IJMQR�TVYZ\^_a�ba__�^�\�^�_ bfggfgklnq�s�t�s tvvwwyy{{||����������������������������������{wtqonllkklnostvwyy{|������������������������������������ ���~~|{yywwvv�tsqonn�lk�ikllk�if�d�bdfgilnonk�i�g
fda_^\ZYVQL�IJMQR�TVWYZ\^a�b�a_^\\�^
_bfggfgiklo�q�st�v�wy{~�����������������������������|yvtq�o�noqstvwy{{|~�����������������������������������������~~|{yywv�wvtson�l�k�l�k�ikg�f�gkno�qn�lkiiggfdba_^ZYVQLIG�IJMQR�T�VWYZ\^_�b�a_^�\^�_�^
_bdfgfgiikl�o�n�qstt�s�twy|~����������������~ ��������������~|{ywts�q
sttvwy{|~��������������������������������������������~|{�ywvtqon�lkiiklk�i�knq�sq�onlkigfddba_\YVQMJ�IJLMQRTTVWWYZ\\^_a�ba_^�\^�_�^_abdff�gi�l�noqsqoo�qsvy{|�~�|~���~����~||�{|~����������~�|{ywv�tv�wy{~��������������������������������������������������|�{ywvtson�l�n�lkiklonn�l�nqt�vtssqonlki�g fba^YVROML�J LMORTTVWWY\^^�_
bddba_^ZZ\^�_\^^_a�bdfddf�i�k�n�o�n�oqtwwy�{�|�ywyy{|�{|~�~|y{�wy{|~������~�|�{|~|{ywwyy�{�|�������� ��������������������������������� ���|{{wvttsqon�ln�onll�klo�q�o�qstvw�ywvtqonnl�k
ifb_ZWTRQQM�LMORT�VWZ^_aa__addba_\YZ\�^�\^�_a�bdfg�i�kl�noqstv�wy�{ywv�tv�wy{|{yww�vwy|~~��~�|{�y{|~|{yy{�~������������������������������������������������������~|{wvttsqoo�no�q�o�lklnoqq�sqstvwy{{�|{ywt�qo�nlid_\YWWVTQOMMLMOT�VW\_abba_abba_^ZYZ\^�\�Z�\�^_aabbdf�gik�lnoqst�v�wvtss�qs�tvwwv�t vtvw{|{|{{�y�{ywwy{�|{|~����������������������������������������������������� ����~{ywvvtsqq�oq�sq�onllnoqss�tvwy{�|~��~|{w�tsqqonkfa^\ZZYWVTQOMOQT�VY^_abba__aa_^\ZYZ�\Z�Y�Z�\^_aaabd�fgi�klnoqstt�vts�q�o�qstts�qs�tv�yw�vw�y�wy{�|�~������������� ������������������������������������� �����~||{yvtst�q�s�q�onllnostt�v�wy{||�~���~|{�w�vtonlgba_�\ZYWTR�QRTTVVY\_�a_^^�_\ZZY�Z�\�ZY�W�Y�Z�^�_abddbddf�gi�kloqqss�tsqooq�o�q�oqsst�vwv�t�v�w vwwy{|~���������������������������������
���������������������������������|ywvvttssqq�o�nosv�wy{|�~�������~|�{ yvqnlifdb_�^\YWWVT�R TVWYZ^__^\Z\�^Z�YZ\\ZYY�W�YZ�^_bddbabd�fg�klo�q�sq�o�q�o�nonnoq�st�v�t�v�w
y{~����������������������������������������������������
��������������~{w�vtqqoonnoqoonnosv�y{|����������������
~{wsoligffb�a ^\Z\YWTRRTVWYZ�\ ZYYZ\\ZYWW�Y�Z�Y
WYYZYYZ\^_a�dbabb�d�fikllno�qo�q�oq�o noonnllklnnlln�oqsst�v�t�v wy|��������������������������������� �������������������������������������~{�wvsqoonno�q�oqtwy�{|~������������~{vql�igfdba�_\YV�TVWY�ZY�W�YWVVW�YZ\\�Z\^ab�d�b�d�fgk�ln�o�n�o�n�onlkiik�l�noqqsvww�v w{~�������������������������������� ���������������������� ������������|y�wvsqoonnooqqoqsvy{�|~����������������~wso�lkif�d�b^ZWV�TVWYY�ZY�V�T VWYYWWYYZZ^^�\^bd�d�b�dfgi�klnn�l�n�o nllnnoonkiggii�kl�n�oqsvww�vw|�������������������������������������������������������������������������|ywvtssqo�noqqstw{|�~������������������ytsq�onli�gfd_\ZYV�TVWY�ZYVTT�R�TVWYWWYZ\\�^_bd�d�bdffgikk�i�k�i�klnonlkkl�nli�g�ikln�oqsvww�v y|���������� ������������
���������������
������������������/����������������������|yvtssqonnlloqtvwy{|~~��������������������|wvsqqsqnl�kifb_\ZWVTTVWYZZYYWTR�Q�RTVWVWYZ^^�_�a�_�b�bdbbdd�fgikki�g�f giknlkigikllk�f�gilo�qstvww�v
wy|����������������������������������������������� �������������� �����������{wt�sqonllosvy�{|~��������%��������������{wtsstsqonnlkgda^\YWVVWY�Z�YWTR�Q�R�T�VWYZ^�_abb�a�a�bd�fg�igff�d�bdfg�igffgiig�dfggiloq�stvwyyw�v wy{|������������������������������������������������������������������������|ywt�so�nosv{�|~����������������������~{w�v tsqqnkgdb__Z�YWVTR�Q�RTVWYZ\�^_bdbba_�_�a�b�d�fgiigfdb�ab�a�b�d�f�d�fd�bdfggikoq�tw�y�w y|~������������������������������~~��
�����������������������������������������|{w�tq�o qsv{|~������������� �����������|{y�w
vtsokgdbaa^�\Z�YV�TRQQ�R�QRTVWY�Z\^a�ba_�_�abdffggfba�_�a�_ab�db�a�b dfggiknqtvvy�{�y |��������������������������������~ ���������������!����������������������������|yvvts�q stw|~��������������� �������~|{yy�wvtqkgfdba_^__^\ZYYWV�T�RQ�OQRVWW�YZ\^_�a^�^_^^_abbddb_^\\^�\^__^�Z\^abb_^\\^^abddfgiknqtvwy{�|�{ |~���������������������� ���������������||{||������������������������������������������~{ywv�t vy~������������
�������|{yy�wvtqligfdb�a_^\ZYWV�TRQO�MOQTVVW�YZ\^�_^�\�^�\�^_aa_^\�Z�Y#Z\\ZWVVWY\^^\ZYYZ\_bddfgklnqtwy{|~���~ ������������������������������|{y{|����������������������������������������|{{y�v w{�������������� ��������|{yy�wvtsnkg�f�d
ba_^\YYWVTR�TQO�M�ORTVWWYYZ\�^_^�\�Z\Z�\�Z�YW�V WYYWTRRTVW�Y�W#Y\_abdfgknosvy{|~�������������������������� �����������������~{{y{|��������������������������$�������������������~~|ywwyy{~����������������
��������|{y�wvtsoli�g�f dba^\ZZYWT�RQOMM�OQRVWWYZ\\�^�^\�Z�YWT�RTVVTQOOQ�R�TVWY\_abdfilosvy|~������������������������������������������������|�{ |~��������������������������������������������~|{{||~������������������������������|{w�vwvtsqoki�g�fba^\�ZYWTR�Q�OM�O�QTVVYZ\Z�\�^\�ZYW�V�WTQ�OQRQOO�MOQTTWZ_abdgilotw{~����������������������������������������������| ~���������������������� ��������������
�������������������������������������������~{wvttvvtssqnkig�fb_^\�ZYVR�Q�O�QRTVY�Z\^^\�ZYV�T�VTQOMM�L�MLJIIJJLMQRVY^abfiknqvy|���������������������������������������������~ ������������������������������������������������������������������������� ����������{wv�t�sonli�fb_^\�ZYWVR�QRVY�Z�Y�Z�\�ZYTRTRR�TRQOMLJJ�I�JIEEDGGJLMQVY\_bfiloty|��������������������������������������������������������������������������������������������������������������������� ����������|y�vt�s qonkgfddb_\Z�YWVTRR�Q�R�QRVY�Z�YZ\\�\�ZYVTT�R�QOMLJIG�ED�BDEIJLQVY\_bfknsw|������������������������������� ������������������ ���������������
������������������������ �����������������������������������������|ywvvt�sqnkigba_^ZYWYWWVT�R�TR�QRVY�Z�YZ\^�^\�ZYWVTRR�Q�OMJGED�B�ABDEGILOTY\adgloty~�����������������������������������������������������������������������������������������������������������������������������������������|{ywvtt�s qnkigb_^\Y�WV�T�VT�R
TVYZ\\ZZ\^_�_^\�ZYVTTQ�OMLIEDA�?�=?ABDEGILOTY^bfinqv{�������������������������������������������������������������������������������������� ��������������������������������������������~{{wvtsst�s
qnkifa_^\YW�V�WVWVWW�V�TVWZ�\^a�a�_�^-\WVTRQQOOLLGDB??==<==?ABDEIMQVZadginqv{����������������������������� ����������������������������������������
����������������������������������������/�����������������������|{ywtstvtssqnkgda_^\YWVTV�W�YW�VWY\�^_a�a�_�a_^ZWVTTRQOLJGDA??�= ?ABDEJORW^bfgkosw|������������������������������������������������������������������� �����������������������������������������������&�����������������|{ywtstvtssolifda_^\YW�VWYZYW�V�WYZ^�_a�b�a�ba_\YVTVTROJIEDA�?�=!<=ABDGLRVZ_bfglqty~��������������������������������������������������������� ��������������

88
Assets/TestScenes/HDTest/GraphicTest/Common/Dragon/Dragon_specular.psd.meta


fileFormatVersion: 2
guid: 53cf1b46cfd6ff347aad6fd4c6e1ea1e
timeCreated: 1490775966
licenseType: Pro
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 4
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 0
linearTexture: 0
fadeOut: 0
borderMipMap: 0
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: -1
mipBias: -1
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
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: Standalone
maxTextureSize: 2048
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: PS4
maxTextureSize: 2048
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

9
Assets/TestScenes/HDTest/GraphicTest/SSS.meta


fileFormatVersion: 2
guid: 5b138ce4bb2634640802ec8b652c4d13
folderAsset: yes
timeCreated: 1493290941
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

197
Assets/TestScenes/HDTest/GraphicTest/Two Sided/Material/GroundLeaf_DoubleSidedFlipSSS.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: GroundLeaf_DoubleSidedFlipSSS
m_Shader: {fileID: 4800000, guid: 6e4ae4064600d784cac1e41a9e6f2e59, type: 3}
m_ShaderKeywords: _ALPHATEST_ON _DOUBLESIDED_ON _MASKMAP _NORMALMAP _NORMALMAP_TANGENT_SPACE
m_LightmapFlags: 1
m_EnableInstancingVariants: 0
m_CustomRenderQueue: 2450
stringTagMap:
RenderType: TransparentCutout
disabledShaderPasses:
- DistortionVectors
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: 2800000, guid: 00447c5eeb984f54d92c80818840a36b, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BumpMap:
m_Texture: {fileID: 2800000, guid: 0c3144d154991884c8aa53e7dc7893ff, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
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}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DiffuseLightingMap:
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}
- _EmissionMap:
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: 2800000, guid: 00447c5eeb984f54d92c80818840a36b, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MaskMap:
m_Texture: {fileID: 2800000, guid: b24f69ff4ace9194fb0d9eee4f5cf1a4, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 2800000, guid: b24f69ff4ace9194fb0d9eee4f5cf1a4, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _NormalMap:
m_Texture: {fileID: 2800000, guid: 0c3144d154991884c8aa53e7dc7893ff, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SpecularOcclusionMap:
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}
- _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}
- _ThicknessMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _AlphaCutoff: 0.5
- _AlphaCutoffEnable: 1
- _Anisotropy: 0
- _BlendMode: 0
- _BumpScale: 1
- _CullMode: 0
- _Cutoff: 0.5
- _DepthOffsetEnable: 0
- _DetailAOScale: 1
- _DetailAlbedoScale: 1
- _DetailHeightScale: 1
- _DetailMapMode: 0
- _DetailNormalMapScale: 1
- _DetailNormalScale: 1
- _DetailSmoothnessScale: 1
- _DistortionDepthTest: 0
- _DistortionEnable: 0
- _DistortionOnly: 0
- _DoubleSidedEnable: 1
- _DoubleSidedMirrorEnable: 1
- _DoubleSidedMode: 2
- _Drag: 1
- _DstBlend: 0
- _EmissiveColorMode: 1
- _EmissiveIntensity: 0
- _EnablePerPixelDisplacement: 0
- _EnableWind: 0
- _GlossMapScale: 0.892
- _Glossiness: 0.507
- _GlossyReflections: 1
- _HeightAmplitude: 0.32
- _HeightBias: 0
- _HeightCenter: 0.68
- _HeightMapMode: 0
- _HeightScale: 1
- _HorizonFade: 1
- _InitialBend: 1
- _MaterialID: 1
- _Metalic: 0
- _Metallic: 0
- _Mode: 1
- _NormalMapSpace: 0
- _NormalScale: 1
- _OcclusionStrength: 1
- _PPDLodThreshold: 5
- _PPDMaxSamples: 15
- _PPDMinSamples: 5
- _Parallax: 0.02
- _ShiverDirectionality: 0.5
- _ShiverDrag: 0.2
- _Smoothness: 0.5
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _StencilRef: 1
- _Stiffness: 1
- _SubsurfaceProfile: 0
- _SubsurfaceRadius: 1
- _SurfaceType: 0
- _TessellationBackFaceCullEpsilon: -0.375
- _TessellationFactor: 4
- _TessellationFactorMaxDistance: 50
- _TessellationFactorMinDistance: 20
- _TessellationFactorTriangleSize: 100
- _TessellationMode: 1
- _TessellationObjectScale: 0
- _TessellationShapeFactor: 0.75
- _TexWorldScale: 1
- _Thickness: 0.5
- _UVBase: 0
- _UVDetail: 0
- _UVMappingPlanar: 0
- _UVSec: 0
- _ZTestMode: 8
- _ZWrite: 1
m_Colors:
- _BaseColor: {r: 1, g: 1, b: 1, a: 1}
- _Color: {r: 0.5882353, g: 0.5882353, b: 0.5882353, a: 1}
- _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _EmissiveColor: {r: 0, g: 0, b: 0, a: 1}
- _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0}
- _UVMappingMask: {r: 1, g: 0, b: 0, a: 0}

8
Assets/TestScenes/HDTest/GraphicTest/Two Sided/Material/GroundLeaf_DoubleSidedFlipSSS.mat.meta


fileFormatVersion: 2
guid: 943c7c930eb495d4486788572dc49a12
timeCreated: 1460562588
licenseType: Pro
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

8
Assets/TestScenes/HDTest/NewBatcherBench1.unity.meta


fileFormatVersion: 2
guid: efeef759b5144ef4fa1cfc182ddbaea5
timeCreated: 1493136714
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

9
Assets/TestScenes/HDTest/NewBatcherTest.meta


fileFormatVersion: 2
guid: 01a0eae0646089f489a0047dc8afb564
folderAsset: yes
timeCreated: 1493224766
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

37
Assets/ScriptableRenderPipeline/HDRenderPipeline/SSSProfile/FoliageSSSProfile.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: a6e7465350bf0d248b4799d98e18cd24, type: 3}
m_Name: FoliageSSSProfile
m_EditorClassIdentifier:
stdDev1: {r: 0.27931032, g: 1, b: 0.050000012, a: 0}
stdDev2: {r: 0.3010142, g: 0.8235294, b: 0.05, a: 0}
lerpWeight: 0.5
texturingMode: 0
enableTransmission: 1
tintColor: {r: 1, g: 1, b: 1, a: 1}
thicknessRemap: {x: 0, y: 0.2873168}
settingsIndex: 0
m_FilterKernel:
- {x: 0.28517896, y: 0.09090909, z: 0.9996764, w: -0.00000009903661}
- {x: 0.22566724, y: 0.09090909, z: 0.00016186091, w: -0.209237}
- {x: 0.10604589, y: 0.09090909, z: 8.6876086e-17, w: -0.43068767}
- {x: 0.024215871, y: 0.09090909, z: 5.8571e-41, w: -0.6816498}
- {x: 0.0014802383, y: 0.09090909, z: 0, w: -1.0000685}
- {x: 0.0000013396462, y: 0.09090909, z: 0, w: -1.5417894}
- {x: 0.22566712, y: 0.09090909, z: 0.00016185877, w: 0.20923716}
- {x: 0.10604589, y: 0.09090909, z: 8.6876086e-17, w: 0.43068767}
- {x: 0.02421585, y: 0.09090909, z: 5.857e-41, w: 0.6816499}
- {x: 0.0014802383, y: 0.09090909, z: 0, w: 1.0000685}
- {x: 0.0000013396391, y: 0.09090909, z: 0, w: 1.5417898}
m_HalfRcpVariances:
- {x: 6.4090853, y: 0.5, z: 199.99991}
- {x: 5.518182, y: 0.7372449, z: 200}
m_HalfRcpWeightedVariances: {x: 5.9386554, y: 0.60145676, z: 199.99997, w: 0.60145676}

9
Assets/ScriptableRenderPipeline/HDRenderPipeline/SSSProfile/FoliageSSSProfile.asset.meta


fileFormatVersion: 2
guid: d6ee4403015766f4093158d69216c0bf
timeCreated: 1493161911
licenseType: Pro
NativeFormatImporter:
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

37
Assets/ScriptableRenderPipeline/HDRenderPipeline/SSSProfile/SkinSSSProfile.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: a6e7465350bf0d248b4799d98e18cd24, type: 3}
m_Name: SkinSSSProfile
m_EditorClassIdentifier:
stdDev1: {r: 0.22794116, g: 0.17430794, b: 0.17430794, a: 0}
stdDev2: {r: 1, g: 0.05, b: 0.05, a: 0}
lerpWeight: 0.5
texturingMode: 1
enableTransmission: 0
tintColor: {r: 1, g: 1, b: 1, a: 1}
thicknessRemap: {x: 0, y: 2.04}
settingsIndex: 1
m_FilterKernel:
- {x: 0.09090909, y: 0.5992897, z: 0.5992897, w: -0.00000006668997}
- {x: 0.09090909, y: 0.12275139, z: 0.12275139, w: -0.14089748}
- {x: 0.09090909, y: 0.061923057, z: 0.061923057, w: -0.2900195}
- {x: 0.09090909, y: 0.015196559, z: 0.015196559, w: -0.45901415}
- {x: 0.09090909, y: 0.0004841472, z: 0.0004841472, w: -0.6734332}
- {x: 0.09090909, y: 0.000000024399057, z: 0.000000024399057, w: -1.0382211}
- {x: 0.09090909, y: 0.122751325, z: 0.122751325, w: 0.1408976}
- {x: 0.09090909, y: 0.061923057, z: 0.061923057, w: 0.2900195}
- {x: 0.09090909, y: 0.015196541, z: 0.015196541, w: 0.45901427}
- {x: 0.09090909, y: 0.0004841472, z: 0.0004841472, w: 0.6734332}
- {x: 0.09090909, y: 0.000000024398872, z: 0.000000024398872, w: 1.0382214}
m_HalfRcpVariances:
- {x: 9.623311, y: 16.45643, z: 16.45643}
- {x: 0.5, y: 200, z: 200}
m_HalfRcpWeightedVariances: {x: 1.3264011, y: 39.750328, z: 39.750328, w: 1.3264011}

9
Assets/ScriptableRenderPipeline/HDRenderPipeline/SSSProfile/SkinSSSProfile.asset.meta


fileFormatVersion: 2
guid: 906339bac2066fc4aa22a3652e1283ef
timeCreated: 1493291209
licenseType: Pro
NativeFormatImporter:
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

288
Assets/ScriptableRenderPipeline/common/Debugging/DebugActionManager.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace UnityEngine.Experimental.Rendering
{
public class DebugActionManager
{
static private DebugActionManager s_Instance = null;
static public DebugActionManager instance
{
get
{
if (s_Instance == null)
s_Instance = new DebugActionManager();
return s_Instance;
}
}
private static string kEnableDebugBtn1 = "Enable Debug Button 1";
private static string kEnableDebugBtn2 = "Enable Debug Button 2";
private static string kDebugPreviousBtn = "Debug Previous";
private static string kDebugNextBtn = "Debug Next";
private static string kValidateBtn = "Debug Validate";
private static string kPersistentBtn = "Debug Persistent";
private static string kDPadVertical = "Debug Vertical";
private static string kDPadHorizontal = "Debug Horizontal";
private string[] m_RequiredInputButtons = { kEnableDebugBtn1, kEnableDebugBtn2, kDebugPreviousBtn, kDebugNextBtn, kValidateBtn, kPersistentBtn, kDPadVertical, kDPadHorizontal };
public enum DebugAction
{
EnableDebugMenu,
PreviousDebugMenu,
NextDebugMenu,
Validate,
Persistent,
MoveVertical,
MoveHorizontal,
DebugActionCount
}
enum DebugActionRepeatMode
{
Never,
Delay
}
class DebugActionDesc
{
public List<string[]> buttonTriggerList = new List<string[]>();
public string axisTrigger = "";
public List<KeyCode[]> keyTriggerList = new List<KeyCode[]>();
public DebugActionRepeatMode repeatMode = DebugActionRepeatMode.Never;
public float repeatDelay = 0.0f;
}
class DebugActionState
{
enum DebugActionKeyType
{
Button,
Axis,
Key
}
DebugActionKeyType m_Type;
string[] m_PressedButtons;
string m_PressedAxis = "";
KeyCode[] m_PressedKeys;
bool[] m_TriggerPressedUp = null;
float m_Timer;
bool m_RunningAction = false;
float m_ActionState = 0.0f;
public bool runningAction { get { return m_RunningAction; } }
public float actionState { get { return m_ActionState; } }
public float timer{ get { return m_Timer; } }
private void Trigger(int triggerCount, float state)
{
m_ActionState = state;
m_RunningAction = true;
m_Timer = 0.0f;
m_TriggerPressedUp = new bool[triggerCount];
for (int i = 0; i < m_TriggerPressedUp.Length; ++i)
m_TriggerPressedUp[i] = false;
}
public void TriggerWithButton(string[] buttons, float state)
{
m_Type = DebugActionKeyType.Button;
m_PressedButtons = buttons;
m_PressedAxis = "";
Trigger(buttons.Length, state);
}
public void TriggerWithAxis(string axis, float state)
{
m_Type = DebugActionKeyType.Axis;
m_PressedAxis = axis;
Trigger(1, state);
}
public void TriggerWithKey(KeyCode[] keys, float state)
{
m_Type = DebugActionKeyType.Key;
m_PressedKeys = keys;
m_PressedAxis = "";
Trigger(keys.Length, state);
}
private void Reset()
{
m_RunningAction = false;
m_Timer = 0.0f;
m_TriggerPressedUp = null;
}
public void Update(DebugActionDesc desc)
{
// Always reset this so that the action can only be caught once until repeat/reset
m_ActionState = 0.0f;
if (m_TriggerPressedUp != null)
{
m_Timer += Time.deltaTime;
for(int i = 0 ; i < m_TriggerPressedUp.Length ; ++i)
{
if (m_Type == DebugActionKeyType.Button)
m_TriggerPressedUp[i] |= Input.GetButtonUp(m_PressedButtons[i]);
else if(m_Type == DebugActionKeyType.Axis)
m_TriggerPressedUp[i] |= (Input.GetAxis(m_PressedAxis) == 0.0f);
else
m_TriggerPressedUp[i] |= Input.GetKeyUp(m_PressedKeys[i]);
}
bool allTriggerUp = true;
foreach (bool value in m_TriggerPressedUp)
allTriggerUp &= value;
if(allTriggerUp || (m_Timer > desc.repeatDelay && desc.repeatMode == DebugActionRepeatMode.Delay))
{
Reset();
}
}
}
}
bool m_Valid = false;
DebugActionDesc[] m_DebugActions = null;
DebugActionState[] m_DebugActionStates = null;
DebugActionManager()
{
m_Valid = Debugging.CheckRequiredInputButtonMapping(m_RequiredInputButtons);
m_DebugActions = new DebugActionDesc[(int)DebugAction.DebugActionCount];
m_DebugActionStates = new DebugActionState[(int)DebugAction.DebugActionCount];
DebugActionDesc enableDebugMenu = new DebugActionDesc();
enableDebugMenu.buttonTriggerList.Add(new[] { kEnableDebugBtn1, kEnableDebugBtn2 });
enableDebugMenu.keyTriggerList.Add(new[] { KeyCode.LeftControl, KeyCode.Backspace });
enableDebugMenu.repeatMode = DebugActionRepeatMode.Never;
AddAction(DebugAction.EnableDebugMenu, enableDebugMenu);
DebugActionDesc nextDebugMenu = new DebugActionDesc();
nextDebugMenu.buttonTriggerList.Add(new[] { kDebugNextBtn });
nextDebugMenu.repeatMode = DebugActionRepeatMode.Never;
AddAction(DebugAction.NextDebugMenu, nextDebugMenu);
DebugActionDesc previousDebugMenu = new DebugActionDesc();
previousDebugMenu.buttonTriggerList.Add(new[] { kDebugPreviousBtn });
previousDebugMenu.repeatMode = DebugActionRepeatMode.Never;
AddAction(DebugAction.PreviousDebugMenu, previousDebugMenu);
DebugActionDesc validate = new DebugActionDesc();
validate.buttonTriggerList.Add(new[] { kValidateBtn });
validate.repeatMode = DebugActionRepeatMode.Delay;
validate.repeatDelay = 0.25f;
AddAction(DebugAction.Validate, validate);
DebugActionDesc persistent = new DebugActionDesc();
persistent.buttonTriggerList.Add(new[] { kPersistentBtn });
persistent.repeatMode = DebugActionRepeatMode.Never;
AddAction(DebugAction.Persistent, persistent);
AddAction(DebugAction.MoveVertical, new DebugActionDesc { axisTrigger = kDPadVertical, repeatMode = DebugActionRepeatMode.Delay, repeatDelay = 0.2f } );
AddAction(DebugAction.MoveHorizontal, new DebugActionDesc { axisTrigger = kDPadHorizontal, repeatMode = DebugActionRepeatMode.Delay, repeatDelay = 0.2f } );
}
void AddAction(DebugAction action, DebugActionDesc desc)
{
int index = (int)action;
m_DebugActions[index] = desc;
m_DebugActionStates[index] = new DebugActionState();
}
void SampleAction(int actionIndex)
{
DebugActionDesc desc = m_DebugActions[actionIndex];
DebugActionState state = m_DebugActionStates[actionIndex];
//bool canSampleAction = (state.actionTriggered == false) || (desc.repeatMode == DebugActionRepeatMode.Delay && state.timer > desc.repeatDelay);
if(state.runningAction == false)
{
// Check button triggers
for (int buttonListIndex = 0; buttonListIndex < desc.buttonTriggerList.Count; ++buttonListIndex)
{
string[] buttons = desc.buttonTriggerList[buttonListIndex];
bool allButtonPressed = true;
foreach (string button in buttons)
{
allButtonPressed = allButtonPressed && Input.GetButton(button);
if (!allButtonPressed)
break;
}
if (allButtonPressed)
{
state.TriggerWithButton(buttons, 1.0f);
break;
}
}
// Check axis triggers
if(desc.axisTrigger != "")
{
float axisValue = Input.GetAxis(desc.axisTrigger);
if(axisValue != 0.0f)
{
state.TriggerWithAxis(desc.axisTrigger, axisValue);
}
}
// Check key triggers
for (int keyListIndex = 0; keyListIndex < desc.keyTriggerList.Count; ++keyListIndex)
{
KeyCode[] keys = desc.keyTriggerList[keyListIndex];
bool allKeyPressed = true;
foreach (KeyCode key in keys)
{
allKeyPressed = allKeyPressed && Input.GetKey(key);
if (!allKeyPressed)
break;
}
if (allKeyPressed)
{
state.TriggerWithKey(keys, 1.0f);
break;
}
}
}
}
void UpdateAction(int actionIndex)
{
DebugActionDesc desc = m_DebugActions[actionIndex];
DebugActionState state = m_DebugActionStates[actionIndex];
if(state.runningAction)
{
state.Update(desc);
}
}
public void Update()
{
if (!m_Valid)
return;
for(int actionIndex = 0 ; actionIndex < m_DebugActions.Length ; ++actionIndex)
{
UpdateAction(actionIndex);
SampleAction(actionIndex);
}
}
public float GetAction(DebugAction action)
{
return m_DebugActionStates[(int)action].actionState;
}
}
}

12
Assets/ScriptableRenderPipeline/common/Debugging/DebugActionManager.cs.meta


fileFormatVersion: 2
guid: 7e580489e9758c4429e4048beba3792e
timeCreated: 1492088391
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

292
Assets/ScriptableRenderPipeline/common/Debugging/DebugItemDrawer.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
#if UNITY_EDITOR
using UnityEditor;
#endif
namespace UnityEngine.Experimental.Rendering
{
public class DebugItemDrawer
{
protected DebugMenuItem m_MenuItem = null;
// Label for simple GUI items
protected GUIContent m_Label;
protected List<GUIContent> m_EnumStrings = null;
protected List<int> m_EnumValues = null;
public DebugItemDrawer()
{
}
public void SetDebugItem(DebugMenuItem item)
{
m_MenuItem = item;
m_Label = new GUIContent(m_MenuItem.name);
Type itemType = m_MenuItem.GetItemType();
if(itemType.BaseType == typeof(System.Enum))
{
Array arr = Enum.GetValues(itemType);
m_EnumStrings = new List<GUIContent>(arr.Length);
m_EnumValues = new List<int>(arr.Length);
foreach(var value in arr)
{
m_EnumStrings.Add(new GUIContent(value.ToString()));
m_EnumValues.Add((int)value);
}
}
}
public virtual void ClampValues(Func<object> getter, Action<object> setter) {}
public virtual DebugMenuItemUI BuildGUI(GameObject parent, DebugMenuItem menuItem)
{
DebugMenuItemUI newItemUI = null;
if (menuItem.GetItemType() == typeof(bool))
{
newItemUI = new DebugMenuBoolItemUI(parent, menuItem, m_Label.text);
}
else if (menuItem.GetItemType() == typeof(int))
{
newItemUI = new DebugMenuIntItemUI(parent, menuItem, m_Label.text);
}
else if (menuItem.GetItemType() == typeof(uint))
{
newItemUI = new DebugMenuUIntItemUI(parent, menuItem, m_Label.text);
}
else if (menuItem.GetItemType() == typeof(float))
{
newItemUI = new DebugMenuFloatItemUI(parent, menuItem, m_Label.text);
}
else if (menuItem.GetItemType() == typeof(Color))
{
newItemUI = new DebugMenuColorItemUI(parent, menuItem, m_Label.text);
}
else if (m_MenuItem.GetItemType().BaseType == typeof(System.Enum))
{
newItemUI = new DebugMenuEnumItemUI(parent, menuItem, m_Label.text, m_EnumStrings.ToArray(), m_EnumValues.ToArray());
}
return newItemUI;
}
#if UNITY_EDITOR
bool DrawBoolItem()
{
bool value = (bool)m_MenuItem.GetValue();
if (m_MenuItem.readOnly)
{
EditorGUILayout.LabelField(m_Label, new GUIContent(value.ToString()));
}
else
{
EditorGUI.BeginChangeCheck();
value = EditorGUILayout.Toggle(m_Label, value);
if (EditorGUI.EndChangeCheck())
{
m_MenuItem.SetValue(value);
return true;
}
}
return false;
}
bool DrawIntItem()
{
int value = (int)m_MenuItem.GetValue();
if (m_MenuItem.readOnly)
{
EditorGUILayout.LabelField(m_Label, new GUIContent(value.ToString()));
}
else
{
EditorGUI.BeginChangeCheck();
value = EditorGUILayout.IntField(m_Label, value);
if (EditorGUI.EndChangeCheck())
{
m_MenuItem.SetValue(value);
return true;
}
}
return false;
}
bool DrawUIntItem()
{
int value = (int)(uint)m_MenuItem.GetValue();
if (m_MenuItem.readOnly)
{
EditorGUILayout.LabelField(m_Label, new GUIContent(value.ToString()));
}
else
{
EditorGUI.BeginChangeCheck();
value = EditorGUILayout.IntField(m_Label, value);
if (EditorGUI.EndChangeCheck())
{
value = System.Math.Max(0, value);
m_MenuItem.SetValue((uint)value);
return true;
}
}
return false;
}
bool DrawFloatItem()
{
float value = (float)m_MenuItem.GetValue();
if(m_MenuItem.readOnly)
{
EditorGUILayout.LabelField(m_Label, new GUIContent(value.ToString()));
}
else
{
EditorGUI.BeginChangeCheck();
value = EditorGUILayout.FloatField(m_Label, value);
if (EditorGUI.EndChangeCheck())
{
m_MenuItem.SetValue(value);
return true;
}
}
return false;
}
bool DrawColorItem()
{
EditorGUI.BeginChangeCheck();
Color value = EditorGUILayout.ColorField(m_Label, (Color)m_MenuItem.GetValue());
if (EditorGUI.EndChangeCheck())
{
m_MenuItem.SetValue(value);
return true;
}
return false;
}
bool DrawEnumItem()
{
EditorGUI.BeginChangeCheck();
int value = EditorGUILayout.IntPopup(m_Label, (int)m_MenuItem.GetValue(), m_EnumStrings.ToArray(), m_EnumValues.ToArray());
if (EditorGUI.EndChangeCheck())
{
m_MenuItem.SetValue(value);
return true;
}
return false;
}
public virtual bool OnEditorGUI()
{
if (m_MenuItem.GetItemType() == typeof(bool))
{
return DrawBoolItem();
}
else if (m_MenuItem.GetItemType() == typeof(int))
{
return DrawIntItem();
}
else if(m_MenuItem.GetItemType() == typeof(uint))
{
return DrawUIntItem();
}
else if (m_MenuItem.GetItemType() == typeof(float))
{
return DrawFloatItem();
}
else if (m_MenuItem.GetItemType() == typeof(Color))
{
return DrawColorItem();
}
else if (m_MenuItem.GetItemType().BaseType == typeof(System.Enum))
{
return DrawEnumItem();
}
return false;
}
#endif
}
public class DebugItemDrawFloatMinMax
: DebugItemDrawer
{
float m_Min = 0.0f;
float m_Max = 1.0f;
public DebugItemDrawFloatMinMax(float min, float max)
{
m_Min = min;
m_Max = max;
}
public override void ClampValues(Func<object> getter, Action<object> setter)
{
if (m_MenuItem == null)
return;
if(m_MenuItem.GetItemType() == typeof(float))
{
setter(Mathf.Clamp((float)getter(), m_Min, m_Max));
}
}
#if UNITY_EDITOR
public override bool OnEditorGUI()
{
EditorGUI.BeginChangeCheck();
float value = EditorGUILayout.Slider(m_MenuItem.name, (float)m_MenuItem.GetValue(), m_Min, m_Max);
if (EditorGUI.EndChangeCheck())
{
m_MenuItem.SetValue(value);
return true;
}
return false;
}
#endif
}
public class DebugItemDrawerIntEnum
: DebugItemDrawer
{
GUIContent[] m_EnumStrings = null;
int[] m_EnumValues = null;
public DebugItemDrawerIntEnum(GUIContent[] enumStrings, int[] enumValues)
{
m_EnumStrings = enumStrings;
m_EnumValues = enumValues;
}
public override DebugMenuItemUI BuildGUI(GameObject parent, DebugMenuItem menuItem)
{
return new DebugMenuEnumItemUI(parent, menuItem, m_Label.text, m_EnumStrings, m_EnumValues);
}
#if UNITY_EDITOR
public override bool OnEditorGUI()
{
UnityEditor.EditorGUI.BeginChangeCheck();
int value = UnityEditor.EditorGUILayout.IntPopup(m_Label, (int)m_MenuItem.GetValue(), m_EnumStrings, m_EnumValues);
if (UnityEditor.EditorGUI.EndChangeCheck())
{
m_MenuItem.SetValue(value);
return true;
}
return false;
}
#endif
}
}

12
Assets/ScriptableRenderPipeline/common/Debugging/DebugItemDrawer.cs.meta


fileFormatVersion: 2
guid: 7e413732cbed94f4688d5c59709a4556
timeCreated: 1492787007
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

267
Assets/ScriptableRenderPipeline/common/Debugging/DebugMenu.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
namespace UnityEngine.Experimental.Rendering
{
public class DebugMenuItem
{
public Type type { get { return m_Type; } }
public string name { get { return m_Name; } }
public DebugItemDrawer drawer { get { return m_Drawer; } }
public bool dynamicDisplay { get { return m_DynamicDisplay; } }
public bool readOnly { get { return m_Setter == null; } }
public DebugMenuItem(string name, Type type, Func<object> getter, Action<object> setter, bool dynamicDisplay = false, DebugItemDrawer drawer = null)
{
m_Type = type;
m_Setter = setter;
m_Getter = getter;
m_Name = name;
m_Drawer = drawer;
m_DynamicDisplay = dynamicDisplay;
}
public Type GetItemType()
{
return m_Type;
}
public void SetValue(object value)
{
// Setter can be null for readonly items
if(m_Setter != null)
{
m_Setter(value);
m_Drawer.ClampValues(m_Getter, m_Setter);
}
}
public object GetValue()
{
return m_Getter();
}
Func<object> m_Getter;
Action<object> m_Setter;
Type m_Type;
string m_Name;
DebugItemDrawer m_Drawer = null;
bool m_DynamicDisplay = false;
}
public class DebugMenu
{
public string name { get { return m_Name; } }
public int itemCount { get { return m_Items.Count; } }
protected string m_Name = "Unknown Debug Menu";
private GameObject m_Root = null;
private List<DebugMenuItem> m_Items = new List<DebugMenuItem>();
private List<DebugMenuItemUI> m_ItemsUI = new List<DebugMenuItemUI>();
private int m_SelectedItem = -1;
public DebugMenu(string name)
{
m_Name = name;
}
public DebugMenuItem GetDebugMenuItem(int index)
{
if (index >= m_Items.Count || index < 0)
return null;
return m_Items[index];
}
public DebugMenuItem GetSelectedDebugMenuItem()
{
if(m_SelectedItem != -1)
{
return m_Items[m_SelectedItem];
}
return null;
}
public bool HasItem(DebugMenuItem debugItem)
{
foreach(var item in m_Items)
{
if (debugItem == item)
return true;
}
return false;
}
public void RemoveDebugItem(DebugMenuItem debugItem)
{
m_Items.Remove(debugItem);
RebuildGUI();
}
public void AddDebugItem(DebugMenuItem debugItem)
{
m_Items.Add(debugItem);
RebuildGUI();
}
// TODO: Move this to UI classes
public GameObject BuildGUI(GameObject parent)
{
m_Root = new GameObject(string.Format("{0}", m_Name));
m_Root.transform.SetParent(parent.transform);
m_Root.transform.localPosition = Vector3.zero;
m_Root.transform.localScale = Vector3.one;
UI.VerticalLayoutGroup menuVL = m_Root.AddComponent<UI.VerticalLayoutGroup>();
menuVL.spacing = 5.0f;
menuVL.childControlWidth = true;
menuVL.childControlHeight = true;
menuVL.childForceExpandWidth = true;
menuVL.childForceExpandHeight = false;
RectTransform menuVLRectTransform = m_Root.GetComponent<RectTransform>();
menuVLRectTransform.pivot = new Vector2(0.0f, 0.0f);
menuVLRectTransform.localPosition = new Vector3(0.0f, 0.0f);
menuVLRectTransform.anchorMin = new Vector2(0.0f, 0.0f);
menuVLRectTransform.anchorMax = new Vector2(1.0f, 1.0f);
RebuildGUI();
m_Root.SetActive(false);
return m_Root;
}
private void RebuildGUI()
{
m_Root.transform.DetachChildren();
DebugMenuUI.CreateTextElement(string.Format("{0} Title", m_Name), m_Name, 14, TextAnchor.MiddleLeft, m_Root);
m_ItemsUI.Clear();
foreach (DebugMenuItem menuItem in m_Items)
{
DebugItemDrawer drawer = menuItem.drawer; // Should never be null, we have at least the default drawer
m_ItemsUI.Add(drawer.BuildGUI(m_Root, menuItem));
}
}
void SetSelectedItem(int index)
{
if(m_SelectedItem != -1)
{
m_ItemsUI[m_SelectedItem].SetSelected(false);
}
m_SelectedItem = index;
m_ItemsUI[m_SelectedItem].SetSelected(true);
}
public void SetSelected(bool value)
{
m_Root.SetActive(value);
if(value)
{
if (m_SelectedItem == -1)
{
NextItem();
}
else
SetSelectedItem(m_SelectedItem);
}
}
int NextItemIndex(int current)
{
return (current + 1) % m_Items.Count;
}
void NextItem()
{
if(m_Items.Count != 0)
{
int newSelected = (m_SelectedItem + 1) % m_Items.Count;
SetSelectedItem(newSelected);
}
}
int PreviousItemIndex(int current)
{
int newSelected = current - 1;
if (newSelected == -1)
newSelected = m_Items.Count - 1;
return newSelected;
}
void PreviousItem()
{
if(m_Items.Count != 0)
{
int newSelected = m_SelectedItem - 1;
if (newSelected == -1)
newSelected = m_Items.Count - 1;
SetSelectedItem(newSelected);
}
}
public void OnMoveHorizontal(float value)
{
if(m_SelectedItem != -1 && !m_Items[m_SelectedItem].readOnly)
{
if (value > 0.0f)
m_ItemsUI[m_SelectedItem].OnIncrement();
else
m_ItemsUI[m_SelectedItem].OnDecrement();
}
}
public void OnMoveVertical(float value)
{
if (value > 0.0f)
PreviousItem();
else
NextItem();
}
public void OnValidate()
{
if (m_SelectedItem != -1 && !m_Items[m_SelectedItem].readOnly)
m_ItemsUI[m_SelectedItem].OnValidate();
}
public void AddDebugMenuItem<ItemType>(string name, Func<object> getter, Action<object> setter, bool dynamicDisplay = false, DebugItemDrawer drawer = null)
{
if (drawer == null)
drawer = new DebugItemDrawer();
DebugMenuItem newItem = new DebugMenuItem(name, typeof(ItemType), getter, setter, dynamicDisplay, drawer);
drawer.SetDebugItem(newItem);
m_Items.Add(newItem);
}
public void Update()
{
// Can happen if the debug menu has been disabled (all UI is destroyed). We can't test DebugMenuManager directly though because of the persistant debug menu (which is always displayed no matter what)
if (m_Root == null)
return;
foreach(var itemUI in m_ItemsUI)
{
if(itemUI.dynamicDisplay)
itemUI.Update();
}
}
}
public class LightingDebugMenu
: DebugMenu
{
public LightingDebugMenu()
: base("Lighting")
{
}
}
}

12
Assets/ScriptableRenderPipeline/common/Debugging/DebugMenu.cs.meta


fileFormatVersion: 2
guid: 8275ad749cb4c4344ba07749bfc7d9d1
timeCreated: 1492075547
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

453
Assets/ScriptableRenderPipeline/common/Debugging/DebugMenuItemUI.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace UnityEngine.Experimental.Rendering
{
public abstract class DebugMenuItemUI
{
protected GameObject m_Root = null;
protected DebugMenuItem m_MenuItem = null;
public bool dynamicDisplay { get { return m_MenuItem.dynamicDisplay; } }
protected DebugMenuItemUI(DebugMenuItem menuItem)
{
m_MenuItem = menuItem;
}
public abstract void SetSelected(bool value);
public abstract void OnValidate();
public abstract void OnIncrement();
public abstract void OnDecrement();
public abstract void Update();
}
public class DebugMenuSimpleItemUI : DebugMenuItemUI
{
protected GameObject m_Name = null;
protected GameObject m_Value = null;
protected DebugMenuSimpleItemUI(GameObject parent, DebugMenuItem menuItem, string name)
: base(menuItem)
{
m_Root = DebugMenuUI.CreateHorizontalLayoutGroup("", true, true, false, false, parent);
m_Name = DebugMenuUI.CreateTextElement(m_MenuItem.name, name, 10, TextAnchor.MiddleLeft, m_Root);
var layoutElem = m_Name.AddComponent<UI.LayoutElement>();
layoutElem.minWidth = DebugMenuUI.kDebugItemNameWidth;
m_Value = DebugMenuUI.CreateTextElement(string.Format("{0} value", name), "", 10, TextAnchor.MiddleLeft, m_Root);
}
public override void SetSelected(bool value)
{
m_Name.GetComponent<UI.Text>().color = value ? DebugMenuUI.kColorSelected : DebugMenuUI.kColorUnSelected;
m_Value.GetComponent<UI.Text>().color = value ? DebugMenuUI.kColorSelected : DebugMenuUI.kColorUnSelected;
}
public override void OnValidate()
{
throw new System.NotImplementedException();
}
public override void OnIncrement()
{
throw new System.NotImplementedException();
}
public override void OnDecrement()
{
throw new System.NotImplementedException();
}
public override void Update()
{
throw new System.NotImplementedException();
}
}
public class DebugMenuBoolItemUI : DebugMenuSimpleItemUI
{
public DebugMenuBoolItemUI(GameObject parent, DebugMenuItem menuItem, string name)
: base(parent, menuItem, name)
{
Update();
}
public override void Update()
{
m_Value.GetComponent<UI.Text>().text = (bool)m_MenuItem.GetValue() ? "True" : "False";
}
public override void OnValidate()
{
m_MenuItem.SetValue(!(bool)m_MenuItem.GetValue());
Update();
}
public override void OnIncrement()
{
OnValidate();
}
public override void OnDecrement()
{
OnValidate();
}
}
public class DebugMenuFloatItemUI : DebugMenuSimpleItemUI
{
bool m_SelectIncrementMode = false;
int m_CurrentIncrementIndex = -1;
public DebugMenuFloatItemUI(GameObject parent, DebugMenuItem menuItem, string name)
: base(parent, menuItem, name)
{
Update();
}
public override void Update()
{
float currentValue = (float)m_MenuItem.GetValue();
bool isNegative = currentValue < 0.0f;
// Easier to format the string without caring about the '-' sign. We add it back at the end
currentValue = Mathf.Abs(currentValue);
char separator = System.Convert.ToChar(System.Globalization.CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator);
// Start with the maximum amount of trailing zeros
string valueWithMaxDecimals = string.Format("{0:0.00000}", currentValue);
// Remove trailing zeros until we reach the separator or we reach the decimal we are currently editing.
int separatorIndex = valueWithMaxDecimals.LastIndexOf(separator);
int index = valueWithMaxDecimals.Length - 1;
while (
valueWithMaxDecimals[index] == '0' // Remove trailing zeros
&& index > (separatorIndex + 1) // until we reach the separator
&& index > (System.Math.Abs(m_CurrentIncrementIndex) + separatorIndex)) // Or it's the index of the current decimal being edited (so as to display the last trailing zero in this case)
{
index--;
}
string finalValue = new string(valueWithMaxDecimals.ToCharArray(), 0, index + 1);
// Add leading zeros until we reach where the current order is being edited.
if(m_CurrentIncrementIndex > 0)
{
float incrementValue = Mathf.Pow(10.0f, (float)m_CurrentIncrementIndex);
if(incrementValue > currentValue)
{
float compareValue = currentValue + 1.0f; // Start at 1.0f because we know that we are going to increment by 10 or more
while (incrementValue > compareValue)
{
finalValue = finalValue.Insert(0, "0");
compareValue *= 10.0f;
}
}
}
// When selecting which decimal/order you want to edit, we show brackets around the figure to show the user.
if(m_SelectIncrementMode)
{
separatorIndex = finalValue.LastIndexOf(separator); // separator may have changed place if we added leading zeros
int bracketIndex = separatorIndex - m_CurrentIncrementIndex;
if(m_CurrentIncrementIndex >= 0) // Skip separator
bracketIndex -= 1;
finalValue = finalValue.Insert(bracketIndex, "[");
finalValue = finalValue.Insert(bracketIndex + 2, "]");
}
if(isNegative)
finalValue = finalValue.Insert(0, "-");
m_Value.GetComponent<UI.Text>().text = finalValue;
}
public override void OnValidate()
{
m_SelectIncrementMode = !m_SelectIncrementMode;
Update();
}
public override void OnIncrement()
{
if(!m_SelectIncrementMode)
{
m_MenuItem.SetValue((float)m_MenuItem.GetValue() + Mathf.Pow(10.0f, (float)m_CurrentIncrementIndex));
}
else
{
m_CurrentIncrementIndex -= 1; // * 0.1 (10^m_CurrentIncrementIndex)
m_CurrentIncrementIndex = System.Math.Max(-5, m_CurrentIncrementIndex);
}
Update();
}
public override void OnDecrement()
{
if (!m_SelectIncrementMode)
{
m_MenuItem.SetValue((float)m_MenuItem.GetValue() - Mathf.Pow(10.0f, (float)m_CurrentIncrementIndex));
}
else
{
m_CurrentIncrementIndex += 1; // * 10 (10^m_CurrentIncrementIndex)
}
Update();
}
}
// Everything is done with int. We don't really care about values > 2b for debugging.
public class DebugMenuIntegerItemUI : DebugMenuSimpleItemUI
{
bool m_SelectIncrementMode = false;
int m_CurrentIncrementIndex = 0;
public DebugMenuIntegerItemUI(GameObject parent, DebugMenuItem menuItem, string name)
: base(parent, menuItem, name)
{
}
protected void UpdateText(int value)
{
bool isNegative = value < 0f;
// Easier to format the string without caring about the '-' sign. We add it back at the end
value = System.Math.Abs(value);
string finalValue = string.Format("{0}", value);
// Add leading zeros until we reach where the current order is being edited.
if(m_CurrentIncrementIndex > 0)
{
int incrementValue = (int)System.Math.Pow(10, m_CurrentIncrementIndex);
if(incrementValue > value)
{
int compareValue = System.Math.Max(value, 1);
while (incrementValue > compareValue)
{
finalValue = finalValue.Insert(0, "0");
compareValue *= 10;
}
}
}
// When selecting which decimal/order you want to edit, we show brackets around the figure to show the user.
if(m_SelectIncrementMode)
{
int bracketIndex = finalValue.Length - 1 - m_CurrentIncrementIndex;
finalValue = finalValue.Insert(bracketIndex, "[");
finalValue = finalValue.Insert(bracketIndex + 2, "]");
}
if(isNegative)
finalValue = finalValue.Insert(0, "-");
m_Value.GetComponent<UI.Text>().text = finalValue;
}
protected virtual int GetIntegerValue()
{
throw new System.NotImplementedException();
}
protected virtual void SetIntegerValue(int value)
{
throw new System.NotImplementedException();
}
public override void Update()
{
UpdateText(GetIntegerValue());
}
public override void OnValidate()
{
m_SelectIncrementMode = !m_SelectIncrementMode;
Update();
}
public override void OnIncrement()
{
if (!m_SelectIncrementMode)
{
SetIntegerValue(GetIntegerValue() + (int)Mathf.Pow(10.0f, (float)m_CurrentIncrementIndex));
}
else
{
m_CurrentIncrementIndex -= 1; // *= 0.1 (10^m_CurrentIncrementIndex)
m_CurrentIncrementIndex = System.Math.Max(0, m_CurrentIncrementIndex);
}
Update();
}
public override void OnDecrement()
{
if (!m_SelectIncrementMode)
{
SetIntegerValue(GetIntegerValue() - (int)Mathf.Pow(10.0f, (float)m_CurrentIncrementIndex));
}
else
{
m_CurrentIncrementIndex += 1; // *= 10 (10^m_CurrentIncrementIndex)
m_CurrentIncrementIndex = System.Math.Max(0, m_CurrentIncrementIndex);
}
Update();
}
}
public class DebugMenuIntItemUI : DebugMenuIntegerItemUI
{
public DebugMenuIntItemUI(GameObject parent, DebugMenuItem menuItem, string name)
: base(parent, menuItem, name)
{
UpdateText((int)m_MenuItem.GetValue());
}
protected override int GetIntegerValue()
{
return (int)m_MenuItem.GetValue();
}
protected override void SetIntegerValue(int value)
{
m_MenuItem.SetValue(value);
}
}
public class DebugMenuUIntItemUI : DebugMenuIntegerItemUI
{
public DebugMenuUIntItemUI(GameObject parent, DebugMenuItem menuItem, string name)
: base(parent, menuItem, name)
{
UpdateText((int)(uint)m_MenuItem.GetValue());
}
protected override int GetIntegerValue()
{
return (int)(uint)m_MenuItem.GetValue();
}
protected override void SetIntegerValue(int value)
{
m_MenuItem.SetValue((uint)System.Math.Max(0, value));
}
}
public class DebugMenuEnumItemUI : DebugMenuSimpleItemUI
{
int m_CurrentValueIndex = 0;
GUIContent[] m_ValueNames;
int[] m_Values;
public DebugMenuEnumItemUI(GameObject parent, DebugMenuItem menuItem, string name, GUIContent[] valueNames, int[] values)
: base(parent, menuItem, name)
{
m_Values = values;
m_ValueNames = valueNames;
m_CurrentValueIndex = FindIndexForValue((int)m_MenuItem.GetValue());
Update();
}
private int FindIndexForValue(int value)
{
for(int i = 0 ; i < m_Values.Length ; ++i)
{
if (m_Values[i] == value)
return i;
}
return -1;
}
public override void Update()
{
if(m_CurrentValueIndex != -1)
{
m_Value.GetComponent<UI.Text>().text = m_ValueNames[m_CurrentValueIndex].text;
}
}
public override void OnValidate()
{
OnIncrement();
}
public override void OnIncrement()
{
m_CurrentValueIndex = (m_CurrentValueIndex + 1) % m_Values.Length;
m_MenuItem.SetValue(m_Values[m_CurrentValueIndex]);
Update();
}
public override void OnDecrement()
{
m_CurrentValueIndex -= 1;
if (m_CurrentValueIndex < 0)
m_CurrentValueIndex = m_Values.Length - 1;
m_MenuItem.SetValue(m_Values[m_CurrentValueIndex]);
Update();
}
}
public class DebugMenuColorItemUI : DebugMenuItemUI
{
protected GameObject m_Name = null;
protected GameObject m_ColorRect = null;
public DebugMenuColorItemUI(GameObject parent, DebugMenuItem menuItem, string name)
: base(menuItem)
{
m_MenuItem = menuItem;
m_Root = DebugMenuUI.CreateHorizontalLayoutGroup(name, true, true, false, false, parent);
m_Name = DebugMenuUI.CreateTextElement(m_MenuItem.name, name, 10, TextAnchor.MiddleLeft, m_Root);
var layoutElemName = m_Name.AddComponent<UI.LayoutElement>();
layoutElemName.minWidth = DebugMenuUI.kDebugItemNameWidth;
// Force layout because we need the right height for the color rect element afterward.
UI.LayoutRebuilder.ForceRebuildLayoutImmediate(m_Root.GetComponent<RectTransform>());
RectTransform nameRect = m_Name.GetComponent<RectTransform>();
m_ColorRect = new GameObject();
m_ColorRect.transform.SetParent(m_Root.transform, false);
m_ColorRect.AddComponent<UI.Image>();
UI.LayoutElement layoutElem = m_ColorRect.AddComponent<UI.LayoutElement>();
// We need to set min width/height because without an image, the size would be zero.
layoutElem.minHeight = nameRect.rect.height;
layoutElem.minWidth = 40.0f;
Update();
}
public override void Update()
{
Color currentValue = (Color)m_MenuItem.GetValue();
UI.Image image = m_ColorRect.GetComponent<UI.Image>();
image.color = currentValue;
}
public override void SetSelected(bool value)
{
m_Name.GetComponent<UI.Text>().color = value ? DebugMenuUI.kColorSelected : DebugMenuUI.kColorUnSelected;
}
// TODO: Edit mode!
public override void OnValidate()
{
}
public override void OnIncrement()
{
}
public override void OnDecrement()
{
}
}
}

12
Assets/ScriptableRenderPipeline/common/Debugging/DebugMenuItemUI.cs.meta


fileFormatVersion: 2
guid: 2af8a6ada82d1994d9cfd79a8b92eebc
timeCreated: 1492702176
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

194
Assets/ScriptableRenderPipeline/common/Debugging/DebugMenuManager.cs


using System;
using System.Linq;
using System.Reflection;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace UnityEngine.Experimental.Rendering
{
public class DebugMenuManager
{
static private DebugMenuManager s_Instance = null;
static public DebugMenuManager instance
{
get
{
if (s_Instance == null)
{
s_Instance = new DebugMenuManager();
}
return s_Instance;
}
}
DebugMenuManager()
{
LookUpDebugMenuClasses();
m_PersistentDebugMenu = new DebugMenu("Persistent");
m_DebugMenuUI = new DebugMenuUI(this);
}
bool m_Enabled = false;
int m_ActiveMenuIndex = 0;
List<DebugMenu> m_DebugMenus = new List<DebugMenu>();
DebugMenu m_PersistentDebugMenu = null;
DebugMenuUI m_DebugMenuUI = null;
public bool isEnabled { get { return m_Enabled; } }
public int activeMenuIndex { get { return m_ActiveMenuIndex; } set { m_ActiveMenuIndex = value; } }
public int menuCount { get { return m_DebugMenus.Count; } }
public DebugMenu GetDebugMenu(int index)
{
if (index < m_DebugMenus.Count)
return m_DebugMenus[index];
else
return null;
}
public DebugMenu GetPersistentDebugMenu()
{
return m_PersistentDebugMenu;
}
void LookUpDebugMenuClasses()
{
// Prepare all debug menus
var types = Assembly.GetAssembly(typeof(DebugMenu)).GetTypes()
.Where(t => t.IsSubclassOf(typeof(DebugMenu)));
m_DebugMenus.Clear();
foreach (var type in types)
{
m_DebugMenus.Add((DebugMenu)Activator.CreateInstance(type));
}
}
public void PreviousDebugMenu()
{
m_DebugMenus[m_ActiveMenuIndex].SetSelected(false);
m_ActiveMenuIndex = m_ActiveMenuIndex - 1;
if (m_ActiveMenuIndex == -1)
m_ActiveMenuIndex = m_DebugMenus.Count - 1;
m_DebugMenus[m_ActiveMenuIndex].SetSelected(true);
}
public void NextDebugMenu()
{
m_DebugMenus[m_ActiveMenuIndex].SetSelected(false);
m_ActiveMenuIndex = (m_ActiveMenuIndex + 1) % m_DebugMenus.Count;
m_DebugMenus[m_ActiveMenuIndex].SetSelected(true);
}
public void ToggleMenu()
{
m_Enabled = !m_Enabled;
m_DebugMenuUI.BuildGUI();
m_DebugMenuUI.Toggle();
m_DebugMenus[m_ActiveMenuIndex].SetSelected(m_Enabled);
}
public void OnValidate()
{
m_DebugMenus[m_ActiveMenuIndex].OnValidate();
}
public void OnMakePersistent()
{
DebugMenuItem selectedItem = m_DebugMenus[m_ActiveMenuIndex].GetSelectedDebugMenuItem();
if(selectedItem != null && selectedItem.readOnly)
{
if(m_PersistentDebugMenu.HasItem(selectedItem))
{
m_PersistentDebugMenu.RemoveDebugItem(selectedItem);
}
else
{
m_PersistentDebugMenu.AddDebugItem(selectedItem);
}
}
if(m_PersistentDebugMenu.itemCount == 0)
{
m_PersistentDebugMenu.SetSelected(false);
m_DebugMenuUI.EnablePersistentView(false); // Temp, should just need the above. Wait for background UI to be moved to menu itself
}
else
{
m_PersistentDebugMenu.SetSelected(true);
m_DebugMenuUI.EnablePersistentView(true);
}
}
public void OnMoveHorizontal(float value)
{
m_DebugMenus[m_ActiveMenuIndex].OnMoveHorizontal(value);
}
public void OnMoveVertical(float value)
{
m_DebugMenus[m_ActiveMenuIndex].OnMoveVertical(value);
}
T GetDebugMenu<T>() where T:DebugMenu
{
foreach(DebugMenu menu in m_DebugMenus)
{
if (menu is T)
return menu as T;
}
return null;
}
DebugMenu GetDebugMenu(string name)
{
foreach(DebugMenu menu in m_DebugMenus)
{
if (menu.name == name)
return menu;
}
return null;
}
public void Update()
{
if (m_ActiveMenuIndex != -1)
m_DebugMenus[m_ActiveMenuIndex].Update();
m_PersistentDebugMenu.Update();
}
public void AddDebugItem<DebugMenuType, ItemType>(string name, Func<object> getter, Action<object> setter = null, bool dynamicDisplay = false, DebugItemDrawer drawer = null) where DebugMenuType : DebugMenu
{
DebugMenuType debugMenu = GetDebugMenu<DebugMenuType>();
if (debugMenu != null)
{
debugMenu.AddDebugMenuItem<ItemType>(name, getter, setter, dynamicDisplay, drawer);
}
}
public void AddDebugItem<ItemType>(string debugMenuName, string name, Func<object> getter, Action<object> setter = null, bool dynamicDisplay = false, DebugItemDrawer drawer = null)
{
DebugMenu debugMenu = GetDebugMenu(debugMenuName);
// If the menu does not exist, create a generic one. This way, users don't have to explicitely create a new DebugMenu class if they don't need any particular overriding of default behavior.
if(debugMenu == null)
{
debugMenu = new DebugMenu(debugMenuName);
m_DebugMenus.Add(debugMenu);
}
if (debugMenu != null)
{
debugMenu.AddDebugMenuItem<ItemType>(name, getter, setter, dynamicDisplay, drawer);
}
}
}
}

12
Assets/ScriptableRenderPipeline/common/Debugging/DebugMenuManager.cs.meta


fileFormatVersion: 2
guid: 0d82eeff53030774abf4d8d510717fad
timeCreated: 1491995655
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

178
Assets/ScriptableRenderPipeline/common/Debugging/DebugMenuUI.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace UnityEngine.Experimental.Rendering
{
public class DebugMenuUI
{
public static Color kColorSelected = new Color(1.0f, 1.0f, 1.0f, 1.0f);
public static Color kColorUnSelected = new Color(0.25f, 0.25f, 0.25f, 1.0f);
public static Color kBackgroundColor = new Color(0.5f, 0.5f, 0.5f, 0.4f);
public static float kDebugItemNameWidth = 150.0f;
GameObject m_Root = null;
GameObject[] m_MenuRoots = null;
GameObject m_MainMenuRoot = null;
GameObject m_PersistentMenuRoot = null;
bool m_Enabled = false;
DebugMenuManager m_DebugMenuManager = null;
public DebugMenuUI(DebugMenuManager manager)
{
m_DebugMenuManager = manager;
}
public void Toggle()
{
m_Enabled = !m_Enabled;
m_MainMenuRoot.SetActive(m_Enabled);
}
public void EnablePersistentView(bool value)
{
m_PersistentMenuRoot.SetActive(value);
}
void CleanUpGUI()
{
Object.Destroy(m_Root);
}
public void BuildGUI()
{
if (m_Root != null)
return;
float kBorderSize = 5.0f;
m_Root = new GameObject("DebugMenu Root");
Canvas canvas = m_Root.AddComponent<Canvas>();
canvas.renderMode = RenderMode.ScreenSpaceOverlay;
UI.CanvasScaler canvasScaler = m_Root.AddComponent<UI.CanvasScaler>();
canvasScaler.uiScaleMode = UI.CanvasScaler.ScaleMode.ScaleWithScreenSize;
canvasScaler.referenceResolution = new Vector2(800.0f, 600.0f);
// TODO: Move background an layout to the menu itself.
m_MainMenuRoot = new GameObject("Background");
m_MainMenuRoot.AddComponent<CanvasRenderer>();
var image = m_MainMenuRoot.AddComponent<UI.Image>();
m_MainMenuRoot.transform.SetParent(m_Root.transform, false);
image.rectTransform.pivot = new Vector2(0.0f, 0.0f);
image.rectTransform.localPosition = Vector3.zero;
image.rectTransform.localScale = Vector3.one;
image.rectTransform.anchorMin = new Vector2(0.0f, 0.0f);
image.rectTransform.anchorMax = new Vector2(0.5f, 1.0f);
image.rectTransform.anchoredPosition = new Vector2(kBorderSize, kBorderSize);
image.rectTransform.sizeDelta = new Vector2(-(kBorderSize * 2.0f), -(kBorderSize * 2.0f));
image.color = kBackgroundColor;
GameObject goVL = DebugMenuUI.CreateVerticalLayoutGroup("DebugMenu VLayout", true, true, true, false, 5.0f, m_MainMenuRoot);
RectTransform menuVLRectTransform = goVL.GetComponent<RectTransform>();
menuVLRectTransform.pivot = new Vector2(0.0f, 0.0f);
menuVLRectTransform.localPosition = Vector3.zero;
menuVLRectTransform.localScale = Vector3.one;
menuVLRectTransform.anchorMin = new Vector2(0.0f, 0.0f);
menuVLRectTransform.anchorMax = new Vector2(1.0f, 1.0f);
menuVLRectTransform.anchoredPosition = new Vector2(kBorderSize, kBorderSize);
menuVLRectTransform.sizeDelta = new Vector2(-(kBorderSize * 2.0f), -(kBorderSize * 2.0f));
// TODO: Move background an layout to the menu itself.
m_PersistentMenuRoot = new GameObject("Background_Persistent");
m_PersistentMenuRoot.AddComponent<CanvasRenderer>();
image = m_PersistentMenuRoot.AddComponent<UI.Image>();
m_PersistentMenuRoot.transform.SetParent(m_Root.transform, false);
image.rectTransform.pivot = new Vector2(0.0f, 0.0f);
image.rectTransform.localPosition = Vector3.zero;
image.rectTransform.localScale = Vector3.one;
image.rectTransform.anchorMin = new Vector2(0.7f, 0.8f);
image.rectTransform.anchorMax = new Vector2(1.0f, 1.0f);
image.rectTransform.anchoredPosition = new Vector2(kBorderSize, kBorderSize);
image.rectTransform.sizeDelta = new Vector2(-(kBorderSize * 2.0f), -(kBorderSize * 2.0f));
image.color = kBackgroundColor;
GameObject goVL2 = DebugMenuUI.CreateVerticalLayoutGroup("DebugMenu VLayout", true, true, true, false, 5.0f, m_PersistentMenuRoot);
menuVLRectTransform = goVL2.GetComponent<RectTransform>();
menuVLRectTransform.pivot = new Vector2(0.0f, 0.0f);
menuVLRectTransform.localPosition = Vector3.zero;
menuVLRectTransform.localScale = Vector3.one;
menuVLRectTransform.anchorMin = new Vector2(0.0f, 0.0f);
menuVLRectTransform.anchorMax = new Vector2(1.0f, 1.0f);
menuVLRectTransform.anchoredPosition = new Vector2(kBorderSize, kBorderSize);
menuVLRectTransform.sizeDelta = new Vector2(-(kBorderSize * 2.0f), -(kBorderSize * 2.0f));
m_PersistentMenuRoot.SetActive(false);
DebugMenuUI.CreateTextElement("DebugMenuTitle", "Debug Menu", 14, TextAnchor.MiddleCenter, goVL);
int menuCount = m_DebugMenuManager.menuCount;
m_MenuRoots = new GameObject[menuCount];
for (int i = 0; i < menuCount; ++i)
{
m_MenuRoots[i] = m_DebugMenuManager.GetDebugMenu(i).BuildGUI(goVL);
}
m_DebugMenuManager.GetPersistentDebugMenu().BuildGUI(goVL2);
}
public static GameObject CreateVerticalLayoutGroup(string name, bool controlWidth, bool controlHeight, bool forceExpandWidth, bool forceExpandHeight, GameObject parent = null )
{
return CreateVerticalLayoutGroup(name, controlWidth, controlHeight, forceExpandWidth, forceExpandHeight, 0.0f, parent);
}
public static GameObject CreateVerticalLayoutGroup(string name, bool controlWidth, bool controlHeight, bool forceExpandWidth, bool forceExpandHeight, float spacing, GameObject parent = null )
{
GameObject go = new GameObject(name);
go.transform.SetParent(parent.transform, false);
UI.VerticalLayoutGroup verticalLayout = go.AddComponent<UI.VerticalLayoutGroup>();
verticalLayout.childControlHeight = controlHeight;
verticalLayout.childControlWidth = controlWidth;
verticalLayout.childForceExpandHeight = forceExpandHeight;
verticalLayout.childForceExpandWidth = forceExpandWidth;
verticalLayout.spacing = spacing;
return go;
}
public static GameObject CreateHorizontalLayoutGroup(string name, bool controlWidth, bool controlHeight, bool forceExpandWidth, bool forceExpandHeight, GameObject parent = null)
{
return CreateHorizontalLayoutGroup(name, controlWidth, controlHeight, forceExpandWidth, forceExpandHeight, 0.0f, parent);
}
public static GameObject CreateHorizontalLayoutGroup(string name, bool controlWidth, bool controlHeight, bool forceExpandWidth, bool forceExpandHeight, float spacing = 1.0f, GameObject parent = null)
{
GameObject go = new GameObject(name);
go.transform.SetParent(parent.transform, false);
UI.HorizontalLayoutGroup horizontalLayout = go.AddComponent<UI.HorizontalLayoutGroup>();
horizontalLayout.childControlHeight = controlHeight;
horizontalLayout.childControlWidth = controlWidth;
horizontalLayout.childForceExpandHeight = forceExpandHeight;
horizontalLayout.childForceExpandWidth = forceExpandWidth;
horizontalLayout.spacing = spacing;
return go;
}
public static GameObject CreateTextElement(string elementName, string text, int size = 14, TextAnchor alignment = TextAnchor.MiddleLeft, GameObject parent = null)
{
GameObject goText = new GameObject(elementName);
goText.transform.SetParent(parent.transform, false);
goText.transform.transform.localPosition = Vector3.zero;
goText.transform.transform.localScale = Vector3.one;
UI.Text textComponent = goText.AddComponent<UI.Text>();
textComponent.font = Resources.GetBuiltinResource(typeof(Font), "Arial.ttf") as Font;
textComponent.text = text;
textComponent.alignment = alignment;
textComponent.fontSize = size;
textComponent.verticalOverflow = VerticalWrapMode.Overflow;
textComponent.color = DebugMenuUI.kColorUnSelected;
RectTransform rectTransform = goText.GetComponent<RectTransform>();
rectTransform.pivot = new Vector2(0.0f, 0.0f);
rectTransform.localPosition = new Vector3(0.0f, 0.0f);
rectTransform.anchorMin = new Vector2(0.0f, 0.0f);
rectTransform.anchorMax = new Vector2(1.0f, 1.0f);
return goText;
}
}
}

12
Assets/ScriptableRenderPipeline/common/Debugging/DebugMenuUI.cs.meta


fileFormatVersion: 2
guid: 4e88bb221a7ceb74283e4e5f93e75092
timeCreated: 1492603542
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

57
Assets/ScriptableRenderPipeline/common/Debugging/DebugMenuUpdater.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace UnityEngine.Experimental.Rendering
{
[ExecuteInEditMode]
public class DebugMenuUpdater : MonoBehaviour
{
void Update()
{
DebugMenuManager.instance.Update();
DebugActionManager.instance.Update();
if (DebugActionManager.instance.GetAction(DebugActionManager.DebugAction.EnableDebugMenu) != 0.0f)
{
DebugMenuManager.instance.ToggleMenu();
}
if (DebugMenuManager.instance.isEnabled)
{
if (DebugActionManager.instance.GetAction(DebugActionManager.DebugAction.PreviousDebugMenu) != 0.0f)
{
DebugMenuManager.instance.PreviousDebugMenu();
}
if (DebugActionManager.instance.GetAction(DebugActionManager.DebugAction.NextDebugMenu) != 0.0f)
{
DebugMenuManager.instance.NextDebugMenu();
}
if (DebugActionManager.instance.GetAction(DebugActionManager.DebugAction.Validate) != 0.0f)
{
DebugMenuManager.instance.OnValidate();
}
if (DebugActionManager.instance.GetAction(DebugActionManager.DebugAction.Persistent) != 0.0f)
{
DebugMenuManager.instance.OnMakePersistent();
}
float moveHorizontal = DebugActionManager.instance.GetAction(DebugActionManager.DebugAction.MoveHorizontal);
if (moveHorizontal != 0.0f)
{
DebugMenuManager.instance.OnMoveHorizontal(moveHorizontal);
}
float moveVertical = DebugActionManager.instance.GetAction(DebugActionManager.DebugAction.MoveVertical);
if (moveVertical != 0.0f)
{
DebugMenuManager.instance.OnMoveVertical(moveVertical);
}
}
}
}
}

12
Assets/ScriptableRenderPipeline/common/Debugging/DebugMenuUpdater.cs.meta


fileFormatVersion: 2
guid: 2dfdab1050228974ba8fbbd56e87da3e
timeCreated: 1492697894
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

76
Assets/ScriptableRenderPipeline/common/Debugging/Debugging.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace UnityEngine.Experimental.Rendering
{
public class Debugging : MonoBehaviour
{
private static List<string> m_DebugMessages = new List<string>();
public static void PushDebugMessage(string message)
{
m_DebugMessages.Add(message);
}
static public bool CheckRequiredInputButtonMapping(string[] values)
{
bool inputsOk = true;
foreach (string value in values)
{
try
{
Input.GetButton(value);
}
catch
{
Debug.LogError(string.Format("Required input button mapping missing: {0}.", value));
inputsOk = false;
}
}
return inputsOk;
}
static public bool CheckRequiredInputAxisMapping(string[] values)
{
bool inputsOk = true;
foreach (string value in values)
{
try
{
Input.GetAxis(value);
}
catch
{
Debug.LogWarning(string.Format("Required input axis mapping missing: {0}.", value));
inputsOk = false;
}
}
return inputsOk;
}
void OnGUI()
{
using (new GUILayout.HorizontalScope())
{
GUILayout.Space(10.0f);
using (new GUILayout.VerticalScope())
{
GUILayout.Space(10.0f);
for (int i = 0; i < m_DebugMessages.Count; ++i)
{
GUILayout.Label(m_DebugMessages[i]);
}
}
}
// Make sure to clear only after all relevant events have occured.
if (Event.current.type == EventType.Repaint)
m_DebugMessages.Clear();
}
}
}

9
Assets/ScriptableRenderPipeline/common/Debugging/Editor.meta


fileFormatVersion: 2
guid: 81304ee5cfbb2ff4b90df73d308d903e
folderAsset: yes
timeCreated: 1492162286
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

12
Assets/ScriptableRenderPipeline/common/Debugging/Editor/DebugMenuEditor.cs.meta


fileFormatVersion: 2
guid: 7a41f968abff8f14a93e3d1ea44e774b
timeCreated: 1492162306
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

72
Assets/ScriptableRenderPipeline/common/Debugging/Editor/DebugMenuEditor.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
namespace UnityEngine.Experimental.Rendering
{
// This is the class that handles rendering the debug menu in the editor (as opposed to the runtime version in the player)
public class DebugMenuEditor : EditorWindow
{
[MenuItem("HDRenderPipeline/Debug Menu")]
static void DisplayDebugMenu()
{
var window = EditorWindow.GetWindow<DebugMenuEditor>("Debug Menu");
window.Show();
}
DebugMenuManager m_DebugMenu = null;
DebugMenuEditor()
{
}
void OnEnable()
{
m_DebugMenu = DebugMenuManager.instance;
}
void OnGUI()
{
if (m_DebugMenu == null)
return;
// Contrary to the menu in the player, here we always render the menu wether it's enabled or not. This is a separate window so user can manage it however they want.
EditorGUI.BeginChangeCheck();
int debugMenuCount = m_DebugMenu.menuCount;
int activeMenuIndex = m_DebugMenu.activeMenuIndex;
using (new EditorGUILayout.HorizontalScope())
{
for(int i = 0 ; i < debugMenuCount ; ++i)
{
GUIStyle style = EditorStyles.miniButtonMid;
if (i == 0)
style = EditorStyles.miniButtonLeft;
if (i == debugMenuCount - 1)
style = EditorStyles.miniButtonRight;
if (GUILayout.Toggle(i == activeMenuIndex, new GUIContent(m_DebugMenu.GetDebugMenu(i).name), style))
activeMenuIndex = i;
}
}
if(EditorGUI.EndChangeCheck())
{
m_DebugMenu.activeMenuIndex = activeMenuIndex;
}
using(new EditorGUILayout.VerticalScope())
{
DebugMenu activeMenu = m_DebugMenu.GetDebugMenu(m_DebugMenu.activeMenuIndex);
bool needRepaint = false;
for (int i = 0; i < activeMenu.itemCount; ++i)
{
needRepaint = needRepaint || activeMenu.GetDebugMenuItem(i).drawer.OnEditorGUI();
}
if (needRepaint)
UnityEditorInternal.InternalEditorUtility.RepaintAllViews();
}
}
}
}

9
Assets/TestScenes/Common/Scripts.meta


fileFormatVersion: 2
guid: 711a9f1e8aa51844980a04a15d8c8f58
folderAsset: yes
timeCreated: 1493044341
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

134
Assets/TestScenes/Common/Scripts/MiniProfiler.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Profiling;
public class MiniProfiler : MonoBehaviour {
public bool m_Enable = false;
private int frameCount = 0;
private const int kAverageFrameCount = 64;
private float m_AccDeltaTime;
private float m_AvgDeltaTime;
internal class RecorderEntry
{
public string name;
public float time;
public int count;
public float avgTime;
public float avgCount;
public float accTime;
public int accCount;
public Recorder recorder;
};
RecorderEntry[] recordersList =
{
new RecorderEntry() { name="RenderLoop.Draw" },
// new RecorderEntry() { name="BatchRenderer.Flush" },
new RecorderEntry() { name="Shadows.Draw" },
new RecorderEntry() { name="BatchRenderer.ApplyShaderPass" },
/*
new RecorderEntry() { name="gBatchGBufferObj" },
new RecorderEntry() { name="gBatchGBufferBatch" },
new RecorderEntry() { name="gBatchShadowObj" },
new RecorderEntry() { name="gBatchShadowBatch" },
*/
/*
new RecorderEntry() { name="Map_PerDraw_Buffer" },
new RecorderEntry() { name="Unmap_PerDraw_Buffer" },
new RecorderEntry() { name="DrawBuffersBatchMode" },
new RecorderEntry() { name="DrawBatchIndexed" },
new RecorderEntry() { name="BatchRenderer.ApplyShaderPass" },
new RecorderEntry() { name="PerformFlushProperties" },
*/
/*
new RecorderEntry() { name="Camera.Render" },
new RecorderEntry() { name="GUI.Repaint" },
new RecorderEntry() { name="PrepareValues" },
new RecorderEntry() { name="ApplyGpuProgram" },
new RecorderEntry() { name="WriteParameters" },
new RecorderEntry() { name="FlushBuffers" },
new RecorderEntry() { name="BindBuffers" },
new RecorderEntry() { name="Gfx.ProcessCommand" },
*/
};
void Awake()
{
for (int i=0;i<recordersList.Length;i++)
{
var sampler = Sampler.Get(recordersList[i].name);
if ( sampler != null )
{
recordersList[i].recorder = sampler.GetRecorder();
}
}
}
void Update()
{
if (m_Enable)
{
// get timing & update average accumulators
for (int i = 0; i < recordersList.Length; i++)
{
recordersList[i].time = recordersList[i].recorder.elapsedNanoseconds / 1000000.0f;
recordersList[i].count = recordersList[i].recorder.sampleBlockCount;
recordersList[i].accTime += recordersList[i].time;
recordersList[i].accCount += recordersList[i].count;
}
m_AccDeltaTime += Time.deltaTime;
frameCount++;
// time to time, update average values & reset accumulators
if (frameCount >= kAverageFrameCount)
{
for (int i = 0; i < recordersList.Length; i++)
{
recordersList[i].avgTime = recordersList[i].accTime * (1.0f / kAverageFrameCount);
recordersList[i].avgCount = recordersList[i].accCount * (1.0f / kAverageFrameCount);
recordersList[i].accTime = 0.0f;
recordersList[i].accCount = 0;
}
m_AvgDeltaTime = m_AccDeltaTime / kAverageFrameCount;
m_AccDeltaTime = 0.0f;
frameCount = 0;
}
}
}
void OnGUI()
{
if (m_Enable)
{
GUI.color = new Color(1, 1, 1, .75f);
float w = 500, h = 204;
GUILayout.BeginArea(new Rect(10, 150, w, h), "Mini Profiler", GUI.skin.window);
string sLabel = System.String.Format("<b>{0:F2} FPS ({1:F2}ms)</b>\n", 1.0f / m_AvgDeltaTime, Time.deltaTime * 1000.0f);
for (int i = 0; i < recordersList.Length; i++)
{
sLabel += string.Format("{0:F2}ms (*{1:F2})\t({2:F2}ms *{3:F2})\t<b>{4}</b>\n", recordersList[i].avgTime, recordersList[i].avgCount, recordersList[i].time, recordersList[i].count, recordersList[i].name);
}
GUILayout.Label(sLabel);
GUILayout.EndArea();
}
}
}

12
Assets/TestScenes/Common/Scripts/MiniProfiler.cs.meta


fileFormatVersion: 2
guid: 6dc6eb1c59f1c9745b732f87dafd16f2
timeCreated: 1493044341
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

27
Assets/TestScenes/HDTest/GraphicTest/SSS/Infinite-Scan_License.txt


Creative Commons Licence
Infinite, 3D Head Scan by Lee Perry-Smith is licensed under a Creative Commons Attribution 3.0 Unported License.
Based on a work at www.triplegangers.com.
Permissions beyond the scope of this license may be available at http://www.ir-ltd.net/
Please remember: Do what you want with the files, but always mention where you got them from...
----------------------
This distribution was created by Morgan McGuire and Guedis Cardenas
http://graphics.cs.williams.edu/data/
Downloaded from:
http://www.ir-ltd.net/infinite-3d-head-scan-released
Then decompressed the Object and displacement maps .rar files. We renamed Map-COL.jpg to lambertian.jpg
We converted the displacement file from .tif to 16-bit .png. and saved it as bump.png
Then made a lowRes version of the bump map by rescaling it with sharpening in Photoshop using
Autolevels to fill the dynamic range, converting 8-bit, and filling the seams with content aware fill.
We saved this as bump-lowRes.png.
Edited mtl file:
Set up texture maps and adjusted the default glossy highlight.
We added:
map_bump -bm 0.001 bump-lowRes.png
map_bump -bm 0.02 bump.png (high res)
ks .0001 .0001 .0001
Ns 5

8
Assets/TestScenes/HDTest/GraphicTest/SSS/Infinite-Scan_License.txt.meta


fileFormatVersion: 2
guid: 8514703e504978a41b5966d47beeb42d
timeCreated: 1493290943
licenseType: Pro
TextScriptImporter:
userData:
assetBundleName:
assetBundleVariant:

178
Assets/TestScenes/HDTest/GraphicTest/SSS/InifiniteRealityHead.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: InifiniteRealityHead
m_Shader: {fileID: 4800000, guid: 6e4ae4064600d784cac1e41a9e6f2e59, type: 3}
m_ShaderKeywords: _ALPHACUTOFFENABLE_OFF _DEPTHOFFSETENABLE_OFF _DISTORTIONDEPTHTEST_OFF
_DISTORTIONENABLE_OFF _DISTORTIONONLY_OFF _DOUBLESIDEDENABLE_OFF _ENABLEPERPIXELDISPLACEMENT_OFF
_ENABLEWIND_OFF _NORMALMAP _NORMALMAP_TANGENT_SPACE
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses:
- DistortionVectors
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: 2800000, guid: 6e9f830fee2ef0c44af529384a948910, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
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}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
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}
- _EmissionMap:
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}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _NormalMap:
m_Texture: {fileID: 2800000, guid: 5ec067c14feff4144aa09544a2326b58, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
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}
- _SpecularOcclusionMap:
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}
- _ThicknessMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _AlphaCutoff: 0.5
- _AlphaCutoffEnable: 0
- _Anisotropy: 0
- _BlendMode: 0
- _BumpScale: 1
- _CullMode: 2
- _Cutoff: 0.5
- _DepthOffsetEnable: 0
- _DetailAlbedoScale: 1
- _DetailNormalMapScale: 1
- _DetailNormalScale: 1
- _DetailSmoothnessScale: 1
- _DistortionDepthTest: 0
- _DistortionEnable: 0
- _DistortionOnly: 0
- _DoubleSidedEnable: 0
- _DoubleSidedMirrorEnable: 1
- _Drag: 1
- _DstBlend: 0
- _EmissiveColorMode: 1
- _EmissiveIntensity: 0
- _EnablePerPixelDisplacement: 0
- _EnableWind: 0
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _HeightAmplitude: 0.01
- _HeightCenter: 0.5
- _HorizonFade: 1
- _InitialBend: 1
- _MaterialID: 1
- _Metallic: 0
- _Mode: 0
- _NormalMapSpace: 0
- _NormalScale: 1
- _OcclusionStrength: 1
- _PPDLodThreshold: 5
- _PPDMaxSamples: 15
- _PPDMinSamples: 5
- _Parallax: 0.02
- _ShiverDirectionality: 0.5
- _ShiverDrag: 0.2
- _Smoothness: 0.566
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _StencilRef: 1
- _Stiffness: 1
- _SubsurfaceProfile: 1
- _SubsurfaceRadius: 1
- _SurfaceType: 0
- _TexWorldScale: 1
- _Thickness: 1
- _UVBase: 0
- _UVDetail: 0
- _UVSec: 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: 0, g: 0, b: 0, a: 1}
- _EmissiveColor: {r: 0, g: 0, b: 0, a: 1}
- _SpecularColor: {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}

9
Assets/TestScenes/HDTest/GraphicTest/SSS/InifiniteRealityHead.mat.meta


fileFormatVersion: 2
guid: 70d048a3453cc5b4183269db4555c8e7
timeCreated: 1493291086
licenseType: Pro
NativeFormatImporter:
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

1001
Assets/TestScenes/HDTest/GraphicTest/SSS/bump-lowRes.png
文件差异内容过多而无法显示
查看文件

122
Assets/TestScenes/HDTest/GraphicTest/SSS/bump-lowRes.png.meta


fileFormatVersion: 2
guid: 5ec067c14feff4144aa09544a2326b58
timeCreated: 1493290941
licenseType: Pro
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 4
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 0
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 1
externalNormalMap: 0
heightScale: 0.0199
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -1
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: 1
textureShape: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
textureFormat: -1
textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: Standalone
maxTextureSize: 2048
textureFormat: -1
textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: iPhone
maxTextureSize: 2048
textureFormat: -1
textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: tvOS
maxTextureSize: 2048
textureFormat: -1
textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: PS4
maxTextureSize: 2048
textureFormat: -1
textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: Windows Store Apps
maxTextureSize: 2048
textureFormat: -1
textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: WebGL
maxTextureSize: 2048
textureFormat: -1
textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

1001
Assets/TestScenes/HDTest/GraphicTest/SSS/head.OBJ
文件差异内容过多而无法显示
查看文件

148
Assets/TestScenes/HDTest/GraphicTest/SSS/head.OBJ.meta


fileFormatVersion: 2
guid: 2b46db496f27398459cf881becf5763a
timeCreated: 1493290944
licenseType: Pro
ModelImporter:
serializedVersion: 20
fileIDToRecycleName:
100000: Group12
100002: Group14
100004: Group19
100006: Group2
100008: Group24
100010: Group26
100012: Group28
100014: Group33
100016: Group35
100018: Group39
100020: Group4
100022: Group5
100024: Group7
100026: //RootNode
400000: Group12
400002: Group14
400004: Group19
400006: Group2
400008: Group24
400010: Group26
400012: Group28
400014: Group33
400016: Group35
400018: Group39
400020: Group4
400022: Group5
400024: Group7
400026: //RootNode
2300000: Group12
2300002: Group14
2300004: Group19
2300006: Group2
2300008: Group24
2300010: Group26
2300012: Group28
2300014: Group33
2300016: Group35
2300018: Group39
2300020: Group4
2300022: Group5
2300024: Group7
3300000: Group12
3300002: Group14
3300004: Group19
3300006: Group2
3300008: Group24
3300010: Group26
3300012: Group28
3300014: Group33
3300016: Group35
3300018: Group39
3300020: Group4
3300022: Group5
3300024: Group7
4300000: Group12
4300002: Group14
4300004: Group19
4300006: Group2
4300008: Group24
4300010: Group26
4300012: Group28
4300014: Group33
4300016: Group35
4300018: Group39
4300020: Group4
4300022: Group5
4300024: Group7
materials:
importMaterials: 1
materialName: 0
materialSearch: 1
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
resampleCurves: 1
optimizeGameObjects: 0
motionNodeName:
rigImportErrors:
rigImportWarnings:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
animationDoRetargetingWarnings: 0
animationCompression: 1
animationRotationError: 0.5
animationPositionError: 0.5
animationScaleError: 0.5
animationWrapMode: 0
extraExposedTransformPaths: []
clipAnimations: []
isReadable: 1
meshes:
lODScreenPercentages: []
globalScale: 1
meshCompression: 0
addColliders: 0
importVisibility: 0
importBlendShapes: 1
importCameras: 1
importLights: 1
swapUVChannels: 0
generateSecondaryUV: 0
useFileUnits: 1
optimizeMeshForGPU: 1
keepQuads: 0
weldVertices: 1
secondaryUVAngleDistortion: 8
secondaryUVAreaDistortion: 15.000001
secondaryUVHardAngle: 88
secondaryUVPackMargin: 4
useFileScale: 1
tangentSpace:
normalSmoothAngle: 60
normalImportMode: 0
tangentImportMode: 3
normalCalculationMode: 4
importAnimation: 1
copyAvatar: 0
humanDescription:
serializedVersion: 2
human: []
skeleton: []
armTwist: 0.5
foreArmTwist: 0.5
upperLegTwist: 0.5
legTwist: 0.5
armStretch: 0.05
legStretch: 0.05
feetSpacing: 0
rootMotionBoneName:
rootMotionBoneRotation: {x: 0, y: 0, z: 0, w: 1}
hasTranslationDoF: 0
hasExtraRoot: 0
skeletonHasParents: 1
lastHumanDescriptionAvatarSource: {instanceID: 0}
animationType: 0
humanoidOversampling: 1
additionalBone: 0
userData:
assetBundleName:
assetBundleVariant:

74
Assets/TestScenes/HDTest/GraphicTest/SSS/lambertian.jpg.meta


fileFormatVersion: 2
guid: 6e9f830fee2ef0c44af529384a948910
timeCreated: 1493290943
licenseType: Pro
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 4
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: -1
mipBias: -1
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
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

9
Assets/TestScenes/HDTest/NewBatcherTest/Prefabs.meta


fileFormatVersion: 2
guid: c08fc6135b3f1884782454e0208d1ace
folderAsset: yes
timeCreated: 1493135969
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

82
Assets/TestScenes/HDTest/NewBatcherTest/Prefabs/Capsule.prefab


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1001 &100100000
Prefab:
m_ObjectHideFlags: 1
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications: []
m_RemovedComponents: []
m_ParentPrefab: {fileID: 0}
m_RootGameObject: {fileID: 1121459876145138}
m_IsPrefabParent: 1
--- !u!1 &1121459876145138
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 4050123609387240}
- component: {fileID: 33800389589400366}
- component: {fileID: 23510404210144466}
m_Layer: 0
m_Name: Capsule
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 4294967295
m_IsActive: 1
--- !u!4 &4050123609387240
Transform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1121459876145138}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 5.017, y: 9.277177, z: 10.256694}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!23 &23510404210144466
MeshRenderer:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1121459876145138}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 2100000, guid: a5100d39fb5306e4bb323147186404f2, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 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 &33800389589400366
MeshFilter:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1121459876145138}
m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0}

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

正在加载...
取消
保存