From cc5d8edec43aff7469b0b93ce035e1414203fd4b Mon Sep 17 00:00:00 2001 From: SepComet <202308010230@stu.csust.edu.cn> Date: Sat, 18 Apr 2026 20:27:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20BgForm?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 + .omc/state/hud-stdin-cache.json | 2 +- Assets/GameMain/Scenes/Main.meta | 8 + Assets/GameMain/Scenes/Main.unity | 475 ++++++++++++++++++ Assets/GameMain/Scenes/Main.unity.meta | 7 + .../Scenes/Main/GlobalVolumeProfile.asset | 104 ++++ .../Main/GlobalVolumeProfile.asset.meta | 8 + Assets/GameMain/Scenes/Menu.unity | 138 ----- .../Scripts/Definition/Enum/UIFormId.cs | 4 +- .../Procedure/BuiltIn/ProcedureChangeScene.cs | 5 +- .../Scripts/Procedure/ProcedureMain.cs | 21 +- .../Scripts/Procedure/ProcedureMenu.cs | 18 +- .../Scripts/UI/Context/BgFormContext.cs | 11 + .../Scripts/UI/Context/BgFormContext.cs.meta | 11 + .../Scripts/UI/Controller/BgFormController.cs | 127 +++++ .../UI/Controller/BgFormController.cs.meta | 11 + Assets/GameMain/Scripts/UI/View/BgForm.cs | 42 ++ .../GameMain/Scripts/UI/View/BgForm.cs.meta | 11 + Assets/GameMain/UI/UIForms/BgForm.prefab | 127 +++++ Assets/GameMain/UI/UIForms/BgForm.prefab.meta | 7 + Assets/Launcher.unity | 152 +++++- ProjectSettings/EditorBuildSettings.asset | 3 + 数据表/DialogLine.xlsx | Bin 41002 -> 41009 bytes 23 files changed, 1128 insertions(+), 166 deletions(-) create mode 100644 Assets/GameMain/Scenes/Main.meta create mode 100644 Assets/GameMain/Scenes/Main.unity create mode 100644 Assets/GameMain/Scenes/Main.unity.meta create mode 100644 Assets/GameMain/Scenes/Main/GlobalVolumeProfile.asset create mode 100644 Assets/GameMain/Scenes/Main/GlobalVolumeProfile.asset.meta create mode 100644 Assets/GameMain/Scripts/UI/Context/BgFormContext.cs create mode 100644 Assets/GameMain/Scripts/UI/Context/BgFormContext.cs.meta create mode 100644 Assets/GameMain/Scripts/UI/Controller/BgFormController.cs create mode 100644 Assets/GameMain/Scripts/UI/Controller/BgFormController.cs.meta create mode 100644 Assets/GameMain/Scripts/UI/View/BgForm.cs create mode 100644 Assets/GameMain/Scripts/UI/View/BgForm.cs.meta create mode 100644 Assets/GameMain/UI/UIForms/BgForm.prefab create mode 100644 Assets/GameMain/UI/UIForms/BgForm.prefab.meta diff --git a/.gitignore b/.gitignore index da19865..9cf5924 100644 --- a/.gitignore +++ b/.gitignore @@ -97,3 +97,5 @@ crashlytics-build.properties /AssetBundles /Android /bin +/.omc + diff --git a/.omc/state/hud-stdin-cache.json b/.omc/state/hud-stdin-cache.json index 87bf63b..a1bef6c 100644 --- a/.omc/state/hud-stdin-cache.json +++ b/.omc/state/hud-stdin-cache.json @@ -1 +1 @@ -{"session_id":"1b0f5c6b-460e-48ef-9f2b-eb516bfbee3e","transcript_path":"C:\\Users\\September\\.claude\\projects\\D--Learn-GameLearn-UnityProjects-Biography-of-Li-Jian\\1b0f5c6b-460e-48ef-9f2b-eb516bfbee3e.jsonl","cwd":"D:\\Learn\\GameLearn\\UnityProjects\\Biography of Li Jian","model":{"id":"MiniMax-M2.7-highspeed","display_name":"MiniMax-M2.7-highspeed"},"workspace":{"current_dir":"D:\\Learn\\GameLearn\\UnityProjects\\Biography of Li Jian","project_dir":"D:\\Learn\\GameLearn\\UnityProjects\\Biography of Li Jian","added_dirs":[]},"version":"2.1.114","output_style":{"name":"default"},"cost":{"total_cost_usd":0.4334175,"total_duration_ms":739712,"total_api_duration_ms":48596,"total_lines_added":0,"total_lines_removed":0},"context_window":{"total_input_tokens":336,"total_output_tokens":1905,"context_window_size":200000,"current_usage":{"input_tokens":168,"output_tokens":492,"cache_creation_input_tokens":30965,"cache_read_input_tokens":0},"used_percentage":16,"remaining_percentage":84},"exceeds_200k_tokens":false} \ No newline at end of file +{"session_id":"980cf702-c5aa-462f-a54f-9cf7f5a5882d","transcript_path":"C:\\Users\\September\\.claude\\projects\\D--Learn-GameLearn-UnityProjects-Biography-of-Li-Jian\\980cf702-c5aa-462f-a54f-9cf7f5a5882d.jsonl","cwd":"D:\\Learn\\GameLearn\\UnityProjects\\Biography of Li Jian","model":{"id":"MiniMax-M2.7-highspeed","display_name":"MiniMax-M2.7-highspeed"},"workspace":{"current_dir":"D:\\Learn\\GameLearn\\UnityProjects\\Biography of Li Jian","project_dir":"D:\\Learn\\GameLearn\\UnityProjects\\Biography of Li Jian","added_dirs":[]},"version":"2.1.114","output_style":{"name":"default"},"cost":{"total_cost_usd":0.45526774999999997,"total_duration_ms":743042,"total_api_duration_ms":19399,"total_lines_added":0,"total_lines_removed":0},"context_window":{"total_input_tokens":31113,"total_output_tokens":1126,"context_window_size":200000,"current_usage":{"input_tokens":17274,"output_tokens":521,"cache_creation_input_tokens":0,"cache_read_input_tokens":26409},"used_percentage":22,"remaining_percentage":78},"exceeds_200k_tokens":false} \ No newline at end of file diff --git a/Assets/GameMain/Scenes/Main.meta b/Assets/GameMain/Scenes/Main.meta new file mode 100644 index 0000000..8654910 --- /dev/null +++ b/Assets/GameMain/Scenes/Main.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 92c0635be6ba6c74797e5145587b1f4a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GameMain/Scenes/Main.unity b/Assets/GameMain/Scenes/Main.unity new file mode 100644 index 0000000..1eaa51b --- /dev/null +++ b/Assets/GameMain/Scenes/Main.unity @@ -0,0 +1,475 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &203844586 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 203844589} + - component: {fileID: 203844588} + - component: {fileID: 203844587} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &203844587 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 203844586} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 3 + m_UsePipelineSettings: 1 + m_AdditionalLightsShadowResolutionTier: 2 + m_LightLayerMask: 1 + m_RenderingLayers: 1 + m_CustomShadowLayers: 0 + m_ShadowLayerMask: 1 + m_ShadowRenderingLayers: 1 + m_LightCookieSize: {x: 1, y: 1} + m_LightCookieOffset: {x: 0, y: 0} + m_SoftShadowQuality: 1 +--- !u!108 &203844588 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 203844586} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &203844589 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 203844586} + serializedVersion: 2 + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &223482651 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 223482652} + - component: {fileID: 223482654} + - component: {fileID: 223482653} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &223482652 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 223482651} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2070240951} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &223482653 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 223482651} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: d339ce9c4958967469068a30e0753b30, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &223482654 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 223482651} + m_CullTransparentMesh: 1 +--- !u!1 &1160234425 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1160234427} + - component: {fileID: 1160234426} + m_Layer: 0 + m_Name: Global Volume + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1160234426 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1160234425} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IsGlobal: 1 + priority: 0 + blendDistance: 0 + weight: 1 + sharedProfile: {fileID: 11400000, guid: 352998f9edeef2348a887c5a2e7dc5d1, type: 2} +--- !u!4 &1160234427 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1160234425} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2070240947 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2070240951} + - component: {fileID: 2070240950} + - component: {fileID: 2070240949} + - component: {fileID: 2070240948} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2070240948 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2070240947} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &2070240949 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2070240947} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 2048, y: 1152} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &2070240950 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2070240947} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 0 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: -10000 + m_TargetDisplay: 0 +--- !u!224 &2070240951 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2070240947} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 223482652} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 203844589} + - {fileID: 1160234427} + - {fileID: 2070240951} diff --git a/Assets/GameMain/Scenes/Main.unity.meta b/Assets/GameMain/Scenes/Main.unity.meta new file mode 100644 index 0000000..0284699 --- /dev/null +++ b/Assets/GameMain/Scenes/Main.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8ad1d2903d209b147903079c0fb010d5 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GameMain/Scenes/Main/GlobalVolumeProfile.asset b/Assets/GameMain/Scenes/Main/GlobalVolumeProfile.asset new file mode 100644 index 0000000..c76f07b --- /dev/null +++ b/Assets/GameMain/Scenes/Main/GlobalVolumeProfile.asset @@ -0,0 +1,104 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-32820517437979890 +MonoBehaviour: + m_ObjectHideFlags: 3 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0b2db86121404754db890f4c8dfe81b2, type: 3} + m_Name: Bloom + m_EditorClassIdentifier: + active: 1 + skipIterations: + m_OverrideState: 0 + m_Value: 1 + threshold: + m_OverrideState: 0 + m_Value: 0.9 + intensity: + m_OverrideState: 1 + m_Value: 1 + scatter: + m_OverrideState: 0 + m_Value: 0.7 + clamp: + m_OverrideState: 0 + m_Value: 65472 + tint: + m_OverrideState: 0 + m_Value: {r: 1, g: 1, b: 1, a: 1} + highQualityFiltering: + m_OverrideState: 0 + m_Value: 0 + downscale: + m_OverrideState: 0 + m_Value: 0 + maxIterations: + m_OverrideState: 0 + m_Value: 6 + dirtTexture: + m_OverrideState: 0 + m_Value: {fileID: 0} + dimension: 1 + dirtIntensity: + m_OverrideState: 0 + m_Value: 0 +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d7fd9488000d3734a9e00ee676215985, type: 3} + m_Name: GlobalVolumeProfile + m_EditorClassIdentifier: + components: + - {fileID: 1881579288749618558} + - {fileID: -32820517437979890} +--- !u!114 &1881579288749618558 +MonoBehaviour: + m_ObjectHideFlags: 3 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 97c23e3b12dc18c42a140437e53d3951, type: 3} + m_Name: Tonemapping + m_EditorClassIdentifier: + active: 1 + mode: + m_OverrideState: 1 + m_Value: 1 + neutralHDRRangeReductionMode: + m_OverrideState: 0 + m_Value: 2 + acesPreset: + m_OverrideState: 0 + m_Value: 3 + hueShiftAmount: + m_OverrideState: 0 + m_Value: 0 + detectPaperWhite: + m_OverrideState: 0 + m_Value: 0 + paperWhite: + m_OverrideState: 0 + m_Value: 300 + detectBrightnessLimits: + m_OverrideState: 0 + m_Value: 1 + minNits: + m_OverrideState: 0 + m_Value: 0.005 + maxNits: + m_OverrideState: 0 + m_Value: 1000 diff --git a/Assets/GameMain/Scenes/Main/GlobalVolumeProfile.asset.meta b/Assets/GameMain/Scenes/Main/GlobalVolumeProfile.asset.meta new file mode 100644 index 0000000..c3ec249 --- /dev/null +++ b/Assets/GameMain/Scenes/Main/GlobalVolumeProfile.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 352998f9edeef2348a887c5a2e7dc5d1 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GameMain/Scenes/Menu.unity b/Assets/GameMain/Scenes/Menu.unity index 2b70c43..104fc42 100644 --- a/Assets/GameMain/Scenes/Menu.unity +++ b/Assets/GameMain/Scenes/Menu.unity @@ -364,143 +364,6 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1384092466 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1384092470} - - component: {fileID: 1384092469} - - component: {fileID: 1384092468} - - component: {fileID: 1384092467} - m_Layer: 0 - m_Name: Camera - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1384092467 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1384092466} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} - m_Name: - m_EditorClassIdentifier: - m_RenderShadows: 1 - m_RequiresDepthTextureOption: 2 - m_RequiresOpaqueTextureOption: 2 - m_CameraType: 0 - m_Cameras: [] - m_RendererIndex: -1 - m_VolumeLayerMask: - serializedVersion: 2 - m_Bits: 1 - m_VolumeTrigger: {fileID: 0} - m_VolumeFrameworkUpdateModeOption: 2 - m_RenderPostProcessing: 0 - m_Antialiasing: 0 - m_AntialiasingQuality: 2 - m_StopNaN: 0 - m_Dithering: 0 - m_ClearDepth: 1 - m_AllowXRRendering: 1 - m_AllowHDROutput: 1 - m_UseScreenCoordOverride: 0 - m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} - m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} - m_RequiresDepthTexture: 0 - m_RequiresColorTexture: 0 - m_Version: 2 - m_TaaSettings: - m_Quality: 3 - m_FrameInfluence: 0.1 - m_JitterScale: 1 - m_MipBias: 0 - m_VarianceClampScale: 0.9 - m_ContrastAdaptiveSharpening: 0 ---- !u!81 &1384092468 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1384092466} - m_Enabled: 1 ---- !u!20 &1384092469 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1384092466} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_projectionMatrixMode: 1 - m_GateFitMode: 2 - m_FOVAxisMode: 0 - m_Iso: 200 - m_ShutterSpeed: 0.005 - m_Aperture: 16 - m_FocusDistance: 10 - m_FocalLength: 50 - m_BladeCount: 5 - m_Curvature: {x: 2, y: 11} - m_BarrelClipping: 0.25 - m_Anamorphism: 0 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 0 - orthographic size: 5 - m_Depth: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 1 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &1384092470 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1384092466} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 1948.7758, y: 1107.6813, z: -4.8875804} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1779441773 GameObject: m_ObjectHideFlags: 0 @@ -609,5 +472,4 @@ SceneRoots: m_Roots: - {fileID: 203844589} - {fileID: 1160234427} - - {fileID: 1384092470} - {fileID: 1779441777} diff --git a/Assets/GameMain/Scripts/Definition/Enum/UIFormId.cs b/Assets/GameMain/Scripts/Definition/Enum/UIFormId.cs index f99f800..2b00db7 100644 --- a/Assets/GameMain/Scripts/Definition/Enum/UIFormId.cs +++ b/Assets/GameMain/Scripts/Definition/Enum/UIFormId.cs @@ -19,6 +19,8 @@ namespace UI /// DialogForm = 1, + BgForm = 2, + /// /// 主菜单。 /// @@ -53,7 +55,7 @@ namespace UI /// 气泡剧情对话界面。 /// BubbleDialogForm = 106, - + MainOverlayForm = 107, AIChatForm = 108, diff --git a/Assets/GameMain/Scripts/Procedure/BuiltIn/ProcedureChangeScene.cs b/Assets/GameMain/Scripts/Procedure/BuiltIn/ProcedureChangeScene.cs index 241d939..838e815 100644 --- a/Assets/GameMain/Scripts/Procedure/BuiltIn/ProcedureChangeScene.cs +++ b/Assets/GameMain/Scripts/Procedure/BuiltIn/ProcedureChangeScene.cs @@ -87,6 +87,9 @@ namespace Procedure case SceneId.Menu: ChangeState(procedureOwner); break; + case SceneId.Main: + ChangeState(procedureOwner); + break; case SceneId.GameplayA: ChangeState(procedureOwner); break; @@ -149,4 +152,4 @@ namespace Procedure ne.DependencyAssetName, ne.LoadedCount.ToString(), ne.TotalCount.ToString()); } } -} \ No newline at end of file +} diff --git a/Assets/GameMain/Scripts/Procedure/ProcedureMain.cs b/Assets/GameMain/Scripts/Procedure/ProcedureMain.cs index a0f7ae1..3500bf4 100644 --- a/Assets/GameMain/Scripts/Procedure/ProcedureMain.cs +++ b/Assets/GameMain/Scripts/Procedure/ProcedureMain.cs @@ -1,18 +1,21 @@ using System.Collections; using System.Collections.Generic; +using GameFramework.Fsm; +using GameFramework.Procedure; using UnityEngine; -public class ProcedureMain : MonoBehaviour +namespace Procedure { - // Start is called before the first frame update - void Start() + public class ProcedureMain : ProcedureBase { - - } + public override bool UseNativeDialog => false; - // Update is called once per frame - void Update() - { - + protected override void OnEnter(IFsm procedureOwner) + { + base.OnEnter(procedureOwner); + + GameEntry.Dialog.Init(1); + GameEntry.Dialog.StartDialog(1001); + } } } diff --git a/Assets/GameMain/Scripts/Procedure/ProcedureMenu.cs b/Assets/GameMain/Scripts/Procedure/ProcedureMenu.cs index 7b0aa86..7b6f9fe 100644 --- a/Assets/GameMain/Scripts/Procedure/ProcedureMenu.cs +++ b/Assets/GameMain/Scripts/Procedure/ProcedureMenu.cs @@ -24,7 +24,7 @@ namespace Procedure private SettingFormController _settingFormController; private const string SettingPrefix = "Setting."; - + private bool _gameStarted = false; private void StartGame() @@ -78,7 +78,7 @@ namespace Procedure { _menuFormController?.CloseUI(); _settingFormController?.CloseUI(); - + var e = GameEntry.Event; e.Unsubscribe(MenuStartEventArgs.EventId, MenuStart); e.Unsubscribe(MenuContinueEventArgs.EventId, MenuContinue); @@ -96,7 +96,7 @@ namespace Procedure if (_gameStarted) { - procedureOwner.SetData("NextSceneId", (int)SceneId.GameplayA); + procedureOwner.SetData("NextSceneId", (int)SceneId.Main); ChangeState(procedureOwner); } } @@ -132,10 +132,10 @@ namespace Procedure private void SettingSave(object sender, GameEventArgs e) { if (!(e is SettingSaveEventArgs args)) return; - + GameEntry.Sound.SetVolume("BGM", args.GameSettings.BGMVolume); GameEntry.Sound.SetVolume("SE", args.GameSettings.SEVolume); - + ScreenResolutionType resolution = args.GameSettings.ScreenResolution; int width = 0, height = 0; switch (resolution) @@ -183,7 +183,7 @@ namespace Procedure default: throw new ArgumentOutOfRangeException(); } - + if (args.GameSettings.AntiAliasing) { foreach (var asset in GraphicsSettings.allConfiguredRenderPipelines) @@ -201,10 +201,10 @@ namespace Procedure Application.targetFrameRate = -1; QualitySettings.vSyncCount = args.GameSettings.VSync ? 1 : 0; - + GameEntry.Setting.SaveSetting(args.GameSettings); } - + #endregion } -} \ No newline at end of file +} diff --git a/Assets/GameMain/Scripts/UI/Context/BgFormContext.cs b/Assets/GameMain/Scripts/UI/Context/BgFormContext.cs new file mode 100644 index 0000000..efd8849 --- /dev/null +++ b/Assets/GameMain/Scripts/UI/Context/BgFormContext.cs @@ -0,0 +1,11 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace UI +{ + public class BgFormContext : UIContext + { + public Sprite Sprite; + } +} diff --git a/Assets/GameMain/Scripts/UI/Context/BgFormContext.cs.meta b/Assets/GameMain/Scripts/UI/Context/BgFormContext.cs.meta new file mode 100644 index 0000000..78ac4a4 --- /dev/null +++ b/Assets/GameMain/Scripts/UI/Context/BgFormContext.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 35695e29b2219844fa8bf1bae0c2bb3e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GameMain/Scripts/UI/Controller/BgFormController.cs b/Assets/GameMain/Scripts/UI/Controller/BgFormController.cs new file mode 100644 index 0000000..ce88462 --- /dev/null +++ b/Assets/GameMain/Scripts/UI/Controller/BgFormController.cs @@ -0,0 +1,127 @@ +using GameFramework.Event; +using UnityGameFramework.Runtime; + +namespace UI +{ + public class BgFormController : IFormController + { + private BgFormContext _context; + private BgForm _bgForm; + private int? _formSerialId; + private bool _pendingRefresh; + + public BgFormController() + { + GameEntry.Event.Subscribe(OpenUIFormSuccessEventArgs.EventId, OnOpenUIFormSuccess); + GameEntry.Event.Subscribe(CloseUIFormCompleteEventArgs.EventId, OnCloseUIFormComplete); + } + + public int? OpenUI(BgFormContext context) + { + if (context == null) + { + Log.Warning("BgFormController open failed. context is null."); + return null; + } + + _context = context; + + if (_bgForm != null) + { + _bgForm.RefreshUI(_context); + return _formSerialId; + } + + CloseUI(); + _pendingRefresh = true; + _formSerialId = GameEntry.UI.OpenUIForm(UIFormId.BgForm, context); + return _formSerialId; + } + + public void CloseUI() + { + _pendingRefresh = false; + + if (_formSerialId.HasValue) + { + GameEntry.UI.CloseUIForm(_formSerialId.Value); + return; + } + + if (_bgForm != null) + { + _bgForm.Close(); + } + } + + ~BgFormController() + { + GameEntry.Event.Unsubscribe(OpenUIFormSuccessEventArgs.EventId, OnOpenUIFormSuccess); + GameEntry.Event.Unsubscribe(CloseUIFormCompleteEventArgs.EventId, OnCloseUIFormComplete); + } + + private void TryRefreshUI() + { + if (_context == null) + { + return; + } + + if (_bgForm == null) + { + _pendingRefresh = true; + return; + } + + _bgForm.RefreshUI(_context); + _pendingRefresh = false; + } + + private void OnOpenUIFormSuccess(object sender, GameEventArgs e) + { + if (!(e is OpenUIFormSuccessEventArgs args)) + { + return; + } + + if (!_formSerialId.HasValue) + { + return; + } + + if (args.UIForm == null || args.UIForm.SerialId != _formSerialId.Value || args.UserData != _context) + { + return; + } + + _bgForm = args.UIForm.Logic as BgForm; + if (_bgForm == null) + { + Log.Warning("AIChatFormController open success but form logic is invalid."); + return; + } + + if (_pendingRefresh) + { + TryRefreshUI(); + } + } + + private void OnCloseUIFormComplete(object sender, GameEventArgs e) + { + if (!(e is CloseUIFormCompleteEventArgs args)) + { + return; + } + + if (args.SerialId != _formSerialId) + { + return; + } + + _bgForm = null; + _formSerialId = null; + _pendingRefresh = false; + } + } +} diff --git a/Assets/GameMain/Scripts/UI/Controller/BgFormController.cs.meta b/Assets/GameMain/Scripts/UI/Controller/BgFormController.cs.meta new file mode 100644 index 0000000..ea72782 --- /dev/null +++ b/Assets/GameMain/Scripts/UI/Controller/BgFormController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5676b59e53ae51b449044f870ba39daa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GameMain/Scripts/UI/View/BgForm.cs b/Assets/GameMain/Scripts/UI/View/BgForm.cs new file mode 100644 index 0000000..ed26ab8 --- /dev/null +++ b/Assets/GameMain/Scripts/UI/View/BgForm.cs @@ -0,0 +1,42 @@ +using UnityEngine; +using UnityEngine.UI; +using UnityGameFramework.Runtime; + +namespace UI +{ + public class BgForm : UGuiForm + { + [SerializeField] private Image _bgImage; + + private Sprite _currentSprite; + + protected override void OnOpen(object userData) + { + base.OnOpen(userData); + + if (!(userData is BgFormContext context)) + { + Log.Error("BgFormContext is invalid."); + return; + } + + RefreshUI(context); + } + + protected override void OnClose(bool isShutdown, object userData) + { + _currentSprite = null; + _bgImage.sprite = null; + + base.OnClose(isShutdown, userData); + } + + public void RefreshUI(BgFormContext context) + { + if (this._currentSprite == context.Sprite) return; + + this._currentSprite = context.Sprite; + _bgImage.sprite = context.Sprite; + } + } +} diff --git a/Assets/GameMain/Scripts/UI/View/BgForm.cs.meta b/Assets/GameMain/Scripts/UI/View/BgForm.cs.meta new file mode 100644 index 0000000..1cf96bf --- /dev/null +++ b/Assets/GameMain/Scripts/UI/View/BgForm.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 956fafaa81c7caa4c840171e4e4488cd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GameMain/UI/UIForms/BgForm.prefab b/Assets/GameMain/UI/UIForms/BgForm.prefab new file mode 100644 index 0000000..557409d --- /dev/null +++ b/Assets/GameMain/UI/UIForms/BgForm.prefab @@ -0,0 +1,127 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &896858165445596403 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 852148271748999152} + - component: {fileID: 530867036038325333} + - component: {fileID: 2469911598581424220} + m_Layer: 5 + m_Name: bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &852148271748999152 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 896858165445596403} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8071259271923132436} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &530867036038325333 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 896858165445596403} + m_CullTransparentMesh: 1 +--- !u!114 &2469911598581424220 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 896858165445596403} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: c48769a908d6a474bbf52ac1ad195815, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &5369683530899704392 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8071259271923132436} + - component: {fileID: 2384435230542847387} + m_Layer: 5 + m_Name: BgForm + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8071259271923132436 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5369683530899704392} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 852148271748999152} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2384435230542847387 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5369683530899704392} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 956fafaa81c7caa4c840171e4e4488cd, type: 3} + m_Name: + m_EditorClassIdentifier: + _bgImage: {fileID: 2469911598581424220} diff --git a/Assets/GameMain/UI/UIForms/BgForm.prefab.meta b/Assets/GameMain/UI/UIForms/BgForm.prefab.meta new file mode 100644 index 0000000..be43541 --- /dev/null +++ b/Assets/GameMain/UI/UIForms/BgForm.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8b58d3d251864744daa79c9c1ac8255a +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Launcher.unity b/Assets/Launcher.unity index 9373a1a..19d9959 100644 --- a/Assets/Launcher.unity +++ b/Assets/Launcher.unity @@ -248,6 +248,143 @@ MonoBehaviour: m_PointerBehavior: 0 m_CursorLockBehavior: 0 m_ScrollDeltaPerTick: 6 +--- !u!1 &188380256 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 188380260} + - component: {fileID: 188380259} + - component: {fileID: 188380258} + - component: {fileID: 188380257} + m_Layer: 0 + m_Name: Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &188380257 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 188380256} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_Cameras: [] + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_VolumeFrameworkUpdateModeOption: 2 + m_RenderPostProcessing: 0 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_AllowXRRendering: 1 + m_AllowHDROutput: 1 + m_UseScreenCoordOverride: 0 + m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} + m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_Version: 2 + m_TaaSettings: + m_Quality: 3 + m_FrameInfluence: 0.1 + m_JitterScale: 1 + m_MipBias: 0 + m_VarianceClampScale: 0.9 + m_ContrastAdaptiveSharpening: 0 +--- !u!81 &188380258 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 188380256} + m_Enabled: 1 +--- !u!20 &188380259 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 188380256} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 100 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &188380260 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 188380256} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!4 &192213471 stripped Transform: m_CorrespondingSourceObject: {fileID: 430602, guid: adb3eb1c35fcff14f89fba7b05c9d71c, @@ -313,7 +450,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 11405216, guid: adb3eb1c35fcff14f89fba7b05c9d71c, type: 3} propertyPath: m_AvailableProcedureTypeNames.Array.size - value: 12 + value: 13 objectReference: {fileID: 0} - target: {fileID: 11405216, guid: adb3eb1c35fcff14f89fba7b05c9d71c, type: 3} propertyPath: m_AvailableProcedureTypeNames.Array.data[0] @@ -341,27 +478,27 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 11405216, guid: adb3eb1c35fcff14f89fba7b05c9d71c, type: 3} propertyPath: m_AvailableProcedureTypeNames.Array.data[6] - value: Procedure.ProcedureMenu + value: Procedure.ProcedureMain objectReference: {fileID: 0} - target: {fileID: 11405216, guid: adb3eb1c35fcff14f89fba7b05c9d71c, type: 3} propertyPath: m_AvailableProcedureTypeNames.Array.data[7] - value: Procedure.ProcedurePreload + value: Procedure.ProcedureMenu objectReference: {fileID: 0} - target: {fileID: 11405216, guid: adb3eb1c35fcff14f89fba7b05c9d71c, type: 3} propertyPath: m_AvailableProcedureTypeNames.Array.data[8] - value: Procedure.ProcedureSplash + value: Procedure.ProcedurePreload objectReference: {fileID: 0} - target: {fileID: 11405216, guid: adb3eb1c35fcff14f89fba7b05c9d71c, type: 3} propertyPath: m_AvailableProcedureTypeNames.Array.data[9] - value: Procedure.ProcedureUpdateResources + value: Procedure.ProcedureSplash objectReference: {fileID: 0} - target: {fileID: 11405216, guid: adb3eb1c35fcff14f89fba7b05c9d71c, type: 3} propertyPath: m_AvailableProcedureTypeNames.Array.data[10] - value: Procedure.ProcedureUpdateVersion + value: Procedure.ProcedureUpdateResources objectReference: {fileID: 0} - target: {fileID: 11405216, guid: adb3eb1c35fcff14f89fba7b05c9d71c, type: 3} propertyPath: m_AvailableProcedureTypeNames.Array.data[11] - value: Procedure.ProcedureVerifyResources + value: Procedure.ProcedureUpdateVersion objectReference: {fileID: 0} - target: {fileID: 11405216, guid: adb3eb1c35fcff14f89fba7b05c9d71c, type: 3} propertyPath: m_AvailableProcedureTypeNames.Array.data[12] @@ -1132,3 +1269,4 @@ SceneRoots: m_Roots: - {fileID: 1852670053} - {fileID: 120093242} + - {fileID: 188380260} diff --git a/ProjectSettings/EditorBuildSettings.asset b/ProjectSettings/EditorBuildSettings.asset index c9e6d78..a771b3b 100644 --- a/ProjectSettings/EditorBuildSettings.asset +++ b/ProjectSettings/EditorBuildSettings.asset @@ -14,4 +14,7 @@ EditorBuildSettings: - enabled: 1 path: Assets/GameMain/Scenes/Menu.unity guid: 5ae1171af6ab9b646b7a915598c657f1 + - enabled: 1 + path: Assets/GameMain/Scenes/Main.unity + guid: 8ad1d2903d209b147903079c0fb010d5 m_configObjects: {} diff --git a/数据表/DialogLine.xlsx b/数据表/DialogLine.xlsx index 68feecee04689f5d6cbb89080315950990ff6a49..a5a61a8cea2003a6ede0e5293db45fc7d71e5d17 100644 GIT binary patch delta 23074 zcmaHTcRZH;`+lXUtVCHMlvUlhGs>)tijZt>dt`>l=Bi|6WeX89vRBz8dxz}omA&`+ zy|4R5Pkp|x-#6)TAU_BnZJ2hZ9* zdE?f1!iBr`ZB`w171h5imc}B)v)ZNGTNo7;IC<`K&@!F4L7_D1=o4A@qDa_p86~d9 zP4V3FgqwWjsvH9zMC|Qyzn3hd?@kEepUtrjWgywN;a42nEBbMbI3a1L z_KoC3p3GMg=UWB7X%yZjy$rJ{zC=qhJ6X0}YjPuE)`jO^zI_CpWw>rO(4~c2*ZUrxp}#6Dm0APiUgbrcD?Kja%330_c+@XLSc*Wg_VFprln5H^Xcj(PFp+Mg!A#H^Zky?Tieymf{t6e^MXa&>ihGPf`TR6MS>>bS8r zJ0YkBRr3l$drQ4;+&j&z5cqe#tm!mPNq0+kx134}3!(j9H>uK6Vz>Dcn}X z5^6zcr`j~VwA7&Db;@$hZ zd0{`M!#8&}C!z-SHmf^L1^4>16ffx8+3atvbwUn~+dI9B<-Km!f==pZc6=e$d1z-Z zK`K$}?tWuPXB7Be^@RDfLfd_UdD+JO^~u%d^yK}$#$GpQ7reH*U`g@bn}D%CZqum! z4bybN(%se7PId8>xjyc(oQ=-rsQuJ8k+cQZs*`EQm}mq_9JkgL{Ps;E%?)?w?FN?y z%zv!cOLy+8-n`W=GYL6tLgNXYQGz=oow=n>d#n5VD{Z~3f<^Xr3F*7d&CuTLYTE#0 zD`dB7;jpuFZFq5>yVUXf86Tm&wV|k0!TrE4gZ0^w@}eCWP&;uWDB2~eYd)Y36 zd=7<$x%+OT%G68>T5qxx=ywvv7Z+wN!>i*7IW#*yOOBN$wwGuJ5r;jt&ioEZCl|^Y zSg#5Pw8ca|(|x?Nu^ZA1IXR!fx~smw@i;zvl2`G#qwQ*GaL9D{t@M)Nc4&WbZhL*- zCtyWeX6GtPyh^1f3sko$`-pYvgg}!P4=e4wU$eg~IpdYjOV1-^WoLrve_ryD&McMV zyI(mZZ~pe}wo0YAEZ;Ady^9xobKhFX^7XMGViY?qo(HB0YlS{DB%qXEUV5&!oEVCi zO!DEurI4p|<{Fa1!zeZPim@ebI&%d0LBcnYD;w6ggLd6Y;{BoU){sfJh`F(`q7`ZO z{F{sE!o!l4^nQ63i|-%&szF&Qv24X(KsFawEZIE zu$EEEgcoPp7TNUD626hGre?8r3a9?5)^RMQ%Aa~y&7Iekt}q)74_B>wj(=ASFymfp z9=U>`JCkyXRgZ%_BIR-Cl^jXe)5V3ox?N(Ar!^I48X+4dM=lpy)mfw|RhN5WnM>DM z*QlT{2DfM&mCX&?&zqJS!p_C9w*BvF;tWLD6xq|1Qp#?9qK{qqqGJ{IX`t9e^Nuc+ zx^OZbHknpn`48t*hZA@$=tHGuMzwk#s4zWZJOwYz<7R7^J|LWFsTNL*MEc-eP$F7~ z=Dtto8)s{^)Eb%@hOM6NsyID4$<`-pn7nT|ORK4; zk`t1+zQwC*`dDA*tvb$*H$0;EK4iS@6%qd09@1KfE+n43OrtVSFB5x&*5#E<@OP$k zd$P12)el9;@mdB4#$MktKE)PwOvr(UO$(y4w{CZQhEoeai-9bStn+$Dc}7>SL6T*R zvCadxf=4pGmO61ZU!~216r*Hj8*g`XD}B_ehG2_ifLea2OM0dodR z`zyhYURY9kFLVOI+xv`K5D{}yv`vTe7CTLSuH+`GM7icUXXipL0d&4#k>!B6SiNHJ z({1}{Oto8?(NkPt3US#+72&`*&)?*_^4uUyg6$Vhv0f&% zYh}NWS8E}Xtf!5OZ01=vQFF}0r}}L7qFOjMYc2~sBPrpCBJk2TgXSqB|GGR;J5Mvw zASSP+EyFOa+yWm?n;boNY4B-!k4I|GN#KZb#2Zd*!d^|yv7dw{$AP3R5rX12!tHaMbsEoMd7tF{=^p2 z^Z))M@@tuf$_9LjR#XXJvVrm2Irx~>sdDm&-n;PK3E|o)L@s`|u3(f0rDVj`x=n5| zDc)U!K3Z5+P2qq`pGH1XwO--y>-sXBD`B%|UFW}r-~H=}mbi|H;%m;){3gz2R^Gmx z8y6wbJP;E2q1CI#aOFjJr)g{uIKWjDeM;3E@8EeiR#X$P($hnDxXFxTm-5_Gu%nyx z!$`1~&9fWC+sw!+2K!t1(8)qimI4=%#;3xsg{_7De$wjdWg3)0)gn4AkxOuKYNjGM)q0>7bn`Fjio5 zh-xA5haX9F7#0Etw^5KQ1*zl~{3Y8C|Gz5)md=51JN=zqONR?@7G!KFhCoV2R>`_oj&%#V}Cq7g!JCM5poEz$LU z2uGp?R9V;f8Nsd3Qn-2}y6>g`=gXjjPrDbzE;-tI{x4j4!L#rI9Yvqp2)g9ET?7VU z;0lb#Mi8!QVN#$HY|QYRZU2k6^nKwy);tSacDE-f@xD@7poHZs*d#b5&N^>y__c6c z!e+NI^KAO>5eWP6%+^`#Uid-IL>Cw0Yc=0t_p~p;DI)BQGw|x~%(9o+Zsqppj4dg7 zUG`Pm$FoMG!jIP5fPkLsM>Ljc_0%_aY~Kea|7&eX=IE<_Es);@ZUlg&1yA+PAo)HJlhq8RCE08$I{X=}s6z4v> z4pNX_$X=P8{JDd57M0P$X;(5`7?&05k1iOe{}9j*Gs-G#%5ufI&R4K!qh3wm>sO{UG3ti(aaI{H$Du9|mxPo#l6e#8FE zL5lMXH~2P?815c?TLeW^SKMd?az1`_DM@BSv8Ms(LembChiXI3z6aZRmV$;9u#Oj? z#?XHr2!rI0*J+0^`7D}-hsws$@ypA$8!I9@oTuqyAp`iBuNx*gELBI)$pOOOG{++W zu$8b}%T%-~y6shGrvh77+M+oTxmN~vI~qjX()~DL5I;vf|Lec<U?q>{T?j+Gmbkk=CcjNjU&ElAJln5=&0iQ;lmKi9U~&6Y za81AfLHAz|vNj=%v%abzv$}fWFz~mKpKdp4R$%kYNPN+L0kW5|l&bZgdNi`X^PEJ~ zwy!+n1#}-_Vq`|7%T~dZT;{R)#y||H5)Kvd(b}u_N2;W0A4A)PFF|oRujS0P2E#%3 zYrpK{g->;B`3ze{0+vwr7vabVIH$mMq0w|)N*iCaz{QD)pD{chMl}$>OzZ(4FB{IQ zXr8HVL_!$MrvN|W1OPyA54T|ICPwAKVT_y5LE~YU=vXGUuLgz)zj%dwjRDz#E#+jI zbT#}hKveA&np7nR`rwpkaVT!#S3ogU2$X~e2HF&4hGB-GXk;wqZbw5Y1j9F=w8C#) z358$R;cHWyDst7F_PIXjSz~xkgF^xa#YMI-*YeBQQgbP{FbY;94`yCCJ1#D4OX8@h zue1FMvq1@y;~Dr^kY&E=KShRl#iqeu{*8Z&I~B4I1Un#gxsY9H5Xh)h4YCy;yU1_` z_y!b9+9%=+4(?!H!sIV*Qu&R3!x9Q|<4&NiQ?Q3xzZyITk0X#!U&cg)R|f_}kiZ{a z97st&X*-3imjgypy`tE?oC1g#JXf+YwiS(QQEW(I2$rp8YrpoCmM!YJ>R}?JNTC2H z^*`DFUVq@z%9Nh&irpuaUM7;06eDfA9Ee7Ps5?Nta)3P1St5ldtOBnG0I3x-BrpjG zh66|~6K8J;`qNOCUzPps0=p&sa$Y%VPk3Xaf(;2?JH&7KE zt*R^Atzk%to{lsFvKFfs$uVA4dF%Y`SALPrSf> zV@F#?S9s>)kIC}s>14TxJ~_Y|u|!{SF&DTo`#pY$!@bOMf^rf6Jt~aB%X^F1!e*U! zhjaKjySMsm=;AU3q4msD-nA6PPUt7aypx-t{I3*qn`||w0_~{&NIRxJR&sgJLbXa_ zlgoQDVKL9XAV7W{)J)E#O2$G`JhCqFFeOl82#G&)*(G9clZbXK3F!W5)6yXIQGGc4 ziZ8-8a7;XVuT;RiB3=27FQP#+LMQ={0Mhb2(6O5EC>rbG2hR zzInNFRe56<3RyWkmKFsK0RAwz=XfD{ibs3ZCz@~c!ujE)pJ51UCf2W?)#1+bKv7%A zFV8X{6`g8|8AR-_ETGKLGO%$AKtgnMcaH(P#N7GeBHF)>vN_2aNQ*Kg)9N)x?65pzN zY2zalBX?o;R#2Bk+o-nl#+&zIAUrJ^VG-rFAUOYt4Yd83LPJ!Da)c9KVNx64>Shq! zaY%xWBW4OTN1zyD$~ZQ;;E=|53zs{#f`${5nfPq6(cb3KuZq>Jo{n#Pq)Q&28Q-3W zuQfPFV=b}*{e84nKd{ddE{0zHzFNy@Vbp7zWi7D6ztOEJccF*qD zHhH4!HOU-m)Z)kYEPnr)nztA*qlj}K-Yqzr_qKE}?U;4k4v_N{pGcz|SWEuC3kuuo zs@Ijcr=}xaiA=QVzkc&`)qhS=!T94GC_0W%hTNry-urc+>KYj+(qK#hb<>+EU7#o` zRM`9VZFcza>if`z?yk@ssX#$)Y56zAoX?YgiW9%E$&j77*_l02L>mOs#wNoKq|Jz5 z|0P@D4@|zGF|y2{8rQ~0#00wC8sl5hH;VlxBuqu!P?jn%5o{V<2V%je$Pcn}@qu+a z4ezdvW8bpbL@xl^`rnZ&HqT;GPBR*k*gRfA;JW5&&mM7j~8bPJJyk;?*eznl!Jr+&C&x6Ks#jKBK}y&PAoCGV@Lt9$#{ zIneiXEOni}PZ0xr1!aP-F%$=|7uMJQEuZQt47B0;d4?z`TTu#-NVVvsZgyMk!N8GWKVIPBHQq>1@qD5nSt6Btt)58y>2mN%7M;XU4|5`2j!#NWa5MADb;Gg>d$PuQZfOp{I2?z+i%hq+VDS_G zGZpTs?m-qyK#cg9E@(~>Q{KvSZB455QBb&0Fi2j2=HzOaP#6SC2Dkhm$ZgTER`QWz zQNBQHIVur&VMy2;#i<^aSnm93IDNheePix8$<^SSs3%nu7=L;!0je5LvU8x+eD1B{ z?8!7nD|wrczo&<3;heM^j`_j>-R)e5Y*}DLc(}pmR`~!@LJpQZON_H-og?K{iX+i6 zFUb1>cYj4>(M1Hurh1?9E?_=33GD$d;SZLQDR6thPSNt-%s zvdUkIlGV{&v8Vtza?9O!tT)X<1V9je{D=7(Gy)yRR|ZvG_@f4DS^vC}<>k7TXGFpE zy$AaJKY;l#*kU(vGvGQJNaSFbg#x%NTs%~p0c&{xWUo13qG|BEO#Tp>N273fa*eYe z0TU>u3?>6_Q9IvDB@SjalwX5KZVT*0u?MwiCdtu$_^l+OL?y|htbTDLZbL)_its2Y z{2FStXZ0~D%NW7Z^QO|V--u!+UvZ(4sce1L4)uvVSP+|SKw`#eSNgjtYu0zVn3$CF zgE7@AL~BAKBK(LJt)9(`s{C2T-$YVGQHs*vuAbpSOv>PGjH~*3T9ugWB{7q!Qn4l} z%e8s1sR;+loj|$EjMBwWhv>781(+v$b))~uee zkV_8@Jma}cA0wfIQo6%%W=-dMm-qWt>^An;U2_%fE@INlu`Ju~hA7=x>R67mRWLs% zlJ*tP30*6R>%`LSe(9;`otF^E^V-?GD`kCchsW7 zScr<+RD3elgZK(=BvUJK4bsWeBT|^a%}|D{oVk#*M1@%OZm(;ep(Ed8AI~F(bOLC&2^lF;JLAiySAteF9%CuVIpAuab1j z4wd5=90XMrpK_R9wA#m|7nNJ1-Hq@8X`poVo6D{Ia!m$ebTSb{j|{xSukuuEX>FRH zqDd)x#(x983E$R;x>$xLdXLW(fnCP5vflo#nRNxpkx^;P9ZZa)@t|Ku>{5dYX`%Y;DB zugxaZBldNi4tXW+av%>|Mp94TM_|61)^ca|4mzR2^YX6Y!dDED;+7OYiL|GJ9JRm9 zWjD6br<1kodqYwKmw`U<2(wl9R= z*rCML@)Fnl?T84v$j+8h#xg(sJ0KtG^WksHNv$tXmodAFLn;@Cf`M$A%=|4%7|y|X zd+zZjyN`!S2!r4n>UviyYaDkR>XQLTBJi33jNWTi56CJpA9Gd8PtpR#3;`_4%k@>O zX035&5y#OH=AbLDJAr(d;a9sJ_;j?oHjrEX8s30R+EDH_L3(;MCFVP#gn6!)YTc9W zyW0FJG{-^4d@p_2JRlrib8GD~{r!(+kzS_?*=4q5c=U2!Ju|}VO)L+U4sxvNQsDx) z@RC+CEuM@Wb045mA#NRKB6|6poaD%;14NluYl;($L*=|uvtTcHp?nPeu^fZyP|J-A6JW>S-nF5)JeBmKJgrK*}c7EH|>_gH=Wp!DOY6&ukm!P~EFF%Vcl z$iMFjGYvLM9}cow-pmsJm}>e&x@lKkDM&oex+L<>5Qe&@A8i#8-}yR(sSp)fm{SW0 zQ@X6$Fmgg(0)V47BbU;kl?3CWpWO1OuC+;`fq_(^;~}o~m5n6nLE(nrl3d=WD8ZG! z{bSYi0gg_Ep|ESvDII?e`hazs0^0j{p161IrsnSb!Gb!u2e?DB^Y#~Gm zw?Z%hBlNkE=ap?BSlF_eN?a)4pBa-w)A1X?utO=Nz$05HqO35xZEcKu0WR%fP9f-Tr2HtDXsBo27^`A}_1(r#{ZU!(Ms46$rTmW0S+Nz;qVrBSPsv<>QYpUa&W)Mu z7``o_dG@QfIljTHY0nH%GS*wJ+^={;+8F1eqMWW`tr;=Vo@z(tM&q$@61VVMs~J@~ z@i-H&hPaxr6-7ugf(N9!S#x8pQ<%Q_pQKS<=tB$y_Xn*76L8O#_Hro7m`xx6tBFbG zxu5RVL%9beGrNYv^aNF|ocoFwb{{6Sb_PTmOf#?m2u^722k8WXbb5LTeBMT9&J?CFPh&iFAXG{Q)jQ&H9g2O#dMn2rU{$ z;&O5WJ=X@jaeGOtZQwF}fO{n=h2&Uy%CL)bqMeR=wNMv_{{6bvwr=4n$!#7# zRGWrW)oau0h7yiEcU+Z3kTFw!wA6%}y&tcBh{Hkx zW#n}Yw+1k`*C}3PTv?n>4wibe-ZQOZK`Y&m8@x0ht>2<2hOaz19Z3@e0FFB9oBF#ex)ovBw}h^Q^YdP3Kuz(2^=v8y67+ zmnab|PB6f(V!Yj2_5{(|gXqQPJQYsV`$7p6DaC2hOrUEJc10J4YB0!YXUTk|$L3BS zTx1n)Qe{2>F(dHcH;XYW$>SvH^)PaqT)zUxK}g!YFB1U+vNEil(y*I?IzYY_`e0!B=fL}nF+F@3FWD<`O@ zu>Tueh_cO1ZC-sKqaA9V`$oNZLrbH$n1$Zxk&JHKE%RhHtuQ$^Jn;$kl|9PVe0?5z zWXg3wfHkAs@q}^Wy7ciSL$zIE?ehB~y7aDoe)2YVM1}J@P-(#n-*#u$iPRS=$Lv^E z0Dx8h*yi@VPW28*q$9byVdZ@r3Pc3?w{R6S>dsJKukuRj7_)3#%TCIAqS3&Xe1KuK zaTXo)x|1)x6pw`Rl1iIfYr+#`>o-H+{E6Inqm5bPi}npbm>p-ch%8wx;m4`*0x44t(=Ho2@UKCv_2rg*O5+T!`6ejuRI6d4}+>4lbl0{8$^F3O- zu8d|K4>5;NOQ3!c9dK%+PU6LhC;f`4>@#azdPtax-#{Vl^!>|Ef#$unnpdF{&p2@$ zF#>2p_(-|#MD9ngBw7~f6ZgrJSy94}d6jWF6moxOQUzo~m{t+yqNJkdP5%+SJN--1 zmWe>x{P4ytRKh_dW%*anWr6C^pr)66W^(L+7MU$~DgP!nYc|3-A;6?A&j7t}!K(h< zA|0&1NUAZ~d}S2kk!{fa`%N91_aCFdy;HYu!hVm_!G@m!7RyJ4c0%e`pVi$XQGcUv zb?PL_U!%G5wQ1+>wpyq9fMV))kmt3ZL<3i_JBR=o=Cd(c=K)%9!_5qhyw_Yx8}3Q1 zPfQvz#tGrWGR2&^kC~En9j%P|ECJ(pD+yHEvrBLS0Q`QoEd>TZ86fLF0Wjh`5-9VP zze45${ae;-C90}ar!@>WX5BS)DvbUp6b3sD`ub+w8k?!IGMtV;}E9^Yt+E7CODf7NICjUtw1I2S#wL%5U})u=&0&vqssuV;b=Zj>QCO8Y zM%Z+sez{fHNXylU!2Q)>8#w=6?UDHHdg$+d2ehw{SpI_%mTBBM&J0>yL=qCA(?<$~ z8&Kam52p)Q(QWg9OL3?bMr?YC=ewbM7PFBjXTzL)XO2Q+{Bx2oJ}J->s4!UGVsz>_ zFZXyxiB~p2c$4Abw`Z8t<&KO+cP@8wTlRG>4xfDyaZ#=+&f__vp_Xb6$myYb z*T)MpNVET>&403nuty+d^%SZr78`DohWBkMv)^I^hVQ)(o&oE{%_iH3c1&Y;)U^si zi;wMO>O{h!iKKUfKKJyfm+yMaL1M3J z9~EKith_X;L6bvFHQ#N*2E7r$pFmO{3bqUt-Ny*Y_@YeZ-RW9Qqac6j_JRoT-!GUx z7vFpZYk4kWIp0Ssp^V$VISt-{)^0W)3rY7MN}_t-8r#ZF-#Crb>l(ohZIsoeL9Ve& zK%k4L2ORv#NTLkGqLC3e|2CtwQDrtv{48TJ5|%3aMrY?nu?`y$w35n0BUgjW@9psa z(NQ1?rGdJR=|rKTza1nl&_kmHI2b~MmPxku#{CZbm-_P<9H9znjRlNfgjgoC=fgQ{ z0D-3voYRCcU*Ka08F&QjdkwAH>GSEPDe_KhHcjTrvg81ISj=N2Ux`~xnbFq5Z}^up zP#dKL*hR-OlB`qxzr>Bx1@zgIS|wlms^zpY+;j0Dth{V`i^FQ{$St_v_RN^wFzGVf8Ys% z4%Rb=1^O-h;bvs%fmZyJx8%!;1t4#GI&}Nene(ELA&!ixgaZ|{Heks!{R-`d{TF_G zX$4{UnHDc59;ML(5KA7ik@6huU!mpc)-D6Azec5=n%2OG@Xh5Suy+Ps>H`Hymlf?~ zc+@@_v@g;DBTaQ(4mdnSS*pP+8y`Hw9^58;GzvMaoEqRxV-)ulf20?wT1Uo;W)#q5 z(*p?yyu1ubbRU{y8@zg|bgN-)n?_EzJz^)&#|2WC#bRq<@gb95tr7OMwaTWg@%qaW zTjH(rjpGH9)A5;3SL5Xdous;2_al`G3iQ&N)?1e%*r{VY zI*E!;ittJVlEUvmfPorw>kGB|1Xuz3Taa+sPrcX$?$T8Avo@*(5nY|(wCBXSLARtC zxe1FC6U$w$+-%n5))V5|z-m}(bb(WE$8ij9B-as9Vs3S!j~vTE*J@I69RQzY85V+0 zIejm4+7#_DEnl+I{BDG*EtRg`x9JoYPfEp%vsxVYN!@A!z zg|3r7?Z!NlU=St&%{94SgYv3!0p27giw^37VRl<5hns>8kv(Vj#>eOQf&^}`NQbC5!{4ZPM8 zZnnk|uu1sGN3)s+A315`*Rg6Rd0w zSQzHayUb&B-qYV*`c9u9l~by9yc#J7i`(myJbVY3wWdvg5)J|&LieY$x2}#9vlh$O z-~QFH8}{0p=R@^@kCeiCSYx5q(a^|2X`V&(_%`tIJ6XSXQqcZPetGcB}U&p*DuS z<_l+a{N?)YcBrML4Id$ zyt|~mpwh(h{eE4C(`{fqJksmu{R$Kn@XfI{ccp@{}?7{xmAH{!D;NR>j>0T=nF=g zyhKn(Xhn^2CL8SkNBFPkag^xyjKu8brtEh0#w~}!NKXN{4ESKIbPx=?%l)S0i5Tkq z^QL1S>F?L_^s#`I0DScz7$Fxa6Orq-F@V2I=V9)P z(%Z0%vZb-x!~e^cY*lI5cx~VdgemAtrq9A!@l&pG(s44qF$4#j7MN5J^N&0J-uhcV zJv0>^xfail?75R(+vNat$%j%n@dmIXhdD3D;-G|l;0XujoXWqpRYrI{kf#$!15}8S zuGRfZ+M;suO$+A=-U72$HfQced3h6TBh)qsglGTbDZ@#3wT(IiOjc$Se9t@pt-@lE zjl48;U=ddzaJBu{K{}S5@Rc12Fs}Hp^nwEIjKe(&Y%sPi0w6-Fb$w6(WZ&)P#SZ~; zfbE@5Cydn8ped5ahoQ)Mk&aGTxloWR8{=ZM_O@*JgIIB-;gVWiJAEW+phFE`>0ov+ zCpnq{)Xw`#04H=rg!1>-rED0dgUlEEE{(Gj!9H6jH248 z0$_Od0YvFfG|jpU)JJ1Ks&&OKjbmmmF-pH3G2sYA}RkBLuz8Cpv!4Xn%;wa`mn$M zZ*x@6zZd)*?Fk+gWGOcnJuIOzmDLT;iYip272EgHJ_5==F8qRQ()I}X5!N17C7e6q zAa^9-+?l-%a!08)VWa2?@K~T@pjwjNUVz=&7VVN;-+rDw{J-FGsW2GK8korqR7`90 z2+tt@)j!3Q)_L;O34g17U_gOZBNpFMWqZ1INZ?9MA`2sZ(s6RV3$SqyaCseQ(uYqc zUqW7rCUhfc$DdKV%;yo1BIG8~l;lh5=%M+(!T59qGeY^}Y&4Cfb*^@D z%O?vKida`HBfr`8CRZnqVYIguvVC<(M1%@)<^86>OqFrXcnl6q(jaTVkjNCuzeaVS zzsJk1VbITt9tfB z6Nsmz+m*>#@pWRajsxr9Q3pD#Yl1}P|KlKS2N!}S148x)r`M9HQ?bKwWx00hsE5-o zA>>8QKKREu&!D^sJVBjLj;d)P-4Z-rp}ju-E%|Ku#pJqK^PGYCDwKID)igX?gVl3wk3jid^l z=kS?1v)`H+X2dxpx&J8qktbWAFQNQh<-%_ax)LOUIA8u^JFEq=&mCw1LQU>?+rPEI z67-a9tvIc;MDrTdXYIbeMSAFBH$I4<&!s#au%BJWnl$x}mU>wTbZ?(5TCiX>fNC3b zX%HywEoBAW+s##csVcpSuT|H9&gb|JD&hN!@#kYzhmVb3MyL8;nVy^7U9yrG=ml}L zAj4~GH7#P$E%n@qRdRKQlycf@r>el5HCqYHS%rN!Y56=dY5z7ayZo5>fyFCfNncLQ zb8A@K`^)$=F~1rscgr!jou2l13C1b#(A?>?BW4J4w41OQK(>wPZ>LtFrIL7!5lN5` z#ueu%Cz+!1+Y;DCgd7}?k2?gK&z>(nh;U}Oh|85Bn{L?^FwHRIdwMfo@M z2aZWgs`Qb)2T1TdJS)RUMqhxN%XamZ64${_1lXuh{h&2OiXLAc_&fKv2fr8|9X=fR z^CG}=QJ-wV9P<8Mbfc2OiWWgoa8BAbCV^v@k6}{rPebp}P=YZ&XYEqr2PFkCoeI1q z&`vUq5w|;J1%Ld5!^aKygb1Zi11F%vanG_LrY?^|THb@Wgu;V()GF@ndSE!{aH|Z~PQd?XjvpA?;3KQ!EWt?b66iNaT==n{SCCQ&aVF$RbsS7h<+erSV5oMo zOeXoCk!h6AZP*%WS)JDZO6R{kNYR0a3Cn zdeB>7$u>iK4$Wx0>Nl%wfHTkt#7Qof25=4GDPYtk6*F?s*8Qh5ld8G|zce^(rU?;J z0`DVblsKP`7>yQkU=o9_xmwBEj^%@y!O?cZ9$r;6uwK1@^{R8Y9s|ZP;s={CKsPcP z5eGKh0=3%0fJ}q!0DI)cnenXF=qJdYd%0gqBQMPfz4l6aj*Ovz=P?jGkcp|@0d`Wb zWiUYv7y=$0a}Xad>0Cz>oBiORJ1f_Tnb|O^_1Z9|bY<=X4e>@da(N zrF=NR3o4{wgQGU;dtzx-8QKxZH1ABSyBOq6_FebaQ)f?iv*>&jUBzxF!xRL|f0^G~ z;rFeAb7+`1hx*`RpXGkQgWi)_d;&Z1D*Eqh4I#=XpL~TNxqy^C3Gm4pp>mWnh#Ev#9GsP2j(ox(?n1W!0CbV)V*C^)VkO&6@4|M8E8d~Wyx^?)$}G@pA`i%ggp0~Tem9ea!5=rO_Fc7 zyjgv-Bu0U;5}v7GI>4DZRNWE$@t(l!I|2Bs1PT|&6hMlti|r#|)a2Yfz&}fVe00Zo z@A{naiS+;J0ch^q|2Cln8v@q^p-U#xx~MRwiSH37LKvpZG%s3f_G$=mkvb%25G+cd zj9Cnq6)&Q7yp1hWDi;vr-WN#M-ZT>plq7GCw3_92y!AbUUN(7tW8ae+b~d4zxrl0* zD-M?D;DxDL8hbmi&^{JJWfKnThTK$E&K;{hMpOk$a>bc}5zjZOhi0)gDHr~~mKNI4 zLa$WdlJW_EN1TBL%gEIaW{&MlzKfIyCRV^zNT46;`K5Ri-&U;;VHH>e+Mg~h)Z zdi~jJCuPPNI&=fjtnXeq%E#vG4Npf7Ul6tAW=Ml+R{-sPaKNl0qF0T=hIy2L#Hi3Z zyX*9SN#km@QuHY9Me=||$9;!s0!7p95N3gupMc6Ff7MYfh{#bv$SWWENZ_6WwQ}cZ zy6ej;7~B!;9lGVpsO``jv=oy?R9^F7pYJm9_KT(a$9s<31I&E(e0P#u{bEXj3|!s% z#N-O_1{yy=1?_kkqq%;h=IS)BX*HmGj}#KJo51JAfO{WF!5-RvC4!RwV0+E7Hm3dP z)B(eG^y(u3Ivvbn!TaBt;r9jxd;2f zvkF{(ENJN(r)O=THMu3&iz7jvl|1(!Rf-Gt< zpkOFa^~+>T1E;D^`8xMYPBte|ywsFWtptXYQ#uDKEoBMC*JF|(+ahnQEhOwM1(cH#Jf??iLX}kXp^{J zD(=3nHhM9j#;8-rlZEQ01m|V?K4jX>kZZYpn9VWUHwZl;cqa+^GvivAHC~g2?=oEf zeItVv)&*eiOh0$+PWg;|kOSaFw?hBvj<@T;^T2q(LoI;4ga^H9(f;yiQPwIt;B%Di zirYjOCO`f7^fN%8`>X+8JMdeRONSbC8uIEdfj$l_+HzhlPoaY|^qlX9!V+F1;6IVw z)DrRRErDLyv*cjZguKjs>`imzn0Gsmj9Y4W!W~h$+wk&;?imm6-OpeNMxGyeg$k0o zpi>1$^q>6>z+AZYyn3i;a7^C9$^>Fy`4kT35_2zE?Y@ESnW0j{)5yc&-}SqgwO&8w zV$fGtKl}nE5Yidk4?1%JIv)c_s>}K-n8%J<4cBn z^WVo6bk^n!*I^0XP%co=pf}|QL4b!5LFo`SWc6q3W6 zWh1o4KlB1%;{$?s9Wfap8I*E!4Q@H;MbU6O zpI-m-pLw!?UuNMoM^K;mGg*6`B&gcM3O(HYa#7q!7XBZ*w#yqLmG!h>1_u1_*;D9Q z-syeBw4MI$XD}40f|p6&fe#L&JTjt{USkGoBTwvP!BEatwF=k%%1L;cgm8UV?v3$H zFhESh>`xaK7p7s6O2ez(?nk?9AKrIAbqwaoO_&Zp*r72{B}L3&bN_J@ z4!T^Z$ye>)1(cPv{b!gl9N2bcD=;a#p5!G?JcbGd`?%*UodS|Kr(hFYZtl045nvoMjcv>-beY929DwmIBC@)VGvL~gH88#O0wP*u8s{V z8^0uC{S^MH1uIP7+Dw%ewoqJc-wrDcdizzaS~cW7q_KDp9d%*{r@~*})rI|qg9KFk$y?BS#31b{vofvy?k`zHZ2G&qQobFvjU>!Up0(#=}l2yL(Y6%BU1k)lvj8n&$_WZI|)!wP+`BL zbTZ7AX^sCgaelUs+5*%?(WT3!oht=iGMQZn*aO!pJyb-HTJ7}Zt>&axp7LWFA$L6V zI;AK>X)?qYA_*4Yeh&{`Fx$%SGG1c^+*4!W)Lh z@^*57DknL~xplQ05)D)!Y-`Zs&|(DVy{U)SUY6*)oz zj$5mlUpst-W@`y0FV;v?1b`x^`Eo%?%3^#g*td#mB<>X4|j z-TDo?H>^>6d!Bpixy{f|1?fR3b#1HE$#!?4Z8~JB)NFijXY-~&$PVG9PaAvn)4hUw z8{@u&P?6JSh}1rg!Qj2A?`9;q{rZ+cv)o+Q-GRm8f+Q1CxyrR3r|LzYsi|C3B^5cjNw*v6ZO(~_S; zR_ew58%rTp+e7b-2Kc_tK0ba?tu&3=ZKzf<`iCh^Z?QboE11c@5jTxfEPpzoOgb7m z-<2vEb#C?7YqjgaxW&OEpS{W@(?7U8Ouw+BVV2dtX3v=V%#nRB;izs+y=nNccU*nysP8uZFg7>?c37%+FYHZ;`kq+Cf+>r&|1 z`-VGh$ejNvL%o0Ir<{z;1wG5Q`Ii*ALFvq$B~G)-i(i+pZ}0VA6xg03#BtiFy0{&4 zqr_ZA8aI=vK_P0i-hFSoQrqff<)hsbE-R~a$z`xHA?VPs*lQDnk)|@3Wj`93ueP^i(}ogd;w*9gb%KH z69n(p68)k5<^G4hI*Bqk_O!F5n6_6)#TrYoJm-#J1{N|1CXNdH# z6EfC>_}!Tn)h*5YaV1JST4ev?WGnfi%7+&UQ|FQK8+hd!MR7N{jBmba5BouUodZ|z z>@_GP*i?xm&E5tANWbbdKg?pj!oxS7+#k5I9TcW9KE=Dl5ET(1?lYO>f z8)Rfw(3l<15jd;-G)!_k(D&sYX3n#wPyo)mXqc}^Hhb17Xrs)sEL(Z()) zoH;@+UskD6FZC;(Qo*UH_L>4|I`F4qFkuQbUS_Cs9LbU#@FGJ&g^M8eQ9_;?-7jKx zvET2uJBF>|Nk_VWDyvWgy6RuY~!C(XAVlbni?P8lO=xV z3M8Tz{BzZnyjER2)Nkj@oA(5E!BLHD+?gH5qD!6U^{zlSG}Erx^WlCt}Tcy_eh6$xc&)Ih_@1)Y6;?u^|T)Zdzj{S|h77^Ey$509v z-CJWWy4POdpUFL4i#Qos;e+OeTPk{Es4xTG3I7MzKZpmkcid)X4$)T1faXLeCZhw3 zCDp`kiqx!ca^W^U{Y(_3!qjil`@+;8x&7hUlQM}X-=zxm$0*mXyu1AC&<6rR;xKud#XC*T@CzaRuO2no|EBLeT2n01X-8tp- z^}hXOCnx$2XLUQ?1))N!R{o2SPS8eOQmgKw_u~t88=GZyZZeai-rieb;J9qcjtc)TrarmKJoU;)aX45Vs6vms>I8$mx?aGo;Ua`wwU?2Dfn^5JE@03 zeb=M>wF;Fe$^$1{4IWv^*E--`j&xDEJQSprpXcI{5MgxMg5e21?a1@tat;VTnop<0 z>{R(R+0>eatKYBY`E|-9p1H}PhB(hDJ9?KejpWnrR^Ywj!jC_d`CWL-%m~&=0>f8r zSyFM{oV_W;Y~=EVK>j6h7gkr^z~xuVF?3TSm%~t%-CuM}H@TlC+UX~%IR74(efTr` zu7gF=l_{Q&3=`mQD(~ouk1OA6hnhYIGYy8BT?kZ1l!<^Z&DZl;6?^KJp zt3EbPywoYWPWIGZ;y-RB1f4cIQ+>PryvU_UzMhjemV4Jfx=(M;+GhlVKiCl9?;7wA z2i+%f=gXAG!5>6!Blw9^gPjqE9>8-y`03p|j*k9yl7+W?kV@2j@#V2j<@XAbh3SRD zgk5zRp_i7Q%E;*>O$K{(A0~+s_uaGdW~Fev;yQ^aQzj4xe1l+`w{shorG| zUR}U}eXD&$k$`-~jAHH1-Wy8SC?{me#_&>0W%Bv}l~gMfFmyU0A>4sc*Jp1tq<(o_ z>y?hqw=)_~q|T==wh0nKyZyhdCt?ZrDBAo=C|WX~#xrtIIoddFw#;jv< z(7lc)@^dF#dkl5xWK^+I6U;OIzT7rjGi^qB-SgtR2q^dg(f^y^LT_f%eLpU*?sn(w z?BLwtIK@M2#LCXH-EhU z&hYr~@_s%0UkQJ@{Vj4H&P+O}mMQf5=z5LlQ$A)&VF@?1Iu}{a@9mIx?wbFp#!P8h z!UOe-Zb^QVrtjj=shAgiNa3nBr?geobBSbqy_r6{Le>|UDZS&-d>6F$(9Hvar_!DI zj%Th>X=T5oU@+m4@m1|Py&aLx^}xP6NMRALW>GLuVaEy6r6;B)sIFYo))86Zcr|nb zP;5r4ZKsgg%D9I)E>8~W#c<9JS+A0FfY;*6vMp9#dzcIp|MFJ)i!;sEJes2wW+5%O zd6~#&i0WBEPnK1+Zf5+Suz1OdsTHgWVwJ2BiEKe+dChfPc2&a>GAdx zhusbQ7<+Cne;8d`5yr7^s^fzzSLJ2jgl7F_pSCYl_g(0ApTl~&SG}r#N2_k$xqW~B z)vl_IKa)FnD)*b-JGU}z-#zO$U0a=c_onl|+h9_>{QaTX@0w2B@c23VPgJa{x=-z* zTE;7B|5pmO)_wZ7|JZ+q2~wK_r$@0cKAF5`wgaQx#K7e`h&N(5B z43qihIxrSb_MdCO*fqIft{LOT$=m0;GYU@rKUZBE-Utm~VBiHFCJX|M3<^N<(PYPY zR*VNH*UU3xd@*_RJO{?o$zSH#Fix3lIA2j3ezq_>6N3au6A(c39hjUu-<9ck;N(An VQj^ck*J8Xf`R9CXwvO2#B>)-kD5(Gd delta 23066 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 Lfi_#?Y>+Ylu)?7$